Discourse アンケート

:discourse2: 概要 Discourse Surveysプラグインを使用すると、簡単なMarkdown構文を使用してDiscourseフォーラムの投稿内に直接アンケートを作成できます。
:hammer_and_wrench: リポジトリリンク https://github.com/discourse/discourse-surveys
:open_book: インストールガイド Discourseにプラグインをインストールする方法

Discourse Surveysプラグインを使用すると、簡単なMarkdown構文を使用してDiscourseフォーラムの投稿内に直接アンケートを作成できます。このプラグインは現在、ラジオボタン、チェックボックス、ドロップダウン、数値入力、テキストエリア、星評価、いいね/よくないね評価など、さまざまな質問タイプをサポートしています。

特徴

  • 7種類のフィールドタイプ: ラジオボタン、チェックボックス、ドロップダウン、テキストエリア、数値選択、星評価、いいね/よくないね評価

  • 必須/オプションのフィールド: フィールドを必須としてマークして、入力を確実に完了させます

  • 絵文字のサポート: アンケートの選択肢で絵文字を使用できます

  • Markdownのサポート: 質問と選択肢でのリッチテキスト形式

  • ユーザー認証: 匿名ユーザーに対する自動ログインプロンプト

  • 回答の追跡: 同じユーザーからの重複送信を防止します

  • 権限認識: トピックとカテゴリの権限を尊重します

  • モバイル対応: すべてのデバイスでシームレスに動作します

使用方法

基本的なアンケートの構造

すべてのアンケートは[survey]タグで囲む必要があります。


[survey name="my-survey" title="顧客フィードバックアンケート"]

<!-- アンケートのフィールドはここに -->

[/survey]

アンケート属性

  • name: アンケートの一意の識別子(デフォルトは「survey」)

  • title: アンケートの上部に表示されるオプションのタイトル

  • public: 可視性を設定(将来の機能)

  • status: アンケートのステータス(将来の機能)

フィールドタイプ

1. ラジオボタン(単一選択)


[radio question="好きな色は何ですか?"]

- 赤

- 青

- 緑

- 黄色

[/radio]

2. チェックボックス(複数選択)


[checkbox question="どの機能を使用していますか?(すべて選択してください)"]

- Eメール通知

- モバイルアプリ

- デスクトップ通知

- APIアクセス

[/checkbox]

3. ドロップダウン選択


[dropdown question="あなたの年齢層は?"]

- 18歳未満

- 18-24歳

- 25-34歳

- 35-44歳

- 45-54歳

- 55歳以上

[/dropdown]

4. テキストエリア(長文テキスト)


[textarea question="詳細なフィードバックをお願いします:" required="false"]

[/textarea]

5. 数値選択


[number question="この機能を1から10で評価してください:" min="1" max="10"]

[/number]

6. 星評価


[star question="全体的な体験をどのように評価しますか?"]

[/star]

7. いいね/よくないね


[thumbs question="他者におすすめしますか?"]

[/thumbs]

フィールド属性

すべてのフィールドタイプは、これらの属性をサポートしています。

  • question: 質問テキスト(必須)

  • required: フィールドに入力が必要かどうか(true/false、デフォルトはtrue

  • min: 数値フィールドの最小値

  • max: 数値フィールドの最大値

完全な例

基本的なアンケートMarkdown

利用可能なすべてのフィールドを含む、基本的なアンケートMarkdownの例を次に示します。

[survey name="awesome-survey-thumbs" title="素晴らしいアンケート"]

[radio question="いずれか1つのオプションを選択してください:"]
- 猫
- 犬
[/radio]

[checkbox question="複数のオプションを選択してください:"]
- 赤
- 青
- 緑
[/checkbox]

[dropdown question="性別:"]
- 男性
- 女性
[/dropdown]

[number question="このアンケートを1から10で評価してください:"]
[/number]

[textarea question="xyzに関するフィードバックは何ですか?" required="false"]
[/textarea]

[star question="全体的な経験をどのように評価しますか?"]
[/star]

[thumbs question="当社のサービスに満足しましたか?"]
[/thumbs]

[/survey]

アンケートのレンダリング

上記のMarkdownがDiscourseでどのようにレンダリングされるかの例を以下に示します。

高度な使用方法

選択肢での絵文字の使用


[radio question="お気に入りの動物を選んでください:"]

- 🐈 猫

- 🐶 犬

- 🐦 鳥

- 🐠 魚

[/radio]

質問でのMarkdown書式設定


[radio question="どの**プログラミング言語**がお好みですか?"]
- JavaScript
- Python
- Ruby
- Go
[/radio]

[checkbox question="あなたの*お気に入りの*機能を選択してください:"]
- 速度
- セキュリティ
- 使いやすさ
[/checkbox]

[textarea question="当社の[ガイドライン](https://example.com)を読んでフィードバックを提供してください:"]
[/textarea]

サポートされている書式設定:

  • 太字: **テキスト**
  • 斜体: *テキスト*
  • 打ち消し線: ~~テキスト~~
  • インラインコード: `コード`
  • リンク: [テキスト](URL)

必須フィールドとオプションフィールドの混在


[survey name="mixed-survey"]

[radio question="あなたの役割は何ですか?" required="true"]

- 開発者

- デザイナー

- マネージャー

- その他

[/radio]

[textarea question="追加の考えはありますか?" required="false"]

[/textarea]

[/survey]

アンケート結果

現在、このプラグインには、アンケート結果を直接表示するためのバックエンドUXはありません。代わりに、Data Explorerクエリに頼ってアンケートの回答を取得および分析できます。ここにクエリの例を示します。

-- [params]
-- text :survey_name = survey

SELECT
  s.id,
  s.name,
  s.post_id,
  sf.question,
  COALESCE(sr.value, sfo.html) AS value,
  sr.user_id,
  sr.created_at AS responded_at
FROM
  surveys s
  JOIN survey_fields sf ON sf.survey_id = s.id
  JOIN survey_responses sr ON sr.survey_field_id = sf.id
  LEFT JOIN survey_field_options sfo ON sfo.id = sr.survey_field_option_id
WHERE
  s.name = :survey_name
ORDER BY
  s.id DESC

権限とセキュリティ

  • ログイン必須: 匿名ユーザーは回答を送信する前にログインする必要があります

  • ユーザーごとの回答は1回のみ: 各ユーザーはアンケートごとに1つの回答のみを送信できます

  • トピック権限: ユーザーはアンケートを表示するためにトピックの閲覧権限を持っている必要があります

  • 投稿権限: ユーザーは回答を送信するためにトピックの投稿権限を持っている必要があります

  • アーカイブされたトピック: アーカイブされたトピック内のアンケートは新しい回答を受け付けることができません

  • 削除された投稿: 削除された投稿内のアンケートはアクセスできなくなります

制限事項

  • 投稿ごとに許可されるアンケートは1つのみ

  • 回答を受け取った後、アンケートの構造を変更することはできません

  • すべてのアンケートフィールドの質問は、単一のアンケート内で一意である必要があります

  • アンケートフィールドの質問は空白にすることはできません

技術的な詳細

データベーススキーマ

このプラグインは4つの主要なデータベーステーブルを作成します。

  • surveys: 主要なアンケートレコード

  • survey_fields: アンケート内の個々のフィールド

  • survey_field_options: 選択ベースのフィールドのオプション

  • survey_responses: アンケートフィールドへのユーザーの回答

スタイリング

このプラグインには、テーマに適応するレスポンシブCSSが含まれています。カスタムスタイリングは、これらのCSSクラスをターゲットにすることで追加できます。

  • .survey - メインのアンケートコンテナ

  • .survey-field - 個々のフィールドのラッパー

  • .field-[type] - 特定のフィールドタイプのコンテナ

  • .submit-response - 送信ボタン

「いいね!」 32

ユーザーは結果を見ることができない(クエリを使用する権利がない限り)そしてこれは完全に管理者/バックグラウンドスタッフのためですか?

「いいね!」 3

はい、その通りです。

「いいね!」 7

あまり実用的ではないですね :cry:

「いいね!」 3

アンケート結果を公開するオプションが必要です。それ以外の場合は、複数の投票を使用する方が良いでしょう。

「いいね!」 3

こんにちは

以下のように、サンプルMarkdownが新しいトピックにレンダリングされます。私のDiscourseは最新バージョンに更新されています。

何が問題なのでしょうか?

よろしくお願いいたします。

@ppcoleさん

上記は、アンケートを作成する際にコンポーザープレビューに表示されるものです。トピックを作成すると、期待どおりに正しくレンダリングされます。

アルピット、ありがとう。うまくいきました。機能強化を楽しみにしています。

「いいね!」 1

そちらの件について、実際には優先度を高くせずに取り組んでいるのかどうかお伺いしてもよろしいでしょうか?

これは開発が継続されると素晴らしいでしょう - 多くの可能性を秘めています。

上記のSQLは結果を取得しましたが、扱いやすい形式ではありませんでした。基本的に、有用な分析を可能にするためには、スプレッドシートレベルで大量の変換が必要になります。

しかし、Gen AIの助けを借りて、非常に優れたData Explorerクエリを作成することができました。Data Explorerのいくつかの制限により、さまざまなアンケートに対応できるほど動的にすることはできません。基本的に、アンケートごとにカスタムクエリが必要です。

幸いなことに、Gen AIはそれを非常に簡単にすることができます。以下は、ほとんどのGen AIサービスで機能する可能性のあるサンプルプロンプトです(AIプラグインがアクティブでない場合)。アンケートのMarkdownを貼り付けるだけで、すぐに利用できます。

特定のアンケート用のカスタムSQLクエリを生成するためのGen AIプロンプト

Markdown形式で定義されたアンケートがあり、Data Explorerプラグインを使用してDiscourseデータベースからアンケート結果を抽出するためのSQLクエリが必要です。アンケートには、ラジオボタン、ドロップダウン、スター、チェックボックス、テキストエリア、サムズ、数値など、さまざまな種類の質問が含まれています。クエリは、各ユーザーが1つの行を持ち、各質問が独自の列を持つように結果を出力したいと思います。チェックボックスの質問については、複数の回答を単一の文字列に連結する必要があります。

アンケートのMarkdownは次のとおりです。

ここにアンケートのMarkdownを貼り付けてください

アンケート結果を取得するために使用された元のクエリは次のとおりです。

-- [params]
-- text :survey_name = survey

SELECT s.id, s.name, s.post_id, sf.question, COALESCE(sr.value, sfo.html) AS value, sr.user_id, sr.created_at as responded_at
FROM surveys s
JOIN survey_fields sf ON sf.survey_id = s.id
JOIN survey_responses sr ON sr.survey_field_id = sf.id
LEFT JOIN survey_field_options sfo ON sfo.id = sr.survey_field_option_id
WHERE s.name = :survey_name
ORDER BY s.id DESC

次のSQLクエリを生成してください。

  • アンケート名をハードコードします。
  • 条件付き集計を使用してデータをピボットし、各質問を列にします。
  • チェックボックスの質問にはSTRING_AGGを使用して複数の回答を処理します。
  • user_idでグループ化し、user_idで並べ替えます。
  • 可読性のためにフォーマットし、ロジックを説明するコメントを含めます。

Data Explorerプラグインの追加ガイダンス:

  • クエリはDiscourse Data Explorerプラグインと互換性がある必要があります。つまり、セミコロンで終わるべきではありません。
  • Data Explorer内の自動リンク機能を利用するために、user_idのような列名を使用します。
  • プラグインは動的SQLをサポートしていないため、動的SQLの使用は避けてください。
  • 大規模なデータセットで実行される可能性があるため、クエリが効率的でパフォーマンスが最適化されていることを確認してください。
「いいね!」 8

これは素晴らしい小さなプラグインで、驚くほど機能が豊富です。作成していただきありがとうございます。

@nathank 結果クエリを迅速に構築するためのガイドについて素晴らしい仕事をしました。

「いいね!」 4

セルフホストサイトにこれをインストールして試してみましたが、実に素晴らしいです!

これはディスコースのアンチテーゼであることは承知していますが、ログインせずに匿名で回答できるアンケートを作成できれば、それは役立つでしょう。あるいは少なくとも、結果が特定のユーザーと関連付けられないように匿名化できれば。

そしてもちろん、データエクスプローラーに頼ることなく、投票のように結果を見ることができる機能があれば素晴らしいでしょう。

「いいね!」 5

はい、私も同じ問題に直面しました。解決策があるといいのですが。

「いいね!」 3