アジャイルな進め方でAIとペアプロする
はじめに
AIアシスタントを利用した開発が一般的になり、ある種AIアシスタントとのペアプログラミングを効果的にする方法が重要になっていると思います。
私はnpmパッケージの開発を通じて、タスクを小さく分割して進めるアジャイルな進め方が、AIとの協働においても特に重要であることを改めて学びました。
この記事では、その経験から得られた知見を書き出してみた内容になります。
なぜタスクの分割が重要なのか
AIとのペアプロを始めた当初、私は大きな要求を一度に投げかけていました。
# あくまで例
「〇〇のnpmパッケージを作って、テストも書いて、ドキュメントも充実させて、公開まで全部教えてください」
このアプローチでは、以下の問題が発生しました。
- AIの回答が長大で、どこから手を付けてよいか分からない
- エラーが発生した際、原因の特定が困難
- 学習の機会を逃してしまう
アジャイルなアプローチへの転換
そこで、タスクを小さく分割し、段階的に進めるアプローチに切り替えました。
これはXP(Extreme Programming)の原則にあるベイビーステップ(Baby Steps)に基づいた考え方です。
※ベイビーステップは、TDD(テストファーストプログラミング)やCI(継続的インテグレーション)などのプラクティスで表現されています。
実践例:最小単位への分解
大きなタスクを以下のように分解しました。
分解後:
1. 最小限のJavaScriptファイルを作る
2. package.jsonの必須項目を理解する
3. ローカルで動作確認する方法を学ぶ
4. 一つずつ機能を追加する
5. 公開の手順を確認する
実際に小さく分解したことで、ローカルでの動作確認をしてからnpmへの公開を行う方がより不確実性を減らして進めらることにも気づきました。
一例として、npmでローカル確認するためのコマンドを知る話
npm pack # 実際にpackageとして公開される状態と同じtgzを作成する
npm install ../local/library/target.tgz # localで作成したライブラリをinstallする
より不確実性を無くして進める術を得られたと同時に、確実に動くことを確認してからパッケージの公開ができるため、自信を持ちながら進められました。
ストーリー化
分解した内容をストーリーにしてみるとより開発者からすると価値も明確になり迷わず進められます。
※個人開発では必須ではありません。
「開発者は、ローカル環境で自作したライブラリを使用し〇〇ができる」など
「完了の定義 / Definition of Done (DoD)」としては「ローカルで〇〇が確認できた状態 」など
AIアシスタントへの質問も小さくする
各ステップでAIに質問する際も、具体的で小さな単位にして聞くことを心がけました。
良い例:
「package.jsonのnameフィールドにはどんな制約がありますか?」
悪い例:
「package.jsonの全部を説明してください」
段階的な実装の効果
小さく進めることで、さまざまな効果がありました。
XPにあるような原則に従って進めているので、関連する原則からのフィードバックサイクルが得られます。
コントローラブルにAIアシスタントを利用できると、フィードバックサイクルも高速になり成長速度も同時に得られるので現在のAIアシスタントとのペアプロにおいては重要な気づきであると感じました。
※技術の進化とともに、AIとの協働方法も進化していくはずなのであくまで現状です。
まとめ
AIとのペアプログラミングにおいて、タスクを小さく分割して進めるアジャイルなアプローチは極めて重要です。
大きな要求を一度に投げるのではなく、段階的に進めることで、より深い理解と確実な成果を得ることができました。
npmパッケージの開発は今回の学習の題材に過ぎませんが、得られた「小さく始めて、確実に進める」という原則は、AIとの協働において普遍的に適用できると思うので
さらに練度を上げて知見を溜めていきたいところです。
Discussion