2005年12月29日

11月のカウンタートラックバック

今月も遅くなってしまいましたが毎月恒例のカウンタートラックバックです。
11月中にHeimdallrを紹介して頂いた方々に対し、トラックバックを送ると共にお礼を込めてコメントなどを書かせて頂きたいと思います。

(「ログビューの設計」で紹介させて頂いた記事は除きます)

(11/24)Heimdallrプラグインの作り方

Heimdallrの普及度と、プラグイン開発の障壁の高さ(DLLを作る必要がある)を考えると、プラグイン作者が1名居るという現状は奇跡のようです。ありがたいことです。
普通0ですよね。
MicroSoftからVisual Studio 2005がフリーで配布されているので、こちらで作成可能なプラグインをサンプル変わりに作ってみてSubversionあたりでソースコードをいじれるようにして見ても良いかと思っているのですが、そもそもどんなプラグインにしようかなぁ・・・というあたりで今止まっていたりします。
何かネタは無いものでしょうか。サンプルなのであまり複雑ではないもので。

(11/29)RSS童貞

ビュー毎の更新間隔が変えられるようにして欲しいという要望は度々頂いているのですが、メリットが分からないため保留にしておりました。こんな良いことがあるよ!と言うことでしたら教えて頂ければ幸いです。

2005年12月24日

Winnyの技術

Winnyの技術という本を読みました。

内容は、P2P型のファイル共有ソフトWinnyの動作と構造を解説したものです。Winnyの仕様書と言っても良いでしょう。

本書は、設計を担当するソフトウェア開発者にお勧めの一冊です。
P2Pのことをほとんど知らない私でも、Winnyの動作と構造が良く分かりました。仕様書とはこうあるべきですね。仕様書を分かり易く書くにはどうすれば良いか、参考になる本だと思います。

また、本書で解説されているWinnyの仕様は、とても優れたものだと思います。アイデアが優れているのはもちろんですが、アイデアだけでなく、「多数の機能が、少数の中核機能のバリエーションで実現できている」という点が優れていると思います。これができれば、共通部分が多くなって実装もテストも楽になります。

例えば、Winnyは、ファイルの情報である「キー」をWinnyネットワークに広げていく「キー拡散」機能と、Winnyネットワークのどこかにあるキーを検索する「キー検索」という機能があります。だいぶ違う機能のように見えますが、内部の仕組みはほとんど同じです。
他にも、ファイルのアップロードする機能と、ファイル転送を中継する機能がほとんど同じ仕組みで実現されていたりと、実に共通部分が多く、上手く設計できていると思いました。

本書は、Winnyの優れた仕様を分かり易く解説していると思います。優れた設計のやり方に悩んでいる方、分かり易い仕様の書き方に悩んでいる方にはお勧めです。

2005年12月13日

分かり易さって大切ですね

最近突然仕事が忙しくなり、平日は毎日12時過ぎの帰宅になっています。
たまに土曜日も仕事してます。帰ったら風呂入って寝るだけっていうのは辛いですね。

仕事はさておき、たまに暇を見つけてHeimdallrを改良していたりしますが、こちらも苦戦中。
今、ログビューと既存のビューを融合させようとしているのですが、融合させるためには既存のコードに大きく手を入れる必要があり、しかも既存のコードが分かり難いので苦戦しています。
昔、もっと分かり易いコードを書いておけば良かったなぁと反省しております。

分かり易いコードとは、そのコードがどのように働いて何を実現しているかすぐに分かるようなコードです。分かり易くコードが書かれているソフトは、拡張がとても楽です。分かり易さって拡張性の肝ですね。デザインパターンやらなんやらが使ってあるコードよりも、分かり易く書いてあるコードの方がずっと拡張が楽です。

でも分かり易いコードを書くのって結構難しいと思います。私はなかなかできません。1つの大きいポイントは、クラスや関数の役割を一言で分かり易く言えるか、ということだと思います。
クラスを新しく追加する前に、そのクラスの役割を一言で表現できるか考え、一言で表現できない場合は、そうできるようなクラスになるまで設計を直した方が良いと思います。
とは言っても、最初は役割を一言で表現できたクラスがいつしか肥大化して・・・ということは良くある話です。適当なタイミングでリファクタリングするべきでしょうが、タイミングを逃してしまうと大変ですね。だから今大変です。反省反省。

2005年12月04日

猫in喫茶店

こんな感じの猫が居る喫茶店に行ってきました。
すやすや

いや~癒されますね。