Symbian OS C++実践開発技法(株式会社管理工学研究所 吉川 邦夫 吉川 邦夫 Jo Stichbury)|翔泳社の本
  1. ホーム >
  2. 書籍 >
  3. Symbian OS C++実践開発技法

Symbian OS C++実践開発技法

監修
翻訳
原著

形式:
書籍
発売日:
ISBN:
9784798109046
定価:
7,480(本体6,800円+税10%)
仕様:
B5変・448ページ

最前線の開発現場における熟練の知識と技法を凝縮した
まさしく<Symbian OS版「Effective C++」>

Symbian OSで優れたC++コードを開発するためには、その根底にある概念と、このオペレーティングシステムの性質を、はっきりと理解しなければならない、本書では、Symbian OSの主な特徴を説明し、その知識を最も効率よく使う方法を示す。また、C++の優れたスタイルのうち、とりわけSymbian OSについて当てはまる側面を、いくつか詳しく説明する。これらを理解し実践すれば、Symbian OSで高品質なC++コードを書くのに必要な専門知識が身につくだろう。
本書は一連の章に分割されている、各章は独立した独立した内容を持ち、Symbian OSの重要な特徴を、それぞれ個別に論じている。それぞれの章では、基本的な説明の他に、実践すべき推奨事項や、避けるべき一般的な誤りを指摘する。これらの章は、どれも充分に簡潔なので、必要な洞察を得ることができるだろう。ただし、読み終えたとき情報不足となるほど短くはない。各章は、重要な事実を省略することなく、単純明解な説明を与えている。
これはC++の書き方を教える本ではない。読者は、この言語の最も重要な概念いついて、すでにおなじみであると想定している。また本書は、ある特定のアプリケーションを開発するという視点からSymbian OSを説明するガイドブックでもない。その代わりに私は、Symbian OSの中心的な概念と主な特徴、そしてC++の優れたテクニックを伝授するように努める。私に本書を書くためのインスピレーションを与えてくれた、あの本(*1)の著者、Scott Meyersの言葉を借りると、「この本には、何をするべきか(そして、なぜそうするべきなのか)、何をしてはいけないのか(そして、それはなぜか)についてのアドバイスが書いてある」のだ。
*1 Scott Meyers著、吉川邦夫役『Effective C++ 改訂2版』(1998年、アスキー)「この本について」より抜粋

第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リソース

本書は付属データの提供はございません。

お問い合わせ

内容についてのお問い合わせは、正誤表、追加情報をご確認後に、お送りいただくようお願いいたします。

正誤表、追加情報に掲載されていない書籍内容へのお問い合わせや
その他書籍に関するお問い合わせは、書籍のお問い合わせフォームからお送りください。

利用許諾に関するお問い合わせ

本書の書影(表紙画像)をご利用になりたい場合は書影許諾申請フォームから申請をお願いいたします。
書影(表紙画像)以外のご利用については、こちらからお問い合わせください。

追加情報はありません。

ご購入いただいた書籍の種類を選択してください。

書籍の刷数を選択してください。

刷数は奥付(書籍の最終ページ)に記載されています。

現在表示されている正誤表の対象書籍

書籍の種類:

書籍の刷数:

本書に誤りまたは不十分な記述がありました。下記のとおり訂正し、お詫び申し上げます。

対象の書籍は正誤表がありません。

最終更新日:2010年09月01日
発生刷 ページ数 書籍改訂刷 電子書籍訂正 内容 登録日
1刷 053
リスト内(右引用箇所の下から2行目)
void CSpreadSheet::UpdateSpreadSheetL(const CData& aData) { // TCleanupItemを初期化する TCleanupItem cleanup(CSpreadSheet::RollBack, this); CleanupStack::PushL(cleanup); // クリーンアップスタックに置く RecalculateL(aData); UpdateL(); CleanupStack::Pop(&cleanup); // TCleanupItemは、もう必要ない }
void CSpreadSheet::UpdateSpreadSheetL(const CData& aData) { // TCleanupItemを初期化する TCleanupItem cleanup(CSpreadSheet::RollBack, this); CleanupStack::PushL(cleanup); // クリーンアップスタックに置く RecalculateL(aData); UpdateL(); CleanupStack::Pop(this); // TCleanupItemは、もう必要ない }
2010.09.01