2011年1月5日水曜日

QtとQt EmbeddedとQtopiaとQt Extendded

今日はQt関連な話題。

Qtというのは、旧トロールテック社、現在買収されてNokia社が提供しているGUI Frameworkです。
GUI Frameworkといっても、STLコンテナの高機能な置き換え版からNetwork周り、XMLパーサー、Thread周りも含め、複数のアーキテクチャ向けに同じコードでアプリケーションを実装できる汎用的なフレームワークとなっています。

もともと、隠者のすぐそばで仕事をしているおぢさんが、Linux Zaurusの開発に関わった事のある人でして、Linux Zaurusに採用されていたQtを使っており、その方がQtいいよと話していたため、とりあえずQt本を購入し、Qt3を使ってちょっとしたものの解析ツール作りに手を出したのがきっかけでした。

その後、Qtをとても気に入ったので常駐先のお客様をたらし込み、一部のGUIアプリをQtで作成させていただきました。その頃、自宅でも仕事で使うための簡単ライブラリを書きためようと思い立ち、自分で商用ライセンスを購入したわけです(当時はGPLか商用ライセンス化のデュアルで、現在のようなLGPLがなかった)。

ちなみに、仕事でこんなものができます的なプロトタイプを作って仕事になった直後にQt4.0が出てしまい、Qt3からQt4への以降期に仕事で苦労するとう羽目に陥ったのはここだけの秘密です。

ここ最近、QtのLGPL化に加え、スマートフォンの注目が高いなか、NokiaさんがIntelさん達と組んでMeeGoを発表したことから、Qtに注目が集まっています。Qtの歴史は実はかなり古く、1995年には産声を上げていたそうです。Qtの名前の由来は、Xt(Xツールキット)にならい、Qtを世に出したハバードさんが使っていたEmacsのフォントでもっとも美しかったQをつけてQtとしたそうです。読み方は「キュート」と公式に呼ばれています。

なにせGUIフレームワークですから名称としては、Qtを使ったデスクトップ環境であるKDEの名称の方が著名ですが、KDE開発当初から下を支えており、世の中をびっくりさせたGoogle Earthの初期の頃のバージョンに使われたりしていました。実は、ネットワークゲームで著名なEver Quest2のディレクトリの中にもlibqt4.soが入っていて、EQ2のカードゲームはQtで実装されていたみたいです(詳しくはわかりませんが)。

さて、組み込み関係で、GUIを扱った事のある方は、Qtに関連して、よくQtopiaやQt/Embeddedといった名称を聞いていたかと思います。しかしこのあたり、名称がころころと変わった事でどうもどうなっているのかわかりにくい。
というわけで、軽く調べたものを覚え書き程度にまとめておきます。なお、当初の話は詳しくはしりませんので、間違いなどに気づかれた方は、@hermit4当てにtwitterでつぶやいて下さい。

元々 Qtは1996年にVersion 1.0が出されていますが、当時のQtはX11上で動くフレームワークでした。これを組み込み向けにX11なしで動かせないかということで、2000年にQt/Embedded というフレームワークが作成されました。これは、簡易的なウィンドウシステム、ウィンドウマネージャーを含みQt APIを利用できるソリューションで、さらに同時期にQt Palmtopという製品が作られました。Qt Palmtopは、Qt/Embeddedを使うことで、Windows SystemとWindow Managerを含むアプリケーションランチャ、IMとQt APIを実現するライブラリを含み、PDA製品で使われるアドレス帳、カレンダー、ファイルブラウザ、HTML Help Browser、テキストエディタ、ToDo List、MPEG VideoとAudioプレイヤー、世界時計、電卓、ゲームなどを含む組み込みLinux向けのApplication suiteでした。これが、Qtopiaの前身です。今でいうところのiOSやAndroidに近いものでしょうか。

2002年前半には、Qt palmtopはQtopiaと名前を変え、SHARP社の Zaurusに採用されており、この当時、Trolltech社は賞金$10,000を書けたSL-5000DをはじめとするQtopia製品向けの世界的なDeveloper Contestを開いています。なんだかどこかでみた流れな気もしますが・・・・。

Qt 4.1の頃から、それまでQt/Embeddedと称していた組み込みLinux向けの機能をQtopia Coreと名称を変えました。同時に、QtopiaのバージョンをQtとあわせるべく4.1にあげています。
良かれ・・・と思っての事なのでしょうが、知名度がさほど高くないのにもかかわらず名称をころっと変えてしまったあたりが製品ラインナップがわかりにくいという周りの誤解を招いてしまったのではないでしょうか。QtopiaとQt/EmbeddedとQtopia Coreと色々あってどれがどれなんだか、隠者も当時はよくわからなかったです。

その後、ver 4.4のタイミングで知名度が上がらないQtopiaの名称を捨て(注:と隠者が勝手に思っているだけですが)、QtopiaはQt Extendded 4.4に、Qtopia Coreの名称はQt/Embeddedに戻りました。

なお、現在では、MeeGoにその地位を明け渡した事になるのか、Qtopia/Qt Extenddedは製品サイクルを終了しております。

GUI Development FrameworkMobile Application suite
Qt/EmbeddedQt palmtop
Qt/EmbeddedQtopia
Qtopia Core 4.1Qtopia 4.1
Qtopia Core 4.2Qtopia 4.2
Qtopia Core 4.3Qtopia 4.3
Qt/Embedded 4.4Qt Extended 4.4
Qt/Embedded 4.5廃止
Qt/Embedded 4.6

Qtは、もともと結構なCPUやメモリ量を要求するため、組み込み向けとなるとかなりリッチな環境以外では採用対象から外れていたかと思います。しかし、最近ではスマートフォンやAndroid OSが活発になったため、よりリッチな環境が増えつつあるように思います。Qtopia(Qt Extendded)自体は製品サイクルが終了してしまいましたが、変わってMeeGoが出てきており、今後が面白くなりそうだなと思っています。

今年は、MeeGo, Qt関連のエントリーもちらほら増やして行きたいなと思ってます。

0 件のコメント:

コメントを投稿