|
HMDT - Back Number / July, 2000 |
July, 2000■Beyond the .NET - MacOS の分散コンポーネント環境は何処へ◆ 焼き直しの .NETいきなり、Microsoft の話から始めるけど、「.NET(ドットネット)」構想が発表されてからしばらくたつよね。あちこちのニュースサイトで、「究極の vaporware だ」とか、「Micorsoft 自身も .NET が何であるか説明できない」とか書かれているけど、一番分かりやすかったのは、後藤引茂さんの「.NETの正体はバーチャルWindows構想--Windowsをランタイムの上に再構築」の記事だと思う。 一応、知らない人のために説明しておくと、.NET は Microsoft が提唱する次世代(次々世代?)の開発環境のことだよ。これが結構得体の知れないもので、さまざまな議論、憶測を読んでいるんだ。 前述の記事を乱暴に要約すると、.NET とは、「Java + Web ブラウザ + NC (Network Computer)」を、「C# + .NET Framework + Windows(含 CE)」で置き換えたもの、ということになる。え、分からないって? つまりさ、ユーザがデスクトップの前に座るとするでしょ。で、何かアプリケーションを使いたいとする(たとえば Word、はやめて Apple Works)。いままでは、そのデスクトップにアプリケーションがインストールされていないといけなかったわけじゃない。でも、それは面倒臭いよね?さらにいえば、以前にどこか別のマシンで作業していたとしたら、そのデータの続きからやりたいよね。そうすると、それをコピーしてこなくちゃいけない(リモートを直接参照してもいいけど)。やっぱり面倒臭いよね? 理想としては、どこかにアプリケーションサーバがあって、そこにアプリケーションがコンポーネントごとにばらばらになって保存されている。ユーザは処理を始めて、必要になる度に、必要なだけコンポーネントをひっぱてきて使う。ってやりかたが美しいんじゃない?そうすれば、あのばかでかい Word を各マシンにインストールする必要もないしね。 ポイントは、「コンポーネントをネットワーク経由でダウンロードする」と、「各コンポーネントを自由に組み合わせて処理を行う(アプリケーションという枠組みに縛られない)」ということ。もう一つつけくわえれば、「XML で形式でデータを保存する」という、流行にのっかった仕様も見られる。 この記事も含めて、いろんな記事で指摘されているように、別に目新しいことじゃない。ずっと昔から試みられていることなんだ。分散ソフト屋さんの夢なんだよね、これって。Location Independence(どこで作業するかは非依存)だ。いまのところ、Java Beans が一番いい線いっているかな。 ◆ OpenDoc は死なない?さて、Mac 環境に戻ってみよう。Mac の世界でこの試みはあったか?もちろん、あったとも。OpenDoc だ。ネットワークダウンロードこそなかったものの(あの頃はインターネットがいまほど市民権を得ていなかったから、しかたがない)、ほとんど同じことを目指していたといえるんじゃないかな。OpenDoc が失敗した理由は、Copland が出なかったというのが一番大きいんだけど、言語が C++ だったっていうのも理由の一つだと思う。そう、Java だったらなぁ、、、。 ここから、妄想モードに入るよ。MacOS X がもうすぐくるでしょ。X では、主要な開発言語として Java と Objective-C がクローズアップされることになる。そこで、MacOS X 上で、Java と(ネットワークダウンロード可能なコンポーネート分割)Objective-C(最強のフレームワーク(?)AppKit と、真の late binding)を使って OpenDoc を書き直すってどうよ?これって、プラットフォーム非依存を除けば、.NET に勝てるんじゃない? ちょっとそこらあたりを探ってみますか。しかし、MacOS X ではこういう次世代アプリケーションの枠組みが見えて来ない、っていうのはさみしいねぇ。とりあえず、OS をきっちり作るだけで精一杯なのかな。 [3D - Quesa] - TQ3ObjectQD3D は、オブジェクト指向を取り入れているんだ。ふつう、オブジェクト指向なライブラリはオブジェクト指向言語を使って提供されるんだけど(C++ や Java ね)、QD3D は C で提供されているんだ。だから、継承っていう概念はあるけど、言語を利用して継承しているわけではないんだ。後で例を示すけど、typdef を使って継承を表現しているんだ。同様に、カプセル化も言語のキャパシティを利用していない。ネーミング規則で乗り切っているんだ。ここからいえることは、オブジェクト指向を表現することは、C でも十分である。でも、言語のサポートがないから、設計をかなり注意深くやらないといけないね。あと、Quesa を Cocoa に移植する、っていうことを考えると、C で書かれているならばから、かなりたやすいんじゃないかな。少なくとも、Core の部分に関しては、ほとんど変更無しでいけるんじゃないだろうか。 さて、まず基底となるオブジェクトを探ってみると、それは TQ3Object なんだ。TQ3Object はなにか?実は、構造体なんだよね。
じゃあ、OpaqueTQ3Object は?
これで、充分 C++ の class の代わりになるよね。かえってすっきりしていいかもしれない。 そして、TQ3Object に適用できるメソッド(C だから関数だよね)は、Q3Object_ で始まるんだ。例えば、
と、いった感じだ。 [2D - SVG] - Graphics2D SVG GeneratorJava FAQ さんによると、Sun が Java2D で描いたグラフィックスを SVG に変換する Graphics2D SVG Generator をリリースしたとか。ほう、興味あるよー、というわけで見にいきましたが、Java2D を利用しているので、当然対象は Java2 以降。実際は Java1.3 以降。Mac じゃ動かせないよーん。MacOS X が出るまでお預けか。 それだけだとつまらないので、SVG についてちょっと調べてみました。SVG (Scalable Vector Graphics) は、XML で 2D のグラフィックスを記述する言語です。仕様を策定しているのは W3C。SVG の W3C でのホームページはここね。 Mac で利用できる SVG Viewer はあるかいな、と思って Adobe の SVG ページにいってみると、プラグインがありますね。さっそくダウンロード。デモを見に行く。おぉっ、予想していたよりいいかも。でも、動きが激しいやつはちょっと無理があるみたい。mkino のマシンが貧弱だからか?ただ Adobe はやっぱりデモもセンスがいいねぇ。センスで得をしているところはあるな。プラグインの完成度はいま一つという気がするなぁ。インタラクティブなものは動かないものが多いもんね。 もともと、SVG は Adobe と Micorsoft が中心になって仕様を作ってきたため、『Flash キラー』といわれていましたよね。すっかり定着した感のある Flash に対して、SVG はようやくツール類が出揃ってきたという感じ。SVG の強みは XML ベースだから、情報の再利用が容易なこと。しかし、画像データの再利用といわれても、いまひとつアプリケーションが浮かんで来ないよ?やはり、本領を発揮するには、XML を本格的に採用した環境が必要なのでは? ここで、ちょっと想像。MacOS X の 2D グラフィックといえば?Quartz があるじゃないか。ということは、MacOS X 用のブラウザでは、外部のアプリを立ち上げなくても、簡単に PDF データが表示できるはず。SVG がもたもたしていて、いつの間にか PDF がベクタグラフィックのデファクトをも取ってくれたら、MacOS X ユーザはとっても Happy なのに、、、ということはないかな。 [3D - Quesa] - Quesa のアーキテクチャさて、今日は Quesa のアーキテクチャの話だ。 Quesa は QD3D 互換のライブラリで、API はほとんど同一なんだ。Q3***** っていう接頭詞がつく API なんだよ。その関数の実体はどこにあるのか?呼び出した後はどうなるのか?まず、Quesa のソースコードの階層を見てみよう。
上みたいな感じになってるよん。この中で、QD3D との互換のための API(例えば Q3Initialize とか)は、Source/Core/Glue にある。例にあげた Q3Initialize は、Source/Core/Glue/Q3Main.c にあるんだ。Glue の中から呼び出されるのは、E3***** という API だ。これらは Source/Core/System にある。ここのファイルは Glue と一対一関係になっている。Q3Initialize に対応するのは、E3Main.c の E3Initialized なんだ。 座標の変換や、回転は、直接 E3 の中でやられているようだ。GL の関数を呼び出す必要があるものは、Source/Renders の中にまとめられているようだね。 どうやら、Quesa のコードを追いかけるには、Source/Core/System の E3 関連から始めるのがよさそうだよ。 [3D] - Quesa前に、High Level 3D API としての QuickDraw3D がなくなっちゃうのはもったいない、という記事を書いたよね。今日は、QD3D 互換ライブラリの話だ。 Quesa(ケサ kes-ah と呼ぶらしい)がそれだ。ソースをオープンしている QD3D 互換ライブラリで、MacOS 8/9、MacOS X、Linux、Windows、Be は作業中、をサポートするんだ。このスクリーンショットを見ると、各プラットフォームで動いている様子が分かるね。 MacOS X での動作は Carbon と OpneGL らしい。ここを見ると、Carbon Dater での解析結果が見れる。このデータが見れるというのは、とてもいいことだと思う。このライブラリを使う上で、将来性があるかどうかを判断する、とても重要な基準だからだ。嬉しいね。ま、ソースがあるから自分で調べれば分かるんだけど。これを見るかぎり、MacOS X でも大丈夫なんじゃないかな。それにしても、使っている API が全部で 45 っていうのは、少ないよね。クロスプラットフォームをとてもよく考慮していることが分かるよ。 ざっと、ヘッダファイルを見てみると、QD3D のほとんどをサポートしているようだね。Viewer もサポートしているのがうれしいね。これを使えば 3DMF(3D Meta File)を手軽に扱えるから。気をつけることは、既存の QD3D と共存ができないこと。関数名などが完全に同一だから、注意されているように、QD3D は削除しておかなくちゃいけない。ま、このおかげで、QD3D 用のプログラムはまったく変更せずに動かすことができるはず。 なかなかいぢりがいがあるライブラリだよね。 |
||||||||||||||||||||||||||||||||||||||||||||||
|
Home | Link | Download | Back Number | Speciall Issue
|