kanizaのブログ

コンピュータ、ソフトウェア、映画、音楽関連や家族のことなど、思いついたことを書きます。

プログラミング

PicoContainerでコンストラクタに配列を使う

Javaで使えるDIコンテナのひとつであるPicoContainerのスバラシさ(の一部)について語ってみる。たぶん、他のDIコンテナにも共通しているはず。PicoContainerをいじり始めてしばらくは、マニュアルどおりにインタフェースと実装の分離を進めていった。Singl…

もっとPicoContainer

シゴトで開発しているツールで、PicoContainer 利用をもう一歩進めている。以前からそうしたかったんだけど、なかなかうまい方法が見つからなかった。それをこのあいだ思いついたのだ。これでさらに全体の構造がすっきりする。もともと PicoContainer を使わ…

Presentation Model

今日はシゴトでのプログラミングがうまくいってスッキリ。機能追加のための設計改善がうまくいって、機能追加そのものはすごくシンプルにできた。もともとのコードがかなり苦しまぎれなものだったので、改善の余地がたくさんあったのですな。今回も Presenta…

プロポーショナルフォントでコーディング

そういえば、最近、Javaコードをプロポーショナルフォントで書いていることを思い出した。プログラミングはモノスペースフォントでっていうのが一般的だと思ってたけど、プロポーショナルでもわりといけるもんだな。

浅海さんのブログ

知らないうちに浅海智晴さんがブログをはじめていた(id:goldenport)。しかもはてなダイアリーだ。チェックしなきゃ。

バグ退治

今日はたくさんのバグを始末した。バグデータベースに登録されているバグには、いろんな重さがある。時間に余裕があるうちは、わりと重めのバグにじっくり取り組んで、いざリリースが近くなってくると切羽詰まって細かいバグをどんどん片付ける。細かいバグ…

ValueModel

JGoodies Binding にある ValueModel は、とてもシンプルで強力な概念として僕のコードをかなり改善してくれている。だけど、ValueModel 内部で使っているイベントリスナを解放したいとか、制約付きプロパティを使いたいとかっていう話が出てきて、ValueMode…

MutiKeyMap

Commons CollectionsにあるMultiKeyMapを初めて使った。Mapはキーと値の組み合わせを扱っているわけだけど、「ある組み合わせ」をキーにしたい場合に使える。「AさんとBさんの時はX」「AさんとCさんの時はY」とかね。Commons CollectionsにMultiKeyMapがなか…

まず日本語で書いてみる

シゴトで、なかなかにホネのある機能を追加。見た目はたいしたことない機能なんだけど、データの持ち方とかの都合で、わりとむずかしい仕組みになった。実装中に頭が混乱するってんで、やろうとしていることを日本語で書いて、それをJavaコードに直すという…

DRY原則重要

開発しているツールに、ちょっと違うところに現れる同じ機能がある。実装したタイミングなどの問題で、まったくではないけど、ほとんど同じコードが重複していた。いまのところ両方ともちゃんと動いているということで、いけないとは思いつつしばらくそのま…

Mustangに期待

Java 5.0(Tiger)のSwingアプリケーションで、コンテキストメニューの機能まわりを作っていた。あるところで右クリックしてコンテキストメニューを表示させ、そのまま別のところで右クリックして違うメニューを表示するとき、かなり背景の表示がチラつくこと…

Cocoa勉強会

Cocoa勉強会 関西の例会に出席。今回は僕が幹事だったので早めに会場に行った。そうしたら、「Cocoa勉強会関西」の貼り紙と別に、僕の名前の貼り紙が。 事務局に確認してみたら、やはり手違いで二重に予約されていたようだ。たしかに、電話でのやりとりとFAX…

フレームワークで幸せ感

Java仕事で何日か取り組んでいたフレームワークがだいたい完成。シンプルながら、システム内に頻出する機能なので重要なのだ。これまでも欲しかったんだけど、どうフレームワーク化するかあれこれ検討しつついまいちしっくりこなかった。これまで個別に実装…

PicoContainerアンチパターン

昨日ちょっと書いたPicoContainerのインスタンスを「注入」してもらう場合もあるという件は、PicoContainerのサイトでアンチパターン「Container Dependency」として紹介されていた。たしかによろしくない気はしていたのだけど、やっぱり良くないのか。この…

Core Data

ADCにて「Developing with Core Data」が公開された。データモデルを定義しておくと、ファイル保存や読み込み、編集操作の取り消しややり直しなどが自動でサポートされるようになるとのこと。いいですなぁ。データ構造を定義するとこれまで手作業で作ってい…

PicoContainerであと3歩

PicoContainerを駆使してあれこれやった。PicoContainerのインスタンスが見える必要があるオブジェクトと、PicoContainerから生成されて「依存性注入」されるオブジェクトをよく考えて決める必要がある。PicoContainerのインスタンスを「注入」してもらう場…

よくできました

わりと単純に終わると思ってJava仕事に取りかかってみたら、実はかなり複雑なことがわかってきた。予想外のテストコードとクラスを追加しつつ、以前に別の目的で作ったコードもうまい形で再利用できつつ、かなりよい感じで収束。めでたしめでたし。ふぅ。イ…

コピー&ペースト禁止?

とあるプログラミング初心者のコーディングを眺めていたら、「コピー&ペーストはしちゃいけないって言われたから」ということで、わざわざキータイプしてコードを写していた。おそらく「コピー&ペーストしちゃいけない」って言った人は、同じコードを2カ所に…

プログラミングの勉強

身近な人でJavaプログラミングを勉強したい、という話があったんだけど、Java云々とともにプログラミングそのものについての勉強も必要な様子だったので、EmacsとシェルなどUNIX的な環境で暮らしてみることをおすすめした。Windows/Macユーザーにとって、は…

メソッドのカテゴリ

Squeakのクラスにあるメソッドはカテゴリによって分類されている。カテゴリは自由に作れるけど、「initialization」や「accessing」といった慣習的に用いられているものもあって、メソッドを探す時などに便利に使える。Javaにはカテゴリのようなものはないけ…

Observerパターン

「オブジェクト指向における再利用のためのデザインパターン」を読んでいたら、SmalltalkにはObserverパターンの機能がObjectクラスレベルで組み込まれているという記述を見つけた。どういう具合になっているのかなぁと思ってちょっと探してみたら次のページ…

PresentationModel

このところPresentationModelというやつが気になっている。まだ使えていないのだけど。GUIとドメインオブジェクトとの橋渡しをしてくれるもの、と解釈すればいいのかな。思い切ってそれ専門のオブジェクトを導入してしまう。VisualWorks にある ApplicationM…

Java仕事

昨日はSqueakだったけど、今日はシゴトでJavaモードに。いろいろと課題を片付けた。なんとかプログラムの動作を整えつつも、設計が甘かったところの悪影響が見えてきた。リファクタリングしなきゃ。

PicoContainer

IoC コンテナとして人気が出てきている PicoContainer をいじっている。IoC コンテナは、思った以上に気持ちがいい。なんといいましょうか、すがすがしいです。依存関係をちゃんと書いておけば、あとはコンテナが勝手に解決してくれる。make みたいな面白さ…

Javaの勉強(その2)

昨日の続き。Java でわかりにくかったものとして他に思い出すのは、Arrays とか Collections といったクラス。昨日のは Array クラス。今回のは複数形の Arrays と、Collections だ。Arrays とか Collections といったクラスは、そのクラスのインスタンスを…

Javaの勉強

このところ、Javaの経験があまりない方とお仕事をしていて、Javaのかなり基本的な話について質問されることがある。「何かいい本はないです?」とか聞かれたりもするんだけど、考えてみると僕は Java について本を読んで勉強したというわけではないから、な…