はてなダイアリーから完全移行しました

いまさらmarquee・blinkに対応してみたり(これが決定的な理由)、障害が起きるといつも「メンテナンス中です」と出ているがこれが出ているときは常時メンテナンス中なのか非常に疑わしかったり(計画されたメンテナンスならいいが、突発的な障害なら素直に障害と言え)、例の犬がムカついたり、AtomPubの実装に「?」な点があったり、中身のないキーワードページがやたら増えてGoogle検索の際に非常に邪魔だったり、最近のはてなの姿勢に不信感が増してきたりしたので、はてなダイアリーを使うのをやめ、日記・雑記的な内容もここに移転することにしました。

以後、はてなダイアリーの私の日記が更新されることはありません。

D言語 + DWT に決定

どうせだから新しいことに挑戦しよう。

Windows/Linuxで動く

DWTにはDWT-WinDWT-Linuxという二つの実装が既にあり、さらにDWT-Cocoaの開発も進行中。SWTのLinux版のBrowserウィジェットはGeckoを使っており、これも当然Dに移植されるはずである(今まさに進行中)。

「とりあえずWindowsで」とか言ったけど、やっぱりLinuxでも使いたいんだよね。

ネイティブのWidgetを使う

Nimbus並みにきれいならネイティブでなくてもいいのだが。

EclipseライクなGUIが作れる

CTabFolderいいよCTabFolder

多分使わないけど。

JFaceまで移植されている

JFaceいいよJFace

難点

いかにもJava。setTextとか…。DWTよりDFLのほうが好ましいんだが、GTK版の開発が一向に進んでない(現時点で最新のコミットが1年前)のでパス。

あと、StyledTextが日本語を入力すると落ちる。これどうにかならんのか?

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に続く予定。

はじめてのBlog

はてなダイアリーで4年くらい日記を書いてきた。しかしその内容は「日記」の名の通り、日々受信した電波を書き散らした低品質なものでしかなかった。「ahya365」だとか「plus7」だとかいう藝名を名乗っていたために、タガが多少外れ気味でもあった。

ここはそういう場にはしないつもりだ。そのために実名の入ったドメインを取り、Blogのタイトルも自分の名前にしてある。これだけでかでかと書いておけば、まあ恥ずかしい真似はそうそうしないはずである。しちゃだめだぞ☆>自分

なお、はてなと2chではいままでのキャラを続行するので(ある意味)ご安心を。

なんでサブドメインがbやblogじゃなくてdかって?いや、最初ははてなに書いていた内容を全部こっちに持ってくるつもりだったんで、サブドメインもそれにあわせたのだが、見返したらあまりにも恥ずかしかったので、上の方針にしたわけ。サブドメインだけ残ったが、ま、しょうがない。