はじめに
直近、開発で生成AIを使っています。生成AIを使う中で、とても便利になった点があると思う一方、これまでなかった課題を感じるようになりました。
この記事で振り返りと気付きについて記載します。
結論
以下の効果が得られました。
- 設計業務により集中できるようになりました
一方で以下の課題を感じました。
- 技術・設計に対する理解がないと、生成AIが出力した内容をレビューできません
本記事では、実際に設計、製造(実装)、単体テストの各フェーズで生成AIを活用した経験を通じて得られた気づきと感想をまとめます。
使用した生成AIツール
- GitHub Copilot: 設計書執筆・リアルタイムコード補完
Amazon Qも使っていましたが、修正箇所がRead Onlyタブでしか開けず少し不便だったので、Copilotを使うことにしました。
また、Copilotの場合には会話の要約を自動で行って、会話が長く続いてもエラーとならず、ストレスが少なく使えた点も大きかったです。
各フェーズでの活用状況
設計フェーズ
活用方法
- 設計書の初版作成
- 設計ドキュメントの一括修正
- 設計レビューでの指摘事項の横展開
得られた気づき
良かった点:
- 設計書作成の大幅な時間短縮: 設計書のテンプレートから初版を生成AIに作成させることで、ゼロから書く手間を省けました
- 一括修正の効率化: 初版レビューで見つかった指摘事項を生成AIに投げることで、似ているが、機械的に修正できないような誤りを文書全体で一括修正できました
課題点:
- 生成された設計書の品質にムラがあり、毎回同じ品質の設計書が出来上がりません
- 生成AIがテンプレートの構造を正しく理解できていない場合があり、構造を守らないことも多くありました
具体例
-
設計書の自動生成
- 既存の設計書テンプレートと要件を生成AIに提供
- 「このテンプレートに従って、○○機能の設計書を作成してください」
- 手作業では数時間かかる作業が数分で完了
-
レビュー指摘の一括対応
- セルフレビューで生成AIに「変数名の命名規則が統一されていない」と依頼
- 類似の修正箇所をほぼ漏れなく一括処理
製造(実装)フェーズ
活用方法
- GitHub Copilotによる実装の大部分を自動生成
- 細かいロジックの実装を生成AIに委任
得られた気づき
良かった点:
- 大幅な作業時間短縮: ほとんどの実装を生成AIに任せることができ、従来手動で書いていた細かいロジックを考える必要がなくなりました
- 実装速度の向上: コードをAIが高速で生成してくれるため、開発スピードが大幅に向上しました
課題点:
- AIが生成したコードの品質を評価するため、多くセルフレビューの時間がかかりました
- 複雑なロジックでは、AIの理解が不十分な場合があり、適宜指示を出していました
具体例
// 従来: 手動でバリデーション、データ変換、エラーハンドリングを実装
// 現在: 要件を伝えるだけでAIが包括的な実装を生成
「ユーザー情報の更新APIを実装して。バリデーション、データベース更新、エラーハンドリングを含めて」
→ AIが完全な実装コードを生成、細かなロジックを考える時間を大幅削減
単体テストフェーズ
活用方法
- テストコードの自動生成
- テスト観点の網羅的な検討(C0,C1の数値目標を活用)
得られた気づき
良かった点:
- テスト作業の敷居が大幅に下がりました: テストケースの洗い出しから実装まで一貫してAIを活用でき、テストに関する深い知識がなくても手を動かすことができました
- テスト実装の効率化: テストコードの実装まで、AIが生成してくれることで作業時間を大幅短縮できました
課題点:
- コードの理解が前提: 生成AIが生成したテストコードやテストケースが適切かを判断するには、結局のところコードを理解することが必要です。C0,C1の値ばかり見ているとテストコードが肥大化していくことがありました
具体例
// テストケース洗い出しの例
「○○関数のテストケースを洗い出して」
→ AIが正常系、異常系、境界値テストなど幅広く提案
// しかし、以下の判断は人間が必要:
- 生成されたテストケースが仕様を正しく反映しているか
- テストコードが実際に期待する動作を検証しているか→PCLから評価して対応しました
- パフォーマンステストの観点が適切か
おわりに
生成AIを使うことで、製造・単体で1機能につき従来数日かかっていた作業が1日で完了するようになりました。
また、従来の「タイピング」中心の物理的な作業から「レビュー・修正」中心の作業へと働き方が大きく変わったことを感じました
生成AIが生成したコードや設計の妙当性を評価するには、相応の技術的知識が不可欠であり、AIツール以上に自分自身への情報インプットの量が重要だなと感じました。
これからも生成AIを活用できるよう勉強します