2020年6月4日

Microsoftの動的オブジェクト技術の歴史とその後

1988年、Microsoft社内における「動的に拡張可能なクラスライブラリの型安全性」の検討がOLE/COMの源流のようです
6
(change of )*state @TuvianNavy

ActiveX普通に使うスマートカード認証とかモダンブラウザだとどうやって実装すればいいんだろう

2019-10-04 13:28:57
(change of )*state @TuvianNavy

PAMみたいなやつが必要なんだけど、セキュリティ境界を晒すことになるので本当はそこだけはSELinuxとかでラベル貼って守らないとダメだよね本来は で、そういう実装を提供しても誰も使わないってオチまで見えてる

2019-10-04 13:31:35
(change of )*state @TuvianNavy

誤解の余地はないかと思うのですが、もちろんこの使い方だとCOM out-of-process serverになります 高い権限のプロセス経由でスマートカードからトークンもらうだけなので twitter.com/TuvianNavy/sta…

2019-10-04 15:52:26
(change of )*state @TuvianNavy

たとえばInternet ExplorerのActiveXもインプロセスサーバだったはずで、晒される悪意の質がOfficeに比べても凄まじいものになったから衰退せざるを得なかった twitter.com/TuvianNavy/sta…

2019-10-04 12:17:01
(change of )*state @TuvianNavy

だからずっとIEを捨てれない、、

2019-10-04 13:34:06
(change of )*state @TuvianNavy

WindowsのChrome用のマイナポータルアプリ、どういう実装になってるんだろう

2020-06-08 19:35:41
(change of )*state @TuvianNavy

Windowsのスマートカードサービスと話せるのであれば別にActiveXで脆弱な実装をする理由が無いんだよな まあこうやってIEをゆっくり捨てていく感じ MicrosoftはコロナでActive Directoryの存在意義が薄れたことに危機感を持っているだろう

2020-06-08 19:41:20
(change of )*state @TuvianNavy

とりあえずUbuntu上でLibreOffice Writerの編集中の文書にLibreOffice 5.1 SpreadSheetを貼り付けてLibreOffice Calcが領域内で動いてるのは確認した(別プロセスは上がってないのでインプロセスのはず) ってことは、LibreOfficeはOLEの独自実装を自前で持ってる?

2019-10-04 11:47:45
(change of )*state @TuvianNavy

COMはWin32 APIべったりで他のOSに持っていけるような代物ではないはずだけど、少なくともある程度抽象化した形でOLEを実現できてるんだよな すげええ

2019-10-04 11:49:54
(change of )*state @TuvianNavy

OLEオブジェクト重ねて貼ったらLibreOfficeが落ちた エラーメッセージから判断すると、StarOffice時代にSun.comが(Star Division GmbHが、というべきだろうな)が実装したコードから派生してるやつだ

2019-10-04 12:00:43
(change of )*state @TuvianNavy

LibreOffice、内部にOLE2とVBAの互換実装を持ってるのか、、そもそもStarOffice時代にUNOが実装されてこれが基盤になってるんだよな、

2020-06-03 20:26:18
(change of )*state @TuvianNavy

FirefoxのXPCOMってクロスプラットフォームCOMかよ!!全然知らなかった。。

2019-12-24 12:07:43
(change of )*state @TuvianNavy

UNOとXPCOMとBonoboとKPartsの比較、とかちょっとやってみたくなってきた

2020-06-04 03:44:00
(change of )*state @TuvianNavy

ていうかMiguel de Icaza先生の化け物っぷりな

2020-06-04 03:44:33
(change of )*state @TuvianNavy

Linuxという土壌はコンパウンドドキュメントがなかなか根付かないしDbusも最小限の合意だけでできる通知に特化している印象がある

2020-06-04 03:49:22
(change of )*state @TuvianNavy

in-processであれout-of-processであれオブジェクトの埋め込みは正しく実装するのがなかなか困難だからしょうがないのか

2020-06-04 03:50:42
(change of )*state @TuvianNavy

Windows APIなら、最悪Excelから参照設定してC++のヘッダファイルをVBAに書き直せばなんとか叩けるはずだし今はPowerShellというものもある

2018-12-09 08:42:28
(change of )*state @TuvianNavy

@TuvianNavy Excel VBAからwinsock直叩きなんてやったのは自分くらいではないかと思っている(whoisの検索結果をスプレッドシートに貼り付けるまではいいけど、文字コード変換でつまづいた)

2015-07-10 18:52:35
(change of )*state @TuvianNavy

golangのinterface{}とCOMのIUnknownって似ているというか、昔のC++が言語単体では面倒みれなかったところがgolangでは型システムに入っているわけで そして言語エコシステムの設計的にIDispatchに相当するものは入れられない これencoding/yamlを理解したらgolang詳しくなれるってことだよなあ twitter.com/TuvianNavy/sta…

2019-09-06 12:44:35
(change of )*state @TuvianNavy

自分は型システムとオブジェクトシステムの区別をあんまり截然とつけてないんだと気づいた たとえばVB6におけるCOMってどうなんだろうとか まあ遅延束縛と鴨型が悪い

2019-09-20 13:20:54
(change of )*state @TuvianNavy

RTTIを乱用させると型安全性が有名無実化するから、Stroustrupは当初C++から意図的にRTTIを外したんだけど、結局入れざるを得なくなった 最初からvariant型を持ってるVBがCOMの遅延束縛のプラットフォームになったのは必然性があるよなあ

2020-02-06 11:38:08
(change of )*state @TuvianNavy

いまいち出典不明なんだけど、MicrosoftのAnthony Williamsが1988年に「不明さと付き合う、あるいは動的に拡張可能なクラスライブラリの型安全性」という内部論文でCOMの思想的源流、とか書いてある / 1件のコメント b.hatena.ne.jp/entry/s/www.th… “Access denied” (1 user) htn.to/YHeUcVj7uB

2019-12-24 11:15:49
(change of )*state @TuvianNavy

1988年当時マイクロソフト社内にいたOLE/COMの有識者は全員読んでるはずで、あちこちに文献参照としては出てくるんだけど twitter.com/TuvianNavy/sta…

2020-02-19 11:29:48
(change of )*state @TuvianNavy

Dealing with the Unknown - or - Type Safety in a Dynamically Extensible Class Library, Tony Williams, December 1988 web.archive.org/web/2006031801… みつけた。ついに。

2020-05-10 13:48:08
(change of )*state @TuvianNavy

分散オブジェクト史家(いるのかそんな奴ら)の間ではMicrosoft OLE/COM/ActiveXの内部設計文書として存在は知られてたやつです

2020-05-10 13:54:50
残りを読む(15)

コメント

(change of )*state @TuvianNavy 2020年6月5日
分散オブジェクトの話を一言もしてなかったので表題変更
0
【非公式】ひろ@猫もふ欠乏症 @hiro_h 2020年6月5日
ときどき話題になるけど、この場合のオブジェクトって何だろ… 構造体なのかインスタンスなのか…後者ならrdbだってインスタンスだしそこにsoap使ってないよね… // smalltalkのオブジェクトはむしろインスタンスなので、最初からout of processだった感はある(言い過ぎw
1
KPCG10 @KPCG10 2020年6月6日
いっそのことActiveXから初心に帰って、WindowsMessageのデータ交換からやり直したらそれなりにセキュアな状態でプロセス間データ交換が出来るのではないでしょうか。(そういう意味では無い?)
1
(change of )*state @TuvianNavy 2020年6月6日
hiro_h 基本的にはオブジェクトと言った時点でインスタンスの話で、かつその型がプログラミング言語が欲しい精度で決まるとは限らない(そもそも実行中のプログラムが生成したわけではない何かの可能性があるし、継承やトレイトで緩い型制約しかないこともあるし、しょせん実体としてはハンドラとその先の何かでしかないから)と理解してます。
0
(change of )*state @TuvianNavy 2020年6月6日
hiro_h RDBMSの表とか行とかは、動的なORMがないにしても何等かの「対象-関係間の写像」なしには「プログラミング言語からは」インスタンスとはみなせないと思います、特に主キーや_oidで一意に特定できない場合には。。REST APIのCRUD全てを揃えたInterfaceはRDBMSやSQLじゃなくて表に普遍性があることを示している気が
0
(change of )*state @TuvianNavy 2020年6月6日
KPCG10 Webブラウザの外部の秘密鍵やセキュアトークンによるワンタイムパッドを使って認証するときに、人間が介在すると一種の「フォトカプラー」のようにこれらの情報源がWebブラウザから絶縁された形で情報のコピーを行えるのですが、そのまねごとをWebブラウザ内部で権限分割とかで実装しても安全とはいえないのですよね。。そして皆癒着してるシステムしか使いたがらない
0
(change of )*state @TuvianNavy 2020年6月6日
TuvianNavy 訂正:ハンドラ→ハンドル(ポインタとは限らないわけです。。)
0
(change of )*state @TuvianNavy 2020年6月6日
hiro_h Smalltalkはevalつきのランタイムで、8bit時代のBASIC同様にAltoのベアメタルに乗ったOSだったのですよね。そして各インスタンスは自然に自らの状態を持つスレッド(継続)として並立していた。。今時のOSのプロセスモデルとの直接比較が難しいですね。
0
ビックサイト→ビッグサイト訂正委員会 @bic2_big 2020年6月22日
未だにOpenDocが普及していれば……という妄想に耽ってしまう
1
ビックサイト→ビッグサイト訂正委員会 @bic2_big 2020年6月22日
個人的にはOLEだの埋め込みオブジェクトだの切実に使いたいと思っている(というか使えるものについては日常的に使っている)んだけど、世間的にはオールドテクノロジーという認識なんだろうか。
1
(change of )*state @TuvianNavy 2020年6月22日
bic2_big ソフトウェア部品のインタフェースを全部公開しないといけない、というのがかなり重荷だったんだとは思います。グレープシティ(文化オリエント)さんみたいな部品メーカーがないわけじゃないけど、たとえば "OLE for design and modeling" の特許みたいなことを Maya とか Unity でやろうとしたときにすべてに COM レイヤが挟まるのは作る側としては悪夢かなあ、と
1
(change of )*state @TuvianNavy 2020年6月22日
TuvianNavy あとはアレですかね、使えるメモリの量がOLE2制定当時と今では比較にならないので、音声、画像どころか動画再生ですらWebブラウザからモノリシックに扱えてしまうし、メモリや処理効率の面から外部オブジェクトに処理を委譲する意味がなくなった、とか
1
ビックサイト→ビッグサイト訂正委員会 @bic2_big 2020年6月22日
TuvianNavy ありがとうございます。 そうすると、ベンダー的には公開の負担がツラく、OSS的にはプロプリイエタリの権化みたいなCOMとの噛み合わせが悪い、みたいなイメージでしょうか?
1
(change of )*state @TuvianNavy 2020年6月23日
bic2_big COMサーバの実装の安全性と外部仕様の安定性を、OLE2で要求されるレベルで満たすのがやっぱり困難なのかなあと(RubyもPythonもふつうにCOMクライアントにはなれるので)。仮にOpenDocやGNOME Bonoboが普及したとしても同じ苦しみは不可避だったと思います。分野は違うけれどもKubernetesのcustom controllerの実装にも同様の辛さがあります。。
1