Ubuntu Weekly Recipe

第284回 クロスプラットフォームなアプリケーション開発フレームワークQtでプログラミングをはじめる

この記事を読むのに必要な時間:およそ 4 分

UbuntuとQt

Qtは前述のような特徴があるため,非常に多くのアプリケーションで利用されており,最も人気のある開発フレームワークの1つと言っても良いでしょう。GNOMEと人気を二分していると言われているLinuxデスクトップ環境のKDEはQtで作成されていますし,SkypeやVirtualBoxなどでも利用されています。

Ubuntu特有の部分としては,⁠12.10で廃止されてしまいましたが)Unity 2DやUbuntu TVのプロトタイプで使われていたりしました。Ubuntu 11.04ではそれまで別途に導入する必要があった実行のためのQtライブラリがインストールした段階で導入済みになるなど,利用の面でも利便性が高まっていますUbuntu Weekly Topics 2011年1月21日号 QtとUbuntu・Unity 2D・新しいXスタック・UWN#219・Ubuntu Server Survey 2011)⁠

また,次世代版として開発されているUnity 8(旧称:Unity Next)はQt5+QMLで作成されているなど,Ubuntuの中でも重要な要素となっています。詳細についてはUnityNextSpecを参照すると位置付けがよくわかるでしょう。

Unityという単語は「統一・統合」という意味の名詞です。UnityはUbuntu(パソコン)⁠Ubuntu Touch(ハンドセットやタブレット)⁠Ubuntu TV(組込み)とあらゆるところで使われ,文字通り統一的な操作性を提供してくれることでしょう。これを実現するには技術的なポイントとしてクロスプラットフォームが考慮されたライブラリが必須であり,Qtはまさにそこにハマるテクノロジーなのです。

UbuntuでQt開発をはじめよう

Qtはアプリケーション開発をするためのフレームワークですので,さっそく何か作ってみましょう。

環境構築

アプリケーションを組む上で大変な作業の1つとして,環境の準備があります。必要なライブラリを調査・用意してそれらにパスを通すなどです。もっとも,UbuntuはDebian由来のパッケージングシステムがありますのでそれほど大変ではありません。Qtをはじめる場合はqt-sdkメタパッケージをインストールするのが最短です。

筆者はUbuntu 13.04の環境で作業を行いました。端末で次のコマンドを実行するか,ソフトウェアセンターで⁠qt-sdk⁠と検索します。

$ sudo apt-get install qt-sdk

13.04にはUIの翻訳が反映されないというバグが存在するため,ワークアラウンドとして次のコマンドを実行します。

$ sudo ln -s /usr/share/qt4/translations/ /usr/share/qt5/translations

導入されるパッケージは多数に及びますが,いくつか抜粋しますと次のようなものがインストールされます。

build-essential

コンパイラ(gcc,g++)やmakeなどビルドするのに必要なものが揃ったメタパッケージです。

libqt4-dev

Qt4の開発用ライブラリなどのメタパッケージです。Ubuntuの場合は,12.10まではQt4の環境が,13.04からはQt4とQt5の環境が導入されます。Ubuntu 12.04 LTSを使っている場合は,Ubuntu SDKのPPAを追加しておくことで,Qt5を導入することが可能です。

qt5-default

このメタパッケージにより,Qt5が導入されます。このパッケージはUbuntu 13.04から用意されています。

qtcreator

QtCreatorとは,Qtで作られたC,C++向けのIDEです。とても軽快に動作し,補完機能,各種ドキュメントへのアクセス,デバッガとの連携,バージョン管理ソフトウェアとの連携など他のIDEと比較しても遜色がありません。Qt自体はC++のライブラリなので,コンソールで使い慣れたエディタを利用して開発していく事も充分に可能ですが,やはり専用の環境は利便性が高いです。何より準備が楽ちんです。

著者プロフィール

松本直樹(まつもとなおき)

とあるメーカー系企業に務めるエンジニア。玄箱PRO(ARM)でDebianを触ったことがきっかけでデスクトップLinuxを使い始めて,今はどこにでもいるUbuntuユーザの1人。

コメント

  • w.setWindowsTitle("HelloQtWindow");

    w.setWindowsTitle("HelloQtWindow");
    は、
    w.setWindowTitle("helloqwindow");
    の誤です。

    Commented : #1  web-dreamers (2013/12/05, 21:13)

コメントの記入