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

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

ゲームコーディング・コンプリート 一流になるためのゲームプログラミング

ゲームコーディング・コンプリート 一流になるためのゲームプログラミング

著者/訳者:Array

出版社:ソフトバンククリエイティブ( 2010-03-31 )

定価:¥ 4,200

大型本 ( 864 ページ )

ISBN-10 : 4797358432

ISBN-13 : 9784797358438


少し前に「ゲームプログラマになる前に覚えておきたい技術」を買っちゃったから根性で立ち読みをした。系統は同じだけど「ウルティマ」シリーズ開発者、つまりアメリカ人によるゲームプログラミング解説書なので視点がちょっと違う。設計・デバッグ・ゲームエディタなどのトピックをこれでもかと詰め込んである。ネットを扱うのにSocketというものを使うのだけど、Windowsで一般的なWinSockではなくBSD Socketを何故使うかとか細かいことが色々書いてある点が参考になる。天下り的にこれを使うというより、著者の思考の過程を感じることができるほうが読んでいて面白い。

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

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

著者/訳者: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にも対応しているので、初心者が最初に手に取る本としても十分に役に立つ。

Next »