実装スプリント1〜最初の機能を動かす
概要
- 日程: Day 11 / セッション 2
- 時間: [10:00-12:20](途中休憩11:00-11:10を含む)
- 形式: 実習
- ゴール: かんばんのタスクに従い、最初の機能(画面表示・データ登録等)を1つ以上動作させられる
- 学習形式: ハンズオン実習(AIペアプログラミング)
導入(5分)
いよいよ最初のコードを書きます。今日のテーマは「小さく作って小さく動かす」です。
ここで考えてください。2時間後に「全機能の半分が書きかけ」の状態と、「機能1つだけ完全に動く」状態、どちらが良いでしょうか。
正解は後者です。書きかけのコードは動くかどうか分かりません。動く機能が1つあれば、それは確かな前進です。動いた1つ目は、2つ目以降の「型」にもなります。
雪だるま作りと同じです。最初に小さくても固い芯を作れば、あとは転がすだけで大きくなります。芯がゆるいと、大きくする途中で崩れます。
本編(15分)
1. 最初のタスクの選び方〜「薄く貫通する」一本を選ぶ
かんばんのTodoから、最初に着手するタスクを選びます。基準はこれです。
小さくて、他のタスクの土台になり、動いたことが目で確認できるもの。
たとえば「会員情報の一覧を画面に表示する」は良い最初のタスクです。画面・処理・データが一直線につながり、動けば目に見えるからです。一方「全画面の共通デザインを完成させる」は最初のタスクには向きません。どれだけ進んだか確認しにくく、機能が1つも動かないまま時間が溶けるからです。
「画面→処理→データ」を細い一本道でいいから貫通させる。これを薄い縦切り(垂直スライス)と呼びます。
コード例・実例
垂直スライスの例(言語に依存しないイメージ)。
1. 画面に「テスト表示」の固定文字だけ出す → 動作確認
2. 同じ画面でデータベースから1件取り出して表示する → 動作確認
3. 取り出す件数を増やして一覧化する → 動作確認
4. 一覧画面と他画面のリンクをつなぐ → 動作確認
各ステップで必ず動作確認します。まとめて書いてまとめて確認する、ではありません。
ここがポイント
- 最初の1時間で「何か1つが動く」状態を目指す
- データは本物でなくてよい。手で入れた仮データ1件で十分
- 着手したタスクはかんばんでDoingに動かしてから始める
コラム
「とにかくまず動く最小限を作る」考え方は、ビジネスではMVP(Minimum Viable Product)と呼ばれます。有名なたとえに「車を作るとき、最初にタイヤだけ納品してはいけない。最初にスケートボードを納品せよ」というものがあります。タイヤ単体では誰も移動できませんが、スケートボードなら不格好でも「移動できる」という価値が最初から検証できるからです。皆さんの最初の機能も、立派なスケートボードを目指しましょう。
2. AIペアプログラミングの実践手順
前のセッションで学んだ進め方を、実際の作業手順に落とします。どの言語・フレームワークでも手順は同じです。
AIへの相談例です。自チームの言語・ツール名に置き換えて使ってください。
コード例・実例
方針相談(書く前)
これから「○○の一覧を画面に表示する機能」を作ります。
使う技術: [チームで選んだ言語・ツール・バージョン]
設計書の該当部分: [画面仕様書・テーブル定義の該当箇所を貼る]
まずコードを書かずに、実装手順を3〜5ステップで一緒に整理してください。
各ステップで「動作確認できること」も教えてください。
最初の一歩が分からないとき
[ツール名]で開発を始めたいのですが、最初に何を準備すればよいか分かりません。
「画面に固定の文字を1行表示する」最小の状態を作る手順を、
1つずつ確認しながら教えてください。1ステップずつ進めます。
エラーが出たとき(全文を貼る)
実行したら次のエラーが出ました。全文を貼ります。
[エラーメッセージ全文]
直前にやったこと: [例: ○○の行を追加して実行した]
該当するコード: [コードを貼る]
エラーの意味を先に説明してから、確認すべき箇所を教えてください。
エラーは出ないが期待と違うとき
エラーは出ませんが、期待した動きになりません。
期待: 一覧に3件表示される
実際: 1件も表示されない
コード: [貼る]
原因の切り分け方を、確認手順として教えてください。
別の実装案を聞きたいとき
今書いた方法以外に、もっとシンプルな書き方はありますか?
- 今のコード: [貼る]
- 候補を2つ挙げて、それぞれのメリット・デメリットを教えてください。
- 自分で選べるように比較表でお願いします。
ここがポイント
- 「書く→動かす」のサイクルを数分単位で回す。30分動かしていなかったら危険信号
- AIの提案を採用する前に「この行は何をしている?」と必ず確認する
- 同じエラーで15分悩んだら、チームメンバーに声をかける。抱え込みは禁止
コラム
世界初のコンピュータ「バグ」は、1947年にハーバード大学の計算機から見つかった本物の蛾だと言われています。リレーに蛾が挟まって誤動作し、技術者がその蛾をテープで作業日誌に貼り付けて「First actual case of bug being found」と記録しました。この日誌は今もスミソニアン博物館に保存されています。つまりエラーの記録を丁寧に残す文化は、コンピュータ史の最初からあったのです。皆さんがエラー全文をAIに貼るのも、この伝統の正統な続きです。
💬 AIに聞いてみよう
実装を始める前に、不安な点をAIに相談しておきましょう。たとえば。
- 「[ツール名]で最小の動くものを作る手順を、初心者向けに教えて」
- 「垂直スライスでの実装って具体的にどう進めるの? うちのテーマは○○です」
- 「動作確認って何をどこまで確認すればいいの?」
実習・演習(110分+休憩10分)
課題
かんばんのタスクに従い、最初の機能を1つ以上動かしてください。
- チームで「最初に動かす機能」を1つ決める(5分)
- 画面表示・データ登録など、小さくて土台になるもの
- 担当をかんばんに明記し、Doingへ動かす
- 設計書の該当箇所を確認する(5分)
- 画面仕様書・機能設計書・テーブル定義書のどこに対応するか、声に出して確認
- AIと方針を固めてから実装する(〜90分)
- 上の相談例を使い、手順を固める → 小さく書く → すぐ動かす
- エラーは全文をAIに貼って相談する
- 動いたらチームメンバーに見せて、次のタスクへ
- 終了10分前に動作確認とかんばん整理(10分)
- 動いた機能をチーム全員で1回操作する
- Doingに残っている作業の状態をメモし、終会に備える
成果物
- 動作する最初の機能(1つ以上)
- 実態に合ったかんばん(Done/Doingの更新)
ヒント
- 何から書けばいいか分からない → AIに「最小の動く状態を作る手順を1ステップずつ」と頼む。一気に全部聞かない
- エラーが出たら → 「[エラー全文]というエラーが出た。直前に○○をした」とAIに伝えると解決策を教えてもらえる
- データベースにつなぐ部分で詰まったら → 先に仮データ(固定値)で画面まで貫通させ、接続は次のタスクに分ける
- AIが長大なコードを出してきたら → 「もっと小さい単位に分けて。まず最初の1ステップだけ」と頼み直す
- チームで同じ箇所を同時に編集しない → 朝決めた分担を守る。重なりそうなら先に声をかける
まとめ(5分)
今回学んだことを一言でまとめると「小さく作って小さく動かせば、最初の機能は必ず動く」です。
- 最初のタスクは「薄く貫通する」一本を選ぶ
- 書く→動かすを数分単位で回す
- エラーは全文をAIに貼る。15分悩んだらチームに相談
次のセッションは終会です。今日の進捗と「困っていること」をチームに持ち寄ります。
🔄 振り返りチェック
以下の問いに答えられるか確認してみましょう。
- 最初に着手するタスクの選び方の基準は何でしたか?
- エラーが出たとき、AIに何をどう伝えますか?
- 今日動かした機能は、設計書のどの部分に対応していますか?
答えに自信がない場合は、該当部分を読み返すか、AIに質問してみてください。
補足資料
- 参考リンク: 自チームの外部設計書・内部設計書・かんばん
- 発展課題: 今日動かした機能について、AIに「このコードの改善点を初心者向けに1つだけ教えて」と聞いてみる
学習ガイド
このセクションは、受講者が理解を深めることをサポートする参考情報です。
想定される質問と回答例
| 質問 | ヒント |
|---|---|
| 2時間で機能が1つも動かなかったらどうする? | 失敗ではなく重要な情報。終会で「どこで詰まったか」を共有し、タスクの分割や分担を見直す材料にする |
| チームメンバーと進み方に差が出てきた | 速い人は先に進むのではなく、詰まっている人とペアを組む。チームの成果は「全員分の合計」で決まる |
| 設計書に書いていない細部はどうする? | 軽微なら実装者が判断してメモを残し、終会で共有。設計に影響するなら、その場でチームに声をかけて合意する |
| AIが毎回違う書き方を提案してきて混乱する | 「チームでは○○という書き方に統一している。それに合わせて」と前提を伝える |
つまずきやすいポイント
| つまずきポイント | ヒント |
|---|---|
| 開発環境の準備で時間が溶ける | 環境問題こそAIの得意分野。エラー全文と OS・ツールのバージョンを添えて相談する。15分超えたらチームへ |
| 完璧なコードを書こうとして手が止まる | 今日のゴールは「動く」こと。きれいにするのはDay 13のコードレビューでやる |
| まとめて書いてまとめて実行し、どこが悪いか分からなくなる | 数行書くごとに実行する習慣に戻す。動いていた最後の状態を覚えておく |
| AIの回答のコードが自分の環境で動かない | 自分の環境(言語・バージョン・ツール)を最初に伝える。「この環境で動く形にして」と頼む |