Python 〜誰が書いても美しいコードと、遅いのにAIの覇権を握った奇跡〜

2026-11-05 / シリーズ「言語の履歴書」第4話

📄 本日の履歴書:Python(パイソン)

氏名: Python(パイソン)
生年月日: 1991年2月20日(現役35歳)
出身地: オランダ・アムステルダム 国立数学情報工学研究所(CWI)
生みの親: グイド・ヴァンロッサム(慈悲深き終身独裁者 / BDFL)
現住所: 世界中のAI研究室、データ分析基盤、宇宙工学、中学校のプログラミング教室
性格: 知的、几帳面、美意識の塊、争いを嫌う調停者、他人の長所を活かす名プロデューサー
座右の銘: 「Beautiful is better than ugly.(醜いより美しい方がいい)」「There should be one-- and preferably only one --obvious way to do it.(誰が書いても明白な1つのやり方があるべきだ)」
得意技: 人間の直感に寄り添う美しい文法、C/C++の筋肉を束ねるオーケストレーション
弱点: 単体での計算速度が絶望的に遅いこと(C言語の数十〜百倍遅い)、GILの足枷
アムステルダムにあるCWI(国立数学情報工学研究所)の入口
Pythonの「出身地」、アムステルダムの国立数学情報工学研究所(CWI)の入口。グイド・ヴァンロッサムはここの研究員だった。写真:Robvanroo(CC BY-SA 4.0/Wikimedia Commons)

1. 素朴な疑問:なぜ「すきま(空白)」を空けないだけで怒られるの?

ごきげんよう。私の名前は「Python(パイソン)」と申します。

プログラミングを学び始めた皆さんは、第1話のC言語や第2話のJavaの「複雑怪奇な記号の嵐({} や ;)」を見て、うんざりした経験があるかもしれません。 そんな方々が私の教科書を開いたとき、まるで絵本のようにスッキリとしたコードを見て感動します。

# Pythonのコード:中括弧もセミコロンも存在しない
if score >= 80:
    print("合格です!")
    print("よく頑張りましたね。")

ところが、次の瞬間、キーボードのスペースキーを適当に叩いた初心者は、**理不尽なエラー(IndentationError)**を突きつけられて呆然とします。

「えっ!? 行の頭の空白(スペース)が1個ズレてるだけでエラーで動かないの!? 画面の見た目なんて、スペースが何個空いてたって機械の計算には関係ないじゃないか! なぜそんなくだらない見た目で怒るんだ!」

C言語やJavaでは、行の頭の字下げ(インデント)は単なる「人間が見やすくするための飾り」です。スペースが0個だろうが100個だろうが、プログラムは文句を言わずに動きます。

では、なぜ私だけが、行頭の空白の数という「見た目の美しさ」を法律のように厳格に取り締まるのでしょうか? そしてもうひとつ、エンジニアなら誰もが知っている巨大な矛盾があります。

「Pythonは、C言語やJavaに比べて実行速度が数十倍から100倍も遅い『亀のような言語』である。なのに、なぜ世界で一番計算スピードが要求される『最先端の人工知能(AI)やデータ分析』の世界を完全に支配しているのか?」

見た目を美しく揃えさせられた理由と、遅い私がAIの王座に就いた奇跡。 その裏にある私の設計思想をお話ししましょう。


2. 誕生の歴史:クリスマスの暇つぶしから生まれた「美の哲学」

時計の針を、1989年のクリスマス休暇に戻しましょう。 オランダの研究者グイド・ヴァンロッサムは、冬休みの暇つぶし(ホリデープロジェクト)として、自宅のパソコンで新しいプログラミング言語の作成に取り掛かりました。 名前は、大蛇(Python)ではなく、彼が大好きだったイギリスの伝説的コメディ番組『空飛ぶモンティ・パイソン』から取られました。

グイド・ヴァンロッサムの肖像(2014年)
Pythonの生みの親、グイド・ヴァンロッサム(2014年)。「慈悲深き終身独裁者(BDFL)」として、長くPythonの進む方向を決めてきた。写真:Daniel Stroud(CC BY-SA 4.0/Wikimedia Commons)

当時、世界を支配していたC言語や、スクリプト言語として台頭していたPerl(パール)に対して、グイドは強いフラストレーションを抱いていました。

Perlの標語「TMTOWTDI」 やり方は1つじゃない ➡️ 書き方がバラバラで、他人のコードは暗号同然 保守は地獄に 😱 C/C++の自由 インデントは飾り、サボっても動く ➡️ 汚いインデントのせいで バグの温床に! グイド・ヴァンロッサムの決意 🐍 Pythonの哲学(1991年) 「コードは、書かれる時間よりも読まれる時間の方が圧倒的に長い」 誰が書いても同じ美しい見た目になるよう、言語仕様で強制せよ!

当時の言語は、「賢いプログラマーがトリッキーな裏技を使って、自分だけのカッコいい書き方をする」ことが礼賛されていました。 しかし、その結果生まれたのは、**「書いた本人すら3日後に読めなくなる、グチャグチャの暗号コード」**の山だったのです。

グイドは喝破しました。 「プログラムというものは、書く時間よりも、後から人間が『読む時間』の方が10倍以上長い。ならば、誰が書いても、初心者が書いても、10年目のベテランが書いたのと同じ『明白で美しい1つの書き方』しかできない言語を作るべきだ!」

「Zen of Python(Pythonの禅)」という美意識

私の心臓部には、開発者たちが共有する19の詩**「The Zen of Python」**が刻まれています。

あの「インデント(字下げ)を強制する文法(オフサイドルール)」は、まさにこの哲学の具現化です。 「見やすく字下げしなさい」と口で注意しても人間はサボります。 だから私は、「美しく字下げしなければ、そもそも動かない」という物理的な掟を文法そのものに組み込んだのです。 この徹底した「読みやすさの強制」こそが、後に世界中の科学者や数学者を惹きつける最大の磁力となりました。


3. 最大の謎:なぜ「C言語の100倍遅い」のにAIの覇権を握ったのか?

さて、冒頭の最大の疑問に答えましょう。 私は、純粋な計算スピードを競わせれば、**現代の主要言語の中で間違いなく「最遅クラス」**です。

なぜ遅いのか? 私は第10話や第11話で学んだコンパイル(事前の機械語翻訳)をせず、コードを1行ずつ読みながらその場で解釈して実行する**「動的インタプリタ言語」**だからです。 数字を足し算するだけでも、「この変数は整数かな? 文字列かな? メモリのどこにあるかな?」と、実行するたびに裏で何重もの安全確認を繰り返しています。C言語がノーブレーキで時速300kmで駆け抜けるF1マシンなら、私は安全確認のために一時停止を繰り返す観光バスのようなものです。

触って試す:動的型付けの体験

🔀 動的型付けの体験(変数 x にいろいろ入れてみる)

ボタンを押して、変数 x に違う種類の値を代入してみてください。C言語やJavaなら「型が違う!」と怒られるところですが、Pythonではどうなるでしょう?

名札:x
(まだ何も代入されていません)

まずは「x = 42(数値)」を押してみてください。

それなのに、なぜChatGPTを開発したOpenAIも、Googleのディープラーニング研究者も、全員が私を使ってコードを書いているのでしょうか?

答えは、私が**「世界一プライドの低い、最高の『接着剤(C言語ラッパー)』」**だからです。

🧑‍🔬 人間(研究者・データサイエンティスト) Pythonの美しいコード(たった3行!) 「モデルを読み込んで、行列を掛け算して学習せよ」 命令を下す(司令塔) 🐍 Python(私) 「私は計算しません。部下に命令書を渡すだけです」 C言語APIで直結 GPU直結 📦 NumPy / SciPy 半世紀かけて極限まで最適化された C言語の行列計算ライブラリ 🎮 PyTorch / TensorFlow GPUを限界まで回す C++/CUDAの並列計算エンジン ⚡ 超高速計算を終えて、結果を研究者へ返す

「計算する人」と「命令する人」の完全な分業

AIの開発で一番大切なものは何でしょうか? 「何億回もの行列計算(数字の掛け算)」を猛スピードで回すことです。 しかし、そのアルゴリズムを試行錯誤するAI研究者(数学者や物理学者)は、メモリの番地(第1話のポインタ)や型の不整合(第2話)で頭を悩ませたくありません。彼らがやりたいのは、**「数式のアイデアを、直感的な数行のコードで素早く実験すること」**です。

そこで私は、自ら計算することを完全に諦めました。

世界中の科学者が使っている「NumPy」や「PyTorch」というライブラリ。 表面の皮は私の顔(Python)をしていますが、皮を1枚めくれば、中身はC言語やC++で書かれた極限の高速マシンそのものです。

人間のプログラマーは、美しいPythonのコードを3行書くだけ。 エンターキーを押した瞬間、私の薄い皮をすり抜けて、裏に控えているC言語の筋肉集団がナノ秒単位でGPUを回し、答えを私の手元に戻してくれる。 「人間の思考スピードを最大化するPython」と「マシンの実行スピードを最大化するC言語」の奇跡の合体。これこそが、私がAIの世界を完全制覇した真のカラクリなのです。


4. 抱える十字架:マルチコア時代を阻む「GIL(ギル)の壁」

しかし、そんな私にも、生まれつき背負ってしまった**「呪われたアキレス腱」**が存在します。 基本・応用情報技術者試験や、高度なエンジニアの面接で必ず話題にのぼる悪名高い怪物―― **「GIL(Global Interpreter Lock / グローバルインタプリタロック)」**です。

第2話で学んだとおり、現代のCPUは複数の頭脳(マルチコア)を持っています。4コア、8コア、16コアと並んだCPUを使えば、複数の仕事を同時に並列処理できるはずです。 ところが、標準の私(CPython)の上でプログラムを動かすと、CPUが何十コアあろうが、私のコードは「同時にたった1つのコア」でしか動くことができません。

🧠 Core 1 鍵を独占中! 🧠 Core 2 鍵待ちで待機中… 🧠 Core 3 鍵待ちで待機中… 🧠 Core 4 鍵待ちで待機中… 🔑 GIL(グローバルインタプリタロック) 「この鍵を持っているスレッドしか、Pythonコードを実行してはならない!」 💥 残り3つのCPUコアが完全に遊んで昼寝状態に! 😭

なぜこんな「足枷」を自ら嵌めたのか?

1990年代初頭、マルチスレッドのプログラムを書くとき、一番怖いのは「複数の処理が同時に同じメモリのデータを書き換えてクラッシュすること(競合状態)」でした。 当時のグイドは、メモリ管理(参照カウント)をシンプルかつ安全に保つために、極めて乱暴で明快なルールを決めました。

「面倒だから、インタープリタ全体に『世界で1つだけの巨大な鍵(GIL)』をかけよう! どんなにスレッドがたくさんあっても、鍵を持っている1つの処理だけが動き、他の処理は順番を待たせることにすれば、絶対にメモリは壊れない!」

当時は、パソコンのCPUにコアが1つしかなかった(シングルコア)時代です。この設計は天才的で、開発を劇的にシンプルにしました。 しかし、2000年代以降、マルチコアCPUが当たり前になった瞬間、このGILは**「最新CPUの筋肉の7割を眠らせてしまう呪いの枷」**へと変貌してしまったのです。

(※だからこそ、AIの並列計算ライブラリは、計算が始まった瞬間にGILの鍵を一旦解除し、C言語やGPUの世界へ逃げ込むことでこの制限を回避しています)。

現在、私の開発コミュニティでは、この30年来の悲願であった**「GILの完全撤廃(自由スレッド化 / PEP 703)」**という大手術が、最新バージョンに向けてまさに命がけで進められています。


5. 現実世界のドラマ:コミュニティを10年引き裂いた「Python 3の悲劇」

最後に、私の歴史の中で最大のトラウマとなった**「血塗られた10年間」をお話ししなければなりません。 2008年に起きた、「Python 2からPython 3への強制アップグレード事件」**です。

2000年代、私は世界中で大人気になっていましたが、昔作った設計の古さが目立ち始めていました。 特に深刻だったのが、第20話で学んだ**「文字コード(日本語の文字化け問題)」**です。

Python 2の時代、私は文字列を昔のアメリカ式(ASCIIライクなバイト列)で扱っていたため、日本語のテキストを処理するたびに、世界中のエンジニアが UnicodeDecodeError という悪夢のエラーで泣き叫んでいました。

そこでグイドは決断しました。 「中途半端な延命はやめよう。過去の後方互換性を完全に捨ててでも、すべての文字列を最初からUnicode(UTF-8)として正しく扱う、完璧で美しい『Python 3』を一から作り直すんだ!」

2008年:Python 3 のリリース!「文字コードを一新した完璧な言語だ!」 💥 大惨事:Python 2 のコードが Python 3 では1行も動かない!(互換性ゼロ) 世界中の企業が絶望「何百万行ものコードを書き直せるわけがない!移行しないぞ!」 ⚡ コミュニティが真っ二つに分裂!移行完了まで12年間(2020年まで)の泥沼

正しさが生んだ地獄

グイドの判断は、技術的には「100%正しかった」のです。 しかし、その代償はあまりにも凄まじいものでした。

なんと、Python 2で書かれたプログラムは、Python 3では文法エラーになって1行も動かなかったのです。 世界中の企業やオープンソース開発者が怒り狂いました。 「何年もかけて書いた自社のシステムを、ゼロから書き直せというのか!? ふざけるな!」

世界は真っ二つに割れました。 「Python 3なんて誰が使うか!」と開発者たちがボイコットし、ライブラリの作者たちは「2と3の両方で動く奇妙なコード」を書くために何年も過労で倒れました。 結局、世界中のプログラムがPython 3への移行を終え、Python 2が正式に息を引き取る(サポート終了)までに、なんと2008年から2020年まで「12年間」もの歳月を費やしたのです。

「どれほど正しい理想であっても、過去を急激に切り捨てれば世界を壊してしまう」。 この手痛い教訓を経たからこそ、現在の私は、慎重に、優しく、しかし確実に進化を続ける成熟した大人の言語へと成長することができたのです。


📝 3行で頭に入る「試験・実務の要点まとめ」


確認クイズ

📝 確認クイズ(3問)