COM(Component Object Model)とか、ActiveXとか、.NET Framework(やCLR:Common Language Runtime)とかの説明を、わくわくしながら読んだ時代が懐かしいよ…。「エクスプローラーはこれを見て、どんなプレビューハンドラが登録されているのかを知る。そのあとで必要な情報は、コンポーネント自身にたずねることで得られるようになっている。」と言うような話しだったな…。そういう時代から、はるか遠くに来てしまったんだな…。

https://www.google.com/search?q=%E3%82%A2%E3%83%AB%E3%83%95%E3%82%A1%E3%83%99%E3%83%83%E3%83%88%E6%A0%AA13%25%E5%AE%89%E3%80%81%E6%99%82%E4%BE%A1%E7%B7%8F%E9%A1%8D80%E5%85%86%E5%86%86%E6%B6%88%E5%A4%B1+AI%E3%81%8C%E6%A4%9C%E7%B4%A2%E3%81%AE%E5%8F%8E%E7%9B%8A%E5%9C%A7%E8%BF%AB%E3%80%81%E3%81%A8%E3%81%84%E3%81%86%E8%A8%98%E4%BA%8B%E3%82%92%E8%A6%8B%E3%81%9F%E3%80%82%E6%B1%BA%E7%AE%97%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%81%A9%E3%82%93%E3%81%AA%E3%81%93%E3%81%A8%E3%81%8C%E3%80%81%E6%87%B8%E5%BF%B5%E6%9D%90%E6%96%99%E3%81%A8%E3%81%95%E3%82%8C%E3%81%9F%E3%81%AE%E3%81%8B%E3%80%82&rlz=1C1ONGR_jaJP1181JP1182&sourceid=chrome&ie=UTF-8&amc=1&gs_lcrp=EgZjaHJvbWUyBggAEEUYOdIBCTMyOTBqMGozM6gCALACAeoHCggBEAAYACAAKAA&oq=%E3%82%A2%E3%83%AB%E3%83%95%E3%82%A1%E3%83%99%E3%83%83%E3%83%88%E6%A0%AA13%25%E5%AE%89%E3%80%81%E6%99%82%E4%BE%A1%E7%B7%8F%E9%A1%8D80%E5%85%86%E5%86%86%E6%B6%88%E5%A4%B1%25E3%2580%2580AI%E3%81%8C%E6%A4%9C%E7%B4%A2%E3%81%AE%E5%8F%8E%E7%9B%8A%E5%9C%A7%E8%BF%AB%E3%80%81%E3%81%A8%E3%81%84%E3%81%86%E8%A8%98%E4%BA%8B%E3%82%92%E8%A6%8B%E3%81%9F%E3%80%82%E6%B1%BA%E7%AE%97%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%81%A9%E3%82%93%E3%81%AA%E3%81%93%E3%81%A8%E3%81%8C%E3%80%81%E6%87%B8%E5%BF%B5%E6%9D%90%E6%96%99%E3%81%A8%E3%81%95%E3%82%8C%E3%81%9F%E3%81%AE%E3%81%8B%E3%80%82&aep=109&cud=0&source=chrome.crn.obic&sei=bt3jarmBBua6seMPw-OIqA0&mstk=AUtExfAjE7DZhd8_mm48ZS9qfuc1Ke_wOEzQ3b0DmdW1u409l6TPwFEDLJ61HutDxaFJ0iGmKLa1NtM2QGopSZPm6vC2ipRDh61jNb4hRKjxCI-PeCyRO4pwqBJO7avnXEX0WuYIuKE4D3HEw-u9NO5qm4kGMx9WU0EWjS4&csuir=1&udm=50

『おっしゃっていることが痛いほどよく分かります。

「レジストリの 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コンパイルに頭を悩ませつつも楽しんだあの頃の技術の思い出話、あるいは「あの仕組みが今のテック界のどこに生き残っているか」について、もっと懐かしんでみませんか?
』