Discourseアンケート

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

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

特徴

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

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

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

  • HTMLのサポート: 質問と選択肢でのリッチテキスト書式設定

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

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

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

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

使用方法

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

すべてのアンケートは [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="いずれか一つのオプションを選択してください:"]
- 猫
- 犬
[/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]

質問でのHTML書式設定


[radio question="どの<strong>プログラミング言語</strong>を好みますか?"]

- JavaScript

- Python

- Ruby

- Go

[/radio]

必須およびオプションのフィールドの混在


[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つの投稿につきアンケートは1つまで

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

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

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

技術的な詳細

データベーススキーマ

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

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

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

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

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

スタイリング

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

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

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

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

  • .submit-response - 送信ボタン

「いいね!」 31