2006年02月11日

Series60とは?

プログラムというからには、スマートフォンには携帯電話メーカーが策定したAPIが搭載されてます。この APIのひとつである「Series60」は、Nokiaが策定したC++上でのAPIです。キャリアなどが制定したAPIと異なり、ヨーロッパでも日本でも同じバイナリがSeries60を搭載した端末上で動作します。Series60は、携帯電話向けのOS「Symbian OS」上で実装されたAPIです。今回の主題であり、先ほどの触れさせていただいた702NKもSeries60を搭載しています。

 Series60は、まさに「スマートフォンのためのAPIセット」ということができ、これまでの携帯電話では考えられないようなAPIが用意されています。主だったものを列挙していくと次のようになります。

* GUIに関連したAPI群
o 各種UIのコントロール
o グラフィックス

* ファイル入出力に関係したAPI群
o 通常のバイナリファイルの入出力
o 端末組み込みのデータベースへの入出力

* Symbian OS提供のサービスを利用するAPI群
o 通信に関連したAPI群
o IP v4 / v6
o 赤外線通信
o Bluetooth

* マルチメディア(音声、映像)を処理するためのAPI群

* アプリケーションエンジンAPI
o 端末の電話帳、カレンダーなどへアクセスするためのAPI

………


Series60とC++

 Series60は開発言語としてC++を採用しています。しかし、いわゆるANCIのC++ではないことにご注意下さい。以降の連載では、いくつかのサンプルプログラムが掲載されると思いますが、その中に出てくるコードに若干の違和感を覚える方が居るかもしれません。これは、Series60ではC+ +言語を組み込み端末向けにカスタマイズをしているためです。

 まずは目に付くところを2点挙げると、

* 実行時型情報を持たない
* try-catchによる例外処理はサポートしない(ただし、try-catch以外の方法での例外処理を提供)


となるでしょうか。

Series60の対象ハードウェア

 このSeries60が対象とするユーザインターフェース(UI)の物理的なデバイスとしては、

* 176×206ドットのカラー液晶
* 片手で操作をすることを前提とした物理的なUI


を想定しています。これらの制限はあくまでも現在のものです。したがって、例えば液晶のサイズなどもより大きいものをサポートする拡張がこれからなされるようです。

 もちろん、個性豊かなNokiaの端末ですから、上記以外の物理的なUIデバイスをもつ端末も存在しますし、そのためのAPIも存在します。例えば「Series80」(キーボードを持ったもので、640×200ドットの液晶画面を持ったもの)や「Series90」(ペン入力、640×320ドットの液晶画面)といったものもあります。一見すると「これが携帯電話?」と思うような端末が多数あります。興味がある方は探してみてはいかがでしょうか?

 Series60はSymbian OS v6.1以降のいくつかのバージョン上で実装されています。あくまでもSeries60はSymbian上でビルドされた「APIとUIのデザインのひとつ」ということになります。したがって、Series60以外にも、前述のSeries80やSeries90、Motorolaが開発した「UIQ」などのUIデザイン、APIが存在します。Series60に限っても、時を経るごとにいくつかのバージョンが出てきました。
posted by シンビアン at 07:34| Comment(0) | TrackBack(1) | Series60プログラミングテクニック | このブログの読者になる | 更新情報をチェックする

スマートフォンって何?

さて、この「スマートフォン」とは何なのでしょうか? ハードウェアの進化や省電力化によって、これまで PDAと呼ばれていた端末と同程度のことが携帯電話のサイズの端末で行えるようになってきました。日本国内の端末でも豊富な機能を組み込むものが出てきています。ただし「個別のツールの追加」というニュアンスが強く、「汎用的なPCやPDAに近い環境」とはなっていない状態であると思えます。

 これに対して、スマートフォンと呼ばれる端末は、PCやPDAに近い感覚で、PCとのデータの連携はもちろん、携帯電話に目的別のアプリケーションを自由にインストールしたり、もちろん自分でアプリケーションを作成することが可能です。恐らく、今回の連載をお読みの方の中には「アプリケーションを作成する」ことを職業としている方が多いのではないでしょうか?

 単にプログラムを作成するだけならば、例えば国内での携帯Java環境でも可能です。ただし、作成できるアプリケーションの自由度が大きく違います。このSeries60 の端末と他の国内で出ている端末の大きな違いのひとつは、まさに「プログラム作成の自由度の差」にあるといえます。

 もし、標準搭載のWebブラウザが気に入らなければ、例えばOperaのインストールパッケージをダウンロードし、携帯電話側にインストールすればよいのです。もちろん、その気になれば自分でWebブラウザを作ることも可能です。それだけではなく、電話帳をカスタマイズしたり、Bluetooth上で IPプロトコルを利用することも可能です。

 「何ができるのですか?」と聞かれれば、「おそらく想像できることは全てできます」というのが答えになると思います。しかも仮想マシンなどを介すのではなく、ネイティブのコードです。
posted by シンビアン at 07:30| Comment(0) | TrackBack(0) | Series60プログラミングテクニック | このブログの読者になる | 更新情報をチェックする

Vodafone 702NK

2004年12月に「Vodafone 702NK」というNokiaの携帯端末が発売されました。もしかしたら、この連載をお読みの読者の中にも、すでにお持ちの方がいるかもしれません。この 702NKは、海外では「NOKIA 6630」という名称で発売されています。そして、この端末は一般に「スマートフォン」というカテゴリの携帯電話であるといわれています。
posted by シンビアン at 07:29| Comment(0) | TrackBack(0) | NOKIA SMARTPHONE HACKS | このブログの読者になる | 更新情報をチェックする

SDKの入手とインストール

SDKはNokiaの開発者向けサイト「Forum Nokia」(http://www.forum.nokia.com)から入手可能です。Forum Nokiaには、開発情報や多数のプログラム例も掲載されていますので、有益な情報が多数あるかと思います。是非一度ご覧下さい。

 SDKのインストールは簡単に行えるのですが、これ以外に

# Perlインタプリタ:Active Perl 5.18以降
# Java実行環境:Java2 Runtime Environment v.1.3.1以降

が必要になります。これらはインストール前に別途用意しておいてください。

 インストールを開始するにはダウンロードしたzipアーカイブに含まれるSetUp.exeを実行します。
posted by シンビアン at 07:26| Comment(0) | TrackBack(0) | Series60プログラミングテクニック | このブログの読者になる | 更新情報をチェックする

2006年02月08日

シンボリックリンク 【symbolic link】

読み方 : シンボリックリンク
分野 : OS > 技術 > ファイルシステム

 あるファイルやディレクトリに別の名前を与え、ユーザやアプリケーションがその名前をファイル本体と同様に扱えるようにする仕組み。UNIX系OSのファイルシステムの機能として定着している。

 UNIXでは「ln」コマンドでシンボリックリンクを作成することができ、ファイルシステム上にはリンク情報が格納された0バイトのファイルが出現する。元のファイルを扱うのと同じ感覚でシンボリックリンクと通してファイルやディレクトリにアクセスすることができる。

 似た機能に「ハードリンク」がある。シンボリックリンクはデバイスやファイルシステムにまたがって自由にリンクを張ることができるが、ハードリンクではファイルシステムを管理するファイルエントリに複数の名前を登録するため、異なるファイルシステムへリンクできないなどの制限がある。ハードリンクでは実体ファイルの削除ができるが、シンボリックリンクを通じて実体を削除することはできない。

 ファイルやディレクトリに仮想的な別の名前を与えるという点ではWindowsの「ショートカット」やMac OSの「エイリアス」に近いが、これらはリンク先のファイルを実体と同じようには扱えないため、実装や機能の面では大きく異なる。

2006年02月06日

Symbian OS とは

「Symbian OS」は英Symbian社が開発し、様々なメーカーにライセンスしているOSです。同社は、携帯電話関連においてはノキア、モトローラ、サムスン、ソニー・エリクソン・モバイルコミュニケーションズといった世界の主要な携帯電話メーカーに「Symbian OS」をライセンスしており、海外では「スマートフォン」と呼ばれる多機能携帯電話に搭載されています。ちなみにSymbian自体は、エリクソン、ノキア、サイオン、モトローラ、松下通信工業などによって設立されたPSION Groupの1企業です。

 2002年現在、ソニー・エリクソン「P800」や、ノキア「Nokia 7650」「Nokia 3650」、そして「N-Gage」を含む20機種の携帯電話がSymbian OSを使って現在開発中であると公式にアナウンスされています。また、日本市場向けの端末では、富士通製の「F2051」がはじめてSymbian OSを採用しています。
posted by シンビアン at 07:15| Comment(0) | TrackBack(0) | NOKIA SMARTPHONE HACKS | このブログの読者になる | 更新情報をチェックする

Symbian OSTM開発環境 WATCHPOINTとCodeWarriorTM for Symbian OSTMの連携

■特長

1. 従来は、CodeWarrior(TM)とターゲットが、シリアルで接続され、ターゲット上のSymbian OSと通信を行い、アプリケーションデバッグを提供していますが、カーネル、デバイスドライバなどはデバッグできないという弱点があります。
   
2. CodeWarriorTMとWATCHPOINTを接続することによって、ICE経由でのデバッグを可能にします。
・ これにより、カーネル、ドライバなどもCodeWarriorTMでデバッグできるようになります。
・ また、エミュレーションメモリやトレースなど、CodeWarriorTMには無いICEの機能を使うことができるため、結果、デバッグ方法の幅を広げることになります。
・ Symbian OSTMのカーネルやドライバなど、ICEを使ってソースレベルデバッグ出来ます。
ただし、CodeWarriorTMの仕様に依存します。
   
3. CodeWarriorTM側の主な機能
・GO実行
・ブレーク
・ステップ実行:ステップイン/ステップアウト等
・変数インスペクト
・ブレークポイント:ハードウェア/ソフトウェアブレークポイント  
   
4. WATCHPOINT側の主な機能
・エミュレーションメモリの設定※1
・トレース/トリガ(逆アセンブラレベル)※1
・外部フラッシュメモリへのダウンロード
・内部レジスタの参照および変更
・ラインアセンブル
・リセット
  ※1 フルICE接続時に有効
※  CodeWarriorTM for Symbian OSTMは、OEM Edition Ver.3.0.2以降をお使いください。
※ 各製品は、各社の商標または登録商標です。製品の仕様は予告なく変更する場合があります。  
posted by シンビアン at 07:14| Comment(0) | TrackBack(0) | NOKIA SMARTPHONE HACKS | このブログの読者になる | 更新情報をチェックする

PDA化する携帯電話

「Symbian OS」が採用されているソニー・エリクソン「P800」、ノキア「N-Gage」などは、いずれもスマートフォンと呼ばれるタイプの携帯電話です。一般的に“スマートフォン”とは、大きめのカラーディスプレイを備え、音声通話の機能以外にインターネットコンテンツを閲覧したりメールを送ったりできるほか、メッセンジャー機能といったネットワークコンピュータ的な機能を利用できる携帯電話のことを言います。

 また、今までの電話機にはない電子マネー機能やスケジュール管理、メモ機能など、PDAが持っているような機能を備え、さらにインテリジェント化したものを指して言う場合もあるようです。広い意味では、日本のiモード端末などもこのカテゴリーに含まれるようです。

 「Symbian OS」はPSION Groupの前身であるPSIONがPDA用に開発したOS「EPOC(エポック)」をベースにし、アプリケーションをセットして、携帯電話がPDA的な利用法も可能になるソフトウェアです。

 Symbian OSを利用し、既に市場に出ている携帯電話としては、たとえばGSM端末である「Nokia 9210」などがあります。同端末は、そのまま使うと携帯電話、開くとキーボード付のPDAという変わった形状の携帯電話なのですが、その見かけの通り、開かずに声で電話をかけることができますし、開けばPDAとして、あらかじめインストールされている文書作成用アプリケーション「Word」や、表計算アプリケーション「Sheet」を使ったり、あるいは新たにサードパーティ製のアプリケーションをインストールすることも可能と、電話というよりは小さなパソコンのように使うこともできるようになっています。

 ちなみに「Nokia 9210」では、それまでのPSION端末にはなかった動画を再生するアプリケーション「Movie Player」なども使えますし、コンピュータとして使いながらハンズフリーで電話として通話することすら可能なため、それまでのPDAよりもさらに高性能ということもできるかもしれません。

 既存のGSM携帯電話の通信網をそのまま利用しつつ、より高速なデータ転送が可能な「GPRS方式」が利用できるようになったためか、GSM方式が利用されている地域では、音声通話だけではなくPDAのような機能も含んだ「Nokia 7650」のようなスマートフォンが流行しつつあります。そのため、このようなPDAの機能をそのまま持ってきたような「Symbian OS」が採用されるようになったのでしょう。また今後は、さらにデータ通信速度の早い3G方式「UMTS(Universal Mobile Telecommunication Systems)」も控えています。

 同様のケースとして、たとえば以前とりあげたマイクロソフトのSmartPhone 2002(Stinger)やPalm OSなどPDA向けOSが、スマートフォン用に採用されるようになっているようです。

32bit OS、文字コードはUTF-8
 その他のSymbian OSの特徴としては、

* 32bit OS
* マイクロカーネルアーキテクチャ
* マルチタスク、マルチスレッドに対応
* 開発環境を安価に揃えられる
* 内部文字コードはUnicode(UTF-8)で国際化が容易
* キー入力、ペン入力をサポート

といった点が挙げられます。



 最新のSymbian OS v7.0では、

* 3G、2G双方に対応
* ショートメッセージとしてSMS、EMS、MMSが利用可能
* MIDP対応Java VMを搭載
* IPv6、IPSEC対応

などの機能が新たに追加されています。


 ちなみに、EPOCは、PSION Groupの前身であるPSION社から発売された「SERIES5」というARM CPU搭載のPDAから利用され、ER(EPOC Releaseの略)3、ER5、ER6…とバージョンが上がっていきました。

 携帯電話では、エリクソン製「R380 mobile phone」が初めてER5をベースにしたバージョンを採用しています。現行機種では、「Nokia 9210」がSymbian OS 6.0(ER6ベース)、ソニー・エリクソン製「P800」がSymbian OS 7.0(ER7)といったあたりが使われています。

 なお、Symbian OSに対応している携帯電話用チップセットとしては、Intel製「XScale」やTexas Instruments製「OMAP」、Motorola製「DragonBall MX1」など、いずれもARMコアのチップセットが公式にリリースされています。
posted by シンビアン at 07:11| Comment(0) | TrackBack(0) | NOKIA SMARTPHONE HACKS | このブログの読者になる | 更新情報をチェックする

2006年02月05日

参照カウント

参照カウント(さんしょうカウント)は、ガベージコレクタの動作方法の一つ。

* すべてのオブジェクト(メモリ上におかれているデータの単位)に対して、参照カウントと呼ばれる整数値を付加しておく。これは、このオブジェクトへのポインタがシステム全体にいくつ存在しているかを数えるものである

* オブジェクトへの参照が変化するたびにこの値は随時書き換わる。
* 参照カウントが0になったものについては破棄が許される。

この方法は処理が高速であり、オブジェクトを多数生成し、すぐに参照を切るような処理においても迅速に破棄が起きる。ただ、不要になったオブジェクト同士が循環参照してる場合、参照カウントが0にならないために破棄がおきないという問題がある。

また、参照カウントが頻繁に書き変わる場合には書き換え負荷そのものが問題になる場合もある。さらに、単純な実装の場合、大量のオブジェクトが一斉に解放になる場合があり、 CPUの空き時間を利用してガベージコレクションを行う方法と比べると、メモリの解放で処理が遅くなってしまう場合もある。

class A {
public B b;
}
class B {
public A a;
}
public class Test{
public static void main(String[]arg) {
A a=new A(); // *1*
a.b=new B();
b.a=a;
a=null;
// *1*で作成したAのオブジェクト は到達不可能にもかかわらず、参照カウントは1
}
}

例2

ウィキペディアの「孤立した記事」は、参照カウントが0のものを表示しているだけなので、孤立した記事だけから参照されている記事は孤立した記事と見なされていない。

上で述べた問題を回避する方法としてマーク・アンド・スイープがある。
[編集]

実用例

* マイクロソフトのComponent Object ModelにおけるCOMオブジェクトは参照カウント方式で管理される。
* プログラミング言語Pythonのガベージコレクタは主に参照カウント方式を用いている。
* Boost C++ Library の smart_ptr
posted by シンビアン at 08:42| Comment(0) | TrackBack(0) | Symbian OS C++ 実践開発技法 | このブログの読者になる | 更新情報をチェックする

参照カウンタ

概要

アクセス不可能オブジェクトを決定する方法の1つに、参照カウンタ (reference counting) を使う方法があります。これは非常にシンプルな GC で、実装が容易であるが、後で述べるように致命的な欠点があるため、通常は他の GC 手法と併用する必要がある。

【注意】参照カウント法を GC 手法と見なさない人々もいる。

実装

1. GC 管理されるすべてのオブジェクトに、参照カウンタを付随させます。
2. オブジェクトへの参照が作成されると、参照カウンタを 1 つ増やします。
3. オブジェクトへの参照が削除されると、参照カウンタを 1 つ減らします。
4. 参照カウンタを減らしたときに参照カウンタが 0 になれば、 オブジェクトを回収する。

サンプル

次のような擬似 Java コードを考えてみよう。

SomeObject obj1, obj2, obj3;

// ここで作成されるオブジェクトは、作成と同時に変数にバインドされるので、
// 参照カウントが 1 になる。
obj1 = new SomeObject("A"); // オブジェクト A を作成
obj2 = new SomeObject("B"); // オブジェクト B を作成

// オブジェクト A は obj3 変数により参照されるので、参照カウントが増えて 2 になる。
obj3 = obj1;

// オブジェクト A は obj2 により参照されるので、参照カウントが 3 になる。
// それと同時にオブジェクト B の参照は減らされて 0 になり、
// オブジェクト B は回収されることになる。
obj2 = obj3;

利点
GC 実行時間が極めて短い

オブジェクトの回収はオブジェクト毎に行われるため、GC の実行時間はきわめて短い。

そのため、リアルタイム用途に適しています。
欠点
参照カウンタの増減によるオーバーヘッド

オブジェクトの大半は寿命が非常に短いという一般法則があります。参照カウント法では、すぐに不要になるオブジェクトに対しても参照カウントを増減させるというオーバーヘッドが伴います。

このようなオーバーヘッドはコンパイラによる最適化によって大きく軽減できる可能性があります。

[執筆注: もう少し精密な議論ができるはず。]
オブジェクト毎に参照カウンタ用のストレージが必要

十分な大きさの参照カウントを保持しようとすると、そのためのストレージのオーバーヘッドが大きくなる (通常の 32 bit システムでは、参照カウントを 32 bit にとることが多いであろう。) また、参照カウンタようのストレージを小さく取ると、次に述べるオーバーフローの問題が出てくる。
参照カウンタのオーバーフローの問題

たとえば、参照カウント用に 8 bit のストレージを使うとすると、参照カウントは 255 までしか使えない。参照カウントのオーバーフローを許すと、実際には 256 の参照があるにも関わらずオブジェクトが回収されてしまうことが起こりかねない。

このような問題を避けるため、参照カウントの最大値に達したオブジェクトに対しては、もはやカウントの増加も減少も行わないように、参照カウントのロックが行われる。これにより、参照されているオブジェクトが回収されてしまうという問題を回避することはできるが、ロックされたオブジェクトは永遠に回収されないという問題が起きる。

ロックされたオブジェクトを回収するためには、参照カウント法を別の GC 手法と組み合わせることが多い。
循環参照を行うオブジェクトを回収できない

2 つのオブジェクトが互いに相互参照を行う場合、両オブジェクトが不要になっても参照カウントが 0 にならないため、決して回収されない。

注意すべきは、相互参照をしている当該のオブジェクトだけでなく、そのオブジェクトから直接・間接に参照されているオブジェクトも、決して回収されないことである。

この問題は参照カウント GC だけでは解決することは不可能であり、別の GC 手法を併用することで回収を行う。
サンプル

次の Java コードでは、Mike と Cathy は相互参照をしており、両オブジェクトが不要になった後でも参照カウントは 0 にならない。

obj1 = new Person( "Mike" );
obj2 = new Person( "Cathy" );
obj1.wife = obj1;
obj2.husband = obj2;
obj1 = null;
obj2 = null;
posted by シンビアン at 08:40| Comment(0) | TrackBack(0) | Symbian OS C++ 実践開発技法 | このブログの読者になる | 更新情報をチェックする

2006年02月04日

CodeTEST Software Analysis Tools for Symbian OS

Symbian OS用ソフトウェア検証ツール「CodeTEST for Symbian OS」により、Symbian OSプロジェクトの開発にかかる時間とコストの削減を実現いたします。リファレンスボードを使用した開発の初期段階から、エミュレータや実製品を使用した最終的なアプリケーションテストの段階まで、CodeTESTを利用してソフトウェアの実行とパフォーマンスを詳細に解析することができます。

フリースケールでは、航空宇宙産業におけるミッションクリティカルなソフトウェアの検証ツールとしてCodeTESTを開発して参りました。このCodeTESTをSymbian OS向けに提供することは、Symbianのマーケットにおけるソフトウェアの検証と品質保証の要求が増加していることを示しています。

CodeTEST を利用して開発プロセスに多くの時間を追加することなく、コードの品質と効率を改善することができます。他のソフトウェア検証ツールとは異なり、「CodeTEST for Symbian OS」は、Symbian OSアウェアなオンターゲットでのプロファイリング、解析およびトレース機能を提供いたします。CodeTESTが提供するレベルの質と精密さで解析を実現するツールは他にはありません。CodeTESTは、ディプロイの前に問題を特定し、解決するのに役立ちます。

特長

* Time to Marketの実現
「CodeTEST for Symbian OS」により、開発、テストおよびディプロイを遅らせるような問題に早い段階で気づくことができます。これにより開発スケジュールに沿って、競合他社に先駆け製品をリリースすることが可能になります。
* 信頼性の高いコード
「CodeTEST for Symbian OS」により、コードの信頼性を向上することができます。設計から開発、テスト、ディプロイまで、開発サイクルの中で発生する問題が解決したか、していないかを明確にし、コミュニケーションを効率化します。製品のパフォーマンスと信頼性が鍵となる分野において、CodeTESTは差別化を実現します。
* CodeTESTインスツルメンテーションテクノロジ
CodeTESTの特許を取得したインスツルメンテーションテクノロジは、今日ではもっともシステムに影響を与えないリアルタイムエンベデッドソフトウェア解析ソリューションです。CodeTESTは、コードをモニタするインスツルメンテーションテクノロジを採用しています。インスツルメンテーションのためのタグは、元のソースコードに影響を与えず、ビルドのプロセス中にコンパイラによって挿入されます。ファイルが実行されたとき、タグがデータコレクションモジュール(ハードウェアまたはソフトウェア)に送られ、その後データはホストアプリケーションに送られます。このテクノロジにより、CodeTEST はパフォーマンス解析、カバレッジ解析、メモリ解析およびソフトウェア実行トレース解析機能を提供します。

主な機能

* CodeTEST for Symbian OS トレース解析
トレース解析機能はSymbian OSアプリケーションの実行履歴を詳細に記録し、エラーとなるルートの特定をより容易に行うことができます。

* CodeTEST for Symbian OS コードカバレッジ解析
総合的なカバレッジ解析が可能で、実施しているソフトウェアテストの有効性を測定、改善するのに有効です。

* CodeTEST for Symbian OS メモリ解析
メモリ解析機能は、メモリリークやエラーによるシステムのバグを特定し時間とリソースの削減に役立ちます。

* CodeTEST for Symbian OSパフォーマンス解析
パフォーマンス解析機能は、詳細なソフトウェアのボトルネックを特定することで生産性を向上します。また、関数コールペアを表示し、I-キャッシュミスのような問題を容易に特定することができます。

プロダクトライン

プロジェクトにあわせた5つのエディション
フリースケールでは、開発環境や携帯電話の開発ライフサイクルのステージにあわせ5つのエディションのCodeTEST for Symbian OSを提供いたします。ソフトウェアのみ、ソフトウェアエージェントまたはハードウェアプローブのいずれを使用している場合でも、CodeTESTを提供可能です。

* CodeTEST for Symbian OS エミュレータエディション
エミュレータベースの開発用。ハードウェア入手前でも開発を始めることができます。エミュレータエディションには、Windows上で動作するSymbian EPOCエミュレータとともに使用するトレース、ステートメントカバレッジ、メモリおよびパフォーマンス解析の各機能が含まれます。

* CodeTEST for Symbian OS プロフェッショナルエディション
携帯電話機上でのアプリケーションソフトウェアの統合や検証期間用のオンターゲットプロファイリングとコード解析が可能です。プロフェッショナルエディションには、エミュレータと実際の電話機上でのトレース、ステートメントカバレッジ、メモリおよびパフォーマンス解析の各機能が含まれています。

* CodeTEST for Symbian OS デベロッパエディション
デベロッパエディションは、プロフェッショナルエディションのコストを抑えたサブセット版です。エミュレータと実際の電話機上でのトレース機能を提供します。

* CodeTEST for Symbian OS OEMソフトウェアインサーキット(SWIC)エディション
OEM SWICエディションは、リファレンスボードやプロトタイプ機上でローレベルのアプリケーションとシステムソフトウェアのインテグレーションを行うOEM メーカに最適なソリューションです。OEM SWICエディションには、エミュレータとハードウェアターゲット用のステートメントカバレッジ、メモリおよびパフォーマンス解析の各機能と、 CodeTESターゲットエージェントアプリケーションのすべてのソースコードが含まれています。これにより、Symbian OS DevKitやCustKitを使用する際に自由にカスタマイズを行うことができます。さらに、OEM SWICエディションは、ホストマシンとの接続に幅広い範囲のコミュニケーションメディアを提供します。SWIC2Fileは、ホストマシンと接続せずにデバイス上のデータのキャプチャが可能で、実環境でのアプリケーションのテストと解析に大きなメリットを提供します。

* CodeTEST for Symbian OS OEMハードウェアインサーキット(HWIC)エディション
OEM HWICエディションは、リファレンスボードやプロトタイプ機にシステムバスで接続しコード解析が可能です。システムへの侵入を最小限におさえ、最大限に精密で正確な解析を実現します。OEM HWICエディションには、リアルタイムで継続してソフトウェアの解析が可能なハードウェアプローブが含まれ、実行システムへの侵入は最小限に抑え、リアルタイムでの正確な測定が可能な環境を提供いたします。
posted by シンビアン at 18:25| Comment(0) | TrackBack(0) | NOKIA SMARTPHONE HACKS | このブログの読者になる | 更新情報をチェックする

Symbian OS 【カテゴリー】モバイル・携帯電話

【よみ】しんびあんおーえす
英Symbian社が開発する携帯電話向けの高機能OS。元々は英Psion社のPDA向けOSであるEPOC OSをベースにしたもので、マルチタスク、マルチスレッドに対応しスマートフォンと呼ばれるPDA並に多機能な携帯電話で採用されている。現在では NokiaがSymbian社の筆頭株主で、他の株主も複数の携帯電話メーカーが占めている。
Nokia が開発したSymbian OS用のユーザーインターフェイス「Series 60」は、APIとSDKを公開しており、アプリケーションの開発が事実上自由に行える。このため、海外ではSeries 60/Symbian OS向けのフリーソフトウェアが数多く流通している。
posted by シンビアン at 18:00| Comment(0) | TrackBack(0) | NOKIA SMARTPHONE HACKS | このブログの読者になる | 更新情報をチェックする

ノルウェーOpera,Symbian OS向けブラウザの新版をリリース

ノルウェーのOpera Softwareは現地時間7月13日に,モバイル・デバイス向けOS「Symbian OS」に対応したブラウザの新版「Opera 8 for Symbian S60」を発表した。パソコン向けブラウザ「Opera 8」(Windows,Linux,Mac OS版)と同様のブラウザ・エンジンをベースにする。

 Opera 8 for Symbian S60では,JavaScriptとDocument Object Model(DOM)へのサポートを強化しており,モバイル向けアプリケーション開発の強力な技術プラットフォームを提供する。「エンド・ユーザーはより高速で優れた機能を利用でき,モバイル事業者は高度なモバイル・サービスを展開できる」(同社)

 また,Webサイトを携帯電話のスクリーンに合わせてレンダリングする同社独自の技術「Small-Screen Rendering(SSR)」を大幅に向上した。Webサイトのカラーやレイアウトをよりオリジナルに近い状態で表示する「Quality」モードと,基本的な情報のWebページを25%高速で表示する「Speed」モードを備える。

 Opera 8 for Symbian S60は,同社Webサイトから入手可能。「Opera 6.20」のユーザーは無償でアップグレードできる。
posted by シンビアン at 17:49| Comment(0) | TrackBack(0) | NOKIA SMARTPHONE HACKS | このブログの読者になる | 更新情報をチェックする

ノキア、Vodafone 702NKII(Nokia 6680)にSymbian OSを採用

シンビアンは12圧19日、ボーダフォンが2005年12月17日に発売したノキア・ジャパン製の 「Vodafone 702NKII(Nokia 6680)」に、シンビアンのオープン標準オペレーティングシステムである「Symbian OS」が採用されたことを発表した。

 Vodafone 702NKII(Nokia 6680)の発売により、現在日本で発売されているSymbian OS搭載携帯電話は合計21機種となっている。シンビアンでは、Symbian OSの搭載により、高機能かつ高品質な3G携帯電話をより短期間で市場に投入することが可能になるとしている。

 2005年第3四半期には、世界で2300万台以上のSymbian OS搭載携帯電話が200以上のネットワーク事業者向けに出荷され、累計出荷台数は4800万台に上っている。
posted by シンビアン at 17:37| Comment(2) | TrackBack(0) | NOKIA SMARTPHONE HACKS | このブログの読者になる | 更新情報をチェックする

2006年02月03日

Symbian OS/C++プログラマのためのNokia Series 60アプリケーション開発ガイド

第1章 手始めに
Series 60 C++ SDK(Software Development Kits)
開発プロセスの概要
Series 60エミュレータ
エミュレータ用にビルドする
Microsoft Visual C++ IDEを使ってビルドする方法
Borland C++IDE Builder 6を使ってビルドする方法
Borland C++BuilderXを使ってビルドする方法
CodeWarrior IDEを使ってビルドする方法
エミュレータの実行
Series 60プラットフォームの実機用にビルドする
実機上に配置する
まとめ

第2章 開発リファレンス
SDKのバージョンと、その選択
Series 60 Version 1.xのSDK
Series 60 Version 2.xのSDK
HelloWorld GUIアプリケーション
HelloWorldのbid.inf
HelloWorld.mmp
ビルドと実行
HelloWorld GUIの実行部とランタイムファイル
HelloWorldのプロジェクトファイルとフォルダ
HelloWorld GUIのソースファイル
リソースコンパイラ
アプリケーションとリソースのローカライズ
AIFファイル
コンソールアプリケーション
Hello Worldコンソールアプリケーション
コンソールアプリケーションのビルドと実行
HelloWorldCon.mmp
HelloWorldConのエミュレータ実行ファイル
HelloWorldConのターゲット実行ファイル
Symbianインストレーションシステム
SISファイル用ビルドツール
.pkgファイルのフォーマット
SISファイルをビルドする
その他の開発ツール
マルチビッドマップとBmconv(ビットマップコンバータ)
Series 60用アプリケーションウィザード
その他のSDKツール
さらに、その他のツールとユーティリティ
Series 60のSDKとIDEをインストールする際のヒント
Microsoft Visual Studio .NET
エミュレータの設定
エミュレータにおけるアプリケーションのパニック
アプリケーションの配置とビルドに関する上級ガイドライン
プラットフォームUID
デバイス識別UID
リソースファイルのバージョンと圧縮方法
ARMターゲットのためののビルド
まとめ

第3章 Symbian OSの基礎
命名規約
Tクラス
Sクラス
Cクラス
Rクラス
Mクラス
名前空間
基本型
例外処理とリソース管理
例外、リーブ、パニック、トラップ
リーブの作法とクリーンアップスタック
2フェーズコンストラクション
Symbian OSにおけるコンストラクションの方法
クリーンアップスタックの応用
ディスクリプタ
階層構造
書き換え不可能API(Nonmodifiable API)
書き換え可能API(Modifiable API)
リテラル
ディスクリプタを使う
引数や戻り値の型としてのディスクリプタ
パッケージディスクリプタ
コレクションクラス
RArray型とRPointerArray型
CArray型
アクティブオブジェクトで非同期サービスを使う
アクティブスケジューラ
アクティブオブジェクト
アクティブオブジェクトを実装する
実装例
アクティブオブジェクトの落とし穴
ファイル、ストリーム、ストア
ファイル
RFs API
RFile API
ストリーム
ストア
クライアント/サーバアーキテクチャ
サーバセッション
サーバセッションとプロセス間通信
サーバ概説
サブセッション
まとめ

第4章 アプリケーション設計
アプリケーションフレームワーク
アプリケーションアーキテクチャ
中心的なアプリケーションクラス
アプリケーションの初期化
重要なAppUiメソッド
アプリケーションUIを設計する
コントロールを主体とするSymbian OSの伝統的なアーキテクチャ
ダイアログを主体とするアーキテクチャ
Avkonのビュー切替アーキテクチャ
適切なアプリケーションアーキテクチャを選ぶ
ファイル処理
UIとエンジンを分離する
ECom
EComの概要
EComインターフェース
ECom DDL
国際化
開発者のための一般的なガイドライン
OSによるローカライズのサポート
正しいアプリケーションのふるまい
疑い深く批判的なアプローチを開発に採用すること
Windowsサーバが生成するイベントを処理すること
いつでも優雅に終了すること
データを保存する前にディスク空間をチェックすること
その他のヒントとチップ
まとめ

第5章 アプリケーションUIコンポネント
コントロール
コントロールとウィンドウ
単純コントロールと複合コントロール
ウィンドウ所有権
単純コントロールの作成
複合コントロールの作成
コントロール間の関係を確立する
スキン
必ずスキンを提供するコントロール
オプションでスキンを提供するコントロール
スキンに注目するコントロール
スキンを意識しないコントロール
スキンを意識するコントロールを定義する
イベント処理
キーイベント
再描画イベント
オブザーバ
リソースファイル
リソースファイルの構文
リソースファイルの構造
メニュー
サブメニュー
メニューの基本
動的メニュー
コンテクストメニュー
ペイン
ステータスペイン
タイトルペイン
コンテクストペイン
ナビゲーションペイン
メインペイン
ソフトキーペイン
まとめ

第6章 ダイアログ
ダイアログの一般的な特徴
標準ダイアログ
単純なダイアログの作成
マルチページダイアログ
ダイアログのためのメニューを定義する
ダイアログ内のカスタムコントロール
フォーム
フォームの行
フォームのソフトキー
アプリケーションの中でフォームを作成する
ノート
ラップノート
カスタムノート
ウェイトノート
プログレスノート
グローバルノート
クエリー
データクエリー
リストクエリー
グローバルクエリーを使う
リストダイアログ
マーク付け可能リストダイアログ
まとめ

第7章 リスト
リストの基本
垂直リスト
選択リスト
メニューリスト
マーク付け可能リスト
複数選択リスト
リストのアイテムとフィールド
リストからアイテムを探す
垂直リストを使う
基本的なリスト
動的リスト
マーク付け可能リスト
ポップアップメニューリスト
グリッド
月別カレンダーグリッド
ピンボードグリッド
GMSグリッド
グリッドを使う
グリッドの基本
マーク付け可能グリッド
設定リスト
設定リストを使う
設定リストの基本
まとめ

第8章 エディタ
テキストエディタ
寸法と入力容量
キーパッド入力のフィルタリング
追加文字へのマップを提供する
プロパティ
プレインテキストエディタの構成
リッチテキストエディタの構成
スタイルを使う
数値エディタ
数値エディタの構成
シークレットエディタ
シークレットエディタを使う
マルチフィールド数値エディタ(MFNE)
IPアドレスエディタ
番号エディタ
範囲エディタ
時刻エディタ
日付エディタ
日付時刻エディタ
時間エディタ
時差エディタ
MFNEを使う
まとめ

第9章 通信の基礎
シリアル通信
シリアル通信を使う
ソケット
Series 60のソケット
クライアントとサーバ
コネクションレスソケットとコネクティッドソケット
コネクティッドソケット
セキュアソケット
TCP/IP
IPv6
Series 60のためのTCP/IPプログラミング
CommDB
マルチホーミング
赤外線通信
IrDAスタック
Series 60機器上での赤外線通信プログラミング
Bluetooth
Bluetoothの概略
サンプルBluetoothアプリケーション
サービスの宣伝
Bluetoothのセキュリティ
デバイスとサービスの発見
Bluetoothソケット通信
まとめ

第10章 より高度な通信技術
HTTP
サンプルアプリケーション
WAP
WAPアーキテクチャ
Series 60における実装
メッセージング
メッセージングの主要概念
主なメッセージングクラスとデータ型
メッセージングAPI
クライアントMTM APIを使う
Send-As APIを使う
CSendAppUiクラスを使う
着信メッセージの監視
テレフォニー
Etel APIを使う
前処理
発呼
着呼
リダイアル処理
まとめ

第11章 マルチメディア:グラフィックスとオーディオ
Series 60クラシックスアーキテクチャの概要
ウィンドウサーバ
フォントとビットマップのサーバ(FBS)
ウィンドウサーバとFBS
マルチメディアサーバ
基本描画
スクリーンの座標と幾何
グラフィックスデバイスとグラフィックスコンテクト
色と表示モード
ペンとブラシ
ウィンドウとCCoeControlの関係
フォントとテキスト
テキストとフォントの寸法
フォントの主なクラスと関数
主なフォントクラスを使い、利用可能なフォントをすべて列挙する
テキストの効果
図形
矩形
楕円形
円弧と扇型
多角形
ビットマップ
アプリケーションで使うためにビットマップを生成する
ビットマップをロードして描画する
ビットマップのマスク
ビットマップ関数
アニメーション
アニメーションアーキテクチャ
オフスクリーンビットマップとダブルバッファリング
「クライアント側」アプローチによるアニメーション
ダイレクトスクリーンアクセス(DSA)
アーキテクチャの概要
ダイレクトスクリーンアクセスのための主要なクラス
実装時に考慮すべきこと
画像の操作
画像の変換
画像の回転
画像のスケーリング
オーディオ
録音
トーン
オーディオデータ
ストリーミング
まとめ

第12章 アプリケーションのビューとエンジンや主なシステムのAPIの使い方
標準アプリケーションビューを使う
電話帳ビューの切替
カレンダービューの切替
カメラビューの切替
フォトアルバムビューの切替
プロファイルビューの切替
メッセージングビューの切替
切替できないアプリケーション
アプリケーションエンジン
ログエンジン
カメラAPI
電話帳エンジン
コンパクトビジネスカードとvCard
カレンダーエンジンのアクセス
フォトアルバムエンジン
システム機能をアクセスする
ハードウェア抽象レイヤ
システムエージェント
バイブレーションAPIのサポート
まとめ

第13章 テストとデバッグ
品質保証
コーディング規格
防衛的プログラミング
テスト
テストの戦略
テストのためのツールとテクニック
実機上とエミュレータ上のテストの違い
テストハーネス
デバッグ
エミュレータでアプリケーションをデバッグする
実機でアプリケーションをデバッグする
まとめ

付録 エミュレータのショートカット

用語集
リファレンス

Symbian OS/C++プログラマのためのNokia Series 60アプリケーション開発ガイド

Symbian OSは、音声通話以外にさまざまなデータ処理機能を持つハイエンド携帯電話(=スマートフォン)用の標準OSとして幅広く採用されていますが、そこで使用されるアプリケーションは、一般のPCソフトのようにインストールして利用できるOS固有のアプリケーション(ネイティブアプリケーション)の時代を迎えて、大きく変化しようとしています。
本書のテーマであるSymbian OS+ミドルウェア「Nokia Series 60」の環境は、その代表的な開発プラットフォームです。ヨーロッパをはじめとして海外ではすでにこの環境を実装したスマートフォンが市場を牽引していますが、日本でもノキア・ジャパンより端末の発売が発表されるなど、業界や開発者の注目を集めています。
基礎から設計、各種APIの活用、マルチメディアデータ処理、テスト・デバッグまでSymbian OS + Nokia Series 60環境での開発ノウハウのすべてを網羅した本書は、携帯電話用アプリ開発に関わるすべてのエンジニア必読の1冊です。

Symbian OS

Symbian OSではフレームワークと呼ばれるソフトウェアが走っていて、我々が作るアプリケーションはこのフレームワークにDLLとしてロードされます。つまり、アプリケーション開発ではそのDLLを開発していくことになります。

アプリケーションDLLではNewApplication()とE32Dll()がEXPORT_Cされている必要があります。E32DllはKErrNoneをリターンするだけのようです。NewApplication()ではCApaApplicationクラスのインスタンスを生成して返します。それがアプリケーションの実体です。
posted by シンビアン at 16:47| Comment(0) | TrackBack(0) | NOKIA SMARTPHONE HACKS | このブログの読者になる | 更新情報をチェックする

4種類の新しいキャスト

キャストは使わずに済ませられるならそれに越したとはないのですが、どうしても使わざるを得ないシチュエーションは少なからず存在します。

ならばせめて少しでも安全にキャストするために新たに定められたキャスト構文が、以下に挙げる static_cast / reinterpret_cast / const_cast / dynamic_cast です。

* static_cast

static_cast(expr)

static_castはexprの型からtypeへの暗黙の型変換、あるいはtypeからexprへの暗黙の型変換が存在する場合にだけキャストします。キャスト不可能であればコンパイルエラーとなります。

// int から long へ
int ival;
long lval = static_cast(ival);

reinterpret_cast

reinterpret_cast(expr)

reinterpret_castはtype(expr)が許されるなら、exprをtypeに単にキャストします。

// long から int* へ
long lval;
int* iptr = reinterpret_cast(lval);

reinterpret_castは単なる型変更であり、たとえ派生関係があったとしてもポインタのアドレス自体はキャスト前と変わりません。
その意味でreinterpret_castは非常に危険なキャストといえるでしょう。

const_cast

const_cast(expr)

const_castはconstおよびvolatile修飾子を無効にするだけのキャストを行ないます。そのほかのときはコンパイルエラーとします。

// const int* から int* へ
const int* ciptr;
int* iptr = const_cast(ciptr);

dynamic_cast

dynamic_cast(expr)

dynamic_castは基底クラスへのポインタ(or 参照)から派生クラスへのポインタ(or 参照)への型保証キャストを行ないます。
上記3種のキャストはコンパイル時にキャストしますが、dynamic_castは実行時に型の検査が行なわれ、変換不可能であれば0を返します。



class Base { ... };
class Derived : public Base { ... };

Base base;
Derived derived;

Derived* pd1 = dynamic_cast(&base); // 失敗 pd1 == 0
Derived* pd2 = dynamic_cast(&derived);


参照のキャストに失敗すると、std::bad_cast例外がthrowされます。

try {
Derived& rd1 = dynamic_cast(base);
} catch ( const std::bad_cast& e ) {
std::cout << e.what() << std::endl;
};

dynamic_castにより、従来のキャストでは不可能であった クロス・キャスト、そして抽象基底クラスからのダウン・キャストが可能になりました。

*
o クロス・キャスト

/*
* Shape と Drawable は派生関係にない
*/
class Shape {
...
};

class Drawable {
public:
virtual void draw() =0;
};

/*
* Circle は Drawable にキャスト可能
*/
class Circle : public Shape, public Drawable {
public:
virtual void draw();
};

Shape* shape = new Circle;
/* 従来のキャスト (Drawable*)shape では、
* 場合によっては暴走する */
Drawable* drawable = dynamic_cast(shape);
if ( drawable )
drawable->draw();


o 抽象基底クラスからのダウン・キャスト

class Machine {
...
};

class TV : virtual public Machine {
public:
void tune(int channel);
};

class VTR : virtual public Machine {
public:
void record();
};

class TeleVideo : public TV, public VTR {
...
};

Machine* machine = new TeleVideo;
/* 従来のキャスト (TeleVideo*)machine はコンパイルエラー */
TeleVideo* televideo = dynamic_cast(machine);
if ( televideo ) {
televideo->tune(8);
televideo->record();
}



※注意
dynamic_castが適用できるのはポリモルフィック・クラス、 すなわち少なくとも一つのメンバ関数が仮想関数でなくてはなりません。

struct non_polymorpic { ... }; // 仮想関数が存在しない
struct something : non_polumorphic { ... };
non_polymorphic* p;
something* q = dynamic_cast(p); // error!

新しいキャストは従来のキャストよりはるかに安全です。

また、grepなどで"_cast"をキーにすればキャストした個所を簡単に検索できるという副次的な効果もあります。
posted by シンビアン at 16:44| Comment(0) | TrackBack(0) | Symbian OS C++ 実践開発技法 | このブログの読者になる | 更新情報をチェックする

従来のキャストの問題点

異なる型への変換において、C/C++ではキャストが用いられます。

// intからlongへのキャスト
int ival;
int lval = (long)ival;

ご存知のとおり、キャストは非常に危険です。 本来ならば型の不一致によるコンパイルエラーをねじ伏せるのですから。

キャストの使われ方(意味)は、大きく3種(型変換/型変更/const外し)に分類されます。

1. 型変換

// int から double へ
int ival;
double dval = (double)ival;

2. 型変更

// long から int* へ
long lval;
int* iptr = (int*)lval;

3. const外し

// const int* から int* へ
const int* ciptr;
int* iptr = (int*)ciptr;

上記のどの目的でキャストしても、構文としてはどれも同じ

(型)式

です。つまりコードからは"何が目的でキャストしたのかはっきりしない"のですね。
posted by シンビアン at 16:38| Comment(0) | TrackBack(0) | Symbian OS C++ 実践開発技法 | このブログの読者になる | 更新情報をチェックする

2006年02月01日

Symbian OS C++ 実践開発技法

第1章 Symbian OSにおけるクラス名の規約

1.1 基本型
1.2 Tクラス
1.3 Cクラス
1.4 Rクラス
1.5 Mクラス
1.6 静的クラス
1.7 ご注意ください
1.8 まとめ

第2章 リーブ:Symbian OSの例外

2.1 リーブする関数
2.2 new(ELeave)を使うヒープ割り当て
2.3 コンストラクタとデストラクタ
2.4 リーブする関数の扱い方
2.5 TRAPとTRAPDを使ってリーブをトラップする
2.6 LeaveScan
2.7 まとめ

第3章 クリーンアップスタック

3.1 クリーンアップスタックを使う
3.2 クリーンアップスタックの仕組み
3.3 非CBaseクラスでクリーンアップスタックを使う
3.4 カスタマイズしたクリーンアップのためにTCleanupItemを使う
3.5 可搬性
3.6 キャストの使用に関する注意事項
3.7 まとめ

第4章 2フェーズコンストラクション

4.1 まとめ

第5章 ディスクリプタ:Symbian OSの文字列

5.1 書き換え不可能なディスクリプタ
5.2 書き換え可能なディスクリプタ
5.3 ポインタディスクリプタ
5.4 スタック上のバッファディスクリプタ
5.5 ヒープ上のバッファディスクリプタ
5.6 リテラルディスクリプタ
5.7 まとめ

第6章 ディスクリプタの正しい使い方

6.1 パラメータや戻り値の型としてのディスクリプタ
6.2 ディスクリプタの共通メソッド
6.3 ヒープディスクリプタHBufCの使い方
6.4 ディスクリプタの外部化と内部化
6.5 TFileNameの使いすぎ
6.6 ディスクリプタの操作に便利なクラス
6.7 まとめ

第7章 動的な配列をバッファ

7.1 CArrayXクラス
7.2 RArrayとRPointerArray
7.3 CArrayXではなくRArrayを使う理由
7.4 動的ディスクリプタ配列
7.5 固定長配列
7.6 動的バッファ
7.7 まとめ

第8章 アクティブオブジェクトによるイベント駆動のマルチタスク

8.1 マルチタスクの基礎
8.2 イベント駆動のマルチタスク
8.3 アクティブオブジェクトの扱い方
8.4 サンプルコード
8.5 アクティブスケジューラを持たないスレッド
8.6 アプリケーションコードとアクティブオブジェクト
8.7 まとめ

第9章 アクティブオブジェクトの実際

9.1 アクティブオブジェクトの基本
9.2 アクティブオブジェクトの役割分担
9.3 非同期サービスプロバイダの役割分担
9.4 アクティブスケジューラの役割分担
9.5 アクティブスケジューラの起動
9.6 アクティブスケジューラのネスト
9.7 アクティブスケジューラの拡張
9.8 キャンセル
9.9 要求の完了
9.10 ステートマシン
9.11 長期タスク
9.12 CIdleクラス
9.13 CPeriodicクラス
9.14 よくある間違い
9.15 まとめ

第10章 Symbian OSのスレッドとプロセス

10.1 RThreadクラス
10.2 スレッドの優先順位
10.3 実行中のスレッドを停止させる
10.4 スレッド間のデータ転送
10.5 例外処理
10.6 プロセス
10.7 まとめ

第11章 クライアント/サーバフレームワークの理論

11.1 なぜクライアント/サーバーフレームワークを持たせるのか?
11.2 クライアントとサーバは、どのように連携するのか?
11.3 クライアントとサーバは、どのように通信するのか?
11.4 クライアント/サーバフレームワークで使われるクラスは?
11.5 同期要求と非同期要求の違いは?
11.6 サーバに起動方法は?
11.7 1つのクライアントは何個の接続を持てるのか?
11.8 クライアントが接続を断つとどうなるのか?
11.9 クライアントが死ぬとどうなるのか?
11.10 サーバが死ぬとどうなるのか?
11.11 クライアント/サーバ通信はスレッドをどう使うか?
11.12 サーバがわにアクティブオブジェクトがある意味は?
11.13 ローカル(同一プロセス)サーバの利点は?
11.14 クライアント/サーバ通信のオーバーヘッドには何があるのか?
11.15 クライアントがサーバに出せる未解決要求は何個までか?
11.16 サーバ機能は拡張できるのか?
11.17 サンプルコード
11.18 まとめ

第12章 クライアント/サーバフレームワークの実践

12.1 クライアント/サーバの要求コード
12.2 クライアントのボイラープレートコード
12.3 サーバを起動し、クライアントからそれに接続する
12.4 サーバのスタートアップコード
12.5 サーバクラス
12.6 サーバのシャットダウン
12.7 サーバをアクセスする
12.8 まとめ

第13章 各種バイナリファイル

13.1 Symbian OSのEXE
13.2 Symbian OSのDLL
13.3 書き換え可能な静的データ
13.4 TLS(スレッドローカル記憶域)
13.5 DLLローダ
13.6 UID
13.7 targettype指定子
13.8 まとめ

第14章 ECOM

14.1 ECOMアーキテクチャ
14.2 ECOMインターフェイスの特徴
14.3 ファクトリメソッド
14.4 ECOMインターフェイスを実装する
14.5 リソースファイル
14.6 クライアントコードのサンプル
14.7 まとめ

第15章 パニック

15.1 「ジャストインタイム」デバッグ
15.2 正しいパニックの形式
15.3 Symbian OSにおけるパニックの分類
15.4 別スレッドにパニックを発生させる
15.5 フォールトとリーブとパニック
15.6 まとめ

第16章 アサートを使ってバグを検出する

16.1 __ASSERT_DEBUG
16.2 __ASSERT_ALWAYS
16.3 まとめ

第17章 デバッグマクロとテストクラス

17.1 ヒープチェック用マクロ
17.2 オブジェクト不変マクロ
17.3 RTestを使ったコンソールテスト
17.4 まとめ

第18章 互換性

18.1 前方互換性と後方互換性
18.2 ソース互換性
18.3 バイナリ互換性
18.4 互換性を守る方法
18.5 バイナリ互換性を守りながら何を変更できるのか?
18.6 最良の策は、将来の変更に備えること
18.7 互換性とSymbian OSのクラス型
18.8 まとめ

第19章 薄いテンプレート

19.1 まとめ

第20章 包括的で分かりやすいAPIを公開しよう

20.1 クラスのレイアウト
20.2 IMPORT_CとEXPORT_C
20.3 パラメータと戻り値
20.4 メンバデータと「関数による抽象化」
20.5 クラス名、メソッド名、パラメータ名の選択
20.6 コンパイラが生成する関数
20.7 まとめ

第21章 正しいコーディングスタイル

21.1 プログラムコードのサイズを削減する
21.2 ヒープメモリを注意して使う
21.3 スタックメモリを注意して使う
21.4 コードの効率を最大化するために共通部分式を削除する
21.5 最適化は最後の手段
21.6 まとめ

付録

コードチェックリスト
クラスの宣言
ヘッダファイル
コメント
コンストラクタ
デストラクタ
割り当てと削除
クリーンアップスタックとリーブ安全性
ループとプログラムのフロー制御
プログラムのロジック
ディスクリプタ
コンテナ

用語集

参考文献とオンラインリソース
Symbian OSに関する書籍
C++に関する書籍
インターネット上のSymbian OSリソース
posted by シンビアン at 21:55| Comment(0) | TrackBack(0) | Symbian OS C++ 実践開発技法 | このブログの読者になる | 更新情報をチェックする

広告


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

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

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


×

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