01LLM がコードを書く原理 ── 「次の一語」を当て続けているだけ

まず、いちばん誤解されやすい点をはっきりさせます。LLM は、プログラムの意味を理解して書いているわけではありません。やっているのは、きわめて単純な作業です ── 「これまでの文字列の続きとして、次に来る確率がいちばん高い語(トークン)は何か」を予測し、一つずつ並べているだけです。この仕組みは、2017 年に発表された Transformer(=トランスフォーマー、文章の各語がどの語に注目すべきかを計算する仕組み)という構造の上に成り立っています。

コードも、LLM にとっては文章の一種です。def と書けば、その後には関数名が続く確率が高い。for i in と書けば、繰り返しの対象が続く。膨大な公開コードを学習しているので、こうした「続き」の予測が、驚くほど自然なプログラムに見えるわけです。

ここで大事なのは、この予測が最適化しているのは「正しさ」ではなく「もっともらしさ」だという点です。文法的に自然で、よくある書き方に似てさえいれば、たとえ動かないコードでも、LLM は自信たっぷりに出力します。原理を一言でまとめると、こうなります。

原理の核: LLM は「正しいコード」を書いているのではなく、「学習データの中で、この文脈にいちばんありそうなコード」を書いています。多くの場合それは正しいコードと一致しますが、一致を保証する仕組みは、モデルの中にありません。

02得意と不得意 ── 境界は「学習データにどれだけあったか」で決まる

「続きを予測する」という原理から、得意・不得意の境界がそのまま導けます。学習データに大量にあるパターンは得意、めったにないパターンは不得意。これでほぼすべて説明がつきます。

得意 01

定型的な実装

"よくある形" を書く

API 呼び出し、データ整形、CSV の読み書き、正規表現、標準的なアルゴリズム。世の中に類例が無数にあるコードは、精度も速度も高い。

得意 02

翻訳と変換

"言い換え" を書く

Python から JavaScript へ、擬似コードから実コードへ、エラーメッセージから修正案へ。ある形式を別の形式に移す作業は、予測と相性がよい。

不得意 01

新規性の高い設計

"前例の無い形" を書く

その組織だけの独自仕様、社内 API、まだ世に無いアーキテクチャ。学習データに手本が無いので、それらしい嘘(後述)に流れやすい。

不得意 02

厳密な計算と数え上げ

"正確さ" が要る所

桁の多い算術、境界条件、オフバイワン(=1 ずれ)の判定。確率で予測する以上、こうした一つしかない正解は外しやすい。

Chen らが 2021 年に発表した Codex(=コード生成用の GPT)の評価研究は、この境界を数字で示しました。基本的な関数を書かせる HumanEval(=人手で作った 164 問のコード課題)というテストで、一発で正解する率は 3 割前後。ただし、同じ問題に何十回も挑ませ、そのうち一つでも正解があればよいとする条件なら、正解率は大きく上がります。「一発では外すが、数を撃てば当たる」 ── これが LLM のコード生成の素顔です。以後のモデルで精度は上がっても、この性質そのものは変わっていません。

03ハルシネーションの罠 ── 存在しない関数を、堂々と呼ぶ

LLM の限界がいちばん危険な形で出るのが、ハルシネーション(=もっともらしい嘘)です。存在しないライブラリ、実装されていない関数、間違った引数の順序 ── これらを、LLM は正しいコードとまったく同じ自信で書きます。「たぶん間違っています」とは、まず言ってくれません。

なぜ起きるのか。原理に戻れば明らかです。LLM は「ありそうな続き」を書くので、「あってほしい関数」が、あたかも実在するかのように出力されるのです。たとえば「日付を和暦に変換する関数がありそうだ」とモデルが判断すれば、実在しない to_wareki() のような呼び出しを平然と書きます。見た目は完璧で、動かして初めて壊れます。

現場での見え方: ハルシネーションは「明らかに変なコード」の形では現れません。「一見完璧なのに、実行すると存在しないと言われる」という形で出ます。だから、読んだだけで安心してはいけません。動かして確かめるまで、AI のコードは「仮説」です。

04人の役割は何か ── 書き手から、検証者・設計者へ

ここまでを踏まえると、AI 時代のプログラミングで人間が担う役割が見えてきます。AI が「書く」を引き受けるほど、人間の仕事は「何を書かせるか」と「書かれたものが正しいか」へ移ります。手を動かす人から、枠を決める人・確かめる人へ。

具体的には、人間に残る仕事は次の 3 つに絞られます。

「AI がコードを書くなら、人は楽になる」。この理解は半分だけ正しい。書く手間は減りますが、検証と設計の責任はむしろ重くなります。この非対称さを、シリーズを通じて何度も確かめていきます。

05検証が必須である理由 ── 「動いた」は「正しい」ではない

AI が書いたコードを一度動かし、期待どおりの結果が出た。そこで安心するのが、いちばんよくある落とし穴です。「動いた」は「正しい」ではありません。たまたま与えた入力で動いただけで、別の入力で壊れる余地はいくらでも残っています。

人が全部書く従来のプログラミングと、AI 生成コードの検証は、力点が違います。整理すると、次のようになります。

人が全部書く場合AI が書いたコードの場合
書いた本人が意図を把握している意図と実装がずれていないか、まず読んで確かめる必要がある
バグは「書き間違い」として出るバグは「もっともらしい嘘」として、正しく見える形で紛れ込む
使うライブラリの実在は自明ライブラリや関数が実在するか、一つずつ確かめる必要がある
テストは仕上げの工程テストは、信頼できるかを決める中心の工程になる

だから AI プログラミングでは、テスト(=入力と期待される出力を並べ、自動で照合する仕組み)が「あればよいもの」から「必須のもの」へ格上げされます。人が書いたコードなら省いてもよかった検証を、AI 生成では省けません。速く書ける分、確かめる工程を厚くする。これがバランスの取り方です。

06医療系ソフトの注意 ── 生成できても、そのまま使えない領域

製薬・医療の現場でこのシリーズを読む方に、特に強く伝えたい点があります。AI がコードを「生成できる」ことと、そのコードを医療の文脈で「使ってよい」ことは、まったく別の話です。

患者データを扱う、投与量を計算する、診断や治療の判断に関わる ── こうしたソフトウェアは、医療機器ソフトウェアとして国際規格 IEC 62304(=医療機器ソフトウェアのライフサイクル規格)の管理下に入ります。この規格は、開発の各工程で「誰が・何を・どう検証したか」の記録(トレーサビリティ)を求めます。「AI が生成したので中身の根拠は説明できません」は、この枠組みでは通りません

さらに、医療・医薬に関わる情報を出力するソフトを作るなら、薬機法の広告規制が背後に控えます。薬機法では、誇大広告の禁止は第 66 条、未承認医薬品等の広告禁止は第 68 条、販売情報提供活動における情報提供の適正化は第 68 条の 2 に置かれています。AI が生成した説明文やレポートであっても、これらの物差しはまったく緩みません。判断は「誰が書いたか」ではなく「何が書かれているか」でなされます。

境界線: 社内の集計スクリプトや資料整形の自動化なら、AI 生成コードは現実的に使えます。一方、患者の安全や規制対象の情報提供に関わる部分は、たとえ生成できても、検証・記録・審査の重い工程を通さないかぎり使えません。「作れる」と「使える」の間には、規制という壁があります。

07導入の順序 ── リスクの低いところから、確かめながら広げる

では、現場に AI プログラミングをどう入れていくか。原則はひとつです ── 失敗しても被害が小さいところから始め、検証の仕組みを整えながら、少しずつ責任の重い領域へ広げる。逆順、つまり最初から本番の重要処理に AI を入れるのは、いちばん避けたい進め方です。

どの段階にも共通する柵が、第 5 節で述べた検証です。段階が上がるほど、確かめる工程を厚くする。速度を上げる目的は、浮いた時間を検証に回すためだと考えると、順序を誤りません。

08シリーズ全 10 回の地図

本シリーズが扱う 10 回の構成を、あらかじめ地図にしておきます。読み進めるときの羅針盤にしてください。

  1. 第 01 回
    コード生成の基礎 ── LLM は何を書けて、何を書けないか(本回)
    原理と限界の全体地図、シリーズの出発点
  2. 第 02 回
    Copilot 活用 ── 補完型 AI の実務作法
    エディタ内で使う AI、補完を信頼しすぎない書き方
  3. 第 03 回
    対話型コーディング ── ChatGPT / Claude との進め方
    指示の与え方、文脈の渡し方、往復の設計
  4. 第 04 回
    プロンプト設計 ── AI に伝わる指示の書き方
    要件を枠として渡す技術、曖昧さを減らす
  5. 第 05 回
    テストと検証 ── AI コードを信頼する仕組み
    自動テスト、境界条件、レビューの型
  6. 第 06 回
    デバッグ ── AI と一緒に原因を探す
    エラーの読み方、AI への渡し方、根本原因の追い方
  7. 第 07 回
    エージェント型開発 ── AI が複数手順を自走する
    自律実行の光と影、任せる範囲の設計
  8. 第 08 回
    セキュリティと機密 ── コードと情報をどう守るか
    秘匿情報の扱い、生成物の脆弱性
  9. 第 09 回
    製薬の現場実装 ── 規制下で AI を使う
    IEC 62304、薬機法、社内審査との両立
  10. 第 10 回
    統合 ── AI プログラミングをチームに根づかせる
    運用ルール、責任分担、組織としての設計

09他章との接続 ── AI Marketing・資材審査との読み合わせ

AI Programming シリーズは、本サイトの他の章と次のようにつながります。読み合わせると、AI をめぐる理解が立体的になります。

結語

AI がコードを書く時代は、たしかに来ました。ですが、その「書く」は、意味を理解して書いているのではありません。学習データの中でもっともらしい続きを並べているだけです。だからこそ、定型的な作業では驚くほど速く、前例の無い設計や厳密な計算では静かに間違えます。存在しない関数を、正しいコードと同じ自信で書く ── この性質は、モデルが賢くなっても消えません。

この地図が示す結論はシンプルです。AI に書かせ、人が確かめる。速く書ける分だけ、確かめる工程を厚くする。とりわけ製薬・医療の現場では、生成できることと使えることの間に、検証と記録と規制という壁があります。次回は、この地図を手に、いちばん身近な入口 ── エディタの中で行を補完する Copilot 型 AI の実務作法へ進みます。

Key Points ── 持ち帰る 3 つ
  1. LLM は意味を理解してコードを書いているのではなく、「この文脈で次に来そうな語」を確率で予測しているだけである。だから定型的で類例の多いコードは得意だが、前例の無い設計や厳密な計算は不得意で、存在しない関数を正しいコードと同じ自信で書く(ハルシネーション)ことがある。
  2. AI が「書く」を担うほど、人間の仕事は「何を書かせるか(要件定義)」と「書かれたものが正しいか(検証)」へ移る。「動いた」は「正しい」ではなく、テストは省けるものから必須のものへ格上げされる。責任は「AI が書いたから」では免除されない。
  3. 製薬・医療では、生成できることと使えることは別物。患者安全や規制情報に関わるコードは IEC 62304 のトレーサビリティや薬機法(誇大 66 条・未承認 68 条・情報提供 68 条の 2)の物差しの下にあり、判断は「誰が作ったか」でなく「何が書かれているか」でなされる。導入は被害の小さい領域から、検証を厚くしながら広げる。
出典·参考文献
  1. Chen, M. ほか. Evaluating Large Language Models Trained on Code. arXiv:2107.03374, 2021.(コード生成 LLM「Codex」と HumanEval 評価の原典。一発正解率と反復サンプリングの差を示す)
  2. Vaswani, A. ほか. Attention Is All You Need. Advances in Neural Information Processing Systems 30 (NeurIPS), 2017.(Transformer 構造の原論文。次語予測の基盤)
  3. Ji, Z. ほか. Survey of Hallucination in Natural Language Generation. ACM Computing Surveys, Vol. 55, No. 12, 2023.(生成 AI のハルシネーションを体系的に整理した総説)
  4. OpenAI. OpenAI Platform Documentation. OpenAI, 参照 2026 年.(各モデルの能力と制約に関する公式ドキュメント)
  5. Anthropic. Claude Documentation. Anthropic, 参照 2026 年.(Claude の使用方法・制約に関する公式ドキュメント)
  6. International Electrotechnical Commission. IEC 62304:2006 Medical device software — Software life cycle processes. IEC, 2006(Amendment 1: 2015).(医療機器ソフトウェアのライフサイクル規格。トレーサビリティ要求の一次資料)
  7. 厚生労働省. 医薬品、医療機器等の品質、有効性及び安全性の確保等に関する法律(薬機法)第 66 条・第 68 条・第 68 条の 2. (誇大広告・未承認広告・販売情報提供活動の各条文)