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

Archive for the 'プログラミング' Category

ゲームプログラマになる前に覚えておきたい技術

ゲームプログラマになる前に覚えておきたい技術

著者/訳者:Array

出版社:秀和システム( 2008-11-15 )

定価:¥ 4,725

単行本 ( 872 ページ )

ISBN-10 : 4798021180

ISBN-13 : 9784798021188


知りうる限りでは最良のプログラミングの教科書の1つ。

この本を紹介するのにうってつけの文章が本の中にある。

私がこの本を書こうと思ったのは、新人研修の教官をやった時に大変困ったからである。これを読んでおけ、と言える本がないのだ。この分野はこれ、あの分野はあれ、と列挙することはできるが、5冊も10冊も詰まれても新人が困ってしまうだろうし、そもそも部分の総和は全体にはならないのであって、プログラミングの本とCGの本をバラバラに読んでもゲームは作れないのである。

C言語やC++といった言語はいささか汎用的すぎて初めてプログラミングをやる人にはオススメできないと私は考えている。プログラミングが大好きという人ならprintf()で簡単な出力を出しているだけでも興味を覚えるかも知れないが、ほとんどの人にとってはC/C++の標準ライブラリの中でできることはシンプルすぎて面白みがない。そこで私が何かオススメの言語はないかと訊かれると、大抵はRubyやPythonのようなスクリプト言語でWebからデータを集めてくるとか、すぐにでも役に立つプログラムが書けそうな言語を答える。あるいはJavaのような最初から大規模なフレームワークが存在して、善し悪しはともかくオブジェクト指向のマナーを叩き込まれるような言語とか、ゲームが好きならゲーム向けの言語を勧める。その方が結果が見えやすく興味が持続しやすいと考えるからだ。

C/C++の問題点は標準ライブラリの中では初心者が喜びそうなことがしにくい。グラフィックは標準では扱うことができないし、ネットワークもPOSIXのSocketとかに頼らないといけない。クラスライブラリもSTLのようなコンテナくらいしかない。だから正統的なC/C++の本は無味乾燥になりがちだし、オブジェクト指向について書いても「Humanクラスを継承してMaleクラスとFemaleクラスを作ります。同じtalk()メソッドでもMaleとFemaleでは振る舞いが違い・・・」のような作っていて全然面白くない例に終始することになる。

本書のよいところはゲームプログラミングという目的を最初から定めていることである。ゲームは好き嫌いはあるにせよ、リアルタイムに入力を処理して出力するという規模の大きいシステムである。これによってプログラミングを学ぶ目的が明確化する。単に暗記事項だったものが「何のためにその機能を使うのか」という要請に基づく理解に変わる。このことは初学者にとってはとても大きいことである。

他に随所に著者の意見が書かれていてそれがまた面白い。プログラムを書くというのはきれい事ではなく、現実に色々と厄介な問題との戦いであり、上級者の率直な意見は実に貴重な教材になる。何のためにそうするのかという疑問について、きれい事で答えられるより、例えば「面倒臭いから」という意見の方が人間味があって理解しやすい。言葉の1つ1つが砕けた表現であることが多く共感しやすい。

値段はそこそこするが、この辞書のように分厚く充実した内容を考えれば決して高い本ではない。

Javaネットワークプログラミングの真髄

Javaネットワークプログラミングの真髄

著者/訳者:Array

出版社:ソフトバンク クリエイティブ( 2007-04-28 )

定価:¥ 3,885

大型本 ( 408 ページ )

ISBN-10 : 4797341866

ISBN-13 : 9784797341867


ネットワークプログラミングの本の決定版。

Javaのネットワークプログラミングの本であるが、Java以外の言語でプログラミングをしている人にも向いていると思う。言語に特化した記述以外にも、プログラムの設計の指針になる記述もふんだんにあるからである。Socketプログラミングの本は数多くあり、Webでも入門記事は多く見かける。したがって、単純なサーバ・クライアントを作成するだけならお金をかけて本を買う必要はない。本書はそうしたありふれた入門書とは一線を画する記述がある。

中級者以上でも面白い記述がある

TCP/IPは古い設計であるため、色々と問題が指摘されている。TCPは信頼性のある通信を手軽に実現してくれて便利なのだが、TCPのフロー制御や輻輳制御、あるいは公平性についての取り決めは現代の高速ネットワークにはそぐわない点がいくつかある。ほとんどの場合は気にしなくてよいのだけど、必要な場合にはシンプルなUDPを使うこともある。UDPはほとんど何もしないプロトコルなので、TCPがやっている信頼性確保のための色々な工夫を自分で実装しないといけない。こうしたトピックについて気軽に読める本はあまり多くないと思う(大学のネットワークの教科書には書いてある)。

他にもサーバの負荷を考慮して、スレッドで捌くのか、SocketChannelを使って捌くのかなどの詳細な分析などは中級者にとっては面白い読み物となるだろう。

新しい世代の入門書

Javaは古くからSocketによるネットワークがサポートされていたが、最近(と言ってもずいぶん経つが)NIO(New IO)という新しいインターフェースがサポートされた。典型的にはブロッキングを回避するためにコネクションをスレッドに割り当てていたのだが、多くのコネクションをその数だけスレッドを作ってさばいているとパフォーマンスに問題がある。そうした要求に応える新しいインターフェースだが、あまり本は多くないと思う。WebにもNIOの解説はあるのだけど、数は多くない。数が少ないと親切な解説に当たることも少ないので少し困る。

本書は昔ながらのSocket通信はもちろん、NIOにも対応しているので、初心者が最初に手に取る本としても十分に役に立つ。

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章 フォローアップ

Next »