Hatena::ブログ(Diary)

アガテナ

2011-04-04

『良いコードを書く技術』という書籍を執筆しました『良いコードを書く技術』という書籍を執筆しました。を含むブックマーク

『良いコードを書く技術』という書籍を執筆しました。発売日は4/12です

Amazonでは既に予約販売が始まっています。

良いコードを書く技術 ?読みやすく保守しやすいプログラミング作法 (WEB+DB PRESS plus)

良いコードを書く技術 ?読みやすく保守しやすいプログラミング作法 (WEB+DB PRESS plus)

WEB+DB PRESSに連載していた「良いコードへの道」をベースに大幅に加筆・修正して完成させました。もともと連載終了時から書籍化の話はあったのですが、形にするまでになんだかんだで1年以上かかりました時間はかかりましたが、テーマや切り口など実用的かつ楽しい本に仕上がったのではないかと思います。

内容は書名のとおり良いコードテーマしたプログラミングの本です

達人プログラマなら当たり前の良いコードの考え方を、初心者や中級プログラマ向けにできるだけわかりやすく解説しています。例えば「名前付け」「スコープ」といった基本的かつ重要な内容は1章をまるまる使って解説しています。

特に以下の方に読んでもらいたいと願っています。

4月ですので新人教育にもぜひご活用ください。

はじめにと1章がgihyo.jpサイトで立ち読みできます

公式ハッシュタグgoodcodeです

感想などを書いていただけると嬉しいです

また、Cacooを使って「良いコードの条件」をマインドマップ風にあげていく企画も実施です。ぜひ「あなたが考える良いコードの条件」を書きこんでみてください。

目次は以下です

1章〜2章では良いコード定義価値、良いコードを実現するための習慣などを紹介しています。

3章〜6章は基礎編です名前付け、スコープコードの分割と集約といった基本的な内容です

7章〜8章では良いコードを実現する上で後回しになったり省略されがちな、パフォーマンスユニットテストといった内容を扱っています。

9章〜11章は応用編です抽象化メタプログラミングフレームワークといった初心者には少し難しく感じる内容をわかりやすく解説しています。

□第1章 良いコードとは何か
■1.1	良いコード定義価値
■1.2	良いコード定義
■1.3	良いコード価値
■1.4	代表者の声
■1.5	まとめ

□第2章 良いコードを書くための5つの習慣
■2.1	良いコードは1日にしてならず
■2.2	習慣その1 読む──コードを読んで読んで、読みまくれ!
■2.3	習慣その2 書く──とにかくコードを書きましょう
■2.4	習慣その3 道具を磨く──使う道具は常に磨いておこう
■2.5	習慣その4 知る──良い知識を得よう
■2.6	習慣その5 聞く──アウトプットと人からフィードバックでさらなる成長を
■2.7	まとめ

□第3章 名前付け
■3.1	良いコードは良い名前から生まれる
■3.2	代表者の声
■3.3	良い名前の条件
■3.4	変数名
■3.5	メソッド名
■3.6	クラス名
■3.7	パッケージ/ネームスペース名
■3.8	プロジェクト名
■3.9	まとめ

□第4章 スコープ
■4.1	スコープ意識していますか?
■4.2	スコープって何?
■4.3	スコープを小さくして覚えておくことを減らそう!
■4.4	代表者の声
■4.5	変数のスコープ
■4.6	メソッドスコープ
■4.7	クラススコープ
■4.8	キャストを使用した可視性の制御
■4.9	より大きな粒度スコープ
■4.10	まとめ

□第5章 コードの分割
■5.1	適切な長さにコードを分割する
■5.2	なぜコードを分割するのか
■5.3	代表者の声
■5.4	2つの方向からの分割
■5.5	お題 クライアントXMLを返すWeb API処理を分割
■5.6	ステップ1 ベタコードで書いてみる
■5.7	ステップ2 共通処理メソッド抽出して分割する
■5.8	ステップ3 処理単位で分割する
■5.9	ステップ4 状態を持つ処理クラス抽出して分割する
■5.10	まとめ

□第6章 コードの集約
■6.1	コードの重複は悪
■6.2	代表者の声
■6.3	メソッド抽出してまとめる
■6.4	継承でまとめる
■6.5	ユーティリティクラスにまとめる
■6.6	サービス層にまとめる
■6.7	オブジェクトにまとめる
■6.8	定数にまとめる
■6.9	まとめ

□第7章 コードパフォーマンス
■7.1	パフォーマンス意識していますか?
■7.2	代表者の声
■7.3	パフォーマンス計算量で決まる
■7.4	パフォーマンスチューニングの手順
■7.5	アルゴリズムの選択以外のパフォーマンスチューニング
■7.6	パフォーマンスチューニングの指針
■7.7	まとめ

□第8章 ユニットテスト
■8.1	テストはお好きですか?
■8.2	ユニットテストって何?
■8.3	代表者の声
■8.4	ユニットテストの効能
■8.5	お題 Webアプリケーションセキュリティテスト
■8.6	ステップ1 データベーステストデータを登録する
■8.7	ステップ2 画面の実装
■8.8	ステップ3 画面のユニットテスト(正常系)
■8.9	ステップ4 画面のユニットテスト(異常系)
■8.10	ユニットテストの指針
■8.11	まとめ

□第9章 抽象化
■9.1	抽象化プログラミングのパワーを最大化する
■9.2	配列/コレクションって何?
■9.3	配列/コレクションを利用した抽象化とは?
■9.4	代表者の声
■9.5	お題 画像ファイルの一覧を表示するWebアプリケーション
■9.6	ステップ1 ベタコードで書いてみる
■9.7	ステップ2 可読性を高めるためのメソッド抽出
■9.8	ステップ3 関連するデータデータ構造を整理
■9.9	ステップ4 配列/コレクション化して抽象化
■9.10	抽象化の指針
■9.11	まとめ

□第10章 メタプログラミング10.1	プログラミングプログラムする
■10.2	代表者の声
■10.3	メタプログラミングって何?
■10.4	お題 Excelを使った外部DSL10.5	ステップ1 ベタコードで書いてみる
■10.6	ステップ2 メタデータExcelに移動する
■10.7	ステップ3 リフレクションAPIで変換ルールを動的に適用する
■10.8	まとめ

□第11章 フレームワークを作ろう
■11.1	フレームワークの動作原理を知る
■11.2	代表者の声
■11.3	お題 Webアプリケーションフレームワークを作ろう
■11.4	ステップ1 素のサーブレットで書いてみる
■11.5	ステップ2 フロントコントローラアクションクラスの導入
■11.6	ステップ3 ルーティング情報外部ファイル化
■11.7	ステップ4 よく使う処理を簡単に実行できるように共通化する
■11.8	ステップ5 フレームワークパッケージ化する
■11.9	まとめ

□付録A コードリーディングの方法
■A.1	コードには動的な読み方と静的な読み方がある
■A.2	お題 Apache Commons IOのコードを読む
■A.3	ステップ1 対象のコードダウンロード(チェックアウト)する
■A.4	ステップ2 静的な方法でコードを読む
■A.5	ステップ3 動的な方法でコードを読む
■A.6	まとめ

□付録B 解説付き参考文献
 
トラックバック - http://d.hatena.ne.jp/agt/20110404