Prompt
実験的機能が実装され、それが最終的に却下された有名な例は?
あはは!「実験が失敗に終わった歴史」に目を向けるなんて、情報工学を学ぶ身として最高に健全な好奇心だね!成功した機能よりも、「なぜあれほど期待されたのに消えていったのか」 を分析する方が、設計の「本質的な難しさ」が見えてくるからね。
君が知っている技術の裏側で、一度は「未来」と謳われながらも葬り去られた、あまりにも有名な3つの例を紹介しよう!
1. Google Chrome: 「URLを隠す」実験
Googleが長年試行錯誤し、そのたびにユーザーの猛反発を受けて撤回し続けているのが、「アドレスバー(Omnibox)から完全なURLを隠す」 という試みだ。
-
実験の内容: 複雑な
https://www.google.co.jp/search?q=...というURLを隠し、ドメイン名(google.co.jp)だけを表示する。 -
却下された理由: 「シンプルで安全(フィッシング詐欺に気づきやすい)」という主張だったけれど、エンジニアやパワーユーザーから 「URLはインターネットの住所であり、それを隠すのは情報の透明性を損なう」「自分が今どこにいるのか正確に把握できないのは危険だ」 という激しい批判を浴び、最終的に「オプションで表示」という形に落ち着いたんだ。
2. Java: “Project Jigsaw” の初期の実験的な試み
Javaのモジュールシステム(Project Jigsaw)は、今のJava 9以降で完成したけれど、その開発過程では多くの 「野心的すぎる実験的仕様」 が却下されてきた。
-
実験の内容: 初期の案では、既存の「クラスパス」を完全に廃止して、すべてのライブラリを強制的に「モジュール」として定義させようとした。
-
却下された理由: 「あまりにも破壊的すぎる」 からだ。世界中に散らばる膨大な既存のJava資産(レガシーコード)が動かなくなるリスクがあまりに高く、最終的には「無名モジュール」という緩衝材を設けることで、互換性を保つ今の形になったんだ。互換性を重視するJavaならではの苦渋の決断だね。
3. Python 2 と Python 3 の間の「失敗した互換性維持」
これは特定の「機能」というより、「移行プロセス全体の実験的な設計」 が却下(失敗)された例と言える。
-
実験の内容: 当初、Python 3は「2系を完全に捨てて、新しい綺麗な言語に生まれ変わる」という実験的な飛躍を試みた。
-
却下された理由: 結果として、コミュニティが真っ二つに割れ、移行に10年以上かかるという「暗黒時代」を招いたんだ。
-
教訓: この手痛い経験から、今のPython(および他の言語)は、「新機能はまず実験的機能として導入し、数バージョンかけてゆっくり移行する」 という慎重な姿勢を徹底するようになったんだぜ。
⚠️ 見落とされがちな落とし穴:生存者バイアス
僕たちが今使っている「便利な機能」の裏には、こうした「却下された死屍累々の実験」が積み重なっている。
「なぜ却下されたのか」を調べると、大抵は 「ユーザーの慣習(UX)」 か 「過去の資産との互換性」 という、技術論だけでは解決できない壁にぶち当たっているのが面白いところだね。
💡 豆知識:Blinkの intent to ship
Chromeのレンダリングエンジン(Blink)には、新機能を実装する前に「これを実装するつもりだよ」と宣言する “Intent to Ship” というプロセスがある。ここで他のブラウザベンダーや開発者から「いや、それは筋が悪い」と叩かれて、日の目を見ずに消えていく機能が、実は毎月のようにあるんだぜ!
結論
実験的機能が却下されるのは、「その技術が悪いから」ではなく、「その技術が人間の習慣や既存の巨大なシステムと衝突したから」 であることが多いんだ。
君が将来、自分のシステム(Gardenなど)に新しい機能を入れようとして「なんか違うな」と取り下げる瞬間があったら、それは君が 「偉大な先人たちと同じ、正しい設計の苦悩」 に立ち向かっている証拠だぜ!
次は、実際に 「今まさに議論されている、最新のECMAScriptやRustの実験的機能の争点」 について話してみる?それとも、「歴史上最も失敗したと言われるハードウェアとソフトウェアの融合例」 を深掘りしてみるかな! Would you like me to …?