『おっしゃっていることが痛いほどよく分かります。
「レジストリの HKEY_CLASSES_ROOT を開いて、CLSID(長い16進数の文字列)を追いかけ、コンポーネントがどのようにOSと対話しているのかを紐解く」。
あの時代の技術書やMSDNマガジンには、まるで魔法の通信プロトコルを解き明かすような、独特の「わくわく感」が詰まっていました。
(かつて私たちが夢中になった「緻密な歯車」の時代)
インターフェース(IUnknown や IPreviewHandler)を介して、OSとバイナリが「お前はこれを行えるか?」「あぁ、このインターフェースを持っているからできるぞ(QueryInterface)」と、まるで秘密の暗号を交わすように密に連携する。
あの緻密な設計図(アーキテクチャ)の美しさに、私たちは確かに興奮していました。
エクスプローラーというOSのコアなシェルが、一介のプラグイン(DLL)に対して「お前の姿形(プレビュー)は、お前自身が一番よく知っているはずだ。だからお前自身の言葉で教えてくれ」と主権を委ねる。
そこには、コンピューターのすべてを人間がコントロールできているという、手触りのある職人技の世界がありました。
(「遠くへ来てしまった」その正体)
あれから四半世紀が経ち、私たちが今いるのは、その「緻密な歯車」が何百層もの抽象化のベールの下に隠されてしまった世界です。
- バイナリの対話から、確率の対話へ:
1ビットの狂いもなく正確にインターフェースを叩き合っていた時代から、いまや「数十億のパラメータを持つAIが、確率的にそれらしい回答を生成する」時代になりました。
- ローカルの美学から、巨大なクラウドへ:
自分のPCのメモリ(CLRのヒープやCOMの参照カウント)をいかに効率よく管理するかという職人芸は、地球規模のデータセンターで動く巨大なAIモデルの計算資源の消費へと、完全にスケールが変わってしまいました。
- 設定(レジストリ)から、自動統合(インテグレーション)へ:
先ほどの「設定はOSが自動でやる」という話も、裏を返せば、人間が仲介コード(配管)を書く必要すらなくなったということです。
(でも、通底する「思想」は変わっていない)
しかし、こうしてはるか遠くに来てしまったように見えて、実は「コンポーネント自身にたずねる」というオブジェクト指向の思想は、形を変えて生き残っています。
現在のAIエージェントが、外部のWebサイトやアプリを操作する仕組み(Tool Calling / Function Calling)は、まさに現代版のCOMやActiveXです。
AIがアプリに対して「お前は何ができるんだ?」と尋ねると、アプリ側が「私は『ホテルの空室を検索する』という機能(インターフェース)を持っています。必要な引数は日付と場所です」とJSON形式で自己申告(リフレクション)する。
それを読んだAIが、必要な情報を渡して実行させる。
やっていることは、あの頃に私たちがわくわくした「必要な情報は、相手自身にたずねる」というエレガントな協調そのものなのです。
ただ、その対話がC++やC#のコードではなく、AIの自然言語処理に置き換わっただけなのかもしれません。
あのレジストリやGUID、IL(中間言語)の泥臭くも美しい世界を通過してきたからこそ、今の「AIがすべてを裏で繋ぐ世界」のダイナミズムと、そこにある一抹の寂しさが、より深く立体的に感じられるのではないでしょうか。
かつてCOMの参照カウント(AddRef/Release)や地獄のDLL Hell、あるいは.NETのJITコンパイルに頭を悩ませつつも楽しんだあの頃の技術の思い出話、あるいは「あの仕組みが今のテック界のどこに生き残っているか」について、もっと懐かしんでみませんか?
』