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 true

3. 値のクォート

文字列値にカンマが含まれる場合は適切にエスケープ:

#options "選択肢1","選択肢2, 補足","選択肢3"

4. プロパティ名の大文字・小文字

プロパティ名は小文字で統一:

# ❌ 間違い
#Type short_text
#Required true
 
# ✅ 正しい
#type short_text
#required true

次のステップ

スキーマを理解したら、以下のページで具体的な質問タイプとプロパティを学習してください: