達人プログラマー 読書ノート 3/3

著者:

Andrew Hunt, David Thomas

訳者:

村上雅章

出版社:

株式会社ピアソン・エデュケーション

発行年:

2000 年

ISBN:

978-4-89471-274-4

第 7 章 プロジェクトを始める前に

  • まず要求を決定する (p. 205)

  • <遅くまで放っておくのはもっとまずい> (p. 205)

要求の落とし穴

  • <要求とは達成する必要のある何かについて述べたものである> (p. 206)

    記述の形を取るというのがポイントか。

  • ユースケースの概念は要求を記録するために生まれたものらしい (p. 208)

  • 要求ドキュメントには <過度の記述をしてしまわないようにする> (p. 212)

  • <用語集が幅広くアクセス可能でなければならない> (p. 214)

  • <自分が作成しているソフトウェアを使うことができますか?> (p. 215)

    この質問の答えが YES だったためしがない。

不可能なパズルを解く

  • 枠とか制約とかいう言葉がよく出てくる。

  • <答えはどこか他の所にある> (p. 216)

仕様の罠

  • 不明な点を削除していく作業

  • 潮時

  • <言語自体の表現能力に問題がある> (p. 221)

  • <過度に規定された設計があると勝手に変更することができないため、さまざまな機会を逸してしまうことになる> (p. 222)

  • <生死に関わるようなシステムでは、詳細化した仕様書が適切なのは明らかです> (p. 222)

丸と矢印

このセクションのタイトルは秀逸だなあ。

  • <こういったダイアグラムはエンド・ユーザーにとって理解しがたいもの> (p. 224)

  • <新たなツールや方法論を採用するコストを低く見積もってはなりません> (p. 225)

第 8 章 達人のプロジェクト

プロジェクト論。読んで得られた知見が現場で生かせないのが辛い。

達人チーム

ここまでの本書の議論を、チームという視点で切っていく。

  • <品質を気にかけないチームに配属されると、どんなに優秀な開発者でも面倒な問題を修正する情熱を維持しづらく感じるようになる> (p. 228)

  • <個としてのチームが他の世界と情報交換し合わないといけないことは明らか> (p. 229)

  • <一丸となって仕事を行うための世界観もチームに与えることができる> (p. 230)

    そんなものは要らん。

  • <日付の取り扱いについて照会するのであれば、メアリーに聞けば良いのです。データベース・スキーマの問題であればブレッドです> (p. 230)

  • 分析、設計、コーディング、テスト等の活動を <人工的に分割してしまうことは問題を発散させてしまうことにつながる> (p. 231)

  • <プロジェクトには、技術上と管理上の、少なくとも 2 つの「チーフ」が必要なのです > (p. 232)

どこでも自動化

  • <プロジェクトに関する繰り返し作業を自動化する必要があるのです> (p. 234)

  • <cron を使用することにより、バックアップ、夜間のビルド作業、Web サイトのメンテナンスの他、ありとあらゆる自動化可能な無人タスクをスケジューリングすることができるのです> (p. 235)

    職場が貧しいので、24 時間稼働する PC など認めてもらえないよ。

  • <IDE 単体では必要な自動化レベルの達成が難しい> (p. 235)

容赦ないテスト

このセクションだけ鉛筆で線を引いた箇所が妙に見当たらない。

  • <回帰テストとは、今回のテスト出力と以前の(あるいは既知の)値を比較するものです> (p. 245)

  • <ここで解説してきたすべてのテストは回帰テストとしても実行可能> (p. 245)

  • テストデータは <実世界のデータと作り込んだデータの 2 種類> (p. 246) だけが存在する。

    • 作り込んだデータは人工的に生成されたものであるため、何らかの偏りがあるはず (p. 247)

  • <GUI フロントエンドを含んだデータ処理アプリケーションでは、設計をきっちりと分離しておくことで、GUI を表示させることなくアプリケーション・ロジックをテストすることができるようになる> (p. 248)

  • <カバレージを 100% にする事を目的にしてはいけません> (p. 249)

  • <我々には自動化されたテストで見つかるようなバグを追いかけている暇は無い> (p. 251)

すべてはドキュメント

  • コードとドキュメントを同じモデルの 2 つのビューとして扱いたい (p. 252)

  • パラメータをどうしてもドキュメントにする必要があれば、<JavaDoc ツールが提案しているコメントのレベルが適切> (p. 253) である。

  • 各ソースファイルにはプロジェクト共通のコメントブロックを入れておく。<こういった文言が自動的に挿入されるよう、エディタを設定しておきましょう> (p. 254)

  • 実行可能ドキュメント (p. 255) という発想は面白い。

  • <多くの場合、同じドキュメントを異なった形式で表現する必要が出てくる> (p. 257)

    DocBook の話が出てくるが、これは使ってみると面倒だった。

付録 A

  • <達人プログラマーは常に学び続けなければならない> (p. 265)

  • <読書の効果は絶大です> (p. 266)

  • <コンピュータ関連の書籍は比較的高価なものが多いですが、注意深く選択すれば投資に見合った効果が期待できます> (p. 267)

  • <Emacs の学習曲線はほぼ垂直に近い> (p. 270)

付録 B

  • <詳細を無視できるから> (p. 285) 直交性が高いと言える。

  • <実際のところはオブジェクトを使用する方が、手続き型言語を使用するよりもシステムの直交性を低下させる危険性が高い> (p. 286)

    確かにそうだ。

  • <テーブル駆動型のパーサー> (p. 287)

  • <フラット・ファイルがこういったコンスタントのマスターとなる> (p. 292)

  • <また ab が同じ変数のエイリアスとなっていた場合、2 つ目の代入によって最初に格納していた値が上書きされてしまいます> (p. 298)

  • <うるう秒では 61 秒や 62 秒の場合があります> (p. 299)

    62 秒があるのは知らなかった。

  • 大抵の処理系では <ポインタが実際に有効なメモリーを指しているかどうかをチェックする方法がありません> (p. 300)

  • <サブクラス化というよりは委譲> (p. 314) <ウィンドウは Shape の一種 (is-a) ではありません。ウィンドウが Shape を保持している (has-a) のです> (p. 314)