2011年07月14日

ゲームを作る上で役立つ数学

お久しぶりです。
ミヤジーです。

最近、数学の勉強を始めましたパンチ
ゲームを作る上で、数学は非常に重要です。

中でも、線形代数と呼ばれる分野がとりわけ重要になってきます。
キャラクターの描画や動きの制御等に使用しますぴかぴか(新しい)

いろいろな入門書が出ているので勉強しやすいのではないかと思います。
入門書などの後に読むと良いのではないかと思う お勧めの本を紹介したいと思います。

幅広く、ゲームで使用する数学が学べます手(チョキ)
『ゲームプログラミングのための3Dグラフィックス数学』
http://www.amazon.co.jp/dp/4939007375/

キチンと言葉の意味や、線形代数の理論をおさえたいと思った方にはこの本がお勧めです。わーい(嬉しい顔)
『スバラシク実力がつくと評判の線形代数キャンパス・ゼミ』
http://www.amazon.co.jp/dp/4944178220/

程よく奥まで踏み込んでいて、なおかつ理解しやすく書かれている本です。
ちなみに、このシリーズは他にも確率や、微分積分、フーリエ変換等いろいろな本が出ていますが、
どれも分かりやすくてお勧めです。

更に、行列をマスターした後に出てくるのがクォータニオン(四元数)です。
こちらは、球面線形補間をする際などに出てきます。
クォータニオンについてはこちらの本がお勧めです手(パー)
『3D‐CGプログラマーのためのクォータニオン入門』
http://www.amazon.co.jp/dp/4777510166/
クォータニオンだけでなく周辺の数学知識が身につきます。


さらに、深く勉強するなら"物理のかぎしっぽ"というサイトがお勧めですグッド(上向き矢印)
http://hooktail.sub.jp/
物理だけでなく、数学についても非常に深く解説されています。


私は、数学は苦手なんですが、
分かりやすい参考書があると非常に楽しく感じます。
目指せ、数学オリンピックexclamation&question


posted by 管理人 at 21:33 | 書籍紹介

2011年06月16日

読書のルール

こんにちは、ナカムラです。
先日、本は人生のおやつです!という(ちょっと変わった)店名の本屋さん本に行ってきました。
新刊書籍と古書と雑貨を扱っているこぢんまりした本屋さんなのですが、その特徴として
「自分に合った本をチョイスしてくれる」という読書カウンセリングサービスがあります。

年齢、職業、趣味、得意な科目、好きな作家、好きなテレビ番組…などなどをシートに記入すると、その情報を元に店長さんが最適な1冊を選んでくれるのですぴかぴか(新しい)
驚くべきはその検索の速さ新幹線
カウンセリングシートに目を通した後目、間を空けずに1冊を取り出してもらえました。
そして、それをオススメする理由なども聞かせてもらえるのです。

私自身、自分では割と本を読む方だと思っていましたが、選んで頂いたその1冊は、タイトルも作者も聞いたことのないものでしたexclamation
おそらく、こんな機会がなければ一生手に取ることがなかった本だと思います。

で、肝心なその本の感想なのですが…実は今読みたい本が複数あって、4冊ぐらい並行読みしてるような状態でして、まだ完読できてませんあせあせ(飛び散る汗)

並行読みなんて、本好きとしてはルール違反なんだろうな〜と思っていたら、そうでもないようです。
今回は、そんな読書好きのルールを記した本をご紹介。

2011_0615_book2.jpg

本を月に100冊読むという著者が、そのコツの数々を紹介してくれています。
例えば…

・アウトプットを前提に読む
 誰かに内容を教えることを前提に読むと、中途半端な理解に止まらず、読み進めることが出来ます。
・本は硬軟織り交ぜて読む
 難しい専門書ばかりでなく、時にはエンターテインメント性の高い本も読んでみたり。
・あえて面白いと思うところで中断してみる
 こうすることにより、読書を再開するのが楽しみになりますよね。
・ながら読みもしてみる
 ジムでエアロバイクしながらの読書は、多くの人が実践してますよね。
・並行読みで気分の切り替えをする(exclamation
 …と、この本の中でも並行読みを勧めてはいるのですが、基本は2冊まで。どうやら4冊はやり過ぎのようですふらふら

他にも「活字から離れる日を作ろう」「気になるページから読もう」など、色々紹介されていますが、
「あ、そんな読み方もアリなんだexclamation&question
と、読書のハードルを下げてくれるようなアドバイスがいくつも紹介されています。

活字を追うのがどうも億劫で…という苦手意識のある人は、まずこの本から読んでみてはいかがでしょうか手(パー)

posted by 管理人 at 22:28 | 書籍紹介

2011年05月24日

セキュアコーディング

おはようございます、マーシーです。

GWも終わり、めっきり暖かくなってきましたね。
私は半袖、ハーフパンツと一足お先に夏の格好を満喫しております晴れ

さて、本日は書籍の紹介です。

「C/C++セキュアコーディング (SEI SERIES・A CERT BOOK)」





int foo[10];
for( int i=0; i<=10; i++ ) {
foo[i] = i;
}

配列の要素数を超えた値にアクセスしようとする
一般的に「バッファオーバーフロー」と呼ばれる処理です。
プログラムを書いたことがある人であれば、
ほとんどの人がお目にかかったことがあると思います目
そして、このソースを見たプログラマは
「やばい、すぐに直そう(直してもらおう)」
と考えるに違いありませんあせあせ(飛び散る汗)

この本は上記のような危険なコードに対して、
それがなぜ危険なのか、下記の点から詳細に解説してくれます。

1プログラムコードの中でどのような処理がされるのか?
2所謂、悪意ある攻撃者が、この危険なコードにどのような攻撃を行うことができるのか?

例えば、上の「バッファオーバーフロー」ですが、
これはプログラム作成者が「意図しない」メモリを上書きしてしまいます。
もし、上書きされるのがスタックポインタであったり、フレームポインタであった場合、
そのプログラムは停止すると思われます。
しかも、悪意ある攻撃者にかかると、この上書きの特性を利用して
送り込んだウィルスプログラムをリモートで実行することすら可能になってしまいますがく〜(落胆した顔)

このような危険なコードに対する対処法もいくつか掲載されています。
いくつか抜粋して紹介します。

1危険な処理を起こしやすい関数をより安全な拡張関数に変更する
2プログラムを実行した際に危険なコードを検知するような仕組みを入れる
3危険なコードを検知するようなライブラリを組み込む

この本を読んでいくことで、自分が如何に危険なコードを書いていたのかということがよくわかりました。
また、危険なコードを書く事を未然に防ぐためには、
それがどのように危険なのか、正しい知識が必要だとも強く感じました。
もし、危険なコードに心当たりがあり、それを予防する方法に興味を持たれた方は
是非、この本を読んで見てくださいわーい(嬉しい顔)

私もこれからは危険なコードを書かないよう意識して、プログラムをしていこうと思います。

posted by 管理人 at 11:40 | 書籍紹介

2011年05月18日

知識ゼロから学ぶソフトウェアテスト

こんにちは、ナカムラです。

みなさん、ゲームソフトの品質と聞いて、頭に思い浮かぶのは何ですか?
・グラフィックの綺麗さ
・サウンドの良質さ
・ゲームの面白さ
等でしょうか?
プログラムの品質に注目して考えると、次のようなものも品質の一つとして捕らえることが出来ます。
・処理速度
・バグの少なさ

「えexclamation&questionバグなんて、無くて当然でしょ?多いとか少ないとかの問題じゃなくて。」
最終的な製品を手にするユーザーの皆さんから見れば、その通りかもしれません。
しかし、製品になった時点でのバグだけでなく、開発途中のバグの少なさも重要なのです手(グー)
開発中であれ、バグが少なければ少ないほど、デバッグに費やす時間が短くて済み、その労力を他のクオリティアップグッド(上向き矢印)に回せるのですから。

では、開発途中のプログラムに関してバグが少ないかどうか、どうやって計れば良いでしょうか?
発見されているバグの数が少ないからといって、プログラムの品質が高いとは限りません。
テストの質が悪くて、存在するはずのバグが見つけられてない場合も、バグの数は少なくなりますからねバッド(下向き矢印)
つまり、バグが少ないかどうかの品質を計るには、まずテストの品質が高いかどうかを確認する必要があるのです。

今回は、そういったテストについて書かれた本本をご紹介します。

2011_0517_book_2.jpg

著者は、マイクロソフトで品質管理をされていた日本人の方です。
本のタイトル通り、初心者にもわかりやすい内容になっていますぴかぴか(新しい)


この本では、不具合やテストに関する品質を見える化する為の指標(メトリックス)をいくつか紹介しています。

・不具合のメトリックス
 重要度を考慮した上での、バグ発見数の推移
 コンポーネント毎のバグ発見数

・テストのメトリックス
 ソースコードの何%をテストしたのか?
 テスト担当者以外のバグ発見数
 テスト種類数、テストの自動化率

・ソースコードのメトリックス
 追加、削除、変更されたコードの行数
 ソースコード1000行あたりのバグの数はいくつか?
 複雑度はどれくらいか?

などなど・・・


就職作品を作る時など、比較的小規模の開発なら、ここまでのメトリックスを気にする必要はないとは思いますが、
「他と比べて、実行回数が少ない(テストが少ない)処理は無いだろうか?」
という程度は注意してみた方がよいかと思います。
折角の作品がストップしてしまうと、印象が悪くなりますからねふらふら

***


この本には他にも、バグの潜みやすい箇所、バグを見つける時の基本テクニックなどが紹介されています。
作品提出前にこの本を読んで、バグチェックしてみてはいかがでしょうか手(パー)


posted by 管理人 at 15:59 | 書籍紹介

2011年04月13日

定理と法則

「科学」と「学習」という学習教材雑誌本をご存じでしょうか?
小学校の頃この雑誌に出会い、知らず知らずの内に理系頭になっていたというプログラマの人、案外多いんじゃないかと思います。
私、ナカムラもその一人です手(パー)

2010年をもって両方とも休刊となってしまい残念なのですがもうやだ〜(悲しい顔)、休刊後も別冊として色んな本が出ています。
その内の1つ、大人の「科学」と「学習」定理と法則101 というものを購読したので、ご紹介します。

2011_0412_book2.jpg

「科学」と「学習」の流れを汲んでいるだけあって、各解説に4コマ漫画を加え、敷居を低くしてあります右斜め下

この本で紹介されている、ほとんどの定理・法則は、実生活にはあまり関係しません。

アルキメデスの原理
フィボナッチ数
ラプラスの悪魔
一般相対性理論
不確定性原理

などなど。
聞いた事はあるけど、詳しくは知らない…という定理・法則に関して、1項目2ページ程度で分かりやすく解説してくれていますぴかぴか(新しい)

実生活に関係なさそうな法則ばかりとは言え、コンピュータやゲームプログラマに関係しそうなものが無いのか探してみると…あったexclamationありましたexclamation×2

ピタゴラスの定理
 ゲームプログラムでは、2点間の直線距離を求めるのに、よく使いますよね。

ムーアの法則
 半導体の集積度の進化に関する法則ですので、コンピュータに関係していると言えますよね!

ハインリッヒの法則
 「1つの大事故の背後に、29件の小事故があり、更にその背後には300件のヒヤリとさせられる事故がある」
 という内容の法則です。
 元々はアメリカの保険会社で用いられていた法則ですが、航空関係の事故を防ぐためにも応用されたそうです。
 プログラムのバグを防ぐことにも応用…できませんかね…??

パーキンソンの法則
 「公務員の数は仕事の量とは関係なく、一定の割合で増加する」
 という内容の法則です。
 これが何故コンピュータに関係するのかとお思いでしょうが、次のような解釈で使われるケースもあるそうです。
 「新たに大容量ハードディスクを購入すると、その容量一杯近くまで情報が増え続けるグッド(上向き矢印)
 あなたも、身に覚えがありませんか?

***

コンシューマゲーム機のメインメモリも、昔 2KB だった頃から比べると驚異的な容量(10万倍以上exclamation)になっています。
にも関わらず、相変わらず「メモリが足りない、メモリが足りないふらふら」と言い続けている気がします。
まさに、パーキンソンの法則に当てはまっていると言えるのかも…。
ハードウェアの性能をギリギリまで引き出そうとするプログラマの性質が、その一因になっている事と思います。
そんな法則が、一般相対性理論などの法則と並べて紹介されている事で、全て身近に思えてくるから不思議ですわーい(嬉しい顔)

興味があれば、ご一読下さい。


posted by 管理人 at 12:46 | 書籍紹介

2011年04月07日

C++0xをかじり始めました。

お久しぶりです。みやじーです。

最近C++0xについて勉強し始めましたひらめき

C++0xについては詳しくはこちら・・・
http://ja.wikipedia.org/wiki/C%2B%2B0x

C++0xにはいろいろな拡張が含まれていますが、
VisualStudio2010や最新版のgccでは機能が一部対応され始めています手(チョキ)

個人的には 可変長引数テンプレート に注目しています。
何か面白そうな事が出来そうな予感がしますexclamation

また、メタプログラミングのための型特性ライブラリの追加導入により
テンプレート メタプログラミングがとても身近になると思います。

テンプレートメタプログラミングの参考書として・・・
http://www.amazon.co.jp/Modern-C-Design/dp/4894714353

Typelistと呼ばれる実行時には意味のなくなる型のコレクションを
使用してのプログラミングということで、初めて読んだときは目から鱗が落ちましたぴかぴか(新しい)
読んだことのない方は、是非一読してみることをお勧めいたします。

また、他にお勧めの本として(テンプレートについての詳細な情報が載っています)・・・
http://www.amazon.co.jp/dp/4798120391
http://www.amazon.co.jp/dp/4798119229

プログラミング言語やゲームの開発手法も日々進化を遂げています。
しっかりと、キャッチアップしていきたいです手(グー)

posted by 管理人 at 21:53 | 書籍紹介

2011年02月14日

数学的思考の技術


多くの場面において、世の中はゲーム的である。
そして、ゲーム的な状況は最も数学的思考が実践的に生かせる場である。


先日、こんな書き出しで始まる本本を見つけ、即購入を決意しました。
現実世界をゲーム的だと言うのなら、ゲームの中はなおさらゲーム的な状況ですから、数学的思考が生かせるはずひらめき
…と短絡的に考えたナカムラです。
今回は、この本の紹介をさせて頂きます。

2011_0214_0.jpg

そもそも、数学的思考を実践的に生かすとは、どういう事なんでしょうか?
この本の中で紹介されていた例は、次のようなものです。

*

クラブ、あるいは会社の仲間でお金を出し合って加湿器を共同購入するとします。
普通は、共同購入する事に賛同してくれた人たちで、金額を頭割りして支払いする事と思います有料
しかしここはあえて、
「それを必要としている度合いに応じて金額を決める」
という事にしてみましょう。
加湿器をものすご〜く必要としている人には、金額を多めに出してもらい右斜め上
あまり必要としていない人は少なめの出費で済むようにしよう右斜め下という訳です。
これが可能なら、本当の意味で公平になりますよね。
しかし「加湿器を必要としている度合い」なんて客観的に計れないし、嘘をつくことだって可能です。

「ホントは加湿器をすっごく欲しいけど、できれば少ない出費で済ませたいexclamation
 自分より加湿器を欲しがってる人がいれば購入するだけの金額は集まるだろうし、
 少ない金額を提示しようかな〜ドコモポイント

なんて考える人を、なんとかなくしたい。
自分が考える金額を正直に言うのが最も得なんだよ、というルールを作りたい。
そんなルールって、どう作ればいいのか?

なんて問題に対する回答例も載っていますぴかぴか(新しい)
残念ながら回答がいささか複雑ですので、ここに載せて説明する事は省きます。
このルール作りの根底に流れている作者の考えとして、

「人に本音を言わせる(この場合、加湿器を必要としている度合いを引き出す)には、それなりのコストが必要」

というものがあります。
これをヒントに、みなさんも考えてみて下さい手(グー)

*


この本には他にも、次のような事柄を数学的思考を用いて説明しようとしています。

・5万円か3万円、必ずどちらかが当たるクジをいくらで譲れるか?
・機能性に溢れた都市設計によって、犯罪都市が生まれてしまう謎
・多重債務に陥る人は、どのように生まれるのか?
・人にルールが必要な理由

内容が気になる人は、是非読んでみてはいかがでしょうか?
難しい数式なんて出てきませんので、ご安心をわーい(嬉しい顔)

posted by 管理人 at 19:08 | 書籍紹介

2011年02月04日

正義

こんにちは、えーきちです。

最近「007/ブラッドストーン」というゲームをプレイしましたゲーム
その名の通りあの映画「007」を題材にしたゲームですが
映画の方の「007」は、残念ながら制作会社の財政難により
新作はなかなか難しいものとなってしまっていますもうやだ〜(悲しい顔)

古くから続くシリーズの危機を、ゲームを使って繋げることで
「007」の火を絶やさずに後世に残していく。
ゲームの新しい役割に気付かされた1本でしたひらめき

***

さて、最近久々にハードカバーの本本を読み終わりました。
これからの『正義』の話をしよう」という政治哲学の本で
去年5月に発売されたものらしいですが、年末に書店で平積みされていたので何となく購入。
先月にかけて少しずつ読み進めていました。

著者のマイケル・サンデル氏はハーバード大学の教授で
同氏の講義"Justice"は非常に人気ぴかぴか(新しい)があるそうです。
そのあまりの人気ぶりにハーバード大学の講義で初のテレビ放送TVが行われ
日本でもNHKで12回にわたりその講義の内容が放送されました。

その講義の内容を1冊の本にまとめたものの訳書が
この「これからの『正義』の話をしよう」という本です。


内容は、いくつかの章に分かれており
今日まで、様々な哲学者が説いてきた考えを紹介しつつ
最後にサンデル氏自身の主義を説明しています。

各章では、メインテーマとなる哲学理論とそれが実際に問題となった事例を元に
その理論を提唱した哲学者の考えや目的をわかりやすく解説しており
イマニエル・カントやジョン・スチュアート・ミルなど
教科書に載るような有名な哲学者も出てきます。


さらに、プログラミングに全く関係がないと思って読み進めていると
意外なところで哲学とプログラミングの共通点を見つけましたひらめき

私の場合、プログラムに何らかの機能を追加する時に
いきなりコーディングから始めることはせず
フローチャートなどを用いて論理的な設計を行うことが多いですメモ

哲学でも、同じような「論理的思考」を用いて
「『正義』や『善』とは何を持って定義されるものか」というお題を
各哲学者が独自の解釈で展開し、順序立てて説いています。


高校の倫理の授業以来初体験となるジャンルでしたが、思っていたより理解しやすく
哲学の勉強にはもちろん、論理的思考を鍛えるにも良い本だったのではないかと思います。

「深く思索に耽りたいexclamation」という方、ぜひご一読ください手(パー)

posted by 管理人 at 17:42 | 書籍紹介

2011年01月26日

号泣してください

少しずつ日暮れが遅くなっていますが、まだまだ寒い日が続いています。
体調管理は万全ですか?
「オクダ」です。
インフルエンザが流行の兆しを見せています。
手洗い、うがい、マスクなど予防を怠らないようにしたいですね。

さて、今回は以前ブログで話題にした本を紹介したいと思います。
あまりに感動して父親に贈った本です。

以前は技術書や自己啓発本ならともかく、小説のように好みや考え方などで大きく捉え方の違う書籍を会社のブログで紹介するのは「おせっかい」だし、ブログの趣旨ではないと考えてあえて紹介しませんでした。
では、どうして今回紹介しようと考えたのか。


業界を代表するゲームクリエイタ−で私も大変尊敬している
コナミデジタルエンタテインメントの小島秀夫監督のつぶやきを目にし、
考え方を変えたのがきっかけでした。
監督も最近この本を読まれ、号泣されたようで他の人も是非読むようにとお勧めされていました。
そして、若い人にこそ読んで欲しいとも言われていました。
それに対して「読んで泣きました。」「良かった。」という反応があり、輪が広がっていく様を見る事が出来ました。
その後監督は、同じ作者の作品をいくつか読まれたようで、尊敬する監督と同じ物語を共有できた喜びと、この物語が多くの人に読まれ、感動が広がっていく事がとてもうれしく思いました。
実際、私自身は父親に本を贈るだけでなく、何人かに本を薦めました。
このブログはゲーム業界を目指す若い人たちに読んでいただく事が多いのですが、
そんな方々にも是非読んでいただきたいと考えるようになりました。

前置きが長くなりましたね。
その本は『永遠の0(ゼロ)』です。
文庫版もあります。
今ならまだ平積みになっている書店もあります。

私事ですが、私の実の祖父は戦死したのですが、最近までその事を知りませんでした。
祖父だと思っていた人物は彼の弟でした。
この物語の主人公も似たような境遇で、実の祖父がどのような思いで特攻する事になったのかを調べる物語です。
境遇が似ている事もあり特別な思いで読んでいましたが、そういった部分を抜きにしても涙なしには読めない物語です。
是非号泣してください。

そして、生きる事、死ぬ事、愛するという事、戦争という行為、あらゆることに思いを巡らせて欲しいです。
重い題材を扱っていますが、読み終わった後は清々しい気持ちになりますし、頑張って生きていこうという気持ちになると思います。




posted by 管理人 at 19:22 | 書籍紹介

2011年01月12日

文章力の基本

こんにちは、ナカムラです。

プログラム経験のあるあなた、今までどんな言語を使ったことがありますか?
最もよく使う言語を思い浮かべて下さい。
C++?
Java?
Ruby?
Python?
いえいえ、最も使用頻度が高いのは日本語じゃないですかexclamation&question
プログラム言語とは違って、間違った使い方をしていても明示的な警告は発生しませんから、自ら注意する必要がありますexclamation

日常会話で少々間違った文章の使い方をしていても、笑い話で済むケースが多いでしょうわーい(嬉しい顔)
ですが、仕事上の文章が間違っていたり、誤解を招く表現をしていたりすると、思いも寄らぬトラブルの原因にもなりますふらふら

そんなトラブルを招く前に、次の本本を読んでみてはいかがでしょうか?


2011_0112_book.jpg
簡単だけど誰も教えてくれない77のテクニック
文章力の基本


本のタイトル通り、文章を書くにあたっての、基本的な技術が紹介されています。
77のテクニック全てをご紹介するわけにはいきませんが、中でも特に私が共感を覚えたものをピックアップ致します。


読み手に頭を使わせない
「最後まで読んでもらえれば分かるはずだ」という想定で書かれた文章よりも、
「考えなくても、読むそばからスラスラ理解できる文章」を目指すべき。

この考えには本当に共感できますぴかぴか(新しい)
小説などの創作物では、読み手に考える余地を残すことによって、想像する楽しさを与えることが出来ますグッド(上向き矢印)
しかし、業務上の説明文で想像の余地を残すことは、余計な誤解や手間を生む要因にしかなりませんバッド(下向き矢印)


あなたの説明文、読み手の力量をあてにした内容になっていませんかexclamation&question
これは採用応募作品のドキュメントやソースコードにも、しばしば見受けられます。

この本の中にも書かれているのですが、日本人は元々、聞き手が「一を聞いて十を知る」力量を持っているかのように振る舞う事が礼儀であるかのように考える文化があり、事細かに説明するとかえって失礼では?と思いがちです。
ましてや応募作品をプロに見てもらうとなると、相手の力量が自分よりも遙かに上であることは、容易に想像できるでしょう。
だからと言って、
「相手はプロだから、コメントが無くても、ソースコードを見てもらえればわかるはずドコモポイント
…という考えはよくありません。
プロとはいえ、ソースだけを手がかりに中身を理解するのは手間が掛かります。
プロでさえ(というよりも、プロだからこそ)コメントもちゃんと記述しますし、使用方法の説明が必要な場合には、ドキュメントも残すのですメモ
それにより、読み手の力量に左右される事無く、相手の理解を得ることを目指しています手(グー)


*

この本の中には他にも、
・主題を早く登場させる。
・修飾語は、被修飾語の直前に置く。
・省略された主語を変えない。
など、意識していないとうっかり忘れてしまいがちなテクニックも紹介されています。
就職作品提出前に、一度読んでみてはいかがでしょうか?わーい(嬉しい顔)


posted by 管理人 at 12:54 | 書籍紹介