Symbian OSアプリ開発の手引き

Symbian OSアプリ開発の手引き(3)

Symbian OSから見放されないための大事な約束

大久保 潤 管理工学研究所 2008/4/21

Symbian OSの全体像を概観した「Symbian OS開発の勘所」の続編となる今回は、“実際にどのようなプログラムを書くのか?”をテーマにSymbian OS向けのアプリケーション開発における心得を分かりやすく伝授する。(編集部)

- PR -

 前回までの解説でコードの断片を実行する準備は整いました。早速S60のGUIアプリケーション開発に取り掛かってみたいところですが、API仕様書を片手に実際のプログラミングをはじめるには、実はまだちょっと“壁”があります。C++の文法を知っていることを与件として、すぐにAPI仕様書を片手にプログラミングがはじめられるかといえば、そうではありません。なぜなら、Symbian OSのネイティブプログラムの書き方には“癖”があるからです。

 例えば以下のようなメソッド


CClass* CClass::NewL( TInt aItemCount )
    {
    CClass*  self = new(ELeave) CClass( aItemCount );
    CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop( self );
    return self;
    }

を各クラスのインスタンス生成用に用意するべし、などがSymbian OSの場合コーティング規約に含まれています(注)。このような規約を理解せずにプログラミングをはじめると、良くて結果不正、通常は“Panic”と呼ばれる抑止不能な例外通知をシステムから受けて、アプリケーションの実行を強制的に打ち切られることになります。最悪なのは何カ月も後に発覚する(ということは出荷後ですね)リソースリークの原因になることです。携帯電話ではPCなどのプログラムと異なり、一度起動したプロセスは基本的には終了することがありません(でなければ、あのサクサクとした使い心地の実現は難しいでしょう)。

注:このようなメソッドを“ファクトリメソッド”というのですが、ちょっと気の利いた人であれば同様の概念を自分で発明していたはずです。Symbian OSが面白いのは、それを規約に組み込んで「ヤルベキこと」として定義したところにあります。ここを誰が書いても間違いがないようにしようとすると、言語で縛るか、統合開発環境で面倒を見るかのいずれかを行う必要があります。モバイルデバイスに特化しているSymbian OSがどちらに向かって進んでいくのか、これからの舵(かじ)取りに興味は尽きません。

 というわけで、今回から数回にわたってSymbian OSのコーディング規約イディオム(Symbian的な文字列操作やファイル操作)を解説していこうと思います。ここを乗り切ると、Symbian OSの常識に含まれる話なのか、それともAPI固有の話なのか(ということはS60にディペンドする部分なのか)ということの見通しがつきやすくなります。常識が分かってしまえば、それ以外はAPI固有と判断できるわけですから。

 ただし、このあたりの考え方については以前の連載である「Symbian OS開発の勘所(以後、“ファーストシーズン”と呼ぶことにします)」でかなりしつこく説明しているので、今回の連載(以後、“セカンドシーズン”と呼びましょう)では具体的なコードベースで話を進めていきます。

今回のUPDATE情報

 本編をはじめる前に、恒例になりつつあるアップデートのお知らせです。第2回の掲載後、Nokiaでは2つの動きがありました。1つはFP2の正式版リリース、もう1つは待望のCarbide.c++ v1.3のリリースです。

S60の3rd Ed FP2正式版のダウンロードはこちらから
http://www.forum.nokia.com/info/sw.nokia.com/id/
4a7149a5-95a5-4726-913a-3c6f21eb65a5/S60-SDK-0616-3.0-mr.html

 正式版のFP2はデフォルトでインストールする場所が変わっているので注意が必要です。ベータ版では、C:\Symbian\9.3\S60_3rd_FP2_Betaでしたが、正式版では、C:\S60\devices\S60_3rd_FP2_SDKとなっています。

Carbide.c++ v1.3のダウンロードはこちらから
http://www.forum.nokia.com/main/resources/tools_and_sdks/
carbide_cpp/index.html

 インストール手順は第1回でお伝えしたとおりです。せっかくFP2の正式版が入ったのですから、インストールが完了したら以下の手順を参考にして、既存プロジェクトのSDKも更新しておきましょう。

 Carbide.c++の画面左上のペイン[Project Explorer]から対象のプロジェクトを選び、右メニューの一番下の[Properties]をクリックします。

図1 プロパティ設定画面(SDK切り替え前)

 図1の1)に従って対象を切り替えてください。すると2)のとおり、ベータ版のSDKが使用されていることが分かるはずです。これを今回インストールしたFP2正式版に切り替えるには、3)に従い[Manage...]ボタンを押下します。

図2 SDK切り替え画面

 すると、図2の[Add/Remove Carbide Build Configurations]ダイアログが表示されます。ここで「S60_3rd_FP2_Beta」のチェックを外し、代わりに「S60_3rd_FP2_SDK」にチェックを入れます。これでSDKの切り替えは完了です。[OK]ボタンを押下して戻ってみましょう。

図3 プロパティ設定画面(SDK切り替え後)

 図3のように、切り替えが成功したことを確認することができるはずです(注)

 Carbide.c++ v1.3ではWindows Vistaが正式にサポートされているので、デバッグ実行も問題なく行えるようになっています(実行方法は第2回図7を参照のこと)。Vistaをご使用の方は、ビルドの後に試してみてください。

注:ただし「RFs」というファイルシステムを使うためのクラスの取得方法が、Carbideのv1.2とv1.3の生成するテンプレートコードで異なっています。由緒正しいコードはv1.3が出力するCCoeEnv::Static()->FsSession()なので、あまりコード資産がたまっていないのであればv1.3でプロジェクトを作り直してもよいのかもしれません。
  • 連載バックナンバー
  • 全記事インデックス
  • 組み込み開発トップ
  • MONOistトップ

スキルアップ/キャリアアップ(JOB@IT)

スポンサーからのお知らせ

- PR -
@IT Sepcial

震災関連・復興支援情報

震災関連・復興支援情報
@IT MONOist/EE Times Japan/環境メディアの製造業技術者向け3メディアを中心に、震災関連/復興支援情報を集めました

次世代エンベデッドコーナー

次世代エンベデッド
“次世代”の組み込み機器を開発するエンジニアを支援するコーナー。新潮流・新技術をインタビューやコラム、解説記事で分かりやすく紹介!

Windows Embeddedコーナー

Windows Embedded
Windows Embedded専門コーナー。Windows Embedded StandardやWindows Embedded CEをはじめとする「Windows Embedded」ファミリの最新動向や技術情報をお届けします!!

Androidコーナー

Android
Android専門コーナー。組み込みデバイスへの適用からアプリケーション開発、イベントレポート、ニュースなどAndroidに関するさまざまな技術情報がここに集結!!

@IT MONOist 求人情報

- PR -