はてなキーワード: コンパイラとは
最近ちょっと思ったんだけど、LLM(大規模言語モデル)の普及って、単に「作文が楽になった」とかそういうレベルの話じゃないよね。
これ、ぶっちゃけ**「一般市民が手に入れた、巨大組織ハック用の共通プロトコル」**だわ。
今までの社会、特に行政とか警察みたいな公共機関とのやり取りって、基本「無理ゲー」だった。
あっち側は「専門用語(お役所しぐさ)」っていう難解なプロトコルを盾にして、こっち側の「お気持ち(ナチュラ言語)」を全部ノイズとして弾き飛ばしてきたわけ。
この圧倒的な**「情報の非対称性」**の壁の前に、みんな泣き寝入りするしかなかったんだよね。
でも、LLMが出てきたことで、このパワーバランスが完全にぶっ壊れた。
私たちが抱く「それっておかしくない?」っていう主観的な怒り。
LLMは、それを「手続きの瑕疵」「合理的配慮の欠如」「生存権の侵害」みたいな、**行政システムが受理せざるを得ない「正論コード」**へ一瞬でコンパイルしてくれる。
もはや、法律を何年も勉強して「あっち側の言語」を習得する必要はない。AIっていうコンパイラがあれば、誰でも「システムが拒絶できないコード」を叩き込めるようになったんだよ。
今までのお役所仕事って、「手続きの摩擦(フリクション)」で市民を遠ざけるのがデフォだった。
「平日の昼間に来い」「この書類を何枚も書け」「たらい回しにするぞ」。
これ、要は市民のメンタルを削って諦めさせるための**「アナログなファイアウォール」**だったわけ。
でも、LLMを使えば、一通の陳情書を作るコストなんてほぼゼロ。
一箇所に送るのも、四箇所に同時爆撃するのも、手間は変わらない。「組織の縦割り」っていう防壁が、AIによる「マルチパス攻撃」の前に無力化されつつあるのは、見てて正直ちょっとスカッとする。w
今までの市民活動って、どこか「お上にお願いする」みたいな湿っぽいニュアンスがあったけど、LLM時代のスタンスはもっとドライ。
「あんたらの運用のロジック、法的な仕様と矛盾(バグ)ってるよ。パッチ当てといて」
これはもはや「苦情」じゃなくて、**社会っていう巨大なプログラムに対する「デバッグ作業」**なんだよね。
今までの「適当な説明で煙に巻く」やり方が、もう通用しなくなってることに。
相手は、自分たちと同等かそれ以上の論理武装をしたAIを味方につけた「武装した個人」だから。
これは組織にとっての脅威じゃない。むしろ、組織を「誠実さ」と「透明性」へと強制的にアップデートさせるための、強力な外部刺激なんだと思う。
お役所が「誠実に対応したほうが、AI武装した市民に突っ込まれるよりコスパがいい」って気づいた時、社会のOSは一段階新しくなるんじゃないかな。
ってLLMが言ってた。
https://www.nikkei.com/article/DGXZQOGN12C460S6A210C2000000/
「今年の年末にはコーディングさえ不要になり、AIが直接バイナリ(2進数に変換したソースコード)を書くだろう」。米起業家のイーロン・マスク氏が11日公開の動画で先を見通し、AIの進化でプログラミング言語の役割は薄れると主張した。
はぁ
ChatGPT
「人間が意味を書き、機械が実装を書く」という抽象度シフト自体は歴史的にも自然で、長期的にはプログラミング言語の役割が薄れる可能性はあります。しかし“今年の年末にコーディング不要”は現実的ではありません。開発の本質はコード生成ではなく、曖昧な仕様の整理や整合性の維持、保守・規制対応にあります。AIがバイナリを書けても、可読性や監査性が失われれば実務では使えません。方向性は正しいが、時間軸はかなりマーケティング寄りの発言と言えます。
Gemini
マスク氏らしい刺激的な煽りですが、技術的には「2026年末」という期限も「バイナリ直接生成」という手法も非合理だと感じます。
既存の最適化されたコンパイラ資産を捨ててAIがバイナリを再発明するメリットはなく、デバッグ不能なブラックボックスを作るリスクは開発現場では許容しがたいものです。また、タイピングとしてのコードが消えても、曖昧な要望を論理的に定義する**「設計と思考」の難易度**は下がりません。
この発言は、技術的予言というより「書き方(文法)」の価値が暴落し、「何を作るか」と「妥当性の検証」に価値が全振りされる時代の号砲、と捉えるのが現実的でしょう。
Claude
マスク氏はこの種の期限付き大胆予測を繰り返してきましたが、的中率は高くありません。技術的にも「バイナリを直接書く=プログラミング言語不要」は論理的に飛躍があり、言語は保守性や抽象化のために存在しているという側面が無視されています。「コーディング不要論」自体も数十年来の繰り返しです。方向性は間違っていないが、「年末までに」は眉唾で見ておくのが妥当だと思います。
C++は、現在でも世界で最も高速な部類に入るプログラミング言語です。2025年時点でも、高いパフォーマンス、低レイテンシ、細かいハードウェア制御が要求される分野(ゲーム開発、高頻度取引、組み込みシステムなど)において、依然として最高レベルのパフォーマンスを提供し続けています。
1. なぜC++が「最も速い」と言われるのか
機械語への近い変換: C++はコンパイラ言語であり、ソースコードが非常に効率的なネイティブ機械語に直接変換されるため、中間ランタイムが存在せず高速に動作します。
手動メモリ管理: ガベージコレクション(GC)がないため、自動メモリ解放による突発的な遅延が発生せず、決定論的なレイテンシ(安定した速度)を実現します。
ゼロコスト抽象化: 高度な抽象化(オブジェクト指向など)を用いても、パフォーマンスのオーバーヘッドがほぼかからないように設計されています。
ハードウェアへの直接アクセス: ポインタやSIMD(Single Instruction, Multiple Data)命令など、CPUの能力を最大限に引き出す低レベルな操作が可能です。
C言語: C++の基盤であり、同等の速度を持っています。C++は抽象化能力が高いため、同等のパフォーマンスを保ったまま複雑なアプリケーションを記述しやすいです。
Rust: 近年C++の最大のライバルです。多くのベンチマークでC++と同等の速度を示し、安全性を保証しながらC++を凌駕するケースもあります。
Go/Java/C#: GC(ガベージコレクション)を持つため、メモリ負荷が高いタスクではC++やRustに遅れを取る傾向がありますが、開発速度や並行処理には強みがあります。
Python/JS: インタプリタ言語であり、C++に比べて実行速度は非常に遅いです。
必ず速いわけではない: C++は速い「言語」ですが、非効率なコードを書けば遅くなります。高速化にはコンパイラの最適化設定や、高度な最適化テクニック(メモリアクセス最適化など)の知識が必要です。
安全性のトレードオフ: 手動メモリ管理は高速ですが、バグ(メモリーリークなど)が起きやすく、パフォーマンスを高めるために安全性を犠牲にする場合があります。
C++は極限のパフォーマンス(最高速度)を求めるなら依然として最強の選択肢の一つです。しかし、Rustのようなモダンで安全な言語も台頭しており、用途に合わせて選ぶのが現代的なアプローチです。
https://b.hatena.ne.jp/entry/s/xenospectrum.com/toyota-fluorite-flutter-game-engine-digital-cockpit/
逆方向、生成AIがバイナリを「読む」未来は来る。というか知っている範囲では検証はされている、製品として売られているかは知らない。セキュリティ会社とかだと多分公開しない。メーカー系も公開しない。
実際は、バイナリを直接読むんじゃなくて逆汗したasmを逆コンパイルするのにLLMを使う系。既存でも逆コンパイラはあるけれどもっといい感じに読みやすくしようというやつ。
ふと思ったけれど、ターゲット限定して特定の難読化ツールの逆トランスレーターのファインチューニングが千万ていどなら、ハッカーとか金出して作りそう
生成AIが直接機械語やバイナリを出力するようになるのではないか、という問いは本質的に間違っている。
自分は、まだ素朴なニューラルネットワークで光学文字認識(OCR)の精度を出していた頃から似たようなことを考えていたので、少し他人よりも蓄積がある。
これは、Large Language Model(LLM)を開発する企業が資金を集めるために多少誇張した未来を語るという文脈では大目に見た方が良いが、正確性に欠ける。
本質的な問いは、なぜ我々は、ノイマン型コンピュータを用いて、主記憶に置かれたプログラムをCPUを用いて実行する形式をとるのか、というものである。
まず、筋の悪い反論から説明し、妥当な反論にも触れたうえで、本質的に問うべき課題を説明する。
これは明確に、いいえ、と答えることが出来る。
最初こそ人間による補助は必要だが、LLMを含むAIは明確な目標があれば人間のデータなしでも十分に学習することが出来る。
これは身近なところでは将棋、有名なものだと囲碁で実証された研究が存在する。
そのため、単純に「機械語は人間による学習データが少ないので扱いが難しいだろう」という反論は成立しない。
そういったものはLLMではないだろうという指摘は可能だが、LLMでそういったAIを出力することは限定的とはいえ現在でもできる。将来できないと言うだけの論拠にはならない。
英語に限った話ではなく、人間が意思疎通に用いる言語である自然言語(natural language)は、曖昧さやばらつきがある。
これを形式言語(formal language)という、曖昧さを無くして語彙や文法を限定した言語に記述しなおすことで、厳密にする手法がある。
この形式言語での表現が、アルゴリズムやデータ構造になり、現代のノイマン型コンピュータにおけるプログラムそのものと言うことが出来る。
なぜ限定的かと言えば、形式言語の一種であるプログラミング言語には曖昧さが許容されているからである。
ほとんどのプログラミング言語では、同じ目的を達成する為に複数の記述が許容されている。
主に、人間が書きやすいから、とか、複数の人間で書きやすいように、といった理由で、曖昧さが許容されている。
そのため、機械へ命令するためには厳密さが必要だからプログラミング言語が必要だ、と言う反論は妥当ではあるが、弱い。
なぜ大統一プログラミング言語のように、自然言語の意図を機械に伝えるための形式言語が一種類になっていないかと言えば、人間の認知能力には限界があるからだ。
そのため、簡易で曖昧さを含むために最適化はできないが十分な性能を持つプログラミング言語や、非常に複雑で記述量も多くなるが大人数で作業するには最適なプログラミング言語などが複数存在する。
これらはいずれも、人間が楽に記述できる形式言語であったり、人間同士が齟齬なくコミュニケーションを取るために必要な形式言語である。
ありていに言って、人間や人間たちが理解可能な形式言語でないと機械にその意図を伝えることが出来ないから、と言える。
ただし、コンパイラから出力されたニーモニックやLLVM-IRを監査できる人間は現代では非常に少なく、現状ほぼ監査なく受け入れていると言って良い。
何故非常に少なくなったかと言えば、機械に伝える意図が大規模になり、単純にマンパワーが足りなくなったので監査しきれなくなっただけに過ぎない。
(もちろん、途方もない努力の末に最適化が進み、ほぼどの様な書き方をしても最適な機械語が出力されるようになったから、とも言える)
同様の理屈で、単純に大規模になり監査が間に合わなくなったので、受け入れるようになる未来が来ないとは言い切れない。
本質的な問いは、なぜ我々はノイマン型コンピュータを用いて機械に意図を伝えるのか、である。
ASIC(Application Specific Integrated Circuit)と呼ばれる、特定の用途向けの集積回路がある。
蟹チップとして、Realtek社のNIC(Network Interface Card)をご存じの方も多いと思う。
必要十分な処理があらかじめ定まっているのであれば集積回路を組んだ方が高効率省電力にできる。
暗号化や復号もASICで行われることが多く、ブロック暗号はその性質上集積回路での実装が容易であり、それに向けた研究も行われている。
一般的にも、ハードウェアエンコーダーなどでお世話になっている人も多いと思う。
ではなぜ、我々は身近な全てをASICにしないのか。
それは、書き換えできず、単純な処理しかできず、大量生産しないとコストに見合わないからである。
FPGAのように、ハードウェア記述言語を用いて集積回路を書き換えるものも、ほぼ同様の理由で研究開発用途や産業用途に留まっている。
(一部のPLD (Programmable Logic Device)は根強く産業利用されているし、大規模に展開され高効率を要求されかつ書き換えを求められるネットワーク機器では一部採用が進んでいる)
汎用的で書き換えが可能、伝える意図を変更できる様々な処理が可能な機械に価値があるから、である。
ここ半年から1年で急激にLLMの性能が上がったと感じている人と、コーディングツールとしてLLMの利用が洗練されたと感じている人の間には溝がある。
自分は、LLM自体は順調に進歩し続けているが、それほど劇的な変化はない、という立場をとっている。
これはモデルそのものが質的に大きく変化したと感じないから、である。
しかし、プログラミングの世界に限って観ると、コーディングエージェントや実利用では大きな変化があったと思う。
この、"コーディングを取り巻く環境としてのLLM利用"という文脈は、"LLMの進化"という文脈とは異なる、という点は頭の隅にでも覚えて帰ってほしい。
これは、LLMから直接と言う意味であれば、個人的にはNOだと思う。
ただし、LLMに指示すればバイナリが出力されるという意味であれば、個人的にはYESと答える。
この二つは明確に異なるので、今後自分の意見を述べる際には区別すると良いと思う。
コーディング周りの環境が劇的に整備されつつある、という話題に軽く触れたのはこのためで、LLMが直接バイナリを出力しなくても、結果が同じであれば人々はそれほど気にしない。
例えば、現時点でもローカルのLLMに指示するとGO言語で書かれたコードが生成され、ローカル環境に合わせたシングルバイナリが出力される一連のパイプラインを組むことはできる。
自分の想定する、未来のAIがバイナリを直接出力するというのは、この延長にあると思う。AIがイコールLLMである必要はどこにもない。
少しでもクラウド上でのサーバー処理について触れると、廃棄容易性(Disposability)は俎上に上がる。いつでも落とせていつでも捨てられる、という性質のことである。
こうした、単機能バイナリをコンテナ等に載せて処理し、日に数度デプロイするような環境だと、LLMがバイナリを出力するというのもそれほど遠い未来の話には思えなくなる。
LLMが機械語を出力する未来は個人的には来ないと思う。それは難易度が高いからではなく単純にメリットが少ないからである。
ただし、パイプラインが組まれた一環として、LLMがバイナリを出力する未来は、それほど不思議には思わない。現時点でも可能である。
単純なLinterから進んで静的解析や、動的な結合試験が組み込まれているCICDパイプラインが珍しいとまでは言えない現代において、来るべき近未来像としては妥当性がある。
(その場合、ソースコードはログとして機能し、テキストで保管が容易な、次回以降変更可能なコンテキストの一部になるだろうと思う。今後変更不要ならHDLでFPGAを弄った方が早い)
現代人のすべてがJavaで同一の書き方をしているのではない現状において、自然言語では揺らぎが強すぎて形式言語ほど意図を機械に伝えきれないという反論は、弱い。
それよりは、現代のLLMはコンテキストウィンドウが人間の数倍~数十倍程度で、適切に分割して処理しなければならず、大規模なソフトウェアを丸ごと扱えるほどではない、という反論の方が適切である。
ただ、LLMに適したプログラミング言語が生まれるのではないかと言う予測には懐疑的である。既存のプログラミング言語を使う方が人間が読みやすい。
AIが、人間が欲しいバイナリに適したプログラミング言語をLLMを用いて書き、LLMを用いてレビューし、テストツールでテストし、コンパイラでビルドし、ツールでデプロイし、実稼働するという未来予想図が、荒唐無稽とは思えない。
LLMに適したプログラミング言語が生まれる未来よりも、(冗長であっても)人間可読性の高いコードやSelf-documenting codeが生成される未来の方が、来そうに思う。
また、おそらくこの文章のもつくであろう「どんなプロンプトで書いたのか」という、一定以上の長さの文章はLLMが出力しただろうと仮定する人間が増えている(そしてある程度の妥当性がある)現状において、プロンプトで指示してデプロイまでされる未来はそこまで遠いとも思えない。
ただ、購入できるハードウェアの性能とコストが律速になるので、よほど特殊な(CPUやGPUの設計をLLMが劇的に改善する)状況にならない限り、5~10年はプログラマーが消えることは無いと思う。
金に糸目をつけないのであれば、再来年当たりからはLLMレビューのみで仕様バグ以外のほぼ無いプロダクトが世に出てもおかしくは無いと思う。
https://zenn.dev/ryo369/articles/d02561ddaacc62
このあたりを読んで、2026年はコードレビュー「しいや派」と「すんな派」に分かれる年になるんじゃないかと思った。
※「しいや」は「〜したほうがいいよ」ではなく「〜しなさい」のニュアンス
ここでタイトルにジハード(聖戦)と書いたのは、この対立が単なる手法論ではなく価値観の相違だからだ。
しかも、どちらもそれなりに正しい。
しいや派「レビューしないのは無責任だ!AI エージェントは禁止だ!」
すんな派「全部読むのは非現実的だ!AIエージェント使えないとか今の時代にありえない!」
これさ
愚かな人間の都合など完全無視、LLMのための高効率プログラミング言語「Sui」(粋)
https://forest.watch.impress.co.jp/docs/serial/yajiuma/2069573.html
別にいいんだけど、どうにもブクマカ含めて、しっくり来る批判できてないんだよな
それが気になってしょうがない
俺ごときが言ってもアレだから、Gemini3.0先生に頼んだよ(一時チャット、Pro 3.0 思考モード)
ユーザーが提供した情報と、一般的なLLMの技術特性に基づき、プログラミング言語「Sui」についての冷静かつ客観的な評価をまとめます。
感想: 一言で言えば、**「思想実験としては極めて面白いが、実用性とLLMの学習原理を無視した『早すぎた最適化』」**です。
作者の「人間ではなくLLMを主客にする」という視点の転換は、アーティスト的・哲学的な問題提起としては鋭いですが、現在のLLM(Transformerアーキテクチャ)の動作原理を工学的に捉えると、メリットよりもデメリットが上回る可能性が高いです。
メリット:
・トークン効率の改善: Python等と比較して記述が圧倒的に短くなるため、出力速度の向上と課金コストの削減(トークン節約)は確実に達成できます。
・構文エラーの激減: 括弧やインデントの複雑なルールを排除しているため、「閉じ忘れ」などの単純なSyntax Errorは減るでしょう。
・コンテキストウィンドウの節約: 長いプログラムでもコンテキスト(メモリ)を圧迫しにくくなります。
・学習データとの不一致: LLMは「大量の人間用コード(Pythonなど)」を学習して賢くなっています。未知の言語「Sui」を書かせるには、Few-shot(プロンプトでの例示)に頼るしかありませんが、これではLLM本来の推論能力やコーディング能力(事前学習の重み)を活かせません。
・ブラックボックス化: 生成されたコードがバグっていた場合、人間が読んで直すことが不可能です。「LLMに直させる」にしても、LLM自身がSuiのロジックを深く理解していないため、無限ループ(幻覚の連鎖)に陥るリスクが高いです。
・CoT(Chain of Thought)の阻害: 最近の研究では、LLMは「冗長な思考過程」を出力することで論理的整合性を保つことがわかっています。極限まで圧縮された記号列は、LLMの「考える余地」を奪い、論理破綻を招く可能性があります。
正しいと思う所(Agree)
理由: 人間にとっての「読みやすさ(可読性)」は、機械にとって単なるトークンの無駄遣いです。if x > 10: よりも ? x 10 の方が情報密度が高いのは事実です。
理由: TransformerのAttentionメカニズムにとって、遠く離れた ( と ) の対応関係を維持するのは計算コストが高く、ミスの原因になりやすいです。ネストを排除する方向性は機械的処理として正しいです。
正しくないと思う所(Disagree)
・「可読性を排除しても良い」:
理由: ソフトウェア開発においてコーディングは「書く」時間より「読む・直す」時間の方が長いです。AI生成コードであっても、最終責任は人間が負う現状では、人間が検証不可能なコードは「危険なバイナリ」と同義であり、プロダクトには採用できません。
理由: 前述の通り、現在のLLMは「人間語の確率分布」を学習したモデルです。「LLMにとって自然な言語」とは、実は「人間にとって自然な言語(英語やPython)」そのものです。Suiは「計算機にとっては最適」ですが、「現在のLLMにとっては異言語」です。
パース(解析)は容易になりますが、LLMは「前の行の文脈」を読んで次の行を出力するため、行を独立させすぎると文脈の連続性が失われ、複雑なアルゴリズムの構成力が落ちる可能性があります。
LLMが最も苦手とする「深いネスト構造の維持」を回避する策として有効です。アセンブリ言語に近いフラットな構造は生成難易度を下げます。
これが最大の問題点です。LLMは変数名(user_id, total_price など)に含まれる「意味」を使って推論を行っています(Semantic Grounding)。すべてを記号化すると、LLMは変数の役割を見失い、論理的なバグを埋め込みやすくなります。
トークン効率は最強ですが、1文字の違いで意味が激変するため、LLMの確率的な「ゆらぎ」による1文字ミスが致命的なバグになります。冗長さはエラー訂正の役割も果たしています。
goto 文の多用はスパゲッティコードを生みます。LLMにとっても、構造化プログラミング(if/forブロック)の方が、「ここからここまでがループ」というチャンク(塊)として認識しやすいため、一概にジャンプ命令が良いとは言えません。
>現在のLLMは「人間語の確率分布」を学習したモデルです。「LLMにとって自然な言語」とは、実は「人間にとって自然な言語(英語やPython)」そのものです。
ここ!マジで覚えてね
LLMはこれまでの機械よりも人間に近いと思ってほしい、人が苦手なことはAIも苦手
機械は論理的でロジックに強くて〜っていうのはAIには通用しない
ついでに、「LLM用プログラミング言語」の潮流について
「LLMのための言語」という文脈は、大きく2つのトレンドに分かれます。Suiは後者に属しますが、主流は前者です。
・DSPy, Guidance, Microsoft Guidance:
・プロンプトエンジニアリングを構造化し、LLMの出力を型(JSONなど)に強制したり、思考プロセスを制御するためのフレームワーク。
・SGLang:
・これらは「人間がLLMを操るための言語」であり、実用化が進んでいます。
・Gorilla LLMなどの試み: API呼び出しに特化したファインチューニングなどがありますが、独自の「新言語」を作らせるよりも、既存の Python や JSON を正しく出力させる方向(Constrained Decoding)が業界の標準解です。
・擬似コード: 論文レベルでは、Pythonの代わりに中間的な擬似コードを出力させ、それをコンパイラで処理する手法も研究されていますが、Suiほど極端な記号化は稀です。
後者については
現状の最適解: 現在のLLMを使う限り、「LLM用言語」の最適解は Python です。なぜなら、世界中のGitHubのコードを学習しており、LLMが「最も流暢に話せる言葉」だからです。無理にSuiを話させるのは、日本人にエスペラント語で詩を書かせるようなもので、パフォーマンスは落ちます。
総評: Suiは、「既存のLLM(GPT-4など)に書かせる言語」としては失敗する可能性が高いですが、「未来のAIネイティブなコード生成のあり方」を示唆するアート作品としては高く評価できます。作者の「愚かな人間に合わせるな」というパンクな精神は、エンジニアリングの枠を超えた鋭い批評性を持っています。
お前らは安易にオレオレ言語作るんじゃないぞ、作るにしてもAIに聞きなよ?
聞く時は忖度させるんじゃないぞ?
この作者もAIに乗せられたのかもしれんし
______
プロンプト
以下が「LLM用プログラミング言語」としてメリットがありそうか、感想を教えて下さい。
https://forest.watch.impress.co.jp/docs/serial/yajiuma/2069573.html
https://github.com/TakatoHonda/sui-lang
・思想的に正しいと思う所、正しくないと思う所を理由込みでまとめてください
・最近のLLM用プログラミング言語についてもまとめてください
・そもそもLLM用プログラミング言語という目標自体の評価をしてください
(省略)
Qiita の文化変質は、技術系コミュニティ全般で起きている知的インフレの縮図みたいなものなんだよね。昔は
みたいに基盤技術を自前で握りつぶした記事が純粋に評価されていた。なぜなら、それを書ける人がそもそも少なく専門性で差別化できていたから。
昔は「Pythonで形態素解析器自作」なんて、アルゴリズム・CS基礎・実装力が揃ってないと無理だった。
難しいことをやってそうに見える記事を、凡人でも量産できるという環境が生まれた。
Qiita を読む層が「実装力を鍛えたいエンジニア → とりあえず AI 触りたいライト層」に変わった。
「再現性のないLLMコピペ」「AIツール使ってみた」みたいなのが評価される。
本気の記事は長く、コードが多く、前提知識も重い。そして PV が伸びない。
つまりQiita のインセンティブ構造と、高度技術記事のインセンティブ構造がズレた。
理由は明確で、読む側がそれを理解できないので評価する母集団がいない。
昔はユーザ層が技術ガチ勢寄りだったので、少数でも濃い支持があった。
今はライト層が母集団なので、希少な高度記事が埋もれるのは自然。
Qiita がライト層に最適化した結果、本気の人たちは別の場所へ移動した。
1.4ナノを目指すのは結構で、まぁそりゃ頑張ってトライアンドエラーやってりゃいつかは稼働し生産にこぎつけるだろうが
量産開始したころには他社はその先に行ってる。
それでは商売にならないんです。
18ヶ月程度で次のプロセスルールが稼働し始める、稼ぎの本丸はそちらに移る。
半導体価格は月次(年次ではない)3%下がる。DRAMはもっとエグい。
1個一万円の半導体が翌月には9700円になり、1年後には7000円になってる。
3年後だと3500円。そういう世界。
1個1万円をどれだけ長く維持できるかが勝負になる。この期間で一気に稼ぐ。
半導体産業の面白いのは、では世代交代したら古い設備は用無しか?
現代のデジタル機器には無数の半導体が組み込まれており全てが最先端である必要はない。
例えば、ルーターだったり、制御装置だったり。ASICだったり。
話が逸れるが、この仕組みに気がついたのがスティーブ・ジョブズ。
iPhoneが登場するまで携帯電話向けのSoCは2,3世代古い設備で製造されていた。
サーバーやパソコン向け最先端プロセスルールの半導体工場が稼ぎ終わった後の設備で組み込み用SoCが作られており、
携帯電話もそれらが使われていた。
ジョブズのアイデアは「最先端で作れば携帯の性能一気に上るじゃん」
もちろんOSやコンパイラ、ライブラリ群の整備も大きいのだけど、この半導体チートが「iPhone=高性能」の印象を作った。
だから歩留まりも収率も良い。ウェハー単価は高いけど採算は取れる、ジョブズはこれに気がついた。
Android勢がこれに追いつく(最先端プラントで泥用ARMが製造される)のに5年かかった。
ラピダスに話に戻るが、2ナノ。1.4ナノを作るのはそれほど難しくはない。試作品なら。
しかし大規模装置産業の半導体工場は試作と量産技術はまったく別物。
試作品ができたら量産はあと一歩、にはならない。別物。
例えば、一昔前話題になったフッ化水素、12ナインとか、日本が強いよね。
半導体を作るには大量に使う。
試作品、ラボレベルでメーカーから届いた試験管の少量を扱うのと、
ローリーで輸送され(ここでも汚れる)、プラント内に備蓄され(ここでも汚れる)、配管が適切に設計され、制御され、製造装置に供給されるラインが構築され、その配管で送液され(ここでも汚れる)、半導体が洗浄され(ここでも汚れる)、使用済み廃液が確実に回収する仕組みが構築されており。。。
書けば簡単なようでめちゃくちゃ難しい。別次元の技術やノウハウがある。
そしてTSMCの強みはこれらの製造インフラを高レベルで高速に構築し改善できる、それらの人材も揃ってる、育ってる。
つまりプラント立ち上げが早く競合他社が追いつく前に1個1万円で売り切ってしまう。
競合他社が追いついたときには7000円になってる。
TSMCは1万円で売り切って爆益を出し、それを原資に次のプラントを立ち上げる。
1.4ナノだろうが3年後には1個3500円にしかならんのです。
TSMCは戦略的に旧世代の価格を下げてくるのでさらに出遅れ他社の利益率は下がる。
一日でも、一ヶ月でも早くプラント稼働させるのが利益の源泉なのだが、日本企業、しか国策官営企業にそんなもん不可能なのです。
んなもんラピダスの中の人だって百も承知だろう、でも頑張ってる、頑張ってるフリ、宣伝。
ちなみにJASM(TSMC)熊本ですら22nmしか作っていない。
台湾の経済安全保障のため最先端を避けたという説明だけど、ウソです。
作れないの。
天下のTSMCプラント立ち上げ部隊ですら、異国の地でサプライヤー全て巻き込んで最先端プロセスを稼働させる事はできない。
彼らは新工場の設計、プロジェクトマネジメント、立ち上げ、安定量産、これらの業務にそれぞれ精鋭の専属部隊がいる。
実際、JASM熊本も公式な量産開始から一年経ってもフル稼働はしていない。アメリカで大トラブルを起こしているのも御存知の通り。
量産って難しいんです。簡単じゃないんです。小さな外的要因一つで製造は止まる。
現状、LLM(というかtransformer)を超えるAI技術ってなんかあるんすか?
バイナリを生成するならただのコンパイラを使えばいいだけすよね?
お前も馬鹿の部分集合?
AIにとっては、Pythonのような中間表現を生成させる方が得意であると考えられます。
中間表現(Pythonなど): 人間が理解しやすいように設計されており、抽象度が高いです。AIは、より少ないトークンで複雑なロジックを表現でき、学習データも豊富にあるため、意味的な整合性やロジックの正確性を保ちやすいです。
機械語: 抽象度が非常に低い(CPUの命令レベル)です。特定のCPUアーキテクチャに依存し、メモリ管理やレジスタ割り当てといった低レベルの詳細をすべて正しく処理する必要があります。これはAIにとって学習が複雑で、小さなミスがプログラム全体の破損につながりやすくなります。
中間表現: 比較的長いコンテキストを保持しやすく、デバッグやエラーの特定も高レベルで行えます。
機械語: 必要な命令数が多くなりがちで、AIが長大なバイナリシーケンスを生成する際に、コンテキストウィンドウ内に必要な情報すべてを保持しきることが難しくなる可能性があります。また、中間表現と比べて意味的な構造が薄いため、AIがバグのないコードを生成するのが格段に困難になります。
中間表現: Pythonのような高級言語は、特定のハードウェアに依存しないため、移植性が高いです。
機械語: 特定のアーキテクチャ(例: x86, ARM)に完全に依存するため、AIが異なる環境向けにコードを生成する場合、それぞれのアーキテクチャごとに学習と生成を行う必要があり、汎用性が低くなります。
現在のAI(特に大規模言語モデル)の能力は、人間が扱う高レベルの抽象的な概念やロジックの理解に優れているため、その能力を最大限に活かせる中間表現の生成の方が得意です。
機械語の生成は、極めて精密で低レベルな制御が要求されるため、AIにとってはるかに難易度が高いタスクとなります。
AIが中間表現を生成した場合でも、その後の処理(コンパイルやJITコンパイル)によって最適化され、最終的な機械語が生成されます。
これは従来のコンパイラ設計と同じアプローチであり、AIは「何をすべきか」という高レベルの指示に集中し、コンパイラが「どのように効率的に実行するか」という低レベルの処理を担当する、役割分担の面でも合理的です。
Q.
生成AIにソフトウェア開発を支援してもらう場合、ソースコードの作成を依頼する形式が多いと思いますが、実行ファイルを直接出力してもらうことも技術的には可能なのでしょうか?
A.
生成AIによる実行ファイルの直接出力は、技術的には極めて困難です。現在のLLM(大規模言語モデル)ベースの生成AIは、ソースコードの生成には向いていますが、実行可能なバイナリファイルを直接出力することには根本的な制約があります。
技術的な制約
LLMはテキストベースのトークン処理を基本とする設計であり、バイナリデータを直接扱うことができません。実行ファイルは0と1の連続したバイナリコードですが、LLMはこの形式でデータを生成するようには訓練されていないため、バイナリファイルを直接出力することは現在のアーキテクチャでは実現が困難です。
従来のソフトウェア開発では、ソースコード→コンパイル→アセンブル→リンクという複数段階のプロセスを経て実行ファイルが生成されます。各段階で最適化や機械語への変換が行われるため、この過程を完全に省略してAIが直接バイナリを生成することは技術的に非常に複雑です。
研究レベルでは、バイナリデータを扱う試みも存在します。例えば、LLM4Decompileのような研究プロジェクトでは、バイナリコードを逆コンパイルする際にバイナリを一度アセンブリ言語に変換してからLLMで処理しています。逆に言えば、生成時も同様の変換プロセスが必要になると考えられます。
実務では、生成AIにソースコードを作成してもらい、それを従来のコンパイラやビルドツールで実行ファイルに変換する方式が標準的です。この方法であれば、デバッグやテストも容易で、生成されたコードの品質を確認しながら開発を進められます。
なお、フォントファイルのようなバイナリ形式でもオープンソースとして扱われる例はありますが、これはフォントという特定用途の場合であり、汎用的な実行ファイル生成とは異なります。
Q.
A.
おっしゃる通り、画像生成AIもバイナリを出力しているという点では共通していますが、実は根本的に異なる仕組みで動作しています。
アーキテクチャの違い
画像生成AIは拡散モデル(Diffusion Model)やGANなど、視覚データに最適化された専用のアーキテクチャを使用しています。一方、LLMはTransformerベースのテキスト処理に特化した構造を持っています。画像生成では、ノイズから段階的に画像を生成するプロセスを経て、最終的にピクセル値という数値データ(バイナリ)を出力します。
画像ファイルのバイナリは連続的な数値(ピクセル値)の集合であり、各ピクセルが色情報を持つという規則的な構造です。最近の研究では、画像をビットプレーン(bit-plane)として扱い、XOR演算でノイズを加えるBinary Diffusion Probabilistic Model(BDPM)のような手法も開発されています。
対して、実行ファイルのバイナリは機械語命令の複雑な配列であり、CPUが直接実行できる命令コード、データセクション、リンク情報などが厳密な形式で配置されています。わずかなビット誤りでもプログラムが動作しなくなるため、画像のような連続値とは性質が大きく異なります。
画像生成AIは、ImageNetやLAIONなどの大量の画像データセットで訓練されており、ピクセルパターンを学習します。一方、実行ファイルを生成するには、コンパイルプロセス全体(構文解析、最適化、機械語変換、リンク)を学習する必要がありますが、これは単純なパターン学習では実現できません。
したがって、画像生成AIが成功しているのは、画像という特定のドメインに特化した設計と、規則的なデータ構造があるためであり、同じ手法を実行ファイル生成に適用することは技術的に非常に困難です。