2006年03月02日

Symbian プログラミング 1001Tips

Nokia 6630/Vodafone 702NKを使っているSeries60系の人も、ビジネスFOMA M1000を使っているUIQ系の人も、今使っているスマートフォンで自分で作ったC++/Javaアプリケーションを動かしてみたい、そんな人のための Tips集です。

ドキュメントがない! 答えがわからない!
Symbian上で何か開発してみようと思っても、日本語で読めるドキュメントがなかったり、英語の掲示板サイトに行って、自分と同じ質問を見つけたはいいものの回答なし、だったりすることがしばしば。
かつて、筆者は(Windows 3.1上で動作する16Bit版の)Visual C++ 1.0が初めてリリースされたとき、それまでのWin16 API呼んでいたCベースの開発から、MFCベースのC++ベースの開発へのパラダイムチェンジを経験しましたが、その時のMFCのドキュメンテーションやサポート状況もかなりひどかったです。そうはいうものの、MFCは所詮、Windows APIを覆い隠すWrapperであり、また全ソースコードが公開されていたことから、「困ったときにはソースを見りゃいいや」と苦労しつつもお気楽なものでした。
Symbianでの開発も(GUIアプリケーションはある意味MFC流の)Document-View構造を取っていることもあり、「昔の Windowsっぽいな」と思ったのもつかの間、SymbianのC++ APIはその先にたどるソースコードもない...ということでわからないことが多すぎるのでした。

困ったときはTips集!
そんな困ったときに役立つのがFAQ(Frequently Asked Questions: よくある質問集)やTips(コツ)集。前から順番に読まなくとも、気になるところを読めば、必要な知識が得られる。そんなFAQやTips集を筆者は MFCやJavaを対象に翻訳してきましたが、今回3度目の正直というわけではありませんが、Symbianをターゲットにlivedoor WIKIで展開することにしました。宜しくお願いします。

2006年03月01日

UI (ユーザインタフェース)

SymbianOS では、コアとなる OS (オペレーティングシステム) と UI (ユーザインタフェース) とが、ある程度独立して提供されています。このため、SymbianOS を搭載した携帯電話機メーカは、自社の携帯電話に適した UI を他社から購入したり、独自の UI を実装して製品を仕上げることができるようになっています。これは携帯電話メーカにとっては、他社差別化の要因だったり、自社のユーザに (自社 OS 搭載機と SymbianOS 搭載機の間に) 統一された操作系を与えることができるなどの、メリットとしても捉えられているようです。

その反面、ある UI 向けに開発されたソフトウェアが、別の UI 搭載機では基本的には動作しないというユーザにとってのデメリットがあります。これは、例えば Linux における複数の UI (コンソール / X / Qtopia) におけるソフトウェア非互換と似ていますが、実際にはそれよりは相互移植性が高いという印象を受けます。 SymbianOS においては、複数の UI の間で、移植ガイドや移植ツールが提供されています。また、SDK は各 UI 毎に別のものが提供されているものの、共存には配慮されていて、ベースとなるコンパイラも共通で使えるケースが多くなっています。これらのため、最初に一つの UI で開発を行い、後で他の UI にも移植するという手法が採りやすくなっています。

以下では、各 UI を簡単に紹介します。
■Series60

Nokia が開発し、自社搭載だけでなく各社にもライセンス提供している UI です。主なターゲットは通常の携帯電話タイプのスマートフォンです。採用機種数は SymbianOS の中で最も多くなっており、そのため市販されているソフトウェアも一番多いと思われます。

日本国内で発売されている Nokia 6630 (ボーダフォン 702NK) が、これを採用しています。他の採用機種は、My-Symbian の比較ページ (http://my-symbian.com/7650/compare.php) で一覧を見ることができます。

入力手段はテンキー (+カーソルキー等の幾つかの追加ボタン) が前提とされていて、タッチパネル無しで使われるのが特徴です。現在のバージョンでは画面解像度が 176*208 ドットに固定されていますが、将来はスケーラブル UI の導入がアナウンスされています。開発情報は、 Series 60 Platform ( http://www.series60.com/) にまとまっている他、 Forum Nokia が詳しいです。
■Series80

Nokia が自社のコミュニケータ (Communicator) 向けに開発した UI です。コミュニケータは、640*200 ドットの画面 (タッチパネル無し) とフルキーボード (いわゆる QWERTY タイプのキーボード) を搭載しており、それと画面横のコマンドボタンを中心とした UI になっています。

My-Symbian の比較ページ (http://my-symbian.com/9210/compare.php) で、搭載機種の一覧を見ることができます。開発情報は、Forum Nokia が一番詳しいです。
■Series90

Nokia が、自社の Widescreen Smartphone (Media Device) 用に開発した UI です。 Nokia の UI としては唯一、キーボード無し・タッチパネルを前提とした UI です。

先に発表になった Nokia 7700 が一般発売中止されたため、現在は搭載機が無く、次の Nokia 7710 が最初の製品になる予定です。開発情報は、Symbian のサイト ( http://www.symbian.com/developer/sdks_series90.asp) に概説されており、 Forum Nokia が一番詳しいです。
■UIQ

Symbian から独立した (という認識で合っているでしょうか?)、 UIQ technology という専業 UI メーカが開発している UI です。 208*320 または 240*320 ドットの画面と、タッチパネルを前提とした UI が特徴です。 Sony Ericsson や Motorola 等の幾つかのメーカが搭載機種を出しており、 My-Symbian の比較ページ (http://my-symbian.com/uiq/compare.php) で一覧を見ることができます。開発情報は、Symbian のサイト ( http://www.symbian.com/developer/sdks_uiq.asp) に概説されており、 SDK などは UIQ のサイトにあります (Symbian のサイトにもあります)。 SonyEricsson P800/900/910i の独自拡張機能については、 Sony Ericsson Developer World にあり、このサイトは UIQ 一般の開発情報としても有用と思われます。
■富士通の UI

富士通は以前から、DoCoMo 向け FOMA 端末に SymbianOS を搭載していますが、 UI は独自のものだと言われています。前項までの UI と異なり、一般向けには SDK も開発情報も提供されていませんし、電話機にサードパーティのアプリケーションをインストールする仕組みが存在するか否かも不明です。そのため、以下の項目では扱いません。
■TechView

SymbianOS の初期において、リファレンス UI として紹介されていたものです。基本的には、Psion のようなタッチパネルとキーボード付きのハードウェアが前提となっているように見えますが、実際に搭載機種が発売されたことはありません。そのため、以下の項目では扱いません。
■EIKON

SymbianOS として呼ばれるようになる前の、 EPOC (R1〜R5) で使われていた唯一の UI です。 EPOC における開発については、 「Psion (EPOC) での開発の概要」 をご参照ください。

開発関連情報の入手先

■書籍

1. Symbian OS C++ プログラミング (日本語) ( http://www.seshop.com/detail.asp?pid=4911)
2. Symbian OS/C++プログラマのためのNokia Series 60アプリケーション開発ガイド (日本語) ( http://www.seshop.com/detail.asp?pid=5439)
3. その他、洋書は主に Symbian Press から出ています。 ( http://www.symbian.com/books/index.html)

■Web サイト (公式情報)

1. Symbian
* 本家 (英語) ( http://www.symbian.com/)
* 日本 (日本語) ( http://www.symbian.com/Japan/)
2. Forum Nokia
* 本家 (英語) ( http://www.forum.nokia.com/)
* 日本 (日本語) ( http://www.nokia.co.jp/forum/index.html)
3. Series 60 Platform (英語) ( http://www.series60.com/)
4. UIQ (英語) ( http://www.uiq.com/)
5. Sony Ericsson Developer World ( http://www.sonyericsson.com/developer/)

■Web サイト (参考になるソース・開発情報などを開示しているサイト)
日本語のサイト

1. TeamKOx WEB-Site
Series60 プログラミングに関するページがあります。
http://www.teamknox.com/
2. GSM 携帯で日本語を
Series60 開発環境用フォントなどを配布してみえる、nao 氏のサイトです。
http://nao.s58.xrea.com/
3. Akira's Web page
Series80 用のツールなどを配布してみえる、あきらん氏のサイトです。
http://www.akiran.net/
4. PLANET PLAN
Symbian, Nokia9210 BBS で、主に日本語化関連の情報を集積されています。 フォント周りは、開発情報としても有用と思われます。
http://www.saver.ne.jp/%7Eplanet/index2.html

英語のサイト

1. NewLC - The SymbianOS C++ Developer Community -
開発関連情報のニュースサイトとしても充実しています。
http://www.newlc.com/
2. All About Symbian
Symbian OS Team の一人である Ewan 氏が、 たまに簡単なプログラミングがらみの記事を書いています。
http://www.allaboutsymbian.com/
3. opl-dev project
OPL 言語のオープンソース開発プロジェクトサイト。
http://opl-dev.sourceforge.net/
4. Symbian Diaries
http://www.symbiandiaries.com/

文字コード・フォント

SymbianOS における文字コード・フォントについて、特に日本語まわりに関して、判る範囲で簡単に解説します。
■SymbianOS における文字コードの基本

SymbianOS の内部文字コードは、Unicode (UCS2) です。ネイティブ開発言語である C++ においては、 1文字は 2octet で表現されています。 BMP 以外の面の情報を扱えるか否かは確認していません。

この点は、Psion (内部コードは ASCII+α で UniFEP を入れると UTF8 として扱っていた) とは異なります。
■charconv 文字コード変換

SymbianOS は、他の国際化対応 OS と同様に、文字コード変換ルーチンをサポートしています。ただし、機種などによって、実際にサポートしている言語・文字コードが異なります。以下に、システムドライブの \System\lib\charconv を見た結果を記しておきます (日本語関連のみ)。

* ボーダフォン 702NK
o 実機 →Shift_JIS, ISO-2022JP, EUC-JP に関する charconv が搭載されていました。
o エミュレータ (Series60 2.0 SDK) (調査中)
* Sony Ericsson P800
o 実機 →日本語に関する文字コードは、何一つ入っていませんでした。
o エミュレータ (UIQ SDK 2.1) (調査中)

■フォント

SymbianOS では、以下の二種類のフォントがサポートされています。どちらも Unicode 対応されており、日本語グリフを持ったフォントが搭載されていたり、ユーザが作成・提供されていたりします。

1. *.gdr
Psion 時代から使われているビットマップフォントで、 アプリケーション同様に UID で区別される。 機種毎に UID が異なるようで、フォントの流用が難しい場合もある模様。
2. True Type Font
一般的な TTF フォントが使われます。

開発言語

SymbianOS で使われる開発言語について、特徴を挙げます。全ての UI に対して提供されている訳では無いので、後述のマトリックス表も参照してください。
■C++
新規作成: 2004年12月14日

C++ は、SymbianOS においてネイティブ言語として位置づけられています。ただし、通常の Unix や Windows 向け C++ プログラムがそのままコンパイルできる訳ではなく、 SymbianOS のフレームワークに沿ったコーディングが要求されます。 SymbianOS における C++ の特徴的な点として、以下が挙げられます。

* Clean-up Stack と Leave によるメモリ例外処理
* 多くの場合、writable static 変数は使用禁止
* 非常に小さなスタック

開発手順は、通常の組み込み向け開発と同様に、以下のステップで進みます。

1. エミュレータ (PC上) 用にコンパイル
2. エミュレータ上でデバッグ
3. 実機用にコンパイル
4. (実機上でデバッグ)
5. パッケージ作成

エミュレータ用の C++ コンパイラ・デバッガは、以下が使われます (UI によって使えないものも有り)。

* CodeWarrior Development Studio for Symbian OS
有償のコンパイラで、評価版が Forum Nokia から入手可能。 Professional 版では、実機デバッグがサポートされるとのこと。 先ごろ、Metrowerks から (for SymbianOS 部分だけ) Nokia に買われたので、 UIQ 向けのサポートが今後どうなるのか気になるところです。
* Borland C++ BuilderX Mobile Edition
Borland が出している有償ツールです。 実機デバッグがサポートされているとのこと。
* Borland C++ Mobile Edition
Forum Nokia から無料ダウンロードできます。
* Microsoft Visual C++
ターゲットとなる UI SDK によって、 VC++6 の場合と VC++ .NET の場合があります。

PC 上のエミュレータは、全て SDK に含まれています。 Palm のエミュレータ copilot 等とは異なり、コード自体は x86 のコードが使われます。そのため、市販の SymbianOS 用プログラムをインストールすることはできません。

実機用の C++ コンパイラは、gcc が採用されており、リンカ等と共に SDK に含まれています。

実機上のデバッグは、対応している実機とデバッガの組でしか使えません。それ以外の場合は、エミュレータ上でデバッグを完了させておく必要があります。

パッケージは、通常 SIS 形式と呼ばれるインストール用ファイルを作成します。作成方法は、UI によって差があるので、SDK のドキュメントを参照してください。
■Java
新規作成: 2004年12月14日

Java のサポート状況は、UI だけでなく、機種によって微妙に異なります。以下のうち、1〜2種類程度がサポートされているようです。

* J2ME MIDP
* J2ME Personal Profile
* Personal Java (= JDK1.1.8 相当程度)

開発手順は、大まかに言うと以下のようになります。

1. PC 上の IDE や JDK 等で開発
2. エミュレータ (PC 上) でデバッグ
3. パッケージ作成 (jar, jad, sis など、UI に依存)
4. 実機上で動作確認

DoCoMo の i-mode やボーダフォンの Vアプリ等は必ず電話回線経由で実機にダウンロードしてから実行しますが、 SymbianOS 搭載機ではそれ以外に、 (メモリカードや USB ケーブル経由で) ローカルなストレージに置いた Java アプリケーションを、直接起動することも可能になっています。そのため、実機デバッグが楽だと言えます。

* ボーダフォン 702NK
o J2ME MIDP 2.0
→SDK は、他の Nokia 製携帯電話の MIDP SDK と統合されているようです。 詳細は調査中です。
* Sony Ericsson P800
o Personal Java アプリケーション
→SIS パッケージを作成してから、インストール。 インストール後は、C++ で作成されたアプリと同様に、 メニューから起動します。 SDK は、C++ SDK と統合されています。
o J2ME MIDP 1.0
→SDK は、他の Sony Ericsson 製携帯電話の MIDP SDK と統合されているようです。 詳細は調査中です。
* Nokia 9500
o J2ME Personal Profile
→JAR ファイルを MyOwn から実行すると、インストールされます。 JAR の manifest の書き方が厳しいので、 詳しくはあきらん氏のサイト ( http://www.akiran.net/NOKIA9500/seventh.html を参照。 SDK は、専用の Series80 SDK for Personal Profile を使います。
o J2ME MIDP
(調査中です)

■OPL
新規作成: 2004年12月14日

Psion 初期のオーガナイザの頃から、実機上でプログラムできる言語として使われてきた、 BASIC ライクな言語です。当時は Organizer Programming Language と呼ばれていましたが、後にオープンソース化され、Open Programming Language と名称変更されました。

OPL で書かれたプログラムは、一旦中間コードにコンパイルされて、中間コードインタプリタ上で動作します。インタプリタ (OPL ランタイム) は、予め opl-dev のプロジェクトサイト (http://opl-dev.sourceforge.net/) から入手して、実機やエミュレータ上にインストールする必要があります。また、OPX と呼ばれる拡張モジュールを C++ で記述することで、機能拡張することも可能になっています。

現状の OPL は、UI (機種) によってサポートの度合いが異なり未だ実行のみで開発がサポートされていない機種もあります。その場合は、他の機種や、エミュレータ上で開発を進めることになります。詳しい対応は、上記プロジェクトサイトを参照してください。

開発関連情報は、上記プロジェクトサイトの他、 「Psion (EPOC) での開発の概要」 の OPL の項目もご参照ください。
■Visual Basic など
新規作成: 2004年12月14日

AppForge というサードパーティから、 AppForge Crossfire (http://www.appforge.com/products/enterprise/crossfire/) という開発者向け製品が出ています。これを使うと、C#, VB.NET, Visual Basic 6.0 で開発したプログラムが SymbianOS 上で動作するようです。同サイトから、試用版がダウンロードできます。

試したことが無いので詳細は判りませんが、結構な数の市販ソフトが AppForge Booster を要求するので、利用実績はそれなりにあるようです。
■Python
最終更新: 2005年1月25日 (Python for Series60, UIQ 向けの情報に追記)

Python for Series60 が Forum Nokia で公開されています。 Vodafone 702NK にインストールして、以下ができることを確認しました。

* FExplorer から *.py スクリプトを指定して、実行する。
(標準のファイルマネージャから実行すると、 一部のスクリプト終了時に 702NK 自体が再起動するようです。)
* Python を起動して、キーパッドから 1行スクリプトを入力して実行する。

Symbian OS Community Newsletter #34 に、関連情報へのリンクが掲載されています。

* http://www.symbian.com/developer/letters/newsletter34.html#python

上記とは別に、Python 2.3.3 の UIQ 向け移植 (プレビュー) が公開されています。未だプレビュー段階ですが、Symsource の協力の下、移植作業は進行中のようです。また、Series80 への移植も検討中としています。

* http://www.monkeyhouse.eclipse.co.uk/mobile/python.htm

■Simkin
新設: 2005年1月25日

Symbian OS Community Newsletter #34 で、 Simon Whiteside 氏が移植した Simkin が紹介されています。近藤は使ったことが無いのですが、高級・軽量な埋め込みスクリプト言語だそうです。 Sony Ericsson P800 (UIQ) 用と Nokia 7650 (Series60) 用のバイナリ、それに簡単なデモが公開されています。

* http://www.symbian.com/developer/letters/newsletter34.html#languages
* http://www.simkin.co.uk/

■Io
新設: 2005年1月25日

Symbian OS Community Newsletter #34 で、 Chris Double 氏が移植した Io が紹介されています。近藤は使ったことが無いのですが、プロトタイプベースの言語とのことです。 Series60 用のバイナリが公開されています。

* http://www.symbian.com/developer/letters/newsletter34.html#languages
* http://radio.weblogs.com/0102385/categories/nokia9210/2004/09/17.html
* http://www.iolanguage.com/

SymbianOS

UI (ユーザインタフェース) 毎に異なる SymbianOS の開発環境についての情報を、日本語で整理し、目的とする開発情報に到達しやすくすることにあります。
プロの方が開発する場合はともかく、近藤のようなアマチュア開発者にとっては、以前 EPOC と呼ばれていた頃から比べるとかなり改善されたとはいえ、どこに情報が存在するかの全貌を把握するのが大変でした。いったん調べた情報を公開することで、他の方々の役に立てば幸いです。

SymbianOS は、スマートフォンと呼ばれる高機能携帯電話機で使われる OS の一種です。現在のところ、バージョン6、バージョン7、バージョン8 の 3種類があります。バージョン番号が新しい方が、OS として新しくリリースされたものですが、必ずしも新しい製品には新しいバージョンが搭載されているとは限りません。これは、後述の UI との組み合わせに関連します。

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。