2011-01-01から1年間の記事一覧
「GUIの設計パターン」のコメントで指摘があったので補足しておきます。 Javaのコンストラクタは思った以上に複雑で、希に困った状況を引き起こします。その1つの例が「コンストラクタ内でthis参照リーク」問題です。次のようなコードがあった時、どうなる…
元ネタはこちらですが、「優れたJavaプログラマ」を見分ける質問ではありません*1。次のような状況を想定してください。 受託業務を中心にしている弊社は、Javaで業務系ウェブアプリケーションの開発を行う事になりました。しかし社内のリソースを使うにも1…
「プログラマが知るべき97のこと」の74個目のエピソードは、顧客とのコミュニケーションに関する話です。システム開発を行っているならば、顧客から無茶な要求を受ける事は珍しい事ではありません。顧客はシステムの内部的な構造は知りません。したがって、…
「プログラマが知るべき97のこと」の73個目のエピソードは、単一責任原則に関する話です。単一責任原則(Single Responsibility Principle: SRP)は良く知られた良いデザインを行う為の原則の1つです。単一責任原則を簡単に言えば、「あるクラス・モジュー…
Slim3 1.0.8 のリリースを受け、Scenic3 0.4.1 をリリースしました。 また、ブログのコメントで指摘された不具合に対応しています。 この所、利用している方が増えてきてるようでTwitter等でも声をいただいております。それほど大きなライブラリではありませ…
「プログラマが知るべき97のこと」の72個目のエピソードは、シンプルさとコードの書き直しに関する話です。プログラミングをしていると、思うように実装が進まない事は珍しい話ではありません。色々と試したものの上手くいかなかったり、動いてはいるものの…
「プログラマが知るべき97のこと」の71個目のエピソードは、ソフトウェアメトリクスに関する話です。このエピソードではパフォーマンスチューニングを例にあげ、コードのリファクタリングを行っていく場面で遭遇する地雷原について述べられています。ソフト…
「プログラマが知るべき97のこと」の70個目のエピソードは、シングルトンパターンに関する話です。シングルトンパターンはGoFのデザインパターンの中でも最もよく知られ、使われているパターンかと思います。その理由はシンプルであり、かつ強力で、かつ解り…
「プログラマが知るべき97のこと」の69個目のエピソードは、車輪の再発明に関する話です。プログラミングにおける「車輪の再発明」とは、既に作られたフレームワークやライブラリがあるのにも関わらず、コストをかけて開発する事を指します。このような「車…
「プログラマが知るべき97のこと」の68個目のエピソードは、コミュニケーションに関する話です。きのこ本に書かれていることのほとんどは「当たり前」の事です。「あたり前」の事なのですが、すべてを実践できているプログラマは中々いないでしょう。きのこ…
Slim3を薄くラップし、T2Framework風に1つのページクラスに複数のコントローラメソッドを記述することのできるライブラリ「Scenic3」のバージョン0.4.0をリリースしました。 変更点は次の通りです。 REST風のページクラスのサポート 不足していたController…
「プログラマが知るべき97のこと」の67個目のエピソードは、コードリーディングに関する話です。プログラマがソースコードを読む場面は多くあります。開発中は期待通りに動作しないソフトウェアのソースコードを読み、不具合を探します。ソフトウェアの機能…
「プログラマが知るべき97のこと」の66個目のエピソードは、プログラミング中の閃きに関する話です。このエピソードに書かれているような脳の論理的部分がどうこうという理由が正しいかどうかは解りませんが、根を詰めてプログラミングをしていてると効率が…
「プログラマが知るべき97のこと」の65個目のエピソードは、バージョン管理システムに関する話です。そろそろ都市伝説になってもいい気もしますが、バージョン管理システムが導入されていなかったり、導入していても適切に運用されていない開発現場は存在し…
「プログラマが知るべき97のこと」の64個目のエピソードは、プログラマが知るべきことに関する話です。 プロフェッショナルなプログラマの最大の特徴は「自分が責任を取る」という態度、責任感です。プロのプログラマは、まず自分のキャリアに責任を持ちます…
「プログラマが知るべき97のこと」の63個目のエピソードは、ユーザビリティに関する話です。残念な事ですが、画面デザインに関して自分の仕事ではないと考えているプログラマは少なくありません。勿論、すべての分野のプログラマに必要なスキルではないかと…
「プログラマが知るべき97のこと」の62個目のエピソードは、ドメイン型に関する話です。このエピソードでは1999年の火星探査機「マーズ・クライメイト・オービター」の事故を例にあげ、プリミティブ型と暗黙で利用している単位に関する問題を提起しています…
Java言語のチェック例外は本当にGood Partなのか?というエントリーを読んで自分の考え方を簡単にまとめておこうと思う。
「プログラマが知るべき97のこと」の61個目のエピソードは、ビルドに関する話です。これまで仕事で様々な開発現場を経験してきましたが、ビルドプロセスに関して真剣に取り組んでいる所はほとんどありませんでした。下請けで開発を行っている所が多かったの…
「プログラマが知るべき97のこと」の60個目のエピソードは、コードの可読性に関する話です。可読性に関する話題は何度も登場しています。プログラムは実行できることが全てですが、保守をしていくなかで、ソースコードを読む比重は高くなっていきます。新し…
「プログラマが知るべき97のこと」の59個目のエピソードは、ビルドとバイナリに関する話です。自分の経歴の7割以上はJavaによるソフトウェア開発であることもあり、バイナリにまつわる問題はほとんど経験した事がありません。ソフトウェアのほとんど同じだ…
Scenic3はSlim3のController層を薄くラップした拡張ライブラリです。Slim3では1アクション(URL)に対して1つのControllerを作成するシンプルなデザインですが、どうしてもControllerの数が多くなってしまいます。関連するアクションは1つのクラスにまとめ…
「プログラマが知るべき97のこと」の58個目のエピソードは、テストに関する話です。このエピソードにおけるテストはユニットテストではなく、QA(Quality Assurance:品質保証)やQC(Quality Control:品質管理)と呼ばれる部署が行うようなテストです。会社…
「プログラマが知るべき97のこと」の57個目のエピソードは、ポリモーフィズムに関する話です。ポリモーフィズムはオブジェクト指向プログラミングにおいて最も重要な概念の1つです。日本語で多態性と呼ばれるこの技術は、実装レベルで考えれば方が同じで振…
「プログラマが知るべき97のこと」の56個目のエピソードは、コミュニケーションに関する話です。 「取り組む問題が難しければ、そのソリューションも難しく、わかりにくいものになるのが当然」そう考えている人がどうも多いようです。問題が難しいのだから、…
ここの所、随分とAppEngineへの関心が高まってきているようです。Slim3の周辺も活発になってきている事もあり、Scenic3に注目していただく方もチラホラと出てきました。注目されるということは非常にモチベーションが高まります。 今回は前回に予告した通り…
「プログラマが知るべき97のこと」の55個目のエピソードは、並列処理に関する話です。並列処理に関する関心は日々に高まっています。プロセッサのクロック速度の向上はやや頭打ちになってきており、高速に処理を行う為にはコアを増やす傾向なのです。家庭用…
「プログラマが知るべき97のこと」の54個目のエピソードは、ソフトウェア開発の可視化に関する話です。ソフトウェア開発において可視化(見える化)はマネージャ層にとっては特に興味のある話題です。本文でも書かれているように、ソフトウェア開発の難しさ…
「プログラマが知るべき97のこと」の53個目のエピソードは、インターフェイスに関する話です。ソフトウェア開発のスキルを身につけていく中で、インターフェイスやバウンダリ(境界)に関することは、最も悩まされる事の1つです。一言でインターフェイスと…
「プログラマが知るべき97のこと」の52個目のエピソードは、暫定ソリューションに関する話です。暫定ソリューション(その場しのぎ)とは、本来は遵守すべき規約やプロセスに従わずに急ごしらえで作成したソリューションのことです。時間に追われ不具合を直…