Web系新卒っていうかゲーム開発者一年目が去年読んだ技術書 & ライブラリ

カタ氏(@hotchemi)が意識高い記事書いてたので、自分もまとめてみる。
文系学部生がSIerに入社してから読んだ本メモ - ギークに憧れて http://hotchemi.hateblo.jp/entry/2013/04/01/000844

自分Web系っていうかHTML5+Unity+AS3 のゲームガッツリ系+Webもやるって感じなので、最近の自己認識としてWebっていうよりはゲームプログラマな気がしている。
JSが多いのはHTML5ゲームの技術調査とかしてたからです。

書籍

7つの言語 7つの世界

7つの言語 7つの世界

一部情報が古いが、ClojureやIoについて書かれた貴重な本。自分が使ってる言語のパラダイムプログラミング言語全体で言えばほんの一部にすぎないということを、身を持って感じることができ、言語パラダイムの文脈で相対的に考えられるようになる。


すごいHaskellたのしく学ぼう!

すごいHaskellたのしく学ぼう!

たぶんいちばんやさしいHaskell入門本。ちゃんとまだ読み切れていない。
正確には、会社で最初のプロジェクトでHaskellを部分的に使ったため、これの原著の方を必死こいて読んでた。
Haskellをやると副作用についての考え方が変わる。今までの触ってきた言語がいかに危険なことをやれていたかわかって、胃が痛くなる。


リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

鉄板。どの章を読んでも心を打ち、そして今日書いた糞コードを思い出して胃が痛くなりますね?(胃が痛くならない奴は鉄人か自省が足りないかどっちか)
胃が痛くならないようになりたい。
とくにコメントについての章は賛否あるが一読して自分の中で考える余地を持っておくことを薦める。


入門Git

入門Git

Git力はプログラマとしてのコミュニケーション力である。エンジニアに限っては、口頭の連絡よりもよりコミットメッセージの方が遥かに意味がある。コミットメッセージはプログラマ文学。


JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス

JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス

中規模以上のJS書く人は読まないとだめ。それぐらい大事な本。内容については一部賛否両論があるが、JSerとして他のJSerに一番読んで欲しいのは末尾の Bad Parts の章。


ハイパフォーマンスJavaScript

ハイパフォーマンスJavaScript

主にJavaScriptのDOMのチューニングについて考えるの役だった。HTML5ゲーム開発者は読むといいと思う。便利な黒魔術も多いので心してかかるべし。


ステートフルJavaScript ―MVCアーキテクチャに基づくWebアプリケーションの状態管理

ステートフルJavaScript ―MVCアーキテクチャに基づくWebアプリケーションの状態管理

MVC構成について考える本。この本の著者がSpine.jsの作者。


JavaScriptパターン ―優れたアプリケーションのための作法

JavaScriptパターン ―優れたアプリケーションのための作法

JavaScriptのTIPSみたいに適当に欲しい機能を目次から引っ張るといいと思う。


Unityもやってたけど、Unityっていうよりかは既に組み上げられた巨大なC#ライブラリをがっつり書いてた。C#自体はJava+αのノリでなんとなく書ける。Javaのダサい面を拡張しまくって解決してて、良い言語だとおもう。


ActionScript Developer's Guide to Robotlegs: Building Flexible Rich Internet Applications

ActionScript Developer's Guide to Robotlegs: Building Flexible Rich Internet Applications

最近の仕事で使ってるAS3のライブラリ。妙に格好いいDCI機構がある。他のMVCライブラリも参考にしたらいいと思うんだけど、AS3自体が斜陽なので陽が当たらない…


ルールズ・オブ・プレイ(上) ゲームデザインの基礎

ルールズ・オブ・プレイ(上) ゲームデザインの基礎

遊びとは何か。ゲームデザインとは何か。その定義をアカデミックな資料を引用しつつも、ゲームについて豊富な例を引きながら解説する。
ゲームのコアのメカニクスメカニクスの上に生まれるゲーム性、そしてユーザーの背後にある文化をからめて考察する章がとてもよかった。下巻が未翻訳で出そうにないのが辛い。

読んだコード

あくまで「使った」、ではなく、「読んだ」。でもヘヴィに使うライブラリを必然的に読んでた感じ。

wise9/enchant.js · GitHub https://github.com/wise9/enchant.js
HTML5ゲームフレームワーク。イベントディスパッチやアセットのロード周りは参考にさせてもらった。

documentcloud/backbone · GitHub https://github.com/documentcloud/backbone
JSのMVCフレームワーク。オブザーバーの実装とViewのイベントバインディングが渋い。


documentcloud/underscore · GitHub https://github.com/documentcloud/underscore
関数型的な関数群。関数型言語を知ってるとすごい楽しく読める。最近だったら軽量版のlodash読むほうがいいらしい。


jquery/jquery · GitHub https://github.com/jquery/jquery
ふざけんなと思いながらJSの黒歴史を知ることになる。正直キレそうになるコードが多々あるが、歴史の重みを感じるとしょうがなくも感じる。綺麗な実装読みたけりゃzeptoだったのでは、とr7kamura に言われた。そうかも。


fastladder/fastladder · GitHub https://github.com/fastladder/fastladder
Livedoor ReaderOSS実装。絶賛リファクタリング中。polyfillが大量でmalaさんのテクニックと思考を追う感じになってる。


jashkenas/coffee-script · GitHub https://github.com/jashkenas/coffee-script
ご存知CoffeeScript。パーサジェネレータからAST、構文木から意味解析でノード実装とクロージャ判定の実装までだいたい読みきった。辛いのでもっとモダンな実装(CoffeeScriptRedux)読むといいとおもう。src/rewriter.coffeeの関数適用パターンマッチに暗黒面を感じた。


たぶん自分は Jeremy Ashkenas 信者なんじゃないかなっていうのは感じる。(coffee, underscore, backbone)