著作一覧 |
萩原さんがぽつぽつと更新しているが、そこではレイヤーアーキテクチャが当面の打倒対象にされているように読める。
打倒されるものはさっさと打倒してしまえば、それなりに結論が出るから(起き上がりこぼしみたいに再興してくるかも知れないし、あるいは期待通り消散してしまうかも知れない)それは良いのだが、なんか引っかかりを感じる。
それはおそらく、
僕はインプロセス呼び出しにより、呼び出し性能が優れている点にあると思っています。
を根拠の1つにしている点にありそうだ。
これそのものはきわめて正しい。確か、プロセス間通信には当時1000倍だか10000倍だかのオーバーヘッドがかかったからだ。とは言え、実際にはインプロセスであってもマーシャルが必要な場合には、Win32のスレッドスケジューリングのせいもあって(呼び出されるコード量は違ったように思うが)大して変わらないという事実があり、そもそも呼び出し性能を根拠にして済むのであれば、巨大なシングルスレッドのアプリケーションを作れば済み、そこにスケーラビリティを確保したければマルチプロセスにして独立して動かせば良い。というか、シングルスレッドアパートメント(これが呼び出し効率は最も高い)は、同一プロセス上でパラレルに各スレッドを実行させるという点において、同一アプリケーションのマルチプロセス実行モデルと変わらないと言っても良い(もし、複数のプロセスで共有したいシングルトンなオブジェクトが必要であれば、カーネルドライバとして実装してハンドルを共有すれば済む)。
したがって、論理の話をするはずが、物理の話になってしまっているからだろう。
そこで想起するのは、OSI参照モデルがえいやで決めたとしか思えないTCP/IPに打倒されたり、マイクロカーネルが徐々に打倒されて今のOS(最初にだめを出したのがLinusで、留めをさしたのがNT4ということになるのかな)のトレンドがあり(OS Xがどの程度まで忠実なMachなのかは知らないけど)、どうやってもXはXで別レイヤだからもっさり感が拭えないにも関わらず(疎結合のようで)、TTあたりのバグでカーネルごと落ちたりした(密結合だったり)のは割と記憶に新しかったり(でもないか)。
レイヤーの重なりとして全体を捉えることは、まだ海のものとも山のものとも言えないものに対して、適切な修正を加えることが可能な点で優れている。これはプロトタイプに向いている。したがって、グラフィックドライバが常時必要であり分離することなんて考えられないと判明すればカーネルに組み込むことに何の問題もないだろう。
したがって、既にしてプロトタイプの時代は終わったということであれば、レイヤーをまとめてみたり捨ててみたりすることにはまったく問題はないわけだ。
しかし、それは実際のところテンポラリなものに過ぎない。
というのは、必要とあれば、またまた新しいレイヤーを組み込んでも良いからだ。たとえば、セキュアなレイヤーを組み込んでみたり、IPフィルタを組み込んでみたり(TCP/IPの例)。でそれが常時有効であると確定すれば融合してしまえば良い(実際のところOSI参照モデルについて言えば実際のネットワークプロトコルとしては消散したかも知れないが、ネットワークを考える上では全然死んでない)。
ここまで書いてきて、ようするに死んだ(と呼ばれている)のは、素朴な論理層−物理層の1対1マッピングのことらしいと感づいたが、そうそう原理主義的な実装っていうのは無いような気もするので、どうでも良くなってきた。
物理実装を1枚岩にするのであれば、すべて(データ層まで含めて)1つのVM上で層化して入れれば、いやでも1プロセスになるだけだ。
そうではなく、論理設計……と書いたところでふと見ると『機能要求を論理的なノード上の配置で動作させるための実現法』について書いていたのだとわかったので(そうか、これがソフトウェアのアーキテクチャなのか、となんとなく納得。勘違いしてたようだ)、単に時間を無駄にしただけだと気づいたけど、書いたものは書いたのだから、このままsubmitしてしまう。
テレビを見ると、落ちたのも通ったのもみんな「無」なもんでさっぱり動向がわからない。っていうか、区長候補が全員「無」なもんでどれがどうだかまったくわからん。良く、他の人たちはこんなんで投票行動ができるなぁ。
数の論理で動かすって決めてるんだから、さっさと完全政党選挙にしてしまって欲しいんだが。マニフェストとか、そのためのコンセンサスが得られてきてるのかと思ったら、地方じゃ相変わらず、属人選挙か。
政治こそ、さっさと属人性を捨てて欲しいもんだ。
ジェズイットを見習え |