スマートフォンやタブレットPCのクロスプラットフォームのフレームワークである、Qt(キュート)を使ったアプリケーション開発の方法を紹介する
昨年から、スマートフォンやタブレットが多数発売され、クロスプラットフォームな開発環境への関心が高まっています。
そこで、これから3回にわたり、特に最近注目を集めているクロスプラットフォームのフレームワークである、Qtを使ったアプリケーション開発の方法を紹介します。
Qtでは、1つのソースコードで開発したものをコンパイルし直すだけで、複数のプラットフォームで動かすことが可能です。
正式サポートしているプラットフォームだけでも、デスクトップではWindows、Linux、Mac OS X、モバイルでは、Windows CE、組み込みLinux、MeeGo、Symbianと多数存在しています。
他にもコミュニティでのマルチプラットフォームのサポートが広がっていて、Android向け、iOS(iPhone/iPad/iPod touch)向け、PalmのWebOS向けのポーティングなどが行われています。
あとで詳しく述べますが、最新版のQt4.7から「Qt Quick」という新しいUI開発のフレームワークが追加されています。このQt Quickを使うことで、いままでよりはるかに簡単にGUIのアプリケーションを開発できることを体験してもらえると思います。
Qtとは、C++で開発されている、アプリケーション開発フレームワークです。名前は、「キュート」と読みます。知っておきたい特徴は以下の通りです。
特に、クロスプラットフォーム対応は強力です。
おそらく、LinuxなどのUNIX向けのデスクトップ環境であるKDEの基盤として利用されていることでご存じの方が一番多いかと思います。現在では、X Window System環境だけでなく、Microsoft WindowsやMac OS Xなどのデスクトップ、さらにはSymbianや組み込みLinuxといった携帯電話や組み込み環境までもをサポートするクロスプラットフォームなフレームワークとなっています。
Qtを用いて作られたアプリケーションは、ソースコードレベルでの互換性が保障されていますので、それぞれのプラットフォーム向けにビルドすることによってすべてのプラットフォームで同じ機能を実現できます。
また、さまざまなアプリケーションでの採用も広がっており、Google Earthが採用したことを知っている方も多いと思います。
それでは、Qtはいったいどういった歴史をたどってここまでたどり着いたのか、ここで簡単に振り返ってみることにしましょう。
・開発当初(〜バージョン1.45)
Qtは、1991年ごろから開発が行われていました。開発当初のバージョンは、マルチバイト文字列に対応しておらず、まったく日本語を扱えないという大きな問題がありました。
当初のFreeQt Licenseと呼ばれるライセンスの問題もあり、パッチを配布して日本語を扱えるようにすることすら困難な状況でした。
その後、高木淳司氏がQtの開発元であるTrolltechから、特別にパッチを配布する許可を得たため、それを利用して1.4xにおいて日本語を扱うことができるようになりました。ここから、日本においても、徐々にQtが着目されるようになります。
・バージョン2.x
1999年6月26日に、バージョン2.0がリリースされました。この段階で、内部の文字コードにUnicodeを利用することで国際化が行われました。そのため、日本語が扱えないという問題の大部分が解消されました。
また、Windowsのサポートが加わり、クロスプラットフォームのフレームワークとしての進化を始めます。
しかし、一方でQt2.0から新しく適用されたQPL(Q Public License)というオープンソースライセンスが、GPLと非互換であることが問題視されるようになりました。
2000年9月7日にリリースされたバージョン2.2から、GPLとQPLとのデュアルライセンスが採用されるようになり、ライセンスの問題も解消することができました。
・バージョン3.x
2001年10月16日に、バージョン3.0がリリースされました。このバージョン3.0からは、Mac OS Xも対象プラットフォームに加わり、Qtがクロスプラットフォームのフレームワークとして立場を確立していきます。
・バージョン4.x
2005年6月29日に、バージョン4.0がリリースされました。このバージョンでは、長期間を掛けてアーキテクチャが全面的に見直され、モジュール分割なども行われました。
このモジュール分割によって、機能の拡張や追加などが比較的容易に行えるようになり、その後のバージョン4.4ではWebKitの追加なども行われています。
そして、2009年3月3日にリリースされたバージョン4.5からLGPLが追加され、オープンソース版はLGPL v2.1とGPL v3のデュアルライセンスになりました。LGPLの追加によって、Qtの利用はますます加速していきます。
プラットフォームも拡大され、現在では、非公式ながら、AndroidやiOS向けにポーティングするプロジェクトも存在しています。特に、Androidについては、非常にアクティブに活動が進んでいるため、今後の展開が注目されています。
Qtの最新版は、執筆時点では、2011年3月1日にリリースされた、Qt4.7.2です。Qt 4.7.2には、QtWebkitの高速化などのパフォーマンス向上といったいくつかの変更が含まれていますが、なんといっても最大の売りは、4.7から導入されたQt Quickです。
Qt4.7から正式に追加されたQt Quick(Qt User Interface Creation Kit)は、より軽快にUIを開発可能にすることを目指して新しく提唱するフレームワークで、以下のような特徴を持っています。
それでは、Qt Quickの構成要素を一つ一つ見ていきましょう。
・QML
QMLは、Qt Quickによって導入された、UI記述に特化した新しいプログラミング言語で、QtQuickの中心となる存在です。Web系の記述経験があれば、簡単に使えるよう設計された言語です。CSSによく似たシンタックスを持っており、UIを宣言的に記述できます。JavaScriptを使ってロジックを記述することもできます。
例えば、QMLでウィジェットを使って"Hello World"と表示するためには、以下のように記述するだけです。
import QtQuick 1.0 Rectangle { width: 200 height: 200 Text { x: 66 y: 93 text: "Hello World" } }
・Qt Creator
Qt Creatorは、統合開発環境(IDE)です。元々は、C++を使ったQtアプリケーションなどの開発向けに提供されていましたが、バージョン2.1からは正式にQMLに対応しています。
QMLに対応したコードエディタ、デバッガ、デザイナを含んでいます。
・QtDeclarativeモジュール
QtDeclarativeモジュールは、QMLを実行するエンジンや、QMLの基本要素を含みます。QMLに新しい型を追加する場合にも利用します。
QMLだけでプログラミングしている場合には、あまり意識をすることはありませんが、高機能なアプリケーションを開発するために必要となる仕組みを多数含んでいます。
本連載では、開発環境としてQt Creatorを使い、QMLでアプリケーションを開発するための基本的な技術について紹介します。
最終的には、Google Maps APIを使ったアプリケーションを1つ作成し、「Qt for Android」を使ってAndroid上で動かす方法までご紹介する予定です。
Copyright © ITmedia, Inc. All Rights Reserved.