2005年01月31日

ビューカスタマイズその2

「ビューのカスタマイズ」という記事の大海原湊さんのコメントを読んで思う所があったので、Heimdallrのビューの表示をさらにカスタマイズできるようにしてみました。
これも次のバージョン(たぶん1.08alpha3)に盛り込まれます。

ビュー設定変更ダイアログにこんな感じの項目が追加されました。
割り当てレート1
割り当てレートって書かれても意味分かりませんね。 適当な呼び名が見つかったら変えます。見つからなかったらこのままです。

今はスライダが真ん中にあります。これはデフォルト状態です。
これだと、ビューは以下のようになります。
ビュー1
今まで通りです。

このスライダをちょっと左に動かして見ます。
割り当てレート2
ビューはこうなります。
ビュー2
asa(asahi.com)の記事の数が減り、他のサイトの記事が増えてます。

一番左まで動かして見ます。
割り当てレート3
ビューはこうなります。
ビュー3
均等になりました。

各サイトの記事の数を表にしてみました。

スライダの位置asa日BYah夕フITP@ITCNE
512742211
38644322
05444444

どれが良いかはお好みで決めて下さい。
各ビュー毎に設定できるのでビュー毎に適切な割り当てレートにしてみて下さい。 どれが一番良いのかは私には分かりませんが・・・。

なお、このスライダは右に動かすこともできます。 でも右に動かすとasa(asahi.com)に割り当てられる記事数がデフォルト状態より増えてしまってちょっと良くないですね~。

2005年01月30日

ビューのカスタマイズ

Heimdallrのビューの表示をカスタマイズできるようにしてみました。
次のバージョン(たぶん1.08alpha3)に盛り込まれます。

実装に時間がかかるかと思ったのですが、後でこういった機能を追加しやすいように設計されていたようで(覚えてませんが)、1時間位で出来てしまいました。

スキン設定ダイアログにこんな感じの項目が追加されました。
設定

ビューにはこんな風に表示されます。
ビュー

あとは各サイトに割り当てる表示領域を少し変えて見ました。
今までは一番上のasa(asahi.com)にはあと2~3記事多く表示されていましたが、 ちょっとバランスを変えて多少平坦になるようにしてみました。

ここらへんの設定は、どれをカスタマイズ可能にしてどれをカスタマイズ不能にするかいつも悩みます。
私は基本的にカスタマイズ可能な項目はあまり無いほうが良いと思っています。 むやみにカスタマイズ可能にしても、分かり難く混乱するだけだからです。
しかし、人の好みは色々あり、時には意見が真っ二つに割れてしまうことがあります。そうしたときは泣く泣くカスタマイズ可能にしているわけです。
カスタマイズ可能にしたらしたでデフォルト値はどうするのか、という問題がでてきて、そこでもあれこれ悩みます。
いやー難しいですね。

2005年01月29日

新サーバ

SoftEtherを十分に動かすべく、サーバをLinux(RedHat 7.3)からWindows(XP Professional)に切り替えました。
ベースはPC-MS6000Eです。

サーバー

スペックはこんな感じです。

CPUVIA Eden (600MHz) EBGA
HDDHTS548060M9AT00(60GB)
メモリTranscend PC2100 DDR-SDRAM(512MB)
OSWindows XP Professional SP2

実は今までのサーバよりスペック落ちてたりします。 そのためにカウンタ表示に若干時間がかかっているような気がします。 でも動作音がほとんどしないので安眠できるようになりました。

お値段はPC-MS6000Eが52,290円でHDD+メモリ+OSで43,830円(ポイントで10%還元)となりました。
ポイント分を10%値引きと考えると、91,737円です。
なお、 PC-MS6000E2-40WはPC-MS6000E+HDD(40GB)+メモリ(256MB)+XP Professionalで99,750円です。ずいぶん割高ですねこれ。動作確認代かな。

サーバーには外付けHDDが3つ(80G,160G,160G)付いていて、合計で400GBあります。といっても、160GのHDDのうち1つからそろそろ逝っちゃいそうな異音がするので、安全そうなのは残りの240GBだけですけどね。

でもって新サーバは旧サーバのパーツを使っていないので、 旧サーバ用PCは、問題なく動作する余りPCとなったわけです。実はこれの用途が一番の課題だったりします。 常時起動させておくとうるさいですし、どうしようかな・・・。

2005年01月28日

トピックチャンネル

Heimdallr 1.08alpha2 では、トピックチャンネルというプラグインが追加されました。
これは、トピックを1つ選ぶと、それに関連した記事をインターネットの海から探し出してくれるプラグインです。
今のところトピックは政治と野球とサッカーしかない上に結構重たいですが、今後トピックは増やしていきますし、性能も向上させていきます。
とりあえず政治か野球かサッカーに興味がある方、あるいは興味を持ちたいなと考えている方はもう今から使って頂きたいと思います。それでもってコメントなどあれば頂きたいと思います。

ついでに欲しいトピックがある方もコメント下さい。トピックになるためには条件があるので必ずしもなれるわけではありませんが、色々検討してみたいと思います。

ご意見募集宣言はさておき、
このトピックチャンネルのアイデアは、私がHeimdallrを開発し始めてから思いついた最良のものだと思っています。ChannelExtensionも、このアイデアを具現化するために考え始めたものであり、ようやく形にできたなぁという感じで私はだいぶ自己満足してます。
私の知っている限り、同様の機能を持ったRSSリーダーはありません。Heimdallrにおける待望の2つ目のオリジナル機能です(1つ目は透明スキン)。

今後は性能向上やトピックの種類増加に取り組み、より実用的なものにしていきたいと思います。

2005年01月27日

Heimdallrの分類

Heimdallrって何型のRSSリーダーなのでしょうか?

という質問に答えるのは結構難しいです。開発者の私にも分かりません。分類し難いアプリケーションですね。

公式には「VectorのHeimdallr紹介ページ」に書いてあるように「自動学習機能を備えた猫スキン付きデスクトップ貼付型RSSリーダー」つまり、デスクトップ貼付型です。

でもHeimdallrをデスクトップ貼付型RSSリーダーと紹介した紹介記事はありません。どうもうまい型名ではないようです。

よく使われているのが「ティッカー型」「付箋表示型」「読み捨て型」です。

ティッカー型は、私が当初そう呼んでいたのが由来だと思います。
ココログリンク集でそう呼ばれているのも効いているようです。
ティッカーすなわち電光掲示板とHeimdallrはちょっと違う気もしますが、メーラー型とティッカー型しかなければティッカー型になるしかないでしょう。

付箋表示型は、窓の杜の紹介記事が由来のようです。
付箋紙ソフトの人気も手伝ってか、そこそこ広まりました。

読み捨て型は、2004年フリーソフト10選が由来のようです。
これは言い得て妙ですね。Heimdallrの設計方針をずばり一言で言い表しています。
他の所でも使われているようなので、心に響く言葉なのでしょう。
公式な型名もこれにしようかな・・・

さて次はどんな型名が付けられるのでしょうか。結構楽しみです。

2005年01月25日

相互防衛条項

「見直しがすすむGPL」という記事がIT Mediaに掲載されています。

GPLの次版の課題やら提案が色々書いてあるのですが、 興味を引いたのは以下のお話です。

オープンソース提唱者のBruce Perensは、特許権侵害訴訟に関する罰則が、単に問題のソフトウェアの使用禁止から、フリーソフトウェアと分類される全てのプログラムの使用禁止へと強化されることを期待しているという。「次期版GPLに、例えば、ある人物が特定のフリーソフトウェアに関する特許権を行使したら、その人間のフリーソフト使用権が消滅するといった、相互防衛条項が盛り込まれることを期待している」(Perens)

それは相互防衛条項ではないぞぉぉ
そりゃ相互破壊条項と言うんだ。

フリーソフトに対して攻撃を行うと(特許権行使)、フリーソフトから反撃を受ける(使用禁止)わけです。両方とも破壊力絶大な攻撃なので、攻撃を禁止するというルールが無くても、双方攻撃できなくなるというわけです。なんか冷戦時代のソ連と米国を彷彿とさせるアイデアですね。なかなか過激です。

過激さはさておき、面白いお話です。私もソフトウェア特許が世の中から無くなって欲しいと願っている一人なので、こうしたライセンスでソフトウェア特許が実質的に無くなってくれたら良いなぁと思います。
この相互破壊条項だけは、GPLに限らず他のライセンスにも広まり、連携して機能するようになって欲しいと思います。企業にとっては使い難いライセンスになるかもしれませんけどね。

2005年01月24日

自分の技術

私が持っている技術ってなんなんだろうなぁ
と、時々そんなことを考えます。

いつも感じるのが、私の技術は軸足が無いということ。
軸足というのは、動作をするとき、体を支える足のことです。
ネットワーク技術の専門家ならば、ネットワーク技術がその人の軸足です。
何か動くとき(例えば転職とか)、いつもネットワーク技術がその人を支えてくれるでしょう。

私にそういう技術が何かあるかと問われても、何も無い。
色々できるのは確かですが、何かひとつ誰にも負けないものはないかと問われても、何も無い。
おかげでなにかあるたびふらふらしてます。

でもとりあえず軸足候補は2つあって、ひとつはXMLアプリケーション開発技術。
もうひとつは実は組み込みソフトウェア開発技術だったりします。

単純に組み合わせたくなりますが、どちらの技術の世界も広く(特に組み込みの世界は死ぬほど広い)、重なっている部分は少しだけです。
組み合わせた分野が今後伸びていくならば、それを軸足としても良いのですが、まだそこまでの覚悟は持てなかったりします。
でも伸びていくかな。これからはユビキタス社会とか(偉い人が)言ってますしね。

あーー。どうしよっかなーーー。
と思いつつ色々な技術に手を出したり引いたりしてます。
悩みますねぇ・・・。

2005年01月23日

Heimdallrプラグインの開発は大変

ChannelExtensionPluginこと、Heimdallrに新しいチャンネルを追加するためのプラグインの開発は結構大変です。

というのも、RSS Feedのパースや多重ダウンロードの制御をプラグイン内で行う必要があり、それなりの規模が必要であるからです。
1.08alpha2リリース時点で実ステップ数を測ってみると、キーワードチャンネルは2151、トピックチャンネルは2685。Heimdallr(実ステップ数29676)に比べれば遥かに小さいものの、簡単なRSSリーダーならば作れてしまう位の量はあります。

これだとぽんぽん新しいプラグインを増やしていくのは難しいですね。
しかもプラグイン毎にダウンロード時間短縮などパフォーマンスの向上が必要なのでこれまた手間暇かかります。

というわけで。
プラグインといいつつも、おまけのようなものではなく、一つ一つ丁寧に作っています。大事に(?)してやって下さいね。

2005年01月22日

Heimdalr 1.08alpha2リリース

Heimdallr 1.08alpha2をリリースします。
安定版ではありません。

Heimdallr 1.08alpha2 ダウンロード

安定版はHeimdallr 1.07です。

1.08alpha2ではトピックチャンネルというChannelExtensionPluginが追加されました。

メニューから
ビュー設定→チャンネル追加→トピックチャンネル→適当なトピックを選択→OK
と選択してみて下さい。適当といっても政治と野球とサッカーしかありませんが。
なお、トピックチャンネルはダウンロードにとても時間がかかります。2-3分は覚悟して下さい。もっとかかるかもしれません。改善方法が見つかれば改善していきます。

1.08alpha1→1.08alpha2の変更点は以下の通りです。

  • 設定ファイルの形式を変更しました。以前のバージョンには戻れなくなります。
  • 記事タイトルと重ならない位置に概要ウィンドウを表示するオプションを追加しました。
  • トピックチャンネル(ChannelExtensionPlugin)を追加しました。

2005年01月21日

RSS Feedのタイトルにカテゴリやサイト名は不要では?

「ブログタイトルの短縮表記に反対」に、

RSS リーダーで配信する記事タイトルに、サイト名の短縮表記をつけるのは、やめてください。

という意見があります。まったく同意します。

また、
「記事タイトルの長さ」という記事に、

はてなでは記事タイトルの先頭に[hogehoge]とつけることでカテゴリー分けする事ができますが、これがRSSリーダーのタイトル一覧では、ちょっと邪魔です。

という意見があります。これにも同意。

というのも、Heimdallrは、デフォルトでは全角で17文字程度しかタイトルを表示しません。ちょっとタイトルが長くなると全部表示できなくなってしまいます。サイト名の短縮表記やカテゴリは、場合によっては全角で10文字を超えるケースも見かけます。そうなると、肝心のタイトル表示領域は半分になってしまいます。

また、私は、フォントサイズを調節して、全角で11文字程度表示するようにしています。この文字数でも、普通はタイトルを読めば内容はそれなりに分かるからです。この場合、ちょっと長いカテゴリがタイトルの前についていたりすると、会い取るが1文字や2文字だけだったりしてさっぱり分からなくなってしまいます。

そして、これはHeimdallrに限った話ではないはずです。
「記事タイトルの長さ」で述べられていますが、FirefoxのLivebookmarkにも似たような制限があるようです。そもそもタイトルは全角10~15文字程度でも結構意味が伝わるので、タイトルを短く表示して余った領域を有効活用しようとするRSSリーダーが色々あってもおかしくないでしょう。

タイトルにサイト名やカテゴリが含まれていると、そんなRSSリーダーにとっては結構痛手です。そこらへんを踏まえた上で、サイトの短縮名やカテゴリをRSS Feedのタイトルの先頭に付けるかどうか決めて欲しいと思います。

ところで、
「ブログタイトルの短縮表記に反対」で提案されているRSSにサイトタイトルの省略表記を埋め込む方法は面白そうですね。HeimdallrのGUIとぴったりです。既存の仕様内で実現する方法をRSS 1.0 の仕様に記載されているofficial modulesとproposed modulesから探して見ましたが・・・適当なものがないですね。うーむ。

さらに話は変わって。
タイトルって重要なんだなぁ・・・と考えながらHeimdallrのビューをじっと眺めていると・・・。あれ・・・。日付ってもしかして表示しなくても良いのでは。
自分の行動を思い返してみても、日付を見てクリックするかどうか決めていることはほとんどないです。そんな重要度の低い情報に(空白も入れると)全角で3文字も使っているのはあまりにも勿体無い。これはなんとかした方がいいかもしれませんね。

2005年01月16日

RSS検索サイトの処理時間

Heimdallrは、メモリを山ほど使うけれど軽快に動作するよう設計をしているつもりです。
しかし、本当に軽快なのかは難しい問題です。そこで、本当に軽快であるかどうか確認するために、Heimdallrのソースコードには無数の処理時間測定用コードが含まれています。ソースコードをPerformanceで検索すると一杯見つかるはずです。

これらの処理時間測定用コードを使って、
記事の中からキーワードを探し出す処理は1記事当たり1msに収まっているかどうか、概要ウィンドウ表示に500ms以上かかっていないかどうか、起動時間はサイトの数Nに対してO(N)以内に収まっているかどうか、等々、様々な時間を測定しています。

そんな感じで、
最近、HeimdallrのPluginであるキーワードチャネルの開発にあたり、いくつかのRSS検索サイトの処理時間を測定してみました。

測定したRSS検索サイトは、未来検索livedoorFeedBackBulkfeedsの3つです。検索結果のRSS Feedを返すまでの時間を検索してみました。

「猫」「犬」「OPML」「RSS」の4つのキーワードを使い、20回ほど測定してみた結果、未来検索Livedoorは100ms-5000ms(平均1000ms)、Bulkfeedsは100ms-700ms(平均450ms)、Feedbackは150ms-450ms(平均250ms)となりました。

意外だったのが未来検索Livedoorです。企業が運営しているのですから性能は良いと勝手に思い込んでいたのですが、平均的に遅い上に振れ幅がとても大きいのです。これは使い難いですね。

Bulkfeedsは平均的です。ちょっと振れ幅が大きい気もしますが、未来検索Livedoorよりもずっと良いです。

Feedbackは優秀ですね。圧倒的です。ずっと昔使ったときは、エラーばっかりだった覚えがあるのですが、今では最優秀RSS検索サイトです。2004/10/09の改良が効いているんですかね。naoyaさんお見事。

2005年01月15日

魔法のリビルド

ある日のデバッグ

某ソフトに追加した新機能がうまく動いていないようなのでデバッグ作業に励でいました。
でもいくらソースコードを眺めてもミスが見つかりません。
デバッガで変数の値を確認してみた限りでは問題がなさそうなのですが、ステップ実行してみると、思ったとおりに動いていないような気がします。
ソースコードもテンプレートが数多く使われていて、変数の値を確認するのも、動作を追うのも一苦労でしたが、それでも本当にミスは無いのかとソースコードを丹念に調べてみました。
でもやっぱりミスは見つかりません。

どうしようもなくなったので試しにリビルドしてみると、あら不思議。問題なく動くじゃないですか。
さすが Visual Studio.NET 2003。

・・・。次はもっと早くリビルドしよう・・・。

2005年01月09日

HeimdallrがRSSリーダーランキングに復活

HeimdallrがMyRSS.jpのRSSリーダーランキングに復活してます。11位ですが。

RSSリーダー ランキング - 2004/12

Heimdallrダウンロード数はいつもどおりで増えていないので、 このタイミングでランキングに復活した理由は分かりません。

私はこのランキングの上位を目指して日々頑張っているのですが(ちょっと言い過ぎ)、 実は簡単に上位にランクインする方法もあるのです。 いかさましてしまえば良いのです。

例えばこんな方法があります。

配布時やインストール時にMyRSS.jpという便利なサイトがあることを宣伝する
インストール時にまで宣伝するというのはちょっと露骨かな、という気もしますね。
MyRSS.jpに簡単に登録できる機能をHeimdallrに追加する
HeimdallrのPluginを新規開発すれば実現できます。 ユーザにとっても便利そうな気がするので、微妙にやってみたいという気がしない訳でもないです。
デフォルトでMyRSS.jpからRSS Feedを取得するようにする。
究極のいかさまです(笑)。
こんなあこぎな真似をしているRSSリーダーは今のところ無いと思うので、 Heimdallrがこれをやれば簡単にトップになれそうです。酷い話ですね。

いやぁ、いかさまって考えるの楽しいですね。他にも色々ありそうです。 もちろん、いかさまは妄想するだけにしてきます。実行しません。ご心配なく。

2005年01月08日

Heimdallr 1.08で実装する機能

次のHeimdallrのバージョンである1.08で何を実装するのか明確にしてみます。

メインとなるのはChannelExtensionFramework(ChannelExtensionPluginの追加によりRSSリーダー以外の機能を追加できる仕組み)です。
しかし、ChannelExtensionFrameworkだけではユーザメリットは無いので、いくつかのPluginも合わせてリリースすることになるでしょう。 1.08リリース時点までに用意するPluginはまだ考え中です。とりあえずKeywordChannelという簡単なPluginを追加することは確定していますが、これだけではユーザにとってあまりありがたくないので、何か有効なPluginを用意したいところです。さてどんなPluginにしましょうか・・・

最後に現状の要望リスト一覧を載せておきます

上に書いてあるものから優先的に実装していきます(実際のところ、リストの下の方に書いてあるものは、書いてあるだけで実装されることは当面無いでしょう)。上からいくつか実装した時点でバージョン1.08としてリリースします。
実装する際の難易度を難、普、易の三段階で評価し、効果を大、中、小の三段階で評価します。

  • ChannelExtensionFramework実装。難易度は難、効果は大。
  • 複数ユーザによる同時起動対応。難易度は易、効果は小。今まではFunctionServerが起動できないというエラーメッセージがでて起動できませんでした。
  • 概要とビューを重ならないよう表示する機能の追加。難易度は普、効果は中。ビューと概要が重なると邪魔に感じることがあるので重ならないようになるオプションを追加しようと思います。
  • 一度閲覧した記事や、既読にした記事を再度閲覧できるようにする。難易度は普、効果は中。さっき見た記事をまた見たいと思ったときや、既読ボタンで間違えて消してしまったときの救済用です。既読に限らず全部の記事を見ることができても良いかもしれませんね。
  • PC間のデータ移動対応。難易度は普、効果は小。閲覧情報などを簡単に移動できるようにします。自宅と会社でUSBメモリを用いて閲覧情報を共有、ということができるようになります。
  • エラー管理を行う。難易度は難。効果は中。 エラーが発生したサイトが存在することをユーザに伝える仕組みが必要です。
  • 大文字小文字を区別しないキーワードを設定できるようにする。難易度は普、効果は小。 大文字小文字を区別しないこと自体はなんとかなるのですが、キーワード設定ダイアログの仕様を決めるのが難しそうです。
  • 表示項目をカスタマイズできるようにする。難易度は難、効果は小。 現在は、サイトの短縮名、記事の日時、記事のタイトルの3つを表示していますが、これの順番を変えたり、一部を非表示にできるようにします。
  • RSS auto-discoveryに対応する。難易度は易、効果は小。 Heimdallrにとっては、RSS auto-discoveryに対応したサイトの(htmlへの)URLを登録するのも、RSSファイルへのURLを登録するのも大差ないので、あまり有難くはなさそうです。
  • ビューのキーワード/非キーワード間にカーニングをかける。難易度は普、効果は小。 現在、ビューに表示されている記事のタイトルのキーワードと非キーワードの境目はカーニングが行われていません。ちゃんとカーニングしておいた方が良いです。といっても実際にはカーニングを行っても誰も気付かないとは思いますが。

2005年01月07日

Heimdalr 1.08alpha1リリース

Heimdallr 1.08alpha1をリリースします。
安定版ではありません。

Heimdallr 1.08alpha1 ダウンロード

安定版はHeimdallr 1.07です。

大きな変更は、キーワードチャンネルという、ChannelExtensionPluginが使えるようになったことです。 メニューから
ビュー設定→チャンネル追加→キーワードチャンネル→適当なキーワードを入力→OK
と選択してみて下さい。そのキーワードが含まれている記事がいくつか表示されます。

チャンネル追加ボタンの位置が変だとか、ダウンロードに時間がかかりすぎるとか、 そもそもキーワード検索なんてRSS検索エンジンで簡単に置き換えられるとか、色々あるとは思いますので、 コメント頂ければと思います。改善方法は今後考えていくつもりです。

1.07→1.08alpha1の変更点詳細は以下の通りです。

  • ChannelExtensionFramework実装。ChannelExtensionPluginが追加できるようにしました。
  • キーワードチャンネル(ChannelExtensionPlugin)を追加。
  • 複数のユーザがHeimdallrを起動できるようにしました。

2005年01月06日

Heimdallrの規模

HeimdallrのChannel Extension Framework実装も終わりが見えてきました。 設計完了から実装完了まで10時間程度になりそうです。

10時間と書くと短そうに思えます。仕事だったら2日で終わりですからね(勇者は1日で終わらせるかも)。 でも私は長く感じました。というのも、既存のコードに新しいコードをうまく嵌め込むのが難しくてゲームに逃げまくっていたからです。いやぁ弱いですね私。
いきなりコードを追加するのではなく、その前に、既存のコードを調査しつつ追加するべきコードの内容を机上検討をしっかりしてみたら、さくさく作業が進みました。
Heimdallrも規模が多くなってきて、私自身でも古いコードは詳細を把握しきれなくなっています。難しいものですね。

今ちょっとソースコードのステップ数カウントツールを使ってHeimdallrのステップ数を数えてみました。

総ステップ数40892
実ステップ数29243
クラス数243

クラス数が実際よりちょっと少ない気はしますが(もしかしたらstructをクラス扱いしていないのかも) 実ステップ数は大体こんなものでしょう。三万行です。
これよりステップ数が多いフリーソフトは山ほどあるでしょうが、これより少ないフリーソフトも山ほどあるでしょう。 フリーソフトとしては中程度の規模だと思います(統計とったことないので根拠は無いです)。

中程度といいつつも、私は今までこんな大きな規模のソースコードは書いた事がありません。 未知の世界に突入している気分です。
こんな世界を複雑でややこしい世界と考えるとやる気Downですが、新しいことが学べる世界と考えるとやる気Upです。 気持ちを切り替えて、やる気Upさせつつコードを書いて行こうと思います。