はじめに
皆さん、AIを使っていますか?
今や生成AIはエンジニアにとって身近な存在になっています。しかし、正しく活用するにはその特徴や注意点を理解しておく必要があります。
今回はそんなAIの使い方についてみていきましょう。
生成AIに開発を丸投げしない
皆さんAIのプロンプトに対し前提条件や目的を整理せず、短い指示だけを入力していないでしょうか?
例えば「既存APIとの接続をするAPIを作って」という指示があった時に「既存APIとの接続をするAPIを作って」というようにほぼそのまま横に流してしまうような事例ですね。
それでも適切な回答が返ってくる場合もありますが、意図と異なる回答になることもあります。
そのためAIには目的や前提条件、実装範囲を整理して伝える必要があります。
例えば「支出登録APIを作って」と単に命令をするよりも「Laravelで支出登録APIを作成してください。フロントエンドに返す内容は、支出名、金額、カテゴリ、登録日時としてください。」とした方が、AIが依頼内容を判断しやすくなります。
AIのプロンプトを作成する際はなるべく指示をわかりやすく伝えるよう心がけましょう。
要件整理や設計相談で使う
生成AIの活用方法は、コードの実装だけではありません。
要件の整合性確認や設計の相談など、実装前の検討にも活用できます。
要件や設計を事前に整理しておくと、その内容を実装時の条件として伝えやすくなります。
こういったところから利用することでもAIをより効果的に活用できるようになります。
コード生成で活用する
生成AIの代表的な活用方法の一つが、コード生成です。
この過程でAIを使うにあたっても気を付けておきたい箇所があります。
それは「何をしてほしいのかを明確にする」ことです。
例えば自分がアプリケーションを作成したいとするとき、実務ではプロジェクトで使用している言語やフレームワークに合わせる必要があります。
また上司や仲間から「この言語で開発してほしい」といわれることもあるでしょう。
そういった際には「何を作るのか」「どの技術を使うのか」などといった技術要綱をAIに伝え、自分のやりたいことを伝えることが大事です。
例えば「Laravelで家計簿アプリの支出登録APIを作成してください。バックエンドはPHP 8.3とLaravel 12、データベースはMySQLを使用します。支出名、金額、カテゴリIDを受け取り、JSON形式で結果を返してください。」
といったように使用する技術や入出力、実装範囲を具体的に指定することが大切です。
生成したコードを説明させる
「AIに作らせて終わり」で済ませてはいけないのが我々エンジニアです。
生成されたコードの処理内容や動作理由を理解しておく必要があります。
そのために作られたコードを説明させることも大事です。
「このコードはどこがメインの実装でどう動いていますか?またこれがこう動作する理由を教えてください」などといった指示を用いて生成されたコードがどのような仕組みで動き、なぜその処理が必要なのかを理解しておく必要があります。
これを行わない場合エラーが起きたときなどに対処法がわからないということになりやすいです。
AIに聞いたときは「そのコードは、なぜ必要なのか説明できますか?」といわれれても対応できるくらいにはそのコードを理解しておくとよいでしょう。
生成AIは便利なので作らせて終わりになってしまうのもわかりますがしっかりなぜこうなったかやどういった経緯で作成されているかなど、そういったことも理解しておきましょう。
コードレビューに使う
コード生成にAIを使っていない人でも、コードレビューの補助として活用できます。
その理由がコードレビューです。
AIは、バグの可能性や可読性、テスト不足など、人間が見落としやすい点を洗い出す補助として利用できます。
AIレビューで注意すること
AIレビューにおいて注意すべき事項は先ほどまでにも何度か説明していますがここでおさらいしておきましょう。
まずは「AIを信用しすぎない」ことです。
AIは完全に正しい情報を提示するわけではなく、誤った情報や存在しない機能が含まれることがあります。
そのため、AIの指摘をそのまま受け入れず、内容を検証する必要があります。
例えば指摘内容は公式ドキュメントを確認したり実際にコードを実行したり、テストを行ったりして検証します。
そして「丁寧に条件を提示する」ことです。
目的や前提条件が整理されているほど、AIは回答の範囲を絞りやすくなります。
そのため分かっている前提条件や制約を、できる限り具体的に伝えましょう。
また「確認を必ずする」ことも大事です。
誤った情報をそのまま受け入れてしまうと、実装や理解に影響する可能性があります。
公式ドキュメントや動作確認を通して、回答の正しさを確認しましょう。
リファクタリングに使う
既存コードの動作を保ちながら、読みやすさや保守性を改善するリファクタリングにもAIを活用できます。
リファクタリングには知識や時間が必要ですがAIであればリファクタリング案を考えたり、コードを書き換えたりする時間を短縮できます。
テストケース作成に使う
テストにもAIは活用できます。
AIには、テスト観点の洗い出しやテストケース、テストコードのひな形作成を依頼できます。ただし、作成されたテストは開発環境やCIで実行し、期待する動作を正しく検証できているか人間が確認する必要があります。
そうすればテストコードのたたき台を短時間で作成できます。
ただしテストコードが生成されたことと、正しいテストであることは別です。
気を付け方はほかの項目と大きくは異なりませんが、きちんと確認は行いましょう。
エラー調査に使う
エラー調査という面でも活用できます。
エラー内容と周辺情報を渡すことで、原因候補や調査手順を整理してもらえます。
ただしこちらでも必ずしも正しい情報ではないということは念頭に入れておきましょう。
中には情報不足につき間違った情報を提示することもありますので情報が不足している場合は、必要な情報を追加して再度質問しましょう。
例えば
・エラーメッセージ全文
・実行した操作
・関連コード
・使用している言語やバージョン
・期待した動作
・実際に起きた動作
・すでに試した対応
こういった内容はAIが判断する上で重要ですので提示することでより適切な原因候補や調査手順を得やすくなります。
生成AIに入力する情報に注意する
生成AIを実務で利用する際は、入力する情報にも注意が必要です。
例えば、APIキーやパスワード、アクセストークンなどの認証情報を入力してはいけません。
また、顧客の個人情報や本番環境のデータ、社内の機密情報なども、そのまま入力しないようにしましょう。
ソースコードについても、会社や案件によっては外部の生成AIへ入力することが禁止されている場合があります。
そのため、業務で利用する際は会社や案件で定められているルールを事前に確認する必要があります。
生成AIは便利ですが、入力した情報をどのように扱うかはサービスによって異なります。
使用するサービスの利用規約やデータの取り扱いについて確認したうえで、安全に利用するようにしましょう。
生成AIを使う開発フロー
ここまで紹介した内容をもとに、生成AIを活用した開発の流れを整理してみましょう。
まず、作成したい機能の目的や要件を整理します。
不明な点がある場合は実装を始める前に生成AIへ相談し、必要な処理や確認事項を洗い出します。
次に、作業内容を小さな単位に分け使用する技術や入力値、出力形式、実装範囲を具体的に伝えてコードを生成してもらいます。
コードが生成されたらそのまま使用するのではなく、処理内容や実行される順番を説明させます。
そのうえで開発環境で実際に動かし、期待した結果になるかを確認します。
実装後は生成AIにコードレビューやテスト観点の洗い出しを依頼します。
指摘された内容や生成されたテストコードは、公式ドキュメントや動作確認、テストの実行を通して検証します。
最後に、生成されたコードや指摘内容を採用するかどうかを人間が判断します。
生成AIを使った開発は、次のような流れになります。
- 機能の目的や要件を整理する
- 設計や不明点を生成AIへ相談する
- 作業を小さな単位に分ける
- 条件を指定してコードを生成する
- 生成されたコードの内容を理解する
- 開発環境で動作を確認する
- コードレビューやテスト観点を依頼する
- テストを実行して結果を確認する
- 人間が最終的な判断を行う
このように生成AIに開発をすべて任せるのではなく、各工程を補助してもらう形で利用することが大切です。
まとめ
今回は生成AIを開発業務で活用する方法について見てきました。
生成AIは、コード生成だけでなく要件整理や設計相談、コードレビュー、リファクタリング、テストケース作成、エラー調査など、さまざまな場面で活用できます。
一方で生成AIの回答が常に正しいとは限りません。
生成されたコードや指摘内容は、公式ドキュメントや動作確認、テストなどを通して検証する必要があります。
また業務で使用する場合は機密情報や個人情報を入力せず、会社や案件で定められたルールを確認することも重要です。
生成AIに開発を丸投げするのではなく、開発者の判断や作業を補助する道具として活用することで、より安全で効率的に開発を進められるようになるでしょう。