Markdownスキーマ
md2formでは、標準的なMarkdownの記法を拡張して、直感的にフォーム構造を定義できます。このページでは、フォーム定義のための記法とルールを詳しく説明します。
基本構造
md2formのMarkdownは以下の階層構造を持ちます:
---
# フロントマター(フォーム全体の設定)
---
# フォームタイトル(必須)
フォーム説明文(任意)
## セクション1(ページ)
セクション説明(任意)
### 質問1
質問の説明(任意)
#type question_type
#property value
### 質問2
#type another_type
#property1 value1
#property2 value2
## セクション2
### 質問3
#type yet_another_type構造のルール
1. フロントマター(任意)
ファイルの先頭にYAML形式でフォーム全体の設定を記述できます:
---
collectEmail: true
allowMultipleResponses: false
showProgressBar: true
shuffleQuestions: false
themeColor: blue
responseReceipt: whenRequested
---2. フォームタイトル(必須)
最初の # 見出し がフォームのタイトルになります:
# お客様満足度調査3. フォーム説明(任意)
フォームタイトルの直後の段落がフォームの説明文になります:
# お客様満足度調査
このアンケートは、お客様のご意見をお伺いし、
サービス向上に役立てることを目的としています。4. セクション(ページ)
## 見出し で新しいセクション(ページ)を作成します:
## 基本情報セクション
お客様の基本的な情報をお伺いします。
## 満足度評価セクション
各項目についてご評価ください。5. 質問定義
### 見出し で質問を定義します:
### お名前を入力してください
ご本名をお書きください。
#type short_text
#placeholder "山田 太郎"
#required true質問の構造
- 質問ラベル:
### 見出しの内容 - 質問説明(任意): 見出しの直後の段落
- プロパティ:
#key value形式で設定
プロパティ記法
質問の詳細設定は #key value 形式で記述します。
基本的なプロパティ記法
### 質問ラベル
#type short_text
#required true
#placeholder "入力例"
#maxLength 100値の種類
文字列値
#placeholder "入力してください"
#type short_text数値
#min 0
#max 100
#scale 5真偽値
#required true
#visible false
#allowOther true配列(カンマ区切り)
#options "選択肢1","選択肢2","選択肢3"
#allowedTypes "pdf","docx","jpg"特殊記法
ラベルのペア:
#labels "低い","高い"
#scaleLabels "全くそう思わない","あまりそう思わない","普通","そう思う","とてもそう思う"完全な例
以下は、すべての要素を含む完全なフォーム定義の例です:
---
collectEmail: true
allowMultipleResponses: false
showProgressBar: true
shuffleQuestions: false
themeColor: blue
backgroundImage: mountain
responseReceipt: whenRequested
---
# 総合アンケートフォーム
このアンケートでは、お客様のプロフィールと
サービスに対するご意見をお伺いします。
## 基本情報セクション
まず、基本的な情報をお教えください。
### お名前
ご本名をフルネームでお書きください。
#type short_text
#placeholder "山田 太郎"
#required true
#maxLength 50
### 自己紹介
簡単に自己紹介をしてください。
#type long_text
#placeholder "趣味や特技について教えてください"
#maxLength 500
### 年齢
#type number
#min 0
#max 120
#required true
### 性別
#type dropdown
#options "男性","女性","その他","回答しない"
#required false
## 評価セクション
サービスについてご評価ください。
### 総合満足度
#type rating
#scale 5
#labels "不満","とても満足"
#required true
### 各項目の評価
以下の項目について5段階で評価してください。
#type likert
#statements "商品の品質","価格の妥当性","スタッフの対応","店舗の雰囲気"
#scaleLabels "とても悪い","悪い","普通","良い","とても良い"
#requiredPerStatement true
### 改善希望点
#type checkbox
#options "商品の種類を増やす","価格を下げる","営業時間を延長","駐車場を拡張","その他"
#maxSelected 3
## 追加情報セクション
### 来店頻度
#type radio
#options "週1回以上","月2-3回","月1回","年数回","初回"
#allowOther false
### ご意見・ご要望
#type long_text
#placeholder "ご自由にお書きください"
#maxLength 1000
### 連絡希望
今後、お得な情報をお送りしても宜しいですか?
#type boolean
#onLabel "希望する"
#offLabel "希望しない"記法のベストプラクティス
1. 見出しレベルの一貫性
# フォームタイトル(レベル1:1つだけ)
## セクションタイトル(レベル2:複数可)
### 質問ラベル(レベル3:複数可)2. プロパティのグループ化
関連するプロパティは近くに配置:
### 年齢入力
#type number
#min 0
#max 120
#step 1
#required true
#placeholder "数値で入力"3. わかりやすいラベル
# ❌ 悪い例
### 名前
#type short_text
# ✅ 良い例
### お名前を入力してください
#type short_text
#placeholder "山田 太郎"4. 説明文の活用
### クレジットカード番号
お支払いに使用するクレジットカードの番号を入力してください。
入力された情報は暗号化されて安全に処理されます。
#type short_text
#placeholder "1234-5678-9012-3456"
#required true制限事項と注意点
1. 見出しレベル
# 見出し: フォームタイトル(1つのみ)## 見出し: セクション分割### 見出し: 質問定義#### 以下: 現在サポートされていません
2. プロパティ配置
プロパティは質問(### 見出し)の直後の段落に記述する必要があります:
# ❌ 間違い
### 質問
質問の説明文
別の段落
#type short_text # ここでは認識されない
# ✅ 正しい
### 質問
質問の説明文
#type short_text
#required true3. 値のクォート
文字列値にカンマが含まれる場合は適切にエスケープ:
#options "選択肢1","選択肢2, 補足","選択肢3"4. プロパティ名の大文字・小文字
プロパティ名は小文字で統一:
# ❌ 間違い
#Type short_text
#Required true
# ✅ 正しい
#type short_text
#required true次のステップ
スキーマを理解したら、以下のページで具体的な質問タイプとプロパティを学習してください:
- 質問タイプ - すべての質問タイプの詳細
- プロパティリファレンス - 設定可能なプロパティ一覧
- フロントマター設定 - フォーム全体の設定オプション
- 実装例 - 実際の使用例とベストプラクティス