2011-03-01から1ヶ月間の記事一覧

提案力とコミュニケーション

ソフトウェア開発に携わるならば、論理的に分析する能力は重要ですが、それと同等に表現力や提案力も重要です。ソフトウェア開発を行っていれば、個人で自分のためにソフトウェアを開発してるのでもない限りは、そのソフトウェアの特徴や売りなどを顧客・ユ…

ソフトウェア開発とテスト

ソフトウェアは形を持たないため、「ソフトウェアを定量的に評価する」という事が困難です。このため、ソフトウェア開発ではテストを通して、主に品質を評価しています。しかし、建物を作ると言っても超高層ビルから犬小屋まであるように、ソフトウェア開発…

テストのプロセス

というわけで、「はじめて学ぶ ソフトウェアのテスト技法」を読み直しているので、メモ*1。 テストとは? IEEE 標準規格 610.12-1990による定義。 ある特定の条件下でシステムまたはコンポーネントを操作するプロセスであり、その結果を観察または記録して、…

ソフトウェアのテストを考える

きのこ本のエントリーも落ち着いたわけですが、今年の課題の1つはテストにあります。世の中、サービスを作ろうという流れもあり、いわゆる業務系アプリのようなガチガチなシステムテストなどは逆方向な感じも否めません。しかし、ソフトウェア開発をする以…

97-ステートに注目する

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

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

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

TimeZoneを扱う

国内で国内向けのアプリケーションを作っている限りは、タイムゾーンを意識することはほとんどありません。しかし、Google App Engine等を利用する場合、多国対応のアプリケーションを作るためにはタイムゾーンを正しく扱うことが必要不可欠です。というわけ…

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

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

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

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

Scenic3のAppUrlsに関するテスト

sue445さんのエントリーにもあるように、Scenic3の弱点の1つにAppUrlsに各ページクラスを個別に登録しなくてはならないという事があります。これは、ページクラスからAPTを使ってControllerクラス群を生成し、さらにそれらのControllerをディスパッチするMa…

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

Javaプログラマであるかを見分ける10の質問-回答編

想定を超えた反応がありましたので、予定はしていなかった回答編をお送りします。ですが、正確な解答を書いても面白くないので、これをネタに面談をした場合に、自分ならどんなポイントを持って選考するかをまとめてみました。