プロダクティブ・プログラマ

―プログラマのための生産性向上術

[cover photo]
TOPICS
Programming , Business/Essay
発行年月日
PRINT LENGTH
284
ISBN
978-4-87311-402-6
原書
The Productive Programmer
FORMAT
PDF
Ebook
2,860円
Ebookを購入する

生産性の高い人はそうでない人に比べ、同じ時間でより多くの仕事をし、より多くの成果を上げることができます。本書は、ソフトウェア開発におけるプログラマの生産性についての書籍です。プログラマ個人が、どのような意識を持ち、どのようなツールを使えば、単位時間当たりの仕事量を増やすことができるかについて示します。本書は2部からなり、「I部 技法編」では、作業を自動化するためのツールや集中を維持する方法など、開発に必要な作業の生産性を向上するテクニックとツールを解説します。「II部 実践編」では、テスト駆動開発や、メタプログラミングなど、生産性を高めるために取り入れるべき考え方や習慣について学びます。 ThoughtWorks社でアーキテクト、コンサルタントをつとめる筆者が、自らの経験に基づきプログラマの生産性向上の秘訣を示す本書は、「達人プログラマ」を目指すプログラマ必携の一冊です。

目次

序文
まえがき
1章 はじめに
    1.1 本書を書いた動機
        1.1.1 URL補完機能
    1.2 この本はどんな本なのか
        1.2.1 I部:技法編(生産性向上の原理)
        1.2.2 II部:実践編(生産性向上の哲学)
    1.3 ここから先の読み方
I部 技法編
2章 加速−Acceleration
    2.1 発射台−Launching Pad
        2.1.1 ランチャー
        2.1.2 Windowsの[スタート]メニューにランチャーを作成する
        2.1.3 Mac OS X
        2.1.4 Linuxでの起動
    2.2 加速装置−Accelerators
        2.2.1 OSレベルの加速装置
        2.2.2 クリップボード
        2.2.3 履歴の記録
        2.2.4 元の場所に戻る
        2.2.5 コマンドプロンプトへの即時切り替え
        2.2.6 マウスよりキーボード
        2.2.7 ナビゲーションより検索
    2.3 マクロ−Macros
        2.3.1 マクロレコーダ
        2.3.2 キーマクロツール
    2.4 2章のまとめ
3章 集中−Focus
    3.1 気を散らす要因を排除する
        3.1.1 気が散るのを防ぐコツ
        3.1.2 不要な通知をオフにする
        3.1.4 「沈黙の時間」を作る
    3.2 ナビゲーションより検索
    3.3 正規表現
    3.4 ルートビュー−rooted view
        3.4.1 Windowsのルートビュー
        3.4.2 Mac OS Xのルートビュー
    3.5 特殊なコマンドラインを作る
    3.6 プロジェクトのファイルをショートカットを使って1箇所にまとめる
    3.7 モニターを複数にする
    3.8 仮想デスクトップで作業スペースを独立させる
    3.9 3章のまとめ
4章 自動化−Automation
    4.1 車輪の再発明をしない
    4.2 ローカルへキャッシュする
    4.3 Webサイトとのやりとりを自動化する
    4.4 RSSフィードを活用する
    4.5 ビルド以外の作業の自動化にAntを使う
    4.6 日常的な作業の自動化にRakeを使う
    4.7 Webアプリケーションの操作記録にSeleniumを利用する
    4.8 例外情報抽出の自動化にBashを使用する
    4.9 バッチファイルではなくWindows PowerShellを使う
    4.10 Automatorを使って古いダウンロードファイルを削除する
    4.11 Subversionをコマンドライン上で使いこなす
    4.12 SQLファイルの分割ツールをRubyで作る
    4.13 自動化すべきか否かの検討
    4.14 「ヤク毛刈り」をしない
    4.15 4章のまとめ
5章 正準化−Canonicality
    5.1 DRYなバージョン管理
    5.2 ビルドマシンの正準化
    5.3 間接参照
        5.3.1 Eclipseプラグインの管理
        5.3.2 JEditマクロの同期
        5.3.3 TextMateのバンドル
        5.3.4 設定の正準化
    5.4 仮想化の利用
    5.5 インピーダンスミスマッチの解消
        5.5.1 データマッピング
        5.5.2 マイグレーション
    5.6 DRYなドキュメント
        5.6.1 SVN2Wiki
        5.6.2 クラス図
        5.6.3 データベーススキーマ
    5.7 5章のまとめ
II部 実践編 
6章 テスト駆動設計−Test-Driven Design
    6.1 テストは徐々に複雑に
        6.1.1 TDDでのユニットテスト
        6.1.2 評価指標
        6.1.3 設計変更が容易
    6.2 コードカバレッジ
7章 静的解析−Static Analysis
    7.1 バイトコード解析
    7.2 ソース解析
    7.3 Panopticodeによるコード評価
    7.4 動的言語の解析
8章 オブジェクトを「良き市民」に−Good Citizenship

    8.1 カプセル化が不十分
    8.2 コンストラクタ
    8.3 staticメソッド
    8.4 オブジェクトの犯罪行為
9章 YAGNI
10章 古代の哲学者の教え
    10.1 アリストテレスの本質的特性と偶発的特性
    10.2 オッカムの剃刀
    10.3 デメテルの掟
    10.4 過去の教訓
11章 権威を疑う
    11.1 怒れるサル
    11.2 流れるようなインターフェイス
    11.3 アンチオブジェクト
12章 メタプログラミング
    12.1 Javaとリフレクション
    12.2 GroovyでJavaをテストする
    12.3 流れるようなインターフェイスを書く
    12.4 メタプログラミングの利点
13章 Composed MedhodパターンとSLAP
    13.1 Composed Methodパターンの実例
    13.2 SLAP
14章 多言語プログラミング−Polyglot Programming

    14.1 過去と現在
        14.1.1 Javaの誕生と成長
        14.1.2 Javaの暗黒面
    14.2 今後、どこに、どのようにして向かうのか
        14.2.1 現状の多言語プログラミング
        14.2.2 プラットフォームはそのままで言語を変える
        14.2.3 Jaskellの使用
    14.3 Olaのピラミッド
15章 理想のツールを探す−Find the Perfect Tools
    15.1 理想のテキストエディタを求めて
        15.1.1 Neal Fordの「理想のエディタ」に必要な機能のリスト
    15.2 理想のエディタの候補
    15.3 仕事に合わせてツールを選択する
        15.3.1 SQLファイルの分割ツールをテストに耐え得るものに書き直す
        15.3.2 振る舞いをコードに留める
    15.4 不適切なツールを拒否する
16章 まとめ:対話の継続
付録A コマンドラインを使いこなす
    A.1 Cygwin
    A.2 コマンドライン
    A.2.1 ヘルプ