実装の仕上げ
概要
- 日程: Day 4 / セッション 05
- 時間: 13:00-13:30
- 形式: 実習
- ゴール: APIとUIを統合し、1つのユースケース(例:「新規追加 → 一覧表示 → 編集 → 削除」)がエンドツーエンドで動作する
- 学習形式: ハンズオン実習(AIにバグ修正を相談)
導入(5分)
午前で「API」と「UI」が別々に動く状態まで来ました。お昼を挟んだこの30分は、両者をつなぎ込んで1ユースケースが端から端まで動くところまで持っていく仕上げの時間です。
ここで重要な心構えがひとつ。完璧を目指さないでください。Day 4のゴールは「研修発表のために、デモができる状態」を作ることであって、商用品質のソフトを作ることではありません。Walking Skeleton(歩く骸骨)が歩ければ十分。動かないところはAIに聞いて素早く直しましょう。
本編(10分)
1. 統合チェックリスト
「動く」と「ちゃんと動く」の間には深い溝があります。次のチェックリストで埋めていきます。
| 項目 | 確認方法 |
|---|---|
| APIサーバ起動 | node app.js で3000番が立ち上がる |
| 一覧取得 | UIを開くと既存データが表示される |
| 新規追加 | フォーム送信後、一覧に追加項目が出る |
| 更新 | 編集後、変更が反映される |
| 削除 | 削除後、一覧から消える |
| エラー時表示 | サーバ停止中にアクセスして、画面にエラー表示 |
| README | 別端末でcloneして起動できる |
ここがポイント
1つのユースケースで全CRUDが回ることを最優先します。複数モデルを薄く中途半端に作るより、1モデルを最後まで仕上げる方が発表で説得力が出ます。
コラム:MVPとは
スタートアップの世界に「MVP(Minimum Viable Product)」という言葉があります。Erick RiesがLean Startupで提唱した「最小限の動く製品」のこと。「最小限」が大事で、たくさん機能を作るより1つの価値が動く方が学びが多いという思想です。Day 4の今、皆さんが作っているのはまさにMVPです。
2. AIにバグ修正を相談するコツ
実装で詰まった時の質問の質が、解決速度を左右します。次の型をAIに渡しましょう。
# 状況
〇〇を実装している。〇〇ボタンを押すと△△を期待していた。
# 実際に起きたこと
△△にならず、コンソールに次のエラーが出る:
(エラーメッセージをそのまま貼る)
# 関連コード
(該当部分のコードをそのまま貼る)
# 試したこと
- 〇〇を確認した(問題なかった)
- △△を変えてみた(同じエラー)
# 質問
原因と修正案を、優先度の高い順に3つ示してください。
ここがポイント
- エラーメッセージはコピペ。要約しない
- コードはコピペ。「だいたいこんな感じ」では精度が落ちる
- 「3つ示して」で選択肢が広がる
- 「優先度順」で考える順番がわかる
コラム:ラバーダックデバッグ
昔の伝説的プログラマは、机にゴム製のアヒルを置き、バグに詰まったらアヒルに向かって「これはこういう処理で…」と説明する習慣がありました(「The Pragmatic Programmer」の有名な逸話)。人に説明する過程でバグを自力で見つけるという現象を活用したテクニックです。AIに状況を説明する行為そのものが、同じ効果を生みます。
3. 統合時の典型トラブル
| 症状 | よくある原因 |
|---|---|
| CORSエラー(コンソールに赤字) | APIサーバにcorsミドルウェアが入っていない |
Content-Typeの不一致 |
headersの指定を忘れている、または値のスペルミス |
req.bodyがundefined |
app.use(express.json())が抜けている |
| 文字化け | レスポンスのcharsetがUTF-8でない、HTMLに<meta charset="utf-8">がない |
| ポート競合 | 別プロセスが3000を使っている。lsof -i:3000 で確認 |
| GitHubで他人のコードと衝突 | 1日1回はpull、こまめにcommit |
ここがポイント
8割の統合トラブルはCORSとContent-Typeとexpress.jsonです。最初に疑ってください。
💬 AIに聞いてみよう
ここまでの内容で疑問があれば、AIに質問してみましょう。たとえば:
- 「次のエラーが出た:(エラーメッセージ)原因と修正案を3つ示して」
- 「APIとUIをつないでデモにする最短手順を教えて」
- 「READMEに最低限書くべき項目は?」
実習(10分)
課題
チームで1つのユースケースを選び、エンドツーエンドで動作させてください。例:
- レシピを新規追加 → 一覧で確認 → タイトル編集 → 削除
統合チェックリストの上から順に潰し、READMEに起動方法を書きます。
成果物
- 動作するアプリ一式(GitHubの最新コミット)
- README.md(起動手順、使い方、デモ手順)
- 1ユースケースのデモ動画 または スクショ連番
ヒント
- 全員が同じユースケースに集中する30分。残課題は付箋に書いて発表時に「今後の課題」として共有
- 詰まったら5分で諦めてAIに相談。一人で15分悩むより速い
- 「上手くいかない時こそAIに本気の質問を投げる」が今日一番のスキル
- 動かない部分はモックURLに差し替えてでも、ユースケース通過を優先
まとめ(5分)
エンドツーエンドで動く瞬間、これまで4日間積み上げてきた「情報定義書」「ペルソナ」「情報モデル」「状態遷移」「機能」「プレゼンテーション」「設計アプローチ」「API仕様」が、全部1つの動くアプリに収束します。設計の連続性こそ、皆さんが研修で得た最大の財産です。
次のセッションでは、この成果を5分間のプレゼンに圧縮する発表資料を作ります。
🔄 振り返りチェック
- 自チームのユースケースを口頭で30秒で説明できますか?
- 統合トラブルを1つ挙げ、その原因と修正方法を言えますか?
- READMEに必要な最低限の項目を3つ言えますか?
補足資料
- 参考リンク: README作成ガイド(GitHub Docs)、
corsミドルウェアのドキュメント - 発展課題: 簡易なエラーハンドリングUI(トースト通知)を追加する
学習ガイド
想定される質問と回答例
| 質問 | ヒント |
|---|---|
| 完璧に動かない部分は隠していい? | 発表では「今回は動くところまで作った」と素直に言うのが好印象 |
| AIの修正案が間違っていることがある | 「これを試したらこうなった」とAIに返すと精度が上がる |
| 時間内に終わる気がしない | スコープを1ユースケースに絞る判断を早めに |
つまずきやすいポイント
| つまずきポイント | ヒント |
|---|---|
| 全機能完璧を目指して時間切れ | デモシナリオに必要な範囲だけ仕上げる |
| バグ修正の時間を取らずに発表突入 | 残り10分は必ずテスト・READMEに割く |
| エラーメッセージを読まない | エラーは答えの大半を語っている |