【2013年】新人プログラマが読むといいもの

隣のエンジニアが新人プログラマに読んでもらえるといろいろ捗りそうな書籍を書いていて、自分も影響を受けて書いてみた。

「読むといいもの」なので本に限らず Web サイトも取り上げました。

最初の一冊、もしくは一冊だけ読むとしたら

達人プログラマー―システム開発の職人から名匠への道

達人プログラマー―システム開発の職人から名匠への道

  • 作者: アンドリューハント,デビッドトーマス,Andrew Hunt,David Thomas,村上雅章
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2000/11
  • メディア: 単行本
  • 購入: 42人 クリック: 1,099回
  • この商品を含むブログ (341件) を見る

「いい加減な言い訳よりも対策を用意すること」「DRY―Don't Repeat Yourself (繰り返しを避けること)」「仮定せずに、証明すること」「あなたは完璧なソフトウェアを作ることができない」などの長年の経験で得られる貴重な知見が書かれたチートな一冊。

しかも説教臭くなく、ユーモラスに ( ←重要 ) 具体的解決策を語っています。

バージョン管理、テスト、自動化の重要性に気づかせてくれます。

新人から達人への一歩を踏み出すのに最適の書。

バージョン管理

Git 一択。

1.8 のまとまった情報がないので 1.7.2.2 ベースの Pro Git を紹介しますが、古い情報は基本 NG。

古い情報でハマるのは時間の無駄。これに限らず日本語訳は便利だけど古いことがあるので注意。ただし、この Pro Git の英語版も 1.7.2.2 なんだよね。

Git ホスティングに GitHub が有名だけど、非公開なリポジトリがほしければ Unfuddle があります。

リポジトリブラウザに tig も便利。

テスト

レガシーコード改善ガイド (Object Oriented SELECTION)

レガシーコード改善ガイド (Object Oriented SELECTION)

  • 作者: マイケル・C・フェザーズ,ウルシステムズ株式会社,平澤章,越智典子,稲葉信之,田村友彦,小堀真義
  • 出版社/メーカー: 翔泳社
  • 発売日: 2009/07/14
  • メディア: 大型本
  • 購入: 45人 クリック: 673回
  • この商品を含むブログ (141件) を見る

新人の仕事といえばクソなコードの引き継ぎだよね。

プログラムを引き継いだら、まずやるべきことはテストを書くこと。

もしくは新たにプログラムを書く仕事もあります。

自分の書いたコードが新たなクソにならないためにもテストを書きましょう。

テストファーストや TDD はとりあえず置いておき、とにかくテストを書きましょう。

自動化

継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化

継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化

544 ページと分厚い本。

継続的インテグレーション ( CI ) から更に進んで、リリースも自動化する試み。

Amazonは1時間に最大1000回もデプロイするそうですよ。

Jenkins 導入が面倒なら GitHub と連携する Travis CI が便利。

「自動化」は CI やデリバリー以外にサーバ構築も含まれます。

もし、サーバを扱うならこの本も。キーワードは DevOps。

入門Chef Solo - Infrastructure as Code

入門Chef Solo - Infrastructure as Code

なんでも自動化しましょう。

綺麗なコード

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

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

「コードは他の人が最短時間で理解できるように書かなければいけない」をコンセプトに書かれた本。

だから他人のために

details  = request.POST.get('details')
location = equest.POST.get('location')
phone    = request.POST.get('phone')

のように = で整列させる ( EmacsVim なら align を使えば整形は簡単 )。

それに整列したことで r 抜けのスペルミスも気づきやすいし。

エディタ

Emacs実践入門 ?思考を直感的にコード化し、開発を加速する (WEB+DB PRESS plus)

Emacs実践入門 ?思考を直感的にコード化し、開発を加速する (WEB+DB PRESS plus)

Vimテクニックバイブル ?作業効率をカイゼンする150の技

Vimテクニックバイブル ?作業効率をカイゼンする150の技

どちらかを使いましょう。

どちらを使うかは職場で聞ける人がいる方で。

秀丸ディタ派しかいなかったり、半々で迷うなら Vim 。サーバには Emacs がなく、Vim しか入っていないことがあるため。

EmacsVim の設定は id:yuroyoro さんの https://github.com/yuroyoro/dotfiles を使うといいですよ。

あと、

も使いましょう。いろいろと捗ります。

mosh はサーバにも入れないといけないので新人プログラマには立場的に難しそうなので外しました。

データベース

Webエンジニアのための データベース技術[実践]入門 (Software Design plus)

Webエンジニアのための データベース技術[実践]入門 (Software Design plus)

モバゲーを支えている人たちが書いた本。

正規化やインデックスといったデータベース全般の話から、クエリログの見方やチューニング、ハードウェアなど運用もカバーしています。

MySQLソースコードを追ってみよう」という章も。

ハッカーと画家 コンピュータ時代の創造者たち』で、他人の本を読まない小説家や、他人の音楽を聴かない音楽家がいないように、プログラマソースコードを読むことを勧めています。

MySQL のソースはレベル高すぎなので、自分の使っているライブラリから読むといいですよ。

セキュリティ

体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践

体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践

Web サービスで気をつけるべきセキュリティの決定版の本です。

IPA の『安全なウェブサイトの作り方』もどうぞ。

デザイン

ノンデザイナーズ・デザインブック [フルカラー新装増補版]

ノンデザイナーズ・デザインブック [フルカラー新装増補版]

使いやすくて見やすい UI を作りたいよね。

あと、同じパワポを使った資料でもなんか綺麗な人っているよね。

その「なんか」を科学したのが本書。

あと、Web サイトを作るなら Bootstrap を使うとお手軽にいい感じのものが作れます。

それと、プログラマ同士ならバイナリなファイルを作らず、テキストで作ろう。

プレゼン・ツールならこれとか。

あらゆるドキュメントは Markdown で書くのがオススメ。

GitHub もはてなブログも Makrdown に対応しているし、Redmine も Markdown のプラグインがある。

いろいろ

隣のエンジニアと雑談していて、よく出る雑多なキーワードとか。

何かプログラムの調べ事は Stack Overflow に辿り着き、便利なツールや技術的小ネタは Qiita がいい感じ。

お金がまだ余っているなら

プログラマが知るべき97のこと

プログラマが知るべき97のこと

職場に尊敬できる人や、ロールモデルがいないなら、この本で出会えます。

詳説 正規表現 第3版

詳説 正規表現 第3版

SQL 同様、難しいことをやろうとすると複雑だけど、ほとんどのことは基本的な組み合わせで出来る正規表現

正規表現を知っておくと Web スクレイピングや、コードの一括書き換えなど世界が広がります。

リファクタリング―プログラムの体質改善テクニック (Object Technology Series)

リファクタリング―プログラムの体質改善テクニック (Object Technology Series)

  • 作者: マーチンファウラー,Martin Fowler,児玉公信,平澤章,友野晶夫,梅沢真史
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2000/05
  • メディア: 単行本
  • 購入: 94人 クリック: 3,091回
  • この商品を含むブログ (296件) を見る

レガシーコード改善ガイド (Object Oriented SELECTION)』か、こちらにするか悩んだ本。

どちらも言っていることはテスト重要。

計算機プログラムの構造と解釈

計算機プログラムの構造と解釈

プログラムには Web サービスやソシャゲ以外の世界もあります。

アジャイルサムライ−達人開発者への道−

アジャイルサムライ−達人開発者への道−

「あとで読む」せず、ここまで読んでくれてありがとうございます。

現実的な話、Agile で DevOps で git で CI な職場なんて 1% 以下なんじゃないですかね。

1975 年に出版された『人月の神話』の内容をいまだ議題にしている所が大半じゃない?

Code for America ならぬ Code for Company の参考になれば幸いです。

以上、耳が痛くなりながら書きました。あと、額にはブーメランが突き刺さっています。