2009-01-01から1年間の記事一覧

前提条件を破った場合、どのような挙動をするのか?

「Nullチェックされている前提の処理」とJavadocに書いたとき、「throws NullPo…」は書くんだろうか。んー、コード上は発生しうるけど、実際発生しないから不要なのかな はてなブックマーク - u1tnkのブックマーク / 2009年12月29日 まぁ、このブログで書い…

堅牢なコーディングルールを策定する方法(2)

いやー、なんか怖い人(笑)が見てるようだ。突っ込み激しそうぜよwさて、前回言っていた「判断ロジック」についての答えは各自考えてみただろうか? 各方面の反応を見ると「1〜4どれでしょうか*1」という問いにすり替わっちゃってる気がするけど、テーマは…

堅牢なコーディングルールを策定する方法(1)

「ある処理をするコードを書く」というのは「ある出来事を文章に表現する」のと似ていると思っている。まず表現に使う言語は様々であり、使用人口の大小はあれど、基本的に優劣はない。言語が同じだったとしても、十人十色の表現をし、全く同じ出来事を表現…

「仕様」と「実装の詳細」(2)

繰り返す。Fooクラスを利用するMainクラスを書く時、XはFooの「仕様」に依存すべきであり、Fooの「実装の詳細」に依存すべきではない。 public class Foo { public String bar; public Foo(String bar) { this.bar = bar; } public String getBar() { return…

課題管理システムの勘所(3)

etc

しばらく間が開いてしまったが。いよいよログインアラートのご紹介。下記のようなJellyスクリプトを用意し、JIRAが動いているサーバの適当なディレクトリ(JIRAのプロセスからアクセスできる所)に配置する。/var/lib/jira/jelly とかで良いんじゃないかな。…

仕様(インターフェイス)と実装の詳細 (1)

APIの公開/非公開が意識できるようになると共に、「仕様(インターフェイス)」と「実装の詳細」を意識できるようになるとよい。 このクラスの公開APIはどれか、非公開APIはどれか このクラスの仕様(インターフェイス)はどれか、実装の詳細はどれか という…

可視性と公開APIと非公開(内部)APIと

Javaではpublic, protected, default, privateという4種類の可視性がある。Javaを始めてしばらくの間、この4つの使い分けがよくできていなかった。 「外から呼ぶならpublic、呼ばないならprivate」時代 当時から、なるべく可視性は下げた方が良い(オブジェ…

MavenでLinuxのOS破壊

Mavenを使っていてLinuxのOSを破壊したので書いておく。 <plugin> <artifactId>maven-clean-plugin</artifactId> <configuration> <filesets> <fileset> <directory>/lib</directory> </fileset> </filesets> <failOnError>false</failOnError> </configuration> </plugin> mvn clean した時、通常は target ディレクトリ(配下のファイルも含めて)を削除する。これと共に、別のファイルも削除し…

課題管理システムの勘所(2)

etc

http://d.hatena.ne.jp/daisuke-m/20091202/1259769481 の続き。さて、今回はJIRAにおけるJellyの使い方。技術屋としてこっちを書きたかったので、↑のは前振りだw 前述の「最終ログインから一定期間以上経過している人にアラートメールを送る」という機能を…

課題追跡システムの勘所(1)

etc

仕事の現場に、新規で課題追跡システム(ITS)を導入する場合、いくつかの障壁があります。これらは主に、システムを使う人の知識と意識の問題ですが、それを列挙して対策をまとめてみます。 ログインしてくれない まず超根本。「導入しました」「あっそ」で…

Jiemamy MTG 11月資料

ミーティングやった。資料置き場として。随時更新。 Cacooを使って書いた図 ホワイトボード写真 http://picasaweb.google.com/Iwama.Ryo.0731/20091128ByEyeFi#

Jiemamyの開発を支えるインフラ

普段このブログではJavaや設計のなど、テクニカルな話しか書いてないなー。そして、なんか毎回「講座」のようなエントリが多い。だもんで、今日は徒然的なお話でひとつ。あくまでエッセイなので、結論とか訴えたいこととか、まとまった身のある文章とか、あ…

DevLOVE DB勉強会「DBも、進化せよ。」

で、話してきた。楽しかったーーー。めちゃめちゃ疲れているけど、脳内麻薬が出ているぽいので、ブログくらいは書けそうだ。ブログを書くまでが勉強会ですよ、と言った手前、書かないわけにはいかないぜっ。まぁ、セッションに関しては自分が話したので反省…

はてなパーカー欲しい!

etc

はてなパーカー欲しい! ぜひとも。ネイビーのLで。だが、すごい競争率だなーw はてブ栞・ボールペン・メモ帳セット前もらったんだが、あそこで運を使い果たしてるのではなかろーかw

ソフトウェアエンジニアリング業界の魅力

etc

ブログ読者の方から、メールで質問を頂いた。メールで返そうと思ったのだが、どうもメアドが消えてしまっているようだ。3度送ったが、返ってきてしまうw 1往復目は届いたのに…。原君、どこ行ってもうたんや…というわけで、返答はブログに書いてしまう。心当…

インピーダンスミスマッチング

今日はインピーダンスミスマッチについて語ってみたいと思うのだが、そもそもインピーダンスって何よという所を説明しなければなるまい。前半、オブジェクト指向には全然関係ない話に見えると思うが、少々辛抱いただきたいw オームの法則 私が初めて「イン…

XMLのスキーマ定義の仕方(3)

XML

第1回 http://d.hatena.ne.jp/daisuke-m/20091104/1257355231 第2回 http://d.hatena.ne.jp/daisuke-m/20091105/1257387380 っつーことで第3回いきます。今回が最終回っす。前回までで、profiles要素の定義を整備しました。次に進みましょう。 profile要素 <xs:element name="profile"> <xs:complexType> <xs:sequence></xs:sequence></xs:complextype></xs:element>…

XMLのスキーマ定義の仕方(2)

XML

http://d.hatena.ne.jp/daisuke-m/20091104/1257355231 の続き。XML Schemaの記述環境(下記)が揃ったのが前回まで。 sample1.xml → イメージXML。想定されるXMLの具体例。 profiles.xsd → 記述対象のXML Schemaファイル SchemaTest.java → 検証用テストケ…

XMLのスキーマ定義の仕方(1)

XML

データの保存形式や、設定ファイルの記述形式としてXMLを選択することがある。まぁ、その形式にXMLが適しているのかどうか、という話はおいといて、とにかくXMLを採用したとする。そのXMLを読み書きするのはアプリケーションからのみ、というのであれば大し…

プロフィール画像を書いてもらった!

etc

地豆のアイコンを自分のアイデンティティアイコンにしていたのだが、近頃 @jiemamy などのアカウントを動かし始め、周囲から「地豆botと大ちゃんの区別がつかねーよ」と大変不評でありました。ということで、自分のイラストは前々から欲しかったのだが、不運…

DevLOVEで話をします

11月20日 DevLOVE DB勉強会 「DBも、進化せよ。」(東京都)演者として呼んでいただきました。基本的に、いつもしている話になってしまうとは思いますが、セッション後に聞いてくれた方々とのディスカッションタイムが設けられているのが、個人的に楽しみで…

Apache commonsが便利な件(commons-configuration編)

久々のシリーズ。今回はcommons-configuration。設定ファイル、ってありますよね。Javaだとproperties、Windosだとiniファイルが使われる事が多い。複雑なものだとXMLで書いたりする。さて、そんなファイルの読み込み・書き出しってどうしますか。まさかFile…

スマートモデルがアンチパターンなケースもある

http://d.hatena.ne.jp/zetta1985/20091014/1255620654 の「1. 参照」例の、より良い実装より。 この実装だと、hogeListプロパティのカプセル化がいないので、内部を好き勝手にいじられてしまいます。hogeListに意図する型以外の要素を格納されてしまったり…

Throwableについて本気出して考えてみた 2nd Season

1st Seasonはこちら。Throwableについて本気出して考えてみた - 都元ダイスケ IT-PRESS以前は、何かをスローする状況を3つに分けてそれに合った設計をした例外を投げましょう、という考え方を示しました。 callerのバグ: RTE calleeのバグ: Error どちらでも…

オブジェクト指向のプログラムに込める「意図」

その昔、プログラムを覚えたての頃、プログラムってのは単に「処理」を記述するものだと考えていた。処理を1ステップごとに記述し、場合によってはサブルーチンに切り出し、再利用する。今振り返ると、オブジェクト指向を覚え始めてしばらくして、その意識は…

Strict Java Project Plugin 1.0.0

Java開発者であれば、しばしばEclipseでJavaプロジェクトを作ると思います。JDT標準の「Java Project」ウィザードを使う事もあれば、Maven構成のプロジェクトを使うためにarchetypeを使ってmvn eclipse:eclipseをしたり。まあ色んなパターンがあると思います…

Choco Projectのプラグインを勝手にリリースしてみた

自分は、基本的に地豆の人である。ただ、普段の作業でEclipseを使うことが多く、さらにEclipseのプラグインを書けるとなると、ちょっとしたプラグインを書いて使う、という機会がたまにある。先日のActivityTrackerもそんな感じでチョチョっと作ってみたプラ…

敢えて規約を破るケース(FindBugsの警告抑制)

の情報も探してみた。が、こちらは結構難しい。Checkstyleは、*.javaを解析してチェックします。なので、コメントに反応できる。しかしFindBugsはコンパイル後の *.class がチェック対象です。なのでコメントでFindBugsを制御することはできません。従って、…

敢えて規約を破るケース(Checkstyleの警告抑制)

先日の日経ソフトウエア記事で、「規約は大事だが、可読性や保守性を高めるためにあえて例外的に規約を破るケースもある」ということを説明しました。しかし、Checkstyleは情け容赦なく、違反を摘発します。数が少ないうちは良いのですが、多くなってくると…

Eclipse記事がムックになりました。

先日の日経ソフトウエアの特集記事が、早速ムックになりました。Javaに関する特集を「じっくり学ぶJava」として16回に渡り書かれていた id:kenmaz さんの記事をベースに、Javaを一から学べる内容になっています。雑誌だと知識がとぎれとぎれになってしまいま…