基本的な使い方
このページでは、md2formのインストールから基本的な使用方法までを説明します。
インストール
npmを使用する場合
npm install md2formBunを使用する場合(推奨)
bun add md2form開発環境のセットアップ
プロジェクトの開発やカスタマイズを行う場合:
git clone <repository-url>
cd md2form
bun install開発環境ではBun v1.2.18以降を推奨しています。
基本的な使い方
シンプルな例
最も基本的な使用方法から始めましょう:
import { parseMarkdownToForm } from "md2form"
const markdown = `
# 基本的なフォーム
## 質問セクション
### お名前
#type short_text
#required true
`
const form = await parseMarkdownToForm(markdown)
console.log(form)この例では、以下の構造のフォームが作成されます:
- フォームタイトル: “基本的なフォーム”
- 1つのページ(セクション): “質問セクション”
- 1つの必須テキスト入力: “お名前”
フロントマター付きの例
より詳細な設定を含む例:
const markdown = `
---
collectEmail: true
showProgressBar: true
allowMultipleResponses: false
themeColor: "#3B82F6"
---
# お客様アンケート
お客様の声をお聞かせください。
## 基本情報
### お名前を入力してください
#type short_text
#placeholder "山田 太郎"
#required true
### メールアドレス
#type email
#placeholder "example@example.com"
#required true
## 評価
### サービスの満足度
#type rating
#scale 5
#labels "不満","とても満足"
#required true
`
const form = await parseMarkdownToForm(markdown)
// フォーム情報にアクセス
console.log(form.title) // "お客様アンケート"
console.log(form.settings?.collectEmail) // true
console.log(form.settings?.themeColor) // "#3B82F6"
console.log(form.pages.length) // 2 (基本情報、評価)返されるオブジェクトの構造
パースされたフォームは以下の構造を持ちます:
{
title: "お客様アンケート",
description: "お客様の声をお聞かせください。",
settings: {
collectEmail: true,
showProgressBar: true,
allowMultipleResponses: false,
themeColor: "#3B82F6"
},
pages: [
{
title: "基本情報",
elements: [
{
type: "short_text",
label: "お名前を入力してください",
placeholder: "山田 太郎",
required: true
},
{
type: "email",
label: "メールアドレス",
placeholder: "example@example.com",
required: true
}
]
},
{
title: "評価",
elements: [
{
type: "rating",
label: "サービスの満足度",
scale: 5,
labels: { low: "不満", high: "とても満足" },
required: true
}
]
}
]
}サンプルの実行
プロジェクトには完全なサンプルが含まれています:
# サンプルフォームをパースして結果を確認
bun run workspaceこれにより:
workspace/sample-form.mdがパースされます- 結果が
workspace.jsonに出力されます - コンソールにフォーム構造が表示されます
サンプルフォームの内容
workspace/sample-form.md にはすべての質問タイプを含む完全なサンプルがあります:
- テキスト入力(短文・長文)
- 数値入力
- メール・電話番号
- 選択系(ドロップダウン・ラジオ・チェックボックス)
- 日時選択
- 評価系(星評価・リッカート尺度・マトリクス・スケール)
- ファイルアップロード
- 電子署名
- メディア表示
- その他
エラーハンドリング
パースエラーが発生した場合の処理:
try {
const form = await parseMarkdownToForm(markdown)
// 正常な処理
} catch (error) {
console.error("パースエラー:", error)
// エラー処理
}型安全性の活用
TypeScriptを使用している場合、型定義を活用して安全にデータを扱えます:
import { parseMarkdownToForm } from "md2form"
import type { FormDocument, ShortText, NumberField } from "md2form"
const form: FormDocument = await parseMarkdownToForm(markdown)
// 型安全なアクセス
form.pages.forEach((page) => {
page.elements.forEach((element) => {
if (element.type === "short_text") {
const shortText = element as ShortText
console.log(shortText.placeholder) // 型安全
}
if (element.type === "number") {
const numberField = element as NumberField
console.log(numberField.min, numberField.max) // 型安全
}
})
})次のステップ
基本的な使い方を理解したら、以下のページでより詳細な情報を確認してください:
- Markdownスキーマ - フォーム定義の記法とルール
- 質問タイプ - すべての質問タイプの詳細
- プロパティリファレンス - 設定可能なプロパティ
- 実装例 - 実際の使用例とベストプラクティス
よくある質問
Q: Bunではなくnpmやyarnでも使用できますか?
A: はい、md2formはnpmやyarnでも正常に動作します。ただし、開発環境ではBunの使用を推奨しています。
Q: ブラウザで直接使用できますか?
A: md2formはNode.js環境での使用を想定しています。ブラウザで使用する場合は、バンドラー(webpack、Viteなど)を使用してください。
Q: パース結果をJSONファイルに保存したい場合は?
A: 以下のようにして保存できます:
import { writeFile } from "fs/promises"
const form = await parseMarkdownToForm(markdown)
await writeFile("form.json", JSON.stringify(form, null, 2))