Bagel2について整理 その1

いやもうこの話題は以前HDDがクラッシュしてBagel2の開発を決意して以来、何度となく書いているし、はてなで3回はやっている気がするが、今一度Bagel2でやりたいと思っていること、そしてその前に考えなければいけない課題を整理してみたいと思う。ここに書くのは初めてだしね。

対象プラットフォーム

とりあえずWindows/ReactOS。wxWidgetsがモダンな設計だったら、Linuxに広げても良かったのだけれど、どうにもこうにもwxTNGの進捗具合が思わしくないらしいので断念。Wineで動いたらめっけもの。だれかQt以外でクロスプラットフォームないいツールキットがあったら教えてほしい。OMGUIはよさげだが開発が活発じゃないし、機能も少ない。

レンダリングエンジンの選択

レンダリングエンジンに何を採用するか?実用的なブラウザを作るならば、現時点ではGeckoかTridentの二択である。Geckoは言うまでもなく私の愛するレンダリングエンジンであり、2年間格闘した相手なので慣れている。またTridentは組み込みブラウザにおける実績がある。Tridentは生理的に嫌いだし、どうせWeb標準のサポートもビリだろうから、必然的にGeckoをまず選択することになる。「まず」と言ったのは、複数のレンダリングエンジンを切り替える機能に含みを持たせたいからだ。たぶん、それは実装する。

他に有力なレンダリングエンジンにはWebKitがあるが、一般に配布されているWindows版WebKitはCoreGraphics・CFNetworkなどのApple謹製ライブラリがなくては使い物にならない。これらのライブラリは再配布不可能なので、自由な活動ができない。論外である。cairo + cURLをバックエンドに利用したWebKitも作ることはできるが、今はパフォーマンスが極めて悪いし、まだ完全にはAppleのライブラリへの依存が抜けていない。パフォーマンスに目をつぶれば、今すぐに採用したい要素満載なのだが(したがって研究は継続せねばならない)、ここが致命的。

Adobe AIR版WebKitも存在するが、これはまだ調べていない。Google Talk Labs Editionで採用されているので、案外使い物になるのかもしれない。しかし、プログラミングの手間的にはCG/cairo版がいいと思う(COMなんで、C#などからも使える)。

WebKit/Gtk+をWin32でビルドすることもできるようだが、さすがに移植モノでもないのにWindowsでGtkを選択したくはない。また、QtWebKitはGPL縛りがきついので遠慮したい。Qtで開発するならQtWebKitがもっとも筋が良いはずなのだけれど。

Google Chrome版WebKitについてはまだそんなに調べていない。外部からの利用が容易なのかいささか不安。

開発言語の選択

私はかつてVB厨だった。VBとMozilla ActiveX Controlでブラウザを試しに作ったこともあったが、あまり実用的ではなかった。そんなおり、DelphiでGeckoSDKを書く猛者が現れ、RADでしかプログラミングできない厨房だった私はそれに飛びついた。そういうわけでBagel0.xではDelphiを採用した。今でもDelphiはそれなりに好きだ。だがDelphiを使い続けるのは無理だ。

Geckoの変化に対応しきれるかという問題だ。Mozilla 2ではXPCOMの互換性をぶっ壊すと思われる。Mozilla Wikiで新しい組み込みAPIの項目を見るとC++とJavaScriptのバインディングしか考えられてない。Pythonバインディングとかはやりたい奴が勝手にやれといわんばかりだ。Delphi用GeckoSDKはXPCOMとCOMが似ているから(interface型を流用できる)楽に実装できているので、ここがぶっ壊されると非常に厳しい。

ではどうするか。C++しか無いだろう。公式にはC++のAPIしか用意されないと思われる。ブラウザとSDKの保守の両方をやらされるのはたまったもんじゃない。

XULとJavaScriptで作ってもいいがまるっきりFirefoxなのでつまらない。

もっとも、GeckoSDK for Delphi、MozSwingやGeckoFXがMozilla 2でも動作する(あるいは保守している人たちがものすごくやる気があって、Moz2の変更に追従する気がある)んだったらこれほどうれしいことはない。私は本当ならDelphi, Java, C#で開発したい。特にJavaで。次期JDKにはWebKitがJWebPaneとして載るからだ。また、JavaXPCOMはIBM謹製なので、IBMの方針しだいでMoz2の変化に追随してくれる可能性がある。

GUIツールキットの選択

一番迷っているのがここ。JavaならSwingなんだが。当初はWTLを使う気でいた。しかし最近のMSはWTLを放り出したい感じがするので、はたして使い続けてよいものなのか…。MFCは今更使いたくない(でも新しいのはリボンに対応してたりして、いったいMSはMFCをどういう扱いにしたいのかさっぱり分からん)。Gtkは見た目が×。QtはライセンスのGPL縛りが×。C#が使えるならWindowsForms・WPFも有力だが、GeckoFXがMoz2に追随する保証は無い。

SmartWin++なんてのも見つけたが日本語での情報が無い。どうしたものか。あと、Boost.GUIは頓挫したのかな?

そういうわけで何か有用な情報があったら教えて欲しい。やっぱWTLかな…。

その2に続く予定。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です