Code Generation
読み: コード・ジェネレーション
コード生成とは業務への活用法
Code Generationとは、人間の日常的な言葉による指示からプログラムのソースコードを生成するAI技術。開発業務の劇的な短縮や非エンジニアによるデータ分析の自製化を実現する現代のビジネスに直結する中核技術である。
かんたんに言うと
熟練の通訳者が、あなたの曖昧な日本語の指示を即座に完璧なプログラミング言語へと翻訳し、そのまま実行可能な手順書として書き起こしてくれるようなものである。
自然言語の指示からプログラムを生成するCode Generationの全体像
製造ラインの稼働データを集計するPythonスクリプトを書きたいとする。従来なら社内のエンジニアに依頼して数日待つのが普通だった。今ならLLMに昨日のラインAの不良率を時間帯別にグラフ化してと頼むだけで、数秒後には動くコードが出力される。
これがCode Generationの威力である。
自然言語処理の進化により、人間が話す言葉の文脈をAIが正確に捉え、適切な構文に変換できるようになった。物流部門の担当者がSQLを一行も書けなくても、在庫の滞留期間を抽出するクエリを自力で生成できる時代になったのである。
ただ、生成されたコードが常に最適解とは限らない。
大規模言語モデルがコードを生成する仕組み
なぜAIはプログラミングができるのか。裏側にあるのはTransformerというアーキテクチャである。
世界中の公開リポジトリから収集された膨大な学習データを読み込み、次に来るべき最適な文字列を確率的に予測しているに過ぎない。AIがコードの意味を深く理解しているわけではなく、あなたのプロンプトに対して最もそれらしい続きを出力しているだけである。
だからこそ、プロンプトの質が結果を左右する。
売上データを処理してという雑な指示では、AIも凡庸なコードしか返さない。入力データの構造や期待する出力形式を具体的に指定しなければ、実務で使えるレベルには達しない。このあたりの匙加減は、実際に手を動かしてみないと分からない部分が多く、現場の担当者にとっては悩ましい。
現場を変える代表的なAIコード生成ツール
開発現場で最も普及しているのはGitHub Copilotだろう。エディタ上でコメントを書くだけで、次に必要な関数を丸ごと提案してくる。タイピングの手間が省けるだけでも、プログラマーの疲労度は全く違う。
最近ではCursorというエディタも面白い。
コードベース全体を読み込ませてこの機能を追加してと指示すれば、複数ファイルにまたがる修正案を一気に提示してくる。AWS環境を多用するならAmazon Q Developerも選択肢に入る。
ただ、ツールごとに得意な言語やフレームワークの偏りがある。自社の技術スタックとどれが一番噛み合うかは、実際に複数のツールを並行して試してみないと判断が分かれるところである。
コード生成がもたらす恩恵と現場の落とし穴
開発スピードが上がるのは間違いない。だが、手放しで喜べる話ではない。
一番怖いのはライセンス汚染である。
AIが学習データに含まれるGPLライセンスのコードをそのまま出力してしまい、気づかずに自社の商用プロダクトに組み込んでしまうリスクがある。著作権侵害の火種を自ら抱え込むようなもの。
法務部門がこの点に神経を尖らせるのは当然だろう。
また、一見まともに動くように見えて、エッジケースで致命的なバグを引き起こすコードを平気で出力することもある。AIが書いたコードのレビューは、人間が書いたコード以上に神経を使う。このレビューの手間を計算に入れないと、トータルの工数は結局変わらなかったというオチになりかねない。
自社への導入を成功に導くための評価基準
経理部門が月次決算のデータ処理にCode Generationを使いたいと言い出したとする。ここでとりあえず使ってみようと安易に許可を出すのは危険である。
扱うデータに顧客の個人情報や未公開の財務データが含まれていないか。
入力したプロンプトがAIの再学習に利用されないオプトアウト契約になっているか。コンプライアンスの観点からクリアすべきハードルはいくつもある。
さらに、生成されたコードの保守を誰が担うのかという問題も残る。
担当者が異動した途端、誰も中身を理解できないブラックボックスのスクリプトだけが残される。AIにコードを書かせるなら、そのコードの運用責任の所在までセットでルール化しておかなければ、数年後に技術的負債の山に埋もれることになる。
当社の見解
当社は機密情報のマスキング処理を全てローカルAIで行っている。これにより機密情報を外部に送信せずにAI処理できるようになった。だが、AIが嘘をつくハルシネーションの問題は依然としてある。確認していないのに「確認しました」と言う。当社はこの前提で運用を設計している。事実と推測の強制分離、ファクトチェック機能、3つのAIと人間の同士の三重検証を行っている。どこまでいっても、AIは完璧ではない。理論上100%安全設計をしていても、AIも人間も想定しないことは起こるものだ。その万が一に備えておくことが、AIを使う上では前提になっている。だろうではなく、かもしれない運用がAIを使う上での安全基盤となっている。
同じ失敗を二度としないAIエージェント
今のAIは、聞けば何でも答えてくれます。
でも、セッションが切れた瞬間に前回の失敗を忘れます。
当社が開発しているAIは、過去の経緯を念頭に置いて、
聞かれる前に「それは前回うまくいきませんでした」と声をかけます。
人間にも同じ失敗をさせず、AI自身も繰り返しません。
古参の社員が横にいるように、黙っていても気づいてくれる。
それが、当社が考える本当のAI社員です。
