DX改善シナリオ演習 / 約25分
FAQ自動化ツールの設計
なぜこれを学ぶか
ヒアリングで「FAQで解決できる問い合わせが7割ある」と分かりました。次はFAQ自動化ツールを設計します。「まず動くものを小さく作る」ために、DB・API・画面の3層を設計する演習です。
FAQ自動化ツールに必要な3層: ①データ層(DB) — FAQデータをどこに・どんな構造で保存するか。②ロジック層(API) — どんなAPIエンドポイントが必要か(検索・取得・追加・更新)。③表示層(画面) — ユーザーにどんな画面を見せるか(検索画面・FAQ一覧・管理画面)。
DB設計の基本(FAQテーブル): まずシンプルに始める。id, question(質問文), answer(回答文), category(カテゴリ:VPN/パスワード等), view_count(閲覧回数), is_published(公開フラグ), created_at, updated_at。最初は1テーブルで十分。後からtagsテーブルなどで拡張する。
API設計の基本(RESTful): ▶ GET /api/faqs?q=キーワード — キーワード検索(ユーザー向け)▶ GET /api/faqs/:id — 1件取得 ▶ GET /api/faqs?category=VPN — カテゴリ絞り込み ▶ POST /api/faqs — FAQ追加(管理者のみ)▶ PUT /api/faqs/:id — FAQ更新(管理者のみ)。設計時点で「誰がアクセスするか」も考える(ユーザー向け読み取り専用 vs 管理者向け書き込み)。
画面設計のポイント(ユーザー視点): ❶検索ボックスは目立つ場所に置く ❷カテゴリで絞り込める ❸質問をクリックすると回答が展開(アコーディオン)❹「解決しましたか?」のフィードバックボタン ❺「担当者に相談」ボタン(自己解決できなかった場合の導線)。FAQは「問い合わせゼロ化」より「問い合わせ前の一次解決率向上」を目指す。
スモールスタートの原則: 最初から完璧なシステムを作らない。①まずSpreadsheetにFAQを書いてGoogleフォームで検索させる(ゼロコスト)②次に検索機能をウェブページで提供③最終的にDB+API化。段階を踏むことで「作ったが使われない」リスクを減らす。
重要ポイント
- FAQ自動化ツールはDB・API・画面の3層で考える
- DBは最初は1テーブルシンプルに。後から拡張する
- APIは「誰が・何をする」ごとにエンドポイントを分ける
- 完璧より「小さく動くもの」を先に作るのがスモールスタート
理解度チェック
選ぶと即座に解説が表示されます。
FAQテーブルの設計で「view_count(閲覧回数)カラム」を入れておく主な理由はどれ?
ヒントを見る
FAQを作った後、どうやって「効果があったか」を判断しますか?
コードレビュー演習
FAQ自動化ツールのDB設計とAPIエンドポイント案を評価してください。 以下の「候補A」と「候補B」のどちらが、スモールスタートの原則に合っているか選んでください。
/* === 候補A: 初期設計 === */
// DB: 1テーブル
CREATE TABLE faqs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
question TEXT NOT NULL,
answer TEXT NOT NULL,
category TEXT, -- 'VPN', 'password', 'slack' 等
view_count INTEGER DEFAULT 0,
is_published INTEGER DEFAULT 1, -- 0=下書き, 1=公開
created_at TEXT DEFAULT CURRENT_TIMESTAMP
);
// API: 最小限の3エンドポイント
// GET /api/faqs?q=検索ワード&category=カテゴリ → 検索・絞り込み
// GET /api/faqs/:id → 1件取得
// POST /api/admin/faqs → 管理者: 追加
/* === 候補B: 初期設計 === */
// DB: 5テーブル(faq, category, tag, faq_tag, feedback)
// API: 15エンドポイント(CRUD全部 + タグ管理 + 分析 + 承認ワークフロー)
// 追加機能: AIによる自動タグ付け、類似FAQ推薦、多言語対応、承認フロー
// 工数見積もり: 3〜4ヶ月スモールスタートの観点で正しい選択はどれ?
ヒントを見る
まず「使われるか」を確かめてから機能を増やすのが、スモールスタートの本質です。
スキルセルフチェック
このレッスンの内容をどの程度理解できましたか?