きのこ97

00-実践する、コツコツと、少しづつ

@shokos さんのブログのすすめからバトンを頂き、新卒準備カレンダー 2011春のエントリーをお届けします。自分がブログを書き始めたのは2007年です。ブランクはあるものの、業界経験は約11年ですから、まあ半分くらいの期間はブログを書いていることになりま…

97-ステートに注目する

「プログラマが知るべき97のこと」の97個目のエピソードは、ステート(状態)に関する話です。学習を怠っていないプログラマであれば、「ステート」という言葉を聞いて「ステートマシン(図)」と「ステートパターン」などを連想すると思います。このエピソー…

96-テストは正確に、具体的に

「プログラマが知るべき97のこと」の96個目のエピソードは、ユニットテストに関する話です。 先にも書いたとおり、ユニットテストにおいては、実装コードの「偶然の仕様」への合致を確認するのではなく、コードの動きが本来の要求に合っているかを確認するこ…

95-ペアプログラミングと「フロー」

「プログラマが知るべき97のこと」の95個目のエピソードは、ペアプログラミングに関する話です。ペアプログラミングとは、文字通り2人1組でプログラミングをする事です。1つの事を2人でやるのですから、倍の時間を費やすことになると感じ、そんな非効率…

94-リンカは魔法のプログラムではない

「プログラマが知るべき97のこと」の94個目のエピソードは、リンカに関する話です。最近はJavaを初めとしてコンパイルは行われてもモジュール(ライブラリ)は動的に解決されたり、スクリプト言語のようにそもそも動的に実行される言語が多くをしめており、…

93-エラーを無視するな

「プログラマが知るべき97のこと」の93個目のエピソードは、エラーとエラーハンドリングに関する話です。完璧なシステムを作ることはできません。時にはプログラム上の問題ではなく外的要因でも発生する可能性があるエラーは厄介なものです。しかし、エラー…

92-顧客の言葉はそのまま受け取らない

「プログラマが知るべき97のこと」の92個目のエピソードは、顧客とのコミュニケーションに関する話です。ソフトウェア開発に慣れてきて自分がどんなソフトウェアを作れるかという事が解ってくると陥りがちな事に、「顧客が要求を提示してくれない」と勘違い…

91-良いプログラマになるには

「プログラマが知るべき97のこと」の91個目のエピソードは、良いプログラマの条件に関する話です。きのこ本に書かれているエピソードは97+10本ありますが、大きくテストに関する話とプログラマとしてどうあるべきかという話がかなりの割合を占めています。こ…

90-コードを見る人のためにテストを書く

「プログラマが知るべき97のこと」の90個目のエピソードは、テストに関する話です。きのこ本には本当に多くのテストに関するエピソードがあります。テストの書き方、目的、心構えなど様々なテストに関する重要なトピックがありますが、このエピソードでは「…

89-関数の「サイズ」を小さくする

「プログラマが知るべき97のこと」の88個目のエピソードは、関数の「サイズ」に関する話です。このエピソードで述べられている関数の「サイズ」とは、コードの量という意味ではなく、そのコードが表現している数学関数のサイズという意味です。関数というも…

88-コードは生涯サポートするつもりで書く

「プログラマが知るべき97のこと」の88個目のエピソードは、コードを書く時の心構えに関する話です。このエピソードでは、きのこ本では97の大切な事が書かれているが、共通して言えることは「気持ちの持ち方、さらに言えば、取り組む態度」が重要であると書…

87-プログラマとテスターが協力してできること

「プログラマが知るべき97のこと」の87個目のエピソードは、テストに関する話です。テストは、ソフトウェア開発で避けて通れない重要なプロセスです。しかし、テストというものは予想以上に難しいものです。プログラミングにたくさんの手法や考え方があるよ…

86-WETなシステムはボトルネックが見つかりにくい

「プログラマが知るべき97のこと」の86個目のエピソードは、DRYとパフォーマンスチューニングに関する話です。DRY(Don't Repeat Yourslef)は、きのこ本でも何回か登場している有名な原則で、システムの中で同じものが複数あることは避けるというものです。…

85-冗長なログは眠りを妨げる

「プログラマが知るべき97のこと」の85個目のエピソードは、ロギングに関する話です。ソフトウェア開発をしていく中で何かと面倒で優先度を低くされる事が多いのは、ロギングとエラーハンドリングでしょう。どちらもユースケースにおける基本シナリオを実装…

84-正しいアルゴリズムとデータ構造を選ぶ

「プログラマが知るべき97のこと」の84個目のエピソードは、アルゴリズムとデータ構造に関する話です。アルゴリズムとデータ構造といえば、プログラミングを学ぶ中で基礎中の基礎であったと言えます。ですが、プログラミング言語が高度に進化し、プログラマ…

83-UNIXツールを共にする

「プログラマが知るべき97のこと」の83個目のエピソードは、UNIXツールに関する話です。自分はUNIX(Linux)はある程度は使えるものの日常的に使っているわけではなく、UNIXツールに関するスキルはあまりありません。ホーム言語がJavaという事もあり、基本は…

82-他者への思いやりを意識したコーディング

「プログラマが知るべき97のこと」の82個目のエピソードは、コーディングとコミュニケーションに関する話です。他のエピソードでも何度か登場していますが、現在のプログラミングは孤独な作業ではありません。ほとんどの開発はチームで行い、自分の書いたコ…

81-エラーがエラーを相殺してしまう

「プログラマが知るべき97のこと」の81個目のエピソードは、不具合に関する話です。ソフトウェア開発では、可能な限り不具合を減らす為に様々なテストを行います。テストにはクラスやモジュール単位で行うユニットテストもあれば、最終的にユーザが受入を判…

80-1人より2人

「プログラマが知るべき97のこと」の80個目のエピソードは、ペアプログラミングに関する話です。従来のプログラミングと言えば、1人で黙々と集中して行うイメージが強いものでした。しかし、このエピソードにも書かれているように近年はプログラミング作業…

79-テストのないソフトウェア開発はあり得ない

「プログラマが知るべき97のこと」の79個目のエピソードは、テストに関する話です。きのこ本には97+10本のエピソードが収められていますが、id:t-wadaさんがTDDBC札幌でも話されていたようになんらかの形でテストに言及したエピソードはかなりの割合を占めて…

78-テストは夜間と週末に

「プログラマが知るべき97のこと」の78個目のエピソードは、ナイトリービルドに関する話です。近年、ハードウェアのコストは充分に下がりマルチコアが当たり前の時代です。一昔前では考えられないようなスペックのマシンが安価で入手できます。それに伴いビ…

77-偶然の仕様ではなく本物の仕様のためのテストを書く

「プログラマが知るべき97のこと」の77個目のエピソードは、テストに関する話です。自分にとって、このエピソードはきのこ本の中で最も重要で、今後実践していく課題の1つです。テストは、ソフトウェア開発を進めていく中で、避けられない一番の問題です。…

76-コード分析ツールを利用する

「プログラマが知るべき97のこと」の76個目のエピソードは、コードの静的チェックに関する話です。どんなプログラマであれ、プログラミング中にミスがなくなる事はありません。訓練を積むことでミスを減らすことは出来たとしてもゼロには出来ません。これは…

75-面倒でも自動化できることは自動化する

「プログラマが知るべき97のこと」の75個目のエピソードは、自動化に関する話です。現代のソフトウェア開発の三本柱の1つである自動化は、他の「ユニットテスト」「バージョン管理」に比べるとやや優先度が低く捉えられています。勿論、バージョン管理がな…

74-「イエス」から始める

「プログラマが知るべき97のこと」の74個目のエピソードは、顧客とのコミュニケーションに関する話です。システム開発を行っているならば、顧客から無茶な要求を受ける事は珍しい事ではありません。顧客はシステムの内部的な構造は知りません。したがって、…

73-単一責任原則

「プログラマが知るべき97のこと」の73個目のエピソードは、単一責任原則に関する話です。単一責任原則(Single Responsibility Principle: SRP)は良く知られた良いデザインを行う為の原則の1つです。単一責任原則を簡単に言えば、「あるクラス・モジュー…

72-シンプルさは捨てることによって得られる

「プログラマが知るべき97のこと」の72個目のエピソードは、シンプルさとコードの書き直しに関する話です。プログラミングをしていると、思うように実装が進まない事は珍しい話ではありません。色々と試したものの上手くいかなかったり、動いてはいるものの…

71-パフォーマンスへの道は地雷コードで敷き詰められている

「プログラマが知るべき97のこと」の71個目のエピソードは、ソフトウェアメトリクスに関する話です。このエピソードではパフォーマンスチューニングを例にあげ、コードのリファクタリングを行っていく場面で遭遇する地雷原について述べられています。ソフト…

70-シングルトンパターンの誘惑に負けない

「プログラマが知るべき97のこと」の70個目のエピソードは、シングルトンパターンに関する話です。シングルトンパターンはGoFのデザインパターンの中でも最もよく知られ、使われているパターンかと思います。その理由はシンプルであり、かつ強力で、かつ解り…

69-車輪の再発明の効用

「プログラマが知るべき97のこと」の69個目のエピソードは、車輪の再発明に関する話です。プログラミングにおける「車輪の再発明」とは、既に作られたフレームワークやライブラリがあるのにも関わらず、コストをかけて開発する事を指します。このような「車…