@ledsun blog

無味の味は佳境に入らざればすなわち知れず

2年目プログラマにおススメする5冊

プログラマは勉強し続ける職業です。本を読みましょう。

誰に?

対象とする人

  • 仕事でWebアプリケーションの一部を作ったことがある
  • 仕事でSQLを書いたことがある

対象としない人

  • 一人でWebアプリケーションを作れる
  • DBの論理設計ができる

5冊の本

  • デバッグルール
  • 楽々ERDレッスン
  • ノンデザイナーズ・デザインブック
  • プログラムはなぜ動くのか
  • 体系的に学ぶ 安全なWebアプリケーションの作り方

デバッグルール

プログラム自体は書けるのに依頼された仕事をこなすのに諸先輩に比べると時間が掛かることがあると思います。掛かっている時間の内訳をみると、プログラムを書くことより書いたプログラムが動かなかった時の原因調査に時間が掛かっていることが多いです。何故時間がかかるのでしょうか?エラーメッセージでググって上手い事解法を引き当てるか、コードを適当に変更して正しく動くことを祈るぐらいしかできないからです。エラーメッセージを見た時に真の原因がわかれば関係のないコードを修正して時間を無駄にすることはなくなります。

エラーの原因を調べる時は、

  1. 期待と違う動作を明確にする
  2. 原因を仮定し原因が特定できる修正を行う
  3. その修正と結果を記録する

記録しておくと再び同じ(ような)エラーに出会った時に、本当に同じかどうか確認できます。同じであれば前回と同じ修正をすればいいのです。これを続けるうちに、エラーのパターンが分かってきます。エラーメッセージを見ただけで原因が2~3個思いつくようになります。ググって正解を引く確率が高くなります。また先輩に質問する場合も、答えを得やすい質問ができるようになります。

といった内容がより丁寧に詳しく書いてあるのが本書です。残念ながら絶版です。翻訳もイマイチです。ですがほかにデバッグの基礎を扱った類書が無いので、古本があるうちに読んでおきましょう。

デバッグルール

楽々ERDレッスン

業務システム用のデータベースのテーブル設計は、業務データをテーブルに落とし込む作業です。この本には注文用紙やレシート、請求書など身近なものを例にして、業務データをテーブル設計に落とし込む方法が書いてあります。10人月程度の小規模な業務システムの受託開発をしているプログラマにはどんぴしゃの内容です。業務系アプリケーションを作る人は必読。

楽々ERDレッスン

ノンデザイナーズ・デザインブック

自分にはデザインセンスがないとあきらめている人向けです。Webアプリケーションの画面を作った時に「必要な項目は並べられるんだけど今一つパッとしないだよなぁ」と悩んでいる人向けです。そのレベルではセンスではなく技術が足りません。次のテクニックで、グッとしまった画面になります。

  1. グリッドを合わせる
  2. フォントや色を減らし
  3. 意図して余白を配置する

この本ではWebアプリケーションの話はありません。デザインの基礎の話です。それだけに

  • Wordで仕様書
  • パワポで提案書
  • チラシのデザイン
  • 帳票レイアウト

どれを作る時にでも使えます。「なんかダサい」から一歩進んですっきりデザインしましょう。
次のサイトでも本書に言及しています。

ノンデザイナーズ・デザインブック

体系的に学ぶ 安全なWebアプリケーションの作り方

Web上にはセキュリティ関連の資料があまりありません。
IPAでは体系的な資料*1を公開していますが詳細はカバーできていません。
個々の脆弱性を説明した記事もありますが、セキュリティはどれか一つの脆弱性に対応すればよいというものではありません。体系的な知識が必要です。

この本は体系的でかつ細かいところまでわかりやすい内容になっています。こんな本があることに感動しました。折角良い本があるのですから、しっかりとした知識を身に着けましょう。

体系的に学ぶ 安全なWebアプリケーションの作り方

プログラムはなぜ動くのか

今の言語はとても優秀なのでハードウェアを意識する必要がありません。コンピュータのことを知らなくてもプログラムは書けます。それでも速いプログラム書き、バグの原因を理解するにはハードウェアの知識が必要です。メモリよりハードディスクが遅い、スタックとヒープがある。ハードウェアやプログラミングの基礎を知ればより良いプログラムが書けるようになります。

プログラムはなぜ動くのか

*1:[http://www.ipa.go.jp/security/vuln/documents/website_security.pdf:title=安全なウェブサイトの作り方]