ソフトウェア開発

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

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

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

元ネタはこちらですが、「優れたJavaプログラマ」を見分ける質問ではありません*1。次のような状況を想定してください。 受託業務を中心にしている弊社は、Javaで業務系ウェブアプリケーションの開発を行う事になりました。しかし社内のリソースを使うにも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個目のエピソードは、車輪の再発明に関する話です。プログラミングにおける「車輪の再発明」とは、既に作られたフレームワークやライブラリがあるのにも関わらず、コストをかけて開発する事を指します。このような「車…

68-「人間」を知る

「プログラマが知るべき97のこと」の68個目のエピソードは、コミュニケーションに関する話です。きのこ本に書かれていることのほとんどは「当たり前」の事です。「あたり前」の事なのですが、すべてを実践できているプログラマは中々いないでしょう。きのこ…

67-コードを読む

「プログラマが知るべき97のこと」の67個目のエピソードは、コードリーディングに関する話です。プログラマがソースコードを読む場面は多くあります。開発中は期待通りに動作しないソフトウェアのソースコードを読み、不具合を探します。ソフトウェアの機能…

66-いったんコンピュータから離れてみる

「プログラマが知るべき97のこと」の66個目のエピソードは、プログラミング中の閃きに関する話です。このエピソードに書かれているような脳の論理的部分がどうこうという理由が正しいかどうかは解りませんが、根を詰めてプログラミングをしていてると効率が…

65-バージョン管理システムを使う

「プログラマが知るべき97のこと」の65個目のエピソードは、バージョン管理システムに関する話です。そろそろ都市伝説になってもいい気もしますが、バージョン管理システムが導入されていなかったり、導入していても適切に運用されていない開発現場は存在し…

64-プロのプログラマとは

「プログラマが知るべき97のこと」の64個目のエピソードは、プログラマが知るべきことに関する話です。 プロフェッショナルなプログラマの最大の特徴は「自分が責任を取る」という態度、責任感です。プロのプログラマは、まず自分のキャリアに責任を持ちます…

63-ユーザの操作ミスを防止する

「プログラマが知るべき97のこと」の63個目のエピソードは、ユーザビリティに関する話です。残念な事ですが、画面デザインに関して自分の仕事ではないと考えているプログラマは少なくありません。勿論、すべての分野のプログラマに必要なスキルではないかと…

62-プリミティブ型よりドメイン固有の型を

「プログラマが知るべき97のこと」の62個目のエピソードは、ドメイン型に関する話です。このエピソードでは1999年の火星探査機「マーズ・クライメイト・オービター」の事故を例にあげ、プリミティブ型と暗黙で利用している単位に関する問題を提起しています…

61-ビルドをおろそかにしない

「プログラマが知るべき97のこと」の61個目のエピソードは、ビルドに関する話です。これまで仕事で様々な開発現場を経験してきましたが、ビルドプロセスに関して真剣に取り組んでいる所はほとんどありませんでした。下請けで開発を行っている所が多かったの…

60-真実を語るのはコードのみ

「プログラマが知るべき97のこと」の60個目のエピソードは、コードの可読性に関する話です。可読性に関する話題は何度も登場しています。プログラムは実行できることが全てですが、保守をしていくなかで、ソースコードを読む比重は高くなっていきます。新し…

59-バイナリは常に1つ

「プログラマが知るべき97のこと」の59個目のエピソードは、ビルドとバイナリに関する話です。自分の経歴の7割以上はJavaによるソフトウェア開発であることもあり、バイナリにまつわる問題はほとんど経験した事がありません。ソフトウェアのほとんど同じだ…

58-テスト担当者はプログラマの友人

「プログラマが知るべき97のこと」の58個目のエピソードは、テストに関する話です。このエピソードにおけるテストはユニットテストではなく、QA(Quality Assurance:品質保証)やQC(Quality Control:品質管理)と呼ばれる部署が行うようなテストです。会社…

57-ポリモーフィズムの利用機会を見逃さない

「プログラマが知るべき97のこと」の57個目のエピソードは、ポリモーフィズムに関する話です。ポリモーフィズムはオブジェクト指向プログラミングにおいて最も重要な概念の1つです。日本語で多態性と呼ばれるこの技術は、実装レベルで考えれば方が同じで振…

56-未来へのメッセージ

「プログラマが知るべき97のこと」の56個目のエピソードは、コミュニケーションに関する話です。 「取り組む問題が難しければ、そのソリューションも難しく、わかりにくいものになるのが当然」そう考えている人がどうも多いようです。問題が難しいのだから、…

55-並列処理に有効なメッセージパッシング

「プログラマが知るべき97のこと」の55個目のエピソードは、並列処理に関する話です。並列処理に関する関心は日々に高まっています。プロセッサのクロック速度の向上はやや頭打ちになってきており、高速に処理を行う為にはコアを増やす傾向なのです。家庭用…

54-見えないものを見えるように

「プログラマが知るべき97のこと」の54個目のエピソードは、ソフトウェア開発の可視化に関する話です。ソフトウェア開発において可視化(見える化)はマネージャ層にとっては特に興味のある話題です。本文でも書かれているように、ソフトウェア開発の難しさ…

53-正しい使い方を簡単に、誤った使い方を困難に

「プログラマが知るべき97のこと」の53個目のエピソードは、インターフェイスに関する話です。ソフトウェア開発のスキルを身につけていく中で、インターフェイスやバウンダリ(境界)に関することは、最も悩まされる事の1つです。一言でインターフェイスと…

52-「その場しのぎ」が長生きしてしまう

「プログラマが知るべき97のこと」の52個目のエピソードは、暫定ソリューションに関する話です。暫定ソリューション(その場しのぎ)とは、本来は遵守すべき規約やプロセスに従わずに急ごしらえで作成したソリューションのことです。時間に追われ不具合を直…

51-プロジェクト自身にしゃべらせる

「プログラマが知るべき97のこと」の51個目のエピソードは、ソフトウェア開発の自動化に関する話です。先日のTDDBCでもid:t-wada氏は「近代ソフトウェア開発の三本柱はテスト・バージョン管理・自動化」と話していましたが、自動化は興味深く重要なテーマの1…

50-Hello, Worldから始めよう

「プログラマが知るべき97のこと」の50個目のエピソードは、プログラミングの原点に関する話です。長くプログラミングを続けていたり、マネジメントやその他の業務が多くなってくると、基本的な事を忘れがちです。焦って自分を見失っている時などは、原点、…

49-見積りとは何か

「プログラマが知るべき97のこと」の49個目のエピソードは、見積りに関する話です。見積に関するこのエピソードは日頃よく思う部分です。しかし、残念な事に本当に読んで理解して欲しいのはプロジェクトマネージャです。そして、プロジェクトをリードしてい…

48-いろいろな言葉を学ぶ

「プログラマが知るべき97のこと」の48個目のエピソードは、コミュニケーションに関する話です。エピソードのタイトルになっている「言葉」にはプログラミング言語も含みます。プログラマはコンピュータと対話する職業である以上は、コンピュータと対話する…

47-大量のデータはデータベースで

「プログラマが知るべき97のこと」の46個目のエピソードは、データベースに関する話です。 アプリケーションで大量の永続データを扱う必要がある場合やデータが相互に関係し合う場合は、迷うことなくRDB(リレーショナルデータベース)にデータを保存すべき…