Write Portable Code プレミアムブックス版 複数プラットフォームに移植可能なソフトウェアの開発技法

  • 著作者名:Brian Hook
  • 翻訳者名:株式会社トップスタジオ
  • 監訳者名:鵜飼文敏田郷明
    • 書籍:6,264円
    • 電子版:4,385円
  • B5変型判:368ページ
  • ISBN:978-4-8399-5124-5
  • 発売日:2015年04月02日
  • シリーズ名:プレミアムブックス
  • 備考:オンラインストア限定販売
    中~上級/Win&Mac
  • mixiチェック
  • このエントリーをはてなブックマークに追加

内容紹介

クロスプラットフォームソフトウェアを書くテクニックとは

本書はポータビリティ(移植性)にフォーカスした書籍です。本書における「ポータビリティ」とは、ソースコード、特にCのソースコードをさまざまなOS、アーキテクチャで移植可能にしていくかということを指します。しかし、本書で取り上げていることは、C/C++だけに当てはまるものではなく、どのような開発環境でも通用するものです。
本書では、ポータビリティを考える上で見落しがちな罠(必ずあると思っている関数は特定のアーキテクチャでは存在しない、テキストファイルですら互換性の問題を孕んでいるなど)、数値計算やデータ処理における各OS・アーキテクチャでの特徴的な事項といった多様な事柄を取り上げています。

特に前半では、実例のCコード、筆者の作ったSALオーディオライブラリでの経験談、ポータビリティを実現するライブラリであるPOSH(Portable Open Source Harness)の利用例を豊富に掲載し、どういったところに留意すべきかをわかりやすく説明しています。
いかに移植性の高いソフトウェアを書くか、つまり、いかに幅広い環境で動くようにするかについて留意すべきことはたくさんありますが、そのための簡単な法則というものはなく、移植性を高くするための多くの知識は散在しており、移植性の高いソフトウェアを開発するにはそれなりの経験がなければできませんでした。そのような知識・経験に基づく知恵を一冊の本にまとめたのが本書です。本書を読めば、移植性の高いコードをどのように書けばよいのかが理解できるようになるでしょう。

名著『Write Portable Code』(2006年6月 日本語版、弊社刊行)、待望の復刊です。

続きを読む

商品を選択する

フォーマット 価格 備考
書籍(受注生産) 6,264 受注生産のため、決済完了から約10日後の発送となります。
PDF 4,385 ※当商品は発送を伴いません。ご購入後、「マイページ」からPDFをダウンロードしてください。

電子書籍フォーマットについて

  

備考

Brian Hook
主にゲームおよびエンターテインメント業界で活躍を続けている職業ソフトウェア開発者。id software、3Dfx Interactive、Pyrogonをはじめとする企業でクロスプラットフォームの開発に携わってきた経験から、クロスプラットフォームのソフトウェア開発プロセスに対する独自の考えを展開しています。

●監訳者プロフィール
鵜飼 文敏(うかい ふみとし)
Debian Projectオフィシャルメンバー、元Debian JP Projectリーダー、日本Linux協会理事、The Free Software Initiative of Japan副理事長、平成15年度16年度「未踏ソフトウェア創造事業」プロジェクトマネージャー。大学院在籍中に386BSDやLinuxをPC98アーキテクチャで動かして以来、フリーなオペレーティングシステムの世界にはまる。Debian JP Project創設時のメンバーで以後Debianを中心に活動。debian.or.jpおよ びlinux.or.jpなどの運用管理を行っている。

田郷明(たごう あきら)
日本GNOMEユーザー会副会長、Debian Projectオフィシャルメンバー、Fedora Core Internationalization Projectメンバー。主に国際化方面で活動。

目次

Introduction 移植可能なソフトウェアの開発技法
1. 移植性によって得られるメリット
2. プラットフォームの要素
3. 「前提条件」に関する問題
4. コーディングの標準
5. 移植可能なプログラミングのための枠組み

第1章 「移植性」という概念
1.1 移植性とは「精神状態」であり、「状況」ではない
1.2 移植性を意識した正しい習慣を身に付ける
1.3 正しい習慣は、バグや標準に関する具体的な知識に勝る
移植は早く、かつ頻繁に
異機種環境で開発を進めること
多様なコンパイラを使うこと
複数のプラットフォームでテストすること
複数のライブラリをサポートすること
1.4 新しいプロジェクトの移植性を計画する
移植性の実現に関する手間を省くこと
合理的なレベルの移植性を選ぶこと
プロジェクトを特定ベンダーの独自製品に結び付けないこと
1.5 古いコードの移植
移植されたことが一度もないコードを「移植可能」とは呼ばないこと
変更は必要最小限にとどめること
作業計画を立てること
リビジョン管理で、すべてを文書化すること

第2章 ANSI CとC++
2.1 ほかの言語を使わない理由
CとC++では低レベルアクセスが可能
CおよびC++のコードからネイティブコードへのコンパイル
2.2 CとC++の「方言」
2.3 C /C++と移植性

第3章 移植性を実現する各種のテクニック
3.1 新しい機能を避ける
3.2 「多様な機能が使えるかどうか」という問題への対処
3.3 安全なシリアライズとデシリアライズ
3.4 テストの統合
3.5 コンパイルオプションの使用
コンパイル時間のアサーション
厳密なコンパイル
3.6 プラットフォーム依存のファイルと移植可能な
3.7 単刀直入なコードの記述
3.8 一意名の使用
3.9 抽象化の実装
ディスパッチによる抽象化
抽象データ型(typedef)
不測の事態に備える
通信システム依存の情報
3.10 低レベルプログラミング
可能ならば自己変更コード/動的生成コードの使用を避けること
高レベルのフォールバックの保持

第4章 編集とソース管理
4.1 テキストファイルの行末の違い
4.2 移植可能なファイル名
4.3 ソース管理
ソース管理システム
プロキシによるチェックアウト
4.4 ビルドツール
プラットフォーム固有のビルドツール
移植可能なビルドツール
4.5 エディタ
4.6 まとめ

第5章 プロセッサの違い
5.1 アラインメント(位置合わせ)
5.2 バイトオーダーとエンディアン
ビッグエンディアンとリトルエンディアンの値
標準化された格納フォーマット
固定されたネットワークバイトオーダー
5.3 符号付き整数の表現
5.4 ネイティブタイプのサイズ
5.5 アドレス空間
5.6 まとめ

第6章 浮動小数点
6.1 浮動小数点の歴史
6.2 標準CとC++における浮動小数点のサポート
6.3 浮動小数点に関する問題
一貫性のない評価
浮動小数点とネットワークアプリケーション
変換
6.4 固定小数点の整数演算
6.5 浮動小数点値から整数ビットを抽出する
6.6 実装クエリ
6.7 例外的な結果
6.8 特別な値
例外
浮動小数点環境へのアクセス
6.9 格納フォーマット
6.10まとめ

第7章 プリプロセッサ
7.1 定義済みシンボル
7.2 ヘッダファイル
ヘッダファイルパスの仕様
7.3 ヘッダのファイル名
7.4 設定マクロ
7.5 条件付きコンパイル
7.6 プラグマ
7.7 まとめ

第8章 コンパイラ
8.1 構造体のサイズ、パッキング、アラインメント
8.2 メモリ管理の特異性
解放(free)の効果
アラインメントされたメモリ割り当て
8.3 スタック
スタックサイズ
alloca()に関する問題
8.4 printfルーチン
8.5 型のサイズと動作
64ビット整数型
基本型のサイズ
signed char型とunsigned char型
enum型をint型として使う
数値定数
符号付きと符号なしの右シフト
8.6 呼び出し規則
名前の修飾
関数ポインタとコールバック
移植性
8.7 構造体を返す
8.8 ビットフィールド
8.9 コメント
8.10 まとめ

第9章 ユーザーとの対話
9.1 ユーザーインターフェイスの進化
コマンドライン
ウインドウシステム
9.2 ネイティブGUIかアプリケーションGUIか?
9.3 低レベルのグラフィック
9.4 デジタルオーディオ
9.5 入力
キーボード
マウス
ジョイスティックとゲームパッド
9.6 クロスプラットフォームのツールキット
9.7 まとめ

第10章 ネットワーク処理
10.1 ネットワークプロトコルの進化
10.2 プログラミングインターフェイス
ソケット
RPCとRMI
分散オブジェクト
10.3 まとめ

第11章 オペレーティングシステム
11.1 オペレーティングシステムの進化
11.2 ホスト環境と自立環境
11.3 オペレーティングシステムの移植性の矛盾
11.4 メモリ
メモリの制限
メモリマッピング
メモリ保護
11.5 プロセスとスレッド
プロセスの制御および通信機能
プロセス間通信(IPC)
マルチスレッド処理
11.6 環境変数
11.7 例外処理
Cの例外処理
C++の例外処理
11.8 ユーザーデータの記憶領域
Microsoft Windowsのレジストリ
Linuxのユーザーデータ
Mac OS Xのプレファレンス
11.9 セキュリティとパーミッション
アプリケーションのインストール
権限のあるディレクトリとデータ
低レベルのアクセス
11.10 まとめ

第12章 動的ライブラリ
12.1 動的リンク
12.2 動的ローディング
12.3 共有ライブラリに付随する問題(またの名をDLL地獄)
バージョン管理の問題
拡散
12.4 GNU LGPL
12.5 Windows DLL
12.6 Linuxの共有オブジェクト
12.7 Mac OS Xのフレームワーク、プラグイン、バンドル
フレームワーク
バンドル
プラグイン
12.8 まとめ

第13章 ファイルシステム
13.1 シンボリックリンク、ショートカット、エイリアス
WindowsのLNKファイル
Unixのリンク
13.2 パスの指定
ディスクドライブとボリューム指定
パス区切り子とその他の特殊文字
カレントディレクトリ
パスの長さ
大文字と小文字の区別
13.3 セキュリティとアクセス権限
13.4 Macintoshの特異な処理
13.5 ファイル属性
13.6 特別なディレクトリ
13.7 テキスト処理
13.8 Cのランタイムライブラリと移植性のあるファイルアクセス
13.9 まとめ

第14章 スケーラビリティ
14.1 アルゴリズムが良いほどスケーラビリティも良い
14.2 スケーラビリティの限界
14.3 まとめ

第15章 移植性とデータ
15.1 アプリケーションデータとリソースファイル
バイナリファイル
テキストファイル
XML
データファイルとしてのスクリプト言語
15.2 移植可能なグラフィックの作成
15.3 移植可能なオーディオの作成
15.4 まとめ

第16章 国際化と地域化
16.1 文字列とUnicode
16.2 通貨
16.3 日付と時刻
16.4 インターフェイスの要素
16.5 キーボード
16.6 まとめ

第17章 スクリプト言語
17.1 スクリプト言語の短所
17.2 JavaScript / ECMAScript
17.3 Python
17.4 Lua
17.5 Ruby
17.6 まとめ

第18章 クロスプラットフォームなライブラリとツールキット
18.1 ライブラリ
18.2 アプリケーションフレームワーク
Qt
GTK+
FLTK
wxWidgets
18.3 まとめ

付録A POSH
A.1 POSHの事前定義済みシンボル
A.2 POSHの固定サイズの型
A.3 POSHのユーティリティ関数とマクロ

付録B 移植性のルール

この商品を買った人はこんな商品も買っています


最近チェックした商品

Tポイント利用手続き

         Tポイント利用手続きに関する同意事項

                                株式会社マイナビ出版

株式会社マイナビ出版が提供するマイナビBOOKSにおいてTポイントご利用続きをされる方は、以下に掲げるお客様の個人情報の取り扱いについてご確認の上、ご同意下さい。

マイナビBOOKSにおいてTポイントサービスをご利用いただいた場合に、当社から、次に掲げる<提供情報>を、<提供目的>のためにカルチュア・コンビニエンス・クラブ株式会社(以下「CCC」といいます)へ提供します。

  <提供目的>:CCCの定める個人情報保護方針及びマイナビBOOKSにおけるT会員規約第4条に定める利用目的で利用するためTポイントサービスを利用するため
  <提供情報>:
   1)お客様が【マイナビBOOKS】の正当な利用者であるという情報
   2)ポイント数・利用日
   3)その他、Tポイントサービスを利用するにあたり必要な情報

  <提供方法>: 電磁的記録媒体の送付またはデータ通信による。ただし、提供するデータについては暗号化を施すものとする。

なお、CCCに提供された、以下の情報の利用については、CCCの定める個人情報保護方針及びT会員規約 に沿って取り扱われます。
上記の情報提供の停止をご希望される場合には、【マイナビBOOKS】におけるTポイント利用手続きの解除を実施していただく必要があります。
Tポイント利用手続きの解除、およびTポイントサービスにおける個人情報に関するお問い合わせ先は、以下のとおりです。
お客様お問い合わせ先:Tサイト(http://qa.tsite.jp/faq/show/22612)

 なお、Tポイント利用手続きの解除が完了しますと、マイナビBOOKSにおけるTポイントサービスをご利用いただけなくなりますので、予めご了承ください。

Tポイント利用手続きを行いますか?