Seaside Laboratory

Article

コンピューター関連の推薦図書

自分が実際に買って読んだコンピューター技術に関する本の紹介。レビューを書くために再度読み直しているので新しい日付であっても古い本だったりします。

ゲームプログラマのためのコーディング技術

著者 出版社 発売日 ページ数 価格
大圖 衛玄 技術評論社 2015-06-30 256 2480

タイトルに「ゲームプログラマのための~」と冠しているが、グラフィックやサウンド関連の話は書かれていないので面食らう人もいるかもしれない。「CODE COMPLETE」や「リファクタリング―プログラムの体質改善テクニック」のような、より良いコードを書くためのノウハウをまとめた本。

ゲームプログラミングによく出てくる値の丸め処理や座標の取り扱いといった、ゲームの基礎を支えるテクニックは実践的でとても役に立つ。「組込型変数のクラス化」というフレーズは一見過激に思えるかもしれないが、制限時間を表す変数ひとつとっても、初期化、アンダーフローしないように減算、タイムオーバー判定、というように、多くの責任を持っているので、クラス化すると想像以上にコードの見通しがよくなる。

ゲームプログラムのコードが肥大化して困っている人には是非読んでほしい。

2015-08-23

C++ の設計と進化

著者 出版社 発売日 ページ数 価格
Bjarne Stroustrup ソフトバンククリエイティブ 2005-01-18 569 4000

言語設計の舞台裏に焦点を当てたものなので、プログラミングテクニックを磨くというよりは、C++ への理解を深める本。

C++ の奇妙に見える文法や仕様には理由 (主に C との互換性) があり、整合性を保ちながらも着実に進化していった過程を見ることができる。コードの実行効率を重視する C++ プログラマであれば、「ゼロオーバーヘッドルール」に関連する項目は読んでおいて損はない。

500 ページを超える分厚い本なので、C++ 愛がないと全て読み切るのは難しいかもしれない。

2015-09-30

ライティングソリッドコード―バグのないプログラミングを目指して

著者 出版社 発売日 ページ数 価格
Steve Maguire アスキー (Microsoft Press) 1995-03-21 261 2718

マイクロソフトのプログラマが Macintosh 版 Excel を作る過程で得た C のノウハウを惜しげもなく詰め込んだ本。大量のバグに対処できず製品がキャンセルになってしまったという苦い経験が元になっている。

C は実行効率の高い言語だが、その代わりプラットフォームによって変化する変数のサイズや、メモリの確保や解放などをプログラマが責任を持って管理しなければならない。プログラムが大きくなるにつれて管理が行き届かなくなり、最終的にはちょっとしたミスですぐにバグが発生する状態になってしまう。そうならないために必要な、アサーションを使ったエラー検出や、使いやすい関数インターフェイスを設計といった、バグを未然に防ぐテクニックが紹介されている。

今となってはやや古い内容となっているが、駆け出しの C プログラマなら必読の内容だろう。

2015-10-22

Write Greate Code Vol.2

著者 出版社 発売日 ページ数 価格
Randall Hyde 毎日コミュニケーションズ 2006-12-12 637 5800

高級言語で書かれたプログラムが、実際どのような形で実行されるのかを知ることで、可読性と実行効率を両立しながら質の良いコードを書こうという内容。

前半は基礎的な内容なので、アセンブラを少しかじったことのあるプログラマには退屈かもしれないが、後半のコンパイラによる条件分岐や反復制御の最適化はなかなか知ることができない内容なのでとても興味深い。

グローバル変数はコンパイラの最適化を阻害し、巨大な関数はローカル変数 (スタック) へのアクセス速度を低下させるので、可読性の低いソースはコンパイル後のバイナリ品質も悪いという点は面白い。

この本の欠点はプログラム説明が HLA (High Level Assembly) という著者が作成した独自言語で行われていたり、機械語コードが 80x86 と PowerPC が混在しているので読んでいて疲れるところ。

2015-11-30

CODE COMPLETE 第 2 版 上―完全なプログラミングを目指して

著者 出版社 発売日 ページ数 価格
Steve McConnell 日経BP社 (Microsoft Press) 2005-03-26 628 6100

執筆中・・・。

2015-12-25

CODE COMPLETE 第 2 版 下―完全なプログラミングを目指して

著者 出版社 発売日 ページ数 価格
Steve McConnell 日経BP社 (Microsoft Press) 2005-03-26 628 6100

執筆中・・・。

2016-02-03

増補改訂版 Java 言語で学ぶデザインパターン入門

著者 出版社 発売日 ページ数 価格
結城 浩 ソフトバンククリエイティブ 2004-06-19 484 3800

タイトル通り、Java を使ったデザインパターンの解説本。オブジェクト指向プログラミングをやっていれば当たり前のように使うパターンから、普段使う機会がなさそうな複雑なパターンまで幅広く解説されている。

GoF 本は難しい、という噂を聞いていたので比較的やさしいといわれる本書を選んだが、デザインパターンは「プログラミングのノウハウ」と言われているだけに、馴染みのないパターンを理解するのはなかなか難しい。プログラミング経験を積み、何度か読み返すうちにだんだん理解できるようになっていくので、焦らずにわかるところから読み進めていけばよい。

Iterator や Observer のようなパターンはライブラリでも使われていたりするので、デザインパターンを知っておいた方が色々と有利なのは確か。

2016-04-25

Head First デザインパターン ―頭とからだで覚えるデザインパターンの基本

著者 出版社 発売日 ページ数 価格
Eric Freeman 他 オライリージャパン 2005-12-02 604 4900

難解になりがちなデザインパターンをわかりやすく解説した本。序章に書かれているように、各所で読者を飽きさせない工夫がされており、ページ数のわりにはスラスラと読み進めることができる。

各章には発端となるストーリーがあり、そこで発生した問題にどう対応していくかを考えながらデザインパターンを学んでいく。最初に要件を単純に満たしただけのプログラムがあり、そこに潜む問題点に対処するためにデザインパターンを適用していく、という流れ。

この本の素晴らしい点は常にデザインパターン初心者の視点に立っていることで、「たしかに有用そうなパターンであることはわかった。でもこの△△な部分はどうなってるの?」と思ったころには「素朴な疑問に答えます」というコーナーが登場し、モヤモヤしながら読み続けなくて済むよう工夫がされている。また、間違われがちな Simple Factory, Factory Method, Abstract Factory についての解説など、とにかく読者が「気になっている」部分を解消してくれる。

この本を読み終えてわかったのは「Java 言語で学ぶデザインパターン入門」は、紹介から解説まで全てが抽象的すぎてあまり頭に入っていなかったとうこと。

2017-11-07