Posts RSS Comments RSS 32 投稿 and 1 コメント till now

Archive for 2月, 2008

Windowsプロフェッショナルゲームプログラミング2

Windowsプロフェッショナルゲームプログラミング2【CD-ROM付】 (Game developer books)

著者/訳者:Array

出版社:秀和システム( 2003-09-01 )

定価:¥ 2,940

単行本 ( 432 ページ )

ISBN-10 : 4798006033

ISBN-13 : 9784798006031


前著の方がよいかも。

やや技巧に走ってしまったような気がする。テンプレートで階乗だったか再帰的な計算を行うこととか、いきなりそういうことから始まる。これは別に難しいことではないのだけど、友人とどうかなあって話していたのを覚えている。他にもラムダ式などが出てくる。不確かな記憶だけれど、この本を執筆していた時期は、やねうらお氏は新しい言語を独自に作ろうということをしきりに書いていたような気がする。その影響を受けているのではないか。

タスクシステムあたりまでは前著で不足していた点であるのでよいと思うけれど、その後のマイクロスレッドはGame Programming Gemsあたりで一時期書いてあった内容を改良したもので、ちょっと突っ走りすぎかなと思うし、ビット演算の魔術あたりからはどうなのだろう?それ専門の本ならいいのだろうけど、ちょっとワープしているような感じを受けた。やねうらお氏はShort Codingあたりにも関わっていて、そういうプログラミングにも長けていることはわかるが、全体として本書がマニアックな印象になってしまった。

目次
第1章 C++プログラミングテクニック
第2章 タスクシステム
第3章 マイクロスレッド
第4章 マルチスレッドのデザインパターン
第5章 ビット演算の魔術
第6章 描画の周辺
第7章 プログラミングTips
第8章 開発環境をめぐる問題
第9章 フォローアップ

Windowsプロフェッショナルゲームプログラミング

Windowsプロフェッショナルゲームプログラミング

著者/訳者:Array

出版社:秀和システム( 2002-06 )

定価:¥ 2,940

単行本 ( 375 ページ )

ISBN-10 : 479800314X

ISBN-13 : 9784798003146


ゲームプログラミングのみならず、C++でプログラミングをする中級者にはお勧めの本。

ありきたりなタイトルであるため「やねうらお本」と言った方が分かりやすいかも知れない。やねうらお氏はゲームプログラマではネット上でよく聞く有名人で、はてなダイアリーのブログや「BM98′S ROOMつう」で面白い記事をたくさん見かける。一方で嫌いな人は大嫌いのようで、ネット上の書評も公平とは思えないものも結構ある。

プログラミングの入門書として気合いが入っているのか、最初のハンガリー記法のような心構えのようなところから始まるが、面白いのは次のC++プログラミングテクニックあたりからだと思うが、これも前置きが長く、たぶん本人でも使っていないようなnew / deleteのオーバーロード(多重定義)でメモリリークの検出あたりから入る。それから徐々にスマートポインタの解説に入り、最終的にはスマートポインタを全面的に使うという結論になっている。

前置きが長いのは悪いことでもなく、著者の思考の流れが分かる点では優れている。例えば学校の理科の授業でも小学校や中学校では天下り的に事実を教えられることが多い(最近は違うかも)が、科学史を学ぶとそれらも試行錯誤の結果たどり着いたものであることがわかる。同様にプログラミングでも没ネタがたくさんあって、最後に何らかのテクニックを得る。本書は全体としてそういう傾向にあると思う。色々思考を巡らして「葬る方向で」の一言で済ませてしまうのは、いらない記述のようだけれど、プログラミングの学習途中にある人にとってはよいのかも知れない。

また、オブジェクト指向プログラミングを取り入れていて、これも入門書にあるように単に覚えるだけではなく、なぜインターフェースクラスを作るのかとか、デザインパターンはなぜ考案されたのかとか、そういう基本的なことを実例を通じて理解できるため、これもまた初心者から中級者にはよい。そのかわり、網羅してあるのではなく、本書で必要な範囲しか書いていないので、初心者は他に入門書が必要になるだろう。

後半からは徐々にWindowsプログラミングの話になるが、Windowsでない環境の人も十分に楽しめると思う。特に描画に関するGTLのあたりはテンプレートの使い込みを学ぶ材料としてはよいものだと思う。スマートポインタもそうだけれど、テンプレートを遠慮なく使っているのも特徴か。

Modern C++ Designという本があったが、あのあたりからだろうか、テンプレートの使い方が研究され尽くしてきて、Boostライブラリのような「変態的」なものも多く出てきて、そこから入るとたぶん参ってしまう。もう少し簡単なものはないかと思うと本書はちょうどいいかも知れない。テンプレートについては続編でもうちょっと書いてある。

目次

序 章 ゲームプログラミングへの招待

  • 第1章 プログラミングのための準備
    • 1.1 documentation(ドキュメンテーションのあり方)
    • 1.2 coding style(コーディングスタイル)
    • 1.3 dubug(デバッグ技法)
    • 1.4 precompiled header(プリコンパイル済みヘッダ)
  • 第2章 C++ programming technique
    • 2.1 new/delete(newとdeleteについて)
    • 2.2 anti-memory leak(メモリリーク対策)
    • 2.3 faster new/delete(高速化されたnewとdelete)
    • 2.4 memory pool(メモリプール)
    • 2.5 garbage collector(ガベージコレクタ)
    • 2.6 auto_ptr(所有権つきポインタ)
    • 2.7 exception(例外処理)
    • 2.8 auto_array(所有権インディケータ付き配列ポインタ)
    • 2.9 smart_ptr(スマートポインタ)
    • 2.10 smart_vector_ptr(スマートポインタのvector)
    • 2.11 member function callback(メンバ関数コールバック)
    • 2.12 listner(リスナクラス)
    • 2.13 inner function(ローカル関数)
    • 2.14 smart_array(スマート配列)
    • 2.15 real smart pointer(本当にスマートなポインタ)
    • 2.16 interface class(インターフェース クラス)
    • 2.17 factory method(工場メソッド)
    • 2.18 parametrized factory(パラメータ化されたfactory)
    • 2.19 factory permutation(factory置換)
    • 2.20 singleton(クラス唯一のインスタンス)
    • 2.21 non-local static object(非ローカルなstaticオブジェクト)
    • 2.22 helper function(ヘルパ関数)
    • 2.23 versatile function callback(汎用関数コールバック)
    • 2.24 object deleter(オブジェクト解体子)
    • 2.25 chain of responsibility(責任の鎖)
    • 2.26 RTTI(実行時型判定)
    • 2.27 class export(クラスを外部から使えるようにする)
    • 2.28 proxy pattern & null device(proxyパターンとNullDeviceパターン)
    • 2.29 smart_iterator(スマートイテレータ)
    • 2.30 broadcast(chainを辿ってすべてのインスタンスに通知する)
    • 2.31 ref_creater(参照カウント付き生成子)
    • 2.32 functor(関数オブジェクト)
  • 第3章 ゲームに必須の汎用クラスの設計
    • 3.1 Timer(タイマ)
    • 3.2 FixTimer(固定タイマ)
    • 3.3 FPSTimer(FPSを安定させるタイマ機構)
    • 3.4 CriticalSection(クリティカルセクション)
    • 3.5 MutexSection(mutexによるセクション)
    • 3.6 Event(同期メカニズム イベント)
    • 3.7 Thread(スレッド)
    • 3.8 Application Initializer(アプリケーションの初期化子)
    • 3.9 ThreadLocal(スレッド固有)
    • 3.10 Single Application(同時複数起動しないアプリケーション)
    • 3.11 Window Message Dispatcher(Windowメッセージの配信)
    • 3.12 Window class(ウィンドウクラス)
    • 3.13 mouse cursor(マウスカーソル)
    • 3.14 Application Base(アプリケーション基底クラス)
    • 3.15 Debug Window(デバッグウィンドウ)
    • 3.16 Text Output Stream(テキスト出力ストリーム)
    • 3.17 Interval Timer(定期的にコールバックされるタイマ割り込み)
    • 3.18 Mouse Input(マウス入力)
    • 3.19 KeyBase(キー入力基底クラス)
    • 3.20 Virtual Key(仮想キー)
    • 3.21 Application Frame(アプリケーションフレーム)
    • 3.22 file wrapper(ファイル入出力)
    • 3.23 Serialize/Deserialize(シリアライズ・デシリアライズ)
    • 3.24 StringMap(文字列をキーとする連想記憶)
    • 3.25 cache(キャッシュ)
    • 3.26 Counter(カウンタ)
  • 第4章 DirectX programmingへの序奏
    • 4.1 about DirectX(DirectXについて)
    • 4.2 COM Initialize/Uninitialize(COMの初期化とシャットダウン)
    • 4.3 CoCreateInstance(CoCreateInstanceについて)
    • 4.4 DirectInput(DirectInputによるキー入力)
    • 4.5 JoyStick(ジョイスティック)
  • 第5章 サウンドクラスの設計
    • 5.1 CDDA(オーディオCDの再生)
    • 5.2 wave output(wavファイルの再生)
    • 5.3 DirectSoundBuffer(DirectSoundのサウンドバッファ)
    • 5.4 DirectSound(DirectSoundについて)
    • 5.5 Stream Sound(サウンドのStream再生)
    • 5.6 Audio Compression Manager(ACMによるサウンドの再生)
    • 5.7 Ogg Vorbis(Ogg Vorbisによるサウンドの再生)
    • 5.8 sound class on yaneSDK3rd(yaneSDK3rdにおけるサウンドクラスの設計)
    • 5.9 Sound Effect Manager(効果音のためのマネージャ)
    • 5.10 MIDIOutput(MIDIファイルの再生)
    • 5.11 MIDI Input(MIDI入力)
    • 5.12 AudioMixer(オーディオミキサ)
    • 5.13 VolumeFader(ボリュームのフェード)
  • 第6章 描画クラスの設計
    • 6.1 Surface(サーフェースについて)
    • 6.2 Screen Mode(画面モード)
    • 6.3 antialiasing(アンチエイリアス)
    • 6.4 alpha channel(αチャンネル)
    • 6.5 alpha surface(αサーフェース)
    • 6.6 DDB vs DIB(デバイス依存ビットマップ vs デバイス非依存ビットマップ)
    • 6.7 DIB(Device Independent Bitmap)(デバイス非依存ビットマップ)
    • 6.8 DirectDraw(DirectDrawによる描画)
    • 6.9 GTL(Graphic Template Library)(グラフィックテンプレートライブラリ)
    • 6.10 DirectDrawSurface(DirectDrawSurfaceについて)
    • 6.11 Dirty Rect(更新矩形)
    • 6.12 IME(日本語変換)
  • 第7章 ゲームプログラミングフレームワーク
    • 7.1 about scene(シーンクラスの設計について)
    • 7.2 scene stack(シーンの制御のためのスタック)
    • 7.3 scene control(シーン管理クラス)
    • 7.4 scene differentiation(シーンの微分化)
    • 7.5 scene serialize/deserialize(シーンのシリアライズとデシリアライズ)
  • 第8章 フォローアップ
    • 8.1 推薦図書
    • 8.2 参考(にすると良い)ホームページ
    • 8.3 CD-ROM収録内容

リスク分析・シミュレーション入門―Crystal Ballを利用したビジネスプランニングの実際

リスク分析・シミュレーション入門―Crystal Ballを利用したビジネスプランニングの実際

著者/訳者:James R. Evans David L. Olson

出版社:構造計画研究所( 1999-04 )

定価:¥ 6,720

単行本 ( 353 ページ )

ISBN-10 : 4320097254

ISBN-13 : 9784320097254


シミュレーションとはこういうことだったのかと納得できる素晴らしい本だが、高い。

理科系のシミュレーションはまた別なのかも知れないが、経営に用いるシミュレーションの基礎を学ぶにはほぼこれで事足りるくらい充実している。私はゼミで輪講に用いたのだけれど、目から鱗が落ちるくらい感激したのを覚えている。

この場合のシミュレーションとは、モデルに対して確率分布を与えると度数分布を出力するモンテカルロシミュレーションである。もちろん難しいのはある問題にフィットする適切なモデルを設定するところにあるのだけれど、学習段階だから与えられたモデルを天下り的に利用させてもらって色々なテーマを見ていくと、なるほど、こうして結論を示されると有無を言わせぬ説得力を持つという気になる(繰り返すが、モデルが間違っていてももっともらしい結果は出るので騙されてはいけないけれど)。

シミュレーションの入門書なのだけれど、Crystal Ballの宣伝という感じもして、Crystall Ballの紹介にページがある程度割かれている。このソフトは強力だけど、別にCrystall Ballを持っていなくても統計学的な考え方もきちんと身に付くので自分でプログラムを書いてもいいかも知れない。

統計学は大学1年くらいでだいたい学ぶと思うけれど、多くの場合は無味乾燥で単位を取ると頭から抜けてしまう人が多いと思う。そういう人が続けてこの本を使えば、今後の研究で効果的に統計学を用いようという気になると思う。

目次

PART1 シミュレーションの基礎
  • 第1章 ビジネスにおけるシミュレーションとリスク分析
    • 1-1 シミュレーションの性質
    • 1-2 シミュレーションモデルのタイプ
    • 1-3 シミュレーションのプロセス
    • 1-4 シミュレーションの長所と短所
    • 1-5 シミュレーションの実践
  • 第2章 スプレッドシートを利用したシミュレーションの基礎
    • 2-1 スプレッドシートを利用したシミュレーションモデル
    • 2-2 乱数と離散値
    • 2-3 スプレッドでのモンテカルロシミュレーション
    • 2-4 シミュレーションの実践
  • 第3章 シミュレーションとリスク分析に必要な確率と統計の基礎
    • 3-1 シミュレーションに利用する確率分布
    • 3-2 確率的なインプットのモデリング
    • 3-3 確率変量
    • 3-4 モンテカルロシミュレーションの統計的な問題
    • 3-5 シミュレーションの実践
PART2 シミュレーションとリスク分析
  • 第4章 Crystal Ballを利用したビジネスリスク分析
    • 4-1 Crystal Ballを使ったモンテカルロシミュレーション
    • 4-2 インプット情報の指定
    • 4-3 Crystal Ballのアウトプット
    • 4-4 その他のCrystal Ballの機能
    • 4-5 シミュレーションの実践
  • 第5章 ビジネス現場でのリスク分析の応用
    • 5-1 生産管理への応用
    • 5-2 財務予測への応用
    • 5-3 マーケティングへの応用
    • 5-4 シミュレーションの実践
PART3 システムシミュレーション
  • 第6章 ビジネス現場でのシステムシミュレーションモデルの構築
    • 6-1 Mantel Manufacturingの事例
    • 6-2 在庫のシミュレーションモデル
    • 6-3 待ち行列のシミュレーションモデル
    • 6-4 シミュレーションの実践
  • 第7章 事象中心シミュレーションと連続型シミュレーション
    • 7-1 単一サーバの待ち行列での事象中心シミュレーション
    • 7-2 事象中心の在庫シミュレーションモデル
    • 7-3 要素と属性
    • 7-4 シミュレーション・ソフトウェア
    • 7-5 連続性シミュレーションのモデリング
    • 7-6 シミュレーションの実践

    第8章 システムシミュレーションの結果分析

    • 8-1 システムシミュレーションでの動的な反応
    • 8-2 ポリシーとシステムの比較
    • 8-3 実験計画
    • 8-4 シミュレーションの実践
  • 第9章 ビジネス現場でのシステムシミュレーションの応用
    • 9-1 生産のスケジューリング
    • 9-2 コンピュータネットワークの設計
    • 9-3 医療への応用
    • 9-4 シミュレーションの実践

Next »