2004年06月29日

VectorにHeimdallrを紹介して貰えました

VectorのRSSリーダー紹介記事にHeimdallrが掲載されました。めでたいです。
ついでに新着ソフトレビューにも載せてくれたらいいのになーと贅沢言いたい放題。

1.05がリリースできていたらおそらくここで透明スキンと猫スキンが紹介されたと思いますし、
そのインパクトは1.04の比ではなかったと思うのですが、残念ながらいまだリリースできず。
多少チャンスを逃した感はあります。いやー作業遅くてすみません。

2004年06月28日

設定ファイル保存場所

HeimdallrやSBookでは、アプリケーションが使用する設定ファイルを、「マイドキュメント\SutoSoft\アプリケーション名」に記録しています。

このような場所に記録している理由は一応あります。
以前、アプリケーションの設定ファイルをどこに記録しようと考えたとき、以下の候補を考えました。

  • マイドキュメント フォルダ
  • レジストリ
  • アプリケーションデータ フォルダ
  • アプリケーションをインストールしたフォルダ

最初に、複数ユーザが一台のPCを使う場合などを考えてみました。 「アプリケーションをインストールしたフォルダ」に設定ファイルを置くと、 複数ユーザが一つのアプリケーションを使用しようとしたときに混乱が発生するでしょう。
そもそもアプリケーションをインストールしたフォルダに書き込みを行うことができないユーザがいることも考えられるので、ここに置くことはできません。

次に、設定ファイルのバックアップを取りやすいかどうか考えてみました。
「レジストリ」に置くと、バックアップをするためにはregeditを起動して色々と作業を行う必要があって面倒です。それにどこをバックアップすれば良いのか分かり難いですね。

最後に候補に残ったのが、「マイドキュメント フォルダ」と「アプリケーションデータ フォルダ」です。どちらもファイルという形で記録しますので、バックアップは単にExplorerでコピーするだけです。この二つのフォルダの大きな違いは、ユーザから見えるか見えないか、という点です。
ユーザが見える場所においておけば、バックアップを取ってくれるだろうと期待して、私は「マイドキュメント フォルダ」に置くことにしました。

ついでに、アプリケーション初回起動時に、設定ファイル保存先をユーザに提示することによって、ユーザに設定ファイルがどこに保存されているのか意識してもらうようにしました。

これが「マイドキュメント フォルダ」に設定ファイルを記録している理由です。
つまりは(できれば定期的に)設定ファイルのバックアップを取って欲しいのです。
設定ファイルさえ残っていれば、OSを再インストールする破目になっても容易に復活できます。

2004年06月26日

Heimdallr 1.05alpha3リリース

猫スキンを搭載したHeimdallr 1.05alpha3をリリースします。
安定版ではありません。
Heimdallr 1.05alpha3(インストーラー付き)
Heimdallr 1.05alpha3

安定版はHeimdallr 1.04です。

変更点は以下の通りです。

  • 猫スキンを追加しました。二種類の猫スキンが追加されました。


長年Heimdallrの弱点だったデザイン面にようやく改善の兆しが見えてきました。

猫スキンが追加されたことは重要ですが、
猫スキンを表示できるようなシステムがHeimdallrに組み込まれたことも重要です。
つまり、これからは誰でも猫スキンのようなスキンを作ることができるようになったわけです。

といっても、本当に「誰でも猫スキンのようなスキンを作ることができる」ようにするためには
スキンファイルの書き方などを私が書かないとなりません。
そのうーーち書く予定ではおりますが、代わりに書いて下さる方がおりましたら大歓迎です。

とりあえずスキンファイルに関する最低限の解説だけ。

  • スキンファイルは、スキンフォルダ(Heimdallrインストールフォルダ\skin)に置く必要があります。
  • スキンファイルは、拡張子がxmlである場合とsknである場合があります。
  • 拡張子がxmlのファイルは、UTF-8でエンコードされたXML文書ですので、Windows2000以降をお使いの方はメモ帳で開いて読み書きできます。
  • 拡張子がsknのファイルは、特殊フォーマットに見えて実はただのLZH書庫です。拡張子をlzhにしてLHA解凍ツールに放り込めば解凍できます。
  • 拡張子がsknのファイルを解凍するとskin.xmlというファイルといくつかの画像ファイルが得られます。skin.xmlは上記拡張子がxmlのファイルと同じ扱いです。画像ファイルはビューに表示する画像です。
  • 大雑把に言うと、スキンの作成は、skin.xmlと複数の画像を作成してLHA圧縮ツールで圧縮して拡張子をsknに変更すれば完了です。スキンフォルダにコピーすれば新しいスキンが使えるようになります。
  • skin.xmlや画像ファイルは、そのままスキンフォルダに置いても良いです。ただしスキンファイルを配布するときにはLHA形式でまとめて拡張子をsknに変えたほうが良いでしょう。
  • 拡張子がxmlのファイルをどのように書けば良いのか、というのがキモなのですが、詳細はまた後ほど。余裕があったら。ということで。

2004年06月25日

猫スキン

きっかけはBroadBand Watchに掲載されていたティッカー型RSSリーダーの紹介記事でした。

Rabbit Tickerだけしか述べられていないことについては以前のエントリで予測した通りだったのでそれについて書くことはないのですが、気になったのは、

どうも“目が点”のキャラには弱いんだよなあ……。
というフレーズ。

Rabbit Tickerの人気の秘密はやはりウサギか。ウサギなのか~。
Heimdallrにも何かそういうものがあると良いのかな~。と思ったあたりでふと気が付いたこと。

そういえば私には猫属性があった。

猫属性ってなんだヨ。という突っ込みは置いておいてとりあえず猫。
猫~猫~と呟きつつ画像を表示可能なスキンの実装を急ぎ、
好みの猫画像を探して作者に使用許可のお願いメールを出してみたり。

そしてついに猫スキンが完成!

と言ってもまだ最後の詰めが結構残っていて公開するレベルには到達していません。猫スキンが使えるバージョンのリリースはもう少し先です。
でもリリース前に画像の使用を許可して頂いた画像作者様への感謝を込めて、
開発中の画面を公開してみます。

まずははぁとの木のまさみ様による仲良し猫スキン。

Copyright (C) 2004 はぁとの木 All rights reserved.
http://heart-tree.main.jp/
仲良し猫
(画面は開発中のものであり、リリースされたものとは異なる場合があります。)

萌え猫4匹から構成される見ていて楽しいスキンです。

そして次が涼花工房のビスケ様による月にゃんこスキン。

Copyright (C) 2004 涼花工房 All rights reserved.
http://biscuit.milkcafe.to/
月にゃんこ
(画面は開発中のものであり、リリースされたものとは異なる場合があります。)

黒い背景とベストマッチな美しいにゃんこです。

猫いいですねー。画像作者の方々どうもありがとうございます。
もうHeimdallrの名前の由来(@ヴァナディースのセスルームニル苑)とはかけ離れてしまった気がしますが、まあ、猫ですので問題ないでしょう。

2004年06月22日

Heimdallr 1.05alpha2リリース

Heimdallr 1.05alpha2をリリースします。
安定版ではありません。
Heimdallr 1.05alpha2(インストーラー付き)
Heimdallr 1.05alpha2

安定版はHeimdallr 1.04です。

変更点は以下の通りです。

  • インストーラーを追加しました。これで簡単にインストールできるようになりました。

  • 透明スキンの透明度を設定できるようにしました。

  • 「URLをコピーする」コマンドを追加しました。

  • バージョン情報ダイアログから配布サイトを閲覧できるようにしました。らららさんのCHrefStaticクラスを使用させて頂きました。

  • スキン設定ダイアログにスキンの情報を表示するようにしました。といっても私が作成したスキンばかりですが。

  • ビュー右クリックメニューに「スキン設定」コマンドを追加しました。これで簡単にスキン設定ダイアログが開けます。

  • スキン設定ダイアログに適用ボタンを追加しました。ちょっと設定を変えてはすぐ試す、ということができます。

1.05alpha2からインストーラー付きも一緒に配布するようにしました。
両方配布するのは手間がかかるので、特に意見が無ければインストーラー付きのみ配布するようにする予定です。

2004年06月20日

Heimdallrのインストーラー

「自分で作る前に、まず探してみよう」

というのが最近の私の標語です。
インターネットは情報の宝庫なので、自分で手間暇かけて頑張らなくても、
検索サイトで検索するだけで色々なものが手に入ります。

話は飛んで、ラグナロクオンラインのギルド(たぶん)であるノルンの使徒のサイトHeimdallrの使い方について書いて頂きました。私が書いたHeimdallr付属ヘルプの使い方よりも詳しい模様です。負けた~

内容の詳しさについては置いておきまして、
使い方の最後の方に、Heimdallrをスタートアップに登録するように書かれています。
私としても、Heimdallrをスタートアップに登録しない使い方というのは思い当たりません。
Heimdallrはスタートアップに登録し、常時記事を表示して初めて真価を発揮するアプリケーションであり、記事を見たいときに起動するのであれば3ペインのメーラー型RSSリーダーの方が良いでしょう。

スタートアップに登録するべきアプリケーションならば、
インストール時にインストーラーが登録するべきです。
ユーザに手作業でやらせたらユーザフレンドリーなアプリケーションとは言えないでしょう。

というわけで、Heimdallrは、インストーラー付きで配布するべきアプリケーションなのです。
私もHeimdallrをテストするためインストール作業(にあたるもの)を何度も行っていますが、
やはりインストーラーがある場合と無い場合ではインストール完了までのクリック回数が全然違います。

ようやく本題です。

インストーラー(作成アプリケーション)は結構あるようですし、自分で作ることもできます。
さてどうしましょうか。

「自分で作る前に、まず探してみよう」なので、自分で作るという選択は真っ先に却下。あるものを使いましょう。

あるものを使うためには、どんなものがあるのかを調べた上に比較するべきですが、これも、「自分で作る前に、まず探してみよう」という標語にもあるとおり、比較しているサイトを探すことにします。

おお、ありました。
VBに適したインストーラを探そうというサイトがそれです。
私が使っているのはVBではなくVCですが、インストーラーの特徴が色々書いてありますのでVCに適したインストーラーを探す参考にもなります。

私がインストーラーに要求する特徴は、以下の3点です。

  • Windows Updateを全て行った状態であれば配布ファイルをそのまま実行できること。exeであればWindows Updateを行わなくても実行できるので問題ありません。exeでなくても、Windows Updateで実行環境が配布されているのであれば良いものとします。

  • アンインストールができること。立つ鳥後を濁さずと言いますか。とりあえずレジストリに書いた情報を含めて全部消去できるようにしておきたいです。

  • 実績があること。インストーラーにバグがあってインストールできなかったら話になりませんので、大勢の人が使って色々試しているインストーラーが良いですね。

さて、上記比較記事をざっと見てみた感じでは、
Visual Studio Installerが良さそうなのですが、残念ながらこれはWindows Installerが前もってインストールされていないと使えません。Windows Installerは確かWindows Updateでは配布していなかったので、これは要求する特徴を満たしていません。

そうすると・・・Inno Setupなんかが良さそうですね。
無料だというのも魅力的ですし機能も充実してます。
もちろん要求する特徴も全て満たされています。
日本語の解説サイトもあるので
とりあえずこれを使ってみることにします。

Heimdallr 1.05alpha1リリース

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

安定版はHeimdallr 1.04です。

変更点は以下の通りです。

  • 透明スキン追加!お待たせしました。ようやく透明スキンが実現できました。ビュー設定→ビュー設定変更→スキン設定→スキン→透明(黒)or透明(白)と選択して下さい。しかしスキン設定は設定メニューの奥深くにあって使い難いですね。なんとかできればなんとかします。

  • 設定ファイルの形式が変更されました。本バージョンをインストールすると、過去のバージョンには戻れなくなります。必要ならば設定ファイルのバックアップを取っておいて下さい。

  • その他いくつかのバグ修正。


透明スキンはWin2000以上にのみ対応していますので、
Win9x系を使用されている方は透明スキンを選択しても透明になりません。

さて、ここで課題になるのが、透明スキンをデフォルトにするかどうか。
α版のうちはどうでも良いと思いますが、β版をリリースする前に決定しなければなりません。

デフォルトにすると、インストールしてとりあえず使用してみると透明になっているので、
ユーザに大きなインパクトを与えると思います。
しかし、透明スキンを使用しているビューのサイズを大きくすると分かるのですが、
透明スキンは重たいです。これはもうどうしようもないです。
そのため、ユーザは重くて操作し難いという印象を持ってしまうかもしれません。
重たいけれど綺麗な透明スキンか、軽いけれどヘボいシンプルスキンか、どちらをデフォルトにするべきか?
判断の難しいところですね・・・。

ポップアップメニュー表示の細かい制御

環境
Visual C++.NET 2003
ライブラリ
MFC 7.1

CMenu::TrackPopupMenuを呼び出してポップアップメニューを表示した際、 メニュー項目を選択するとCMenu::TrackPopupMenuから戻ってきますが、 メニューコマンド自体はSendではなくPostされるので、 一旦OSに制御を返さないとメニューコマンドの処理は行われません。
メニューコマンド処理後、何か別の処理を行いたいというとき、これではちょっと不便です。 特に、メニュー項目を選択せずキャンセルした場合、何もメニューコマンドがPostされないので、 ポップアップメニューをキャンセルしたときに何か処理をさせる方法がありません。

そこで、選択したメニュー項目のIDを取得し、SendMessageによりメニューコマンドを送信する方法を以下に示します。

// CPoint pointにはメニューを表示させる座標が格納されているものとします。
CMenu menu;
menu.LoadMenu(IDR_MENU/*メニューID*/);
CMenu* pPopup = menu.GetSubMenu(0);
SendMessage(WM_INITMENUPOPUP, reinterpret_cast(pPopup->GetSafeHmenu()), MAKELPARAM(0, FALSE));
UINT nId = pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RETURNCMD | TPM_NONOTIFY, point.x, point.y, this /*thisがCWnd派生クラスの場合*/);
if (nId != 0) {
	SendMessage(WM_COMMAND, MAKEWPARAM(nId, 0), NULL);
	/* ポップアップメニュー処理後の処理 */
}else {
	/* ポップアップメニューがキャンセルされたときの処理 */
}

ポイントはTrackPopupMenuの第一引数です。こんなフラグもあるんですねー。

2004年06月19日

VSSデータベースの分析と修復

環境
VisualSourceSafe 6.0d

うちのソースコードを管理しているVisualSourceSafe(VSS)のデータベースが壊れました。 壊れたといっても、ソースコードを失ったわけではなく、 特定のバージョンを指定してソースコードを取得することができなくなっただけです。

昨日、Heimdallr 1.04のバグを修正して1.04aでもリリースしようかと思い、 1.04とラベルを振ったバージョンを分岐させようとしたら、 バージョンが見つかりません。 と言われてしまいました。

MicrosoftのVSSエラーメッセージ解説を見ても、原因は不明。

[ツール] メニューの [履歴の表示] をクリックし、[ファイルの履歴] ダイアログ ボックスから適切なバージョンを選択してください。

いやだから適切なバージョンを選択しているつもりなんですが・・・。

データベースの修復など色々試みて見ましたが、 結局1.04のソースコードを取得することはできませんでした。

試しに1.03や1.02を取得してみても、なぜかダメ。 何ヶ月も前に付けたラベルが今頃使えないと言われてもねぇ・・・。

バックアップは取ってあるのでいくらでも復元できます。 しかし、そもそもVSSデータベースがいつから壊れていたのか分からないのでどうしようもないです。実のところいつ壊れたか分かったところでどうしようもありません。

VSSを使っている方は、毎日データベースの分析と修復を行い、壊れていないか確認した方が良いです。分析と修復用に以下のようなバッチファイルを用意しておきましょう。

SET PATH=%PATH%;"VSSインストールフォルダ\win32"
SET TARGET=VSSデータベースフォルダ

del %TARGET%\data\backup\*.* /Q
analyze -F -D %TARGET%\data

以下は一例です。

SET PATH=%PATH%;"C:\Program Files\VSS\win32"
SET TARGET=\\hogehoge\vss

del %TARGET%\data\backup\*.* /Q
analyze -F -D %TARGET%\data

分析結果ウィンドウのステータスバーにデータベース解析の進行状況が表示されますが、 100%に到達してもまだ終わっていません。 「分析が完了しました。」と表示されるまで待ちましょう。 100%に到達してから「分析が完了しました。」と表示されるまで10分以上かかることもありますので、コーヒーでも飲みながらのんびりと待つことをお勧めします。

VSSデーターベースは、普通に使っていても結構壊れるものです。 壊れたことがすぐに分かれば直前のバックアップをすぐに復元すれば問題は最小限に抑えられるでしょう。上記のバッチファイルをOSのタスクに登録しておき、できれば毎日、少なくとも毎週実行することをお勧めします。

しかし、これがウン万円もするツールの実力なのか・・・。MicroSoftのばかーーーーーー。

2004年06月17日

Heimdallrにスクロールバーが無い理由

Heimdallr紹介エントリを見つけたので遠慮なくトラックバック。

さて、ここで話題になっている問題は、
Heimdallrが、取得した記事のうち、ビューに表示できる範囲でしか記事を表示しないという問題です。
今回はこの問題について色々考えて見たいと思います。

まず、現状(1.04)のHeimdallrの仕様としては、
まだビューに表示されていない残りの記事を見るためには、
既読ボタンによる既読化や右クリックメニューによる既読化、あるいは左クリックして閲覧するなど、とにかく何らかの形で「既に読んだ」ことにして
ビューから記事を削除する必要があります。

スクロールなど他の方法で残りの記事を表示することはできません。

このような仕様にした理由は一応あります。
最初、Heimdallrの利用シーンとして、私はこんなシーンを考えていました。

  1. 普段は適当にいくつかのニュース記事のタイトルを表示させておく。

  2. 仕事の合間にふとビューを見ると気になる記事が!

  3. すかさずマウスをタイトルの上に移動させて概要確認!

  4. 概要を見て詳細が気になったらそのまま左クリック!

このシーンの中では、ユーザが積極的にニュース記事をチェックすることはありません。
ユーザはなんとなくニュースをチェックするだけです。
このようなユーザにとって必要なのは、スクロールする機能ではなく、
多くの記事の中から、ユーザにとって興味がありそうな記事を適切にチョイスしてくれる絞込み機能なのです。
そのため、Heimdallrには、キーワード指定機能や、よくクリックするサイトの記事を多く表示する機能など、絞込みに役立つ機能が搭載されていますが、スクロール機能は搭載されていないのです。

本当は、ReadOneのような、ユーザの興味を学習して適切な記事をチョイスする機能を作りたかったんですけれど、残念ながら実力が及ばず今のところ断念したままです。
この機能、まともに作れば大学の論文が書けちゃいますよね。うーん。考えれば考えるほど難しそうです。

最後に、この問題に今後どう取り組むか、ということについて。
いやぁホントどうしましょうかね。
現状のビューには、サイト毎に記事がまとまって表示されているので、
単純にスクロールバーをつけてスクロールさせてもどう表示すればいいのか分かりません。
タブブラウザみたいな感じで2ページ目以降を見ることができるようにするという方法や、
一定時間ごとに表示する記事をシャッフルする方法など、色々考えられますが、さてはてどうするのがベストなのか。
さらに、うまいことやらないと、3ペインのメーラ型RSSリーダーでいいんでは?という話にもなりかねません。壁紙に張り付くティッカー型でなければできないことをうまく盛り込まなければなりません。

あー。煮詰まって頭が爆発しそうになってきました。
結論。
この問題は頭の片隅においておきます。
何かCoolなユーザインターフェースを思いついたら実装しましょう。
思いつかなかったら現状維持ということで。

いやーどなたか仕様(詳細まで)考えてくれませんかねー。
いやいや仕様だけなんて言いません。
ソースコードが公開されているわけですからいっそ実装して頂いても・・・。

2004年06月14日

BroadBand WatchでRSSリーダーの紹介が始まりました

BroadBand WatchRSSリーダーの紹介が始まりました。

ちょっと前にもやっていなかったかなという突っ込みは置いておいて、
今週はとりあえずメーラー型のお勧めRSSリーダーが紹介されています。
来週も続くそうなので、たぶんティッカー型やブラウザ型の紹介が続くのでしょう。

そうなると気になるのがHeimdallrが紹介されるかどうか。

しかし、今回の記事にはメーラー型RSSリーダーのご本尊である
Headline-Readerの名前すら出てきません。NewsGlueだけ。
この単体一押しな紹介っぷりを見てしまいますと、
恐らくHeimdallrのHの字も出てこないだろうと思います。

たぶんティッカー型はRabbit Tickerが紹介されてそれで終わりでしょう。
うーん。残念です。

話は変わりますが、
ティッカー型のRSSリーダー比較記事ってありませんね。

メーラー型はスピリッツオブゼロ@blogさんの所に優秀な記事があるのですが、
ティッカー型については見つかりません。
常時情報を表示し続けるRSSリーダーという括りでココログリンク集窓の杜Vectorなどを探してみると10本以上はありそうなので、そろそろ比較記事が書けそうな感じです。

どなたか書いていただけませんかね~と他力本願。

2004年06月13日

背景が透明なウィンドウの作り方(1/2)

環境
Visual C++.NET 2003
ライブラリ
MFC 7.1
OS
Win2000以降

以下のような背景が透明なウィンドウの作り方です。

20040613_transparent.png

ウィンドウの透明な部分をクリックしても、ちゃんと応答するウィンドウになるようにします。

まず、どの方法を使って実現するか考えてみます。候補を以下に挙げてみます。

  • SetWindowRgnによりウィンドウを変形させる方法
  • PaintDesktopにより壁紙をウィンドウに表示する方法
  • レイヤードウィンドウにして透明にする方法

先頭から一つずつ検討してみます。

SetWindowRgnによりウィンドウを変形させる方法。
BeginPath/TextOut/EndPathでテキストの形をしたリージョンが作成できるようなので、これを使い、文字の形をしたウィンドウにすれば上手くいきそうではあるのですが、
文字以外の部分(透明な部分)をクリックすると、背後のウィンドウが応答してしまいます。 これは困りますね。
結局透明な部分をクリックしたときに応答する方法が分からなかったので(システムフックを使えば不可能ではなさそうですが、大変そうです)、この方法はボツです。

PaintDesktopにより壁紙をウィンドウに表示する方法。
このAPIは、デスクトップの壁紙を指定したデバイスコンテキストに描画するAPIです。
デスクトップの壁紙をウィンドウに表示すれば、透明なウィンドウのように見えるはずです。 壁紙の部分をクリックしても、問題なく応答できます。
しかし、メモリデバイスコンテキストに対して描画できないという大きな問題がありまして、 上記画像のようなウィンドウを描画しようとすると、ディスプレイデバイスに 背景描画→テキストという順番で描画する必要があり、ちらつきが発生します。 いろいろと頑張ればちらつきを多少抑えることはできますが、なくすことはできません。 他に方法がなければ諦めてこの方法を使うことにしますが、とりあえず他の方法を考えてみます。他のウィンドウの上に表示すると透明には見えませんしね。

レイヤードウィンドウにして透明にする方法
レイヤードウィンドウはWin2000から追加された機能です。拡張ウィンドウスタイルにGWL_EXSTYLE を指定して、SetLayeredWindowAttributesによりカラーキーやアルファ値を指定することにより透明にきます。
しかし、このレイヤードウィンドウも問題がありまして、透明にしたい部分を黒にしておき、カラーキーを黒にすれば透明にできるのですが、なんと透明にした部分をクリックすると背後にあるウィンドウが応答してしまいます。
アルファ値を指定して透明にすると、テキストまで透明になってしまいますし、どうもうまく行きません。

しかし、このレイヤードウィンドウを2つ重ねればどうやら望みの透明なウィンドウが 実現できそうです。

以下次回に続く・・・

2004年06月12日

Heimdallr 1.05で実装する機能

さて、次のHeimdallrのバージョンは1.05です。
1.05では何を実装するのかを考えてみたいと思います。

1.05の最大の目玉機能は、ビューの背景が透明になる透明スキンにする予定です。

透明化については1.04開発中に実装して欲しいとの要望を色々頂きました。
Windowsには、ウィンドウを透明にする機能はいくつかありますので、
単に透明にすること自体は簡単なのですが、透明にしてしまうと、重たいという問題や、
透明な部分をクリックすると背後にあるウィンドウが反応してしうという問題など、
色々な問題がありまして、どうやったら解決できるのか分からず、実装できないままでした。

しかし、どうやら色々工夫すれば透明にした上で使い勝手が落ちないようにすることも
できなくはないようですので、ちょっと挑戦して見たいと思います。

おまけに現状の細かい要望リストを載せておきます。

上に書いてあるものから優先的に実装していきます。上からいくつか実装した時点でバージョン1.05としてリリースします。
実装する際の難易度を難、普、易の三段階で評価し、効果を大、中、小の三段階で評価します。

  • ビューの背景を透明にする透明スキンを追加する。難易度は難、効果は大。これが実装できれば強力な特徴になるはずです。
  • デスクトップアイコンの下にビューを表示できるようにする。難易度は普、効果は中。デスクトップのアイコンと壁紙の間にHeimdallrのビューを表示できるようにします。最下位ウィンドウのさら下という感じですね。
  • 「URLをコピーする」コマンドを追加。難易度は易、効果は小。他のアプリケーションとの連携が楽になります。
  • バージョン情報ダイアログから開発サイトを閲覧できるようにする。難易度は易、効果は小。簡単に開発ページへ飛べます。
  • スキン設定ダイアログを簡単に開けるようにする。難易度は易、効果は小。ビュー設定ダイアログの奥深くにあるスキン設定をもっと簡単に使えるようにします。
  • スキンの詳細を表示する。難易度は易、効果は小。スキンの著作権表示や使用上の注意をスキン設定ダイアログに表示するようにします。
  • スキンのプレビューを表示する。難易度は普、効果は中。スキン設定ダイアログは設定項目が多く、結局どのような表示になるのか分かり難いです。それをサポートするためにプレビュー機能があると便利ですね。
  • スキンを変更した際にフォントが変更されないようにする。難易度は易、効果は小。フォントを変更して使っている人は、スキンを変えるたびに設定しなおす必要があるので面倒ですよね。
  • 一度閲覧した記事や、既読にした記事を再度閲覧できるようにする。難易度は普、効果は中。さっき見た記事をまた見たいと思ったときや、既読ボタンで間違えて消してしまったときの救済用です。既読に限らず全部の記事を見ることができても良いかもしれませんね。
  • スキン機能の強化。背景、枠、既読ボタンにビットマップが設定できるようにする。難易度は難、効果は大。透明スキンがちゃんと実装できたらこの機能は不要になるかも・・・?
  • エラー管理を行う。難易度は難。効果は中。 エラーが発生したサイトが存在することをユーザに伝える仕組みが必要です。
  • 記事にカーソルを合わせてからしばらくはビューを更新しないようにする。難易度は普、効果は小。 記事をクリックしようとしたら別の記事を開いてしまったということが無いようにするためです。
  • キーワード検索処理をバックグラウンドで行う。難易度は難、効果は中。 現在、GUIを扱うスレッドと同じスレッドでキーワード検索処理を行っています。その結果、更新する記事が数千ある場合、更新完了時に記事の中からキーワードを探し出す処理を行うため数秒固まったように見えます。これをなんとかしようと思います。
  • 大文字小文字を区別しないキーワードを設定できるようにする。難易度は普、効果は小。 大文字小文字を区別しないこと自体はなんとかなるのですが、キーワード設定ダイアログの仕様を決めるのが難しそうです。
  • 表示項目をカスタマイズできるようにする。難易度は難、効果は小。 現在は、サイトの短縮名、記事の日時、記事のタイトルの3つを表示していますが、これの順番を変えたり、一部を非表示にできるようにします。
  • RSS auto-discoveryに対応する。難易度は易、効果は小。 Heimdallrにとっては、RSS auto-discoveryに対応したサイトの(htmlへの)URLを登録するのも、RSSファイルへのURLを登録するのも大差ないので、あまり有難くはなさそうです。
  • ビューのキーワード/非キーワード間にカーニングをかける。難易度は普、効果は小。 現在、ビューに表示されている記事のタイトルのキーワードと非キーワードの境目はカーニングが行われていません。ちゃんとカーニングしておいた方が良いです。といっても実際にはカーニングを行っても誰も気付かないとは思いますが。

ううむHeimdallr 1.04のときよりも項目が増えているような・・・?

Heimdallr 1.04リリース

Heimdallr 1.04をリリースします。
安定版です。
Heimdallr 1.04
Heimdallr 1.04ソースコード(Visual C++.NET 2003用)

Heimdallr 1.03からの変更点は以下の通りです。盛りだくさんです。

  • 設定ファイルの形式を変更しました。

  • 複数の同じ記事があるとき片方を既読にすれば両方とも既読になるようにしました。

  • RSS 1.0準拠のRSS Feedを読み込めないことがある問題を解消しました。

  • 既読ボタンを追加しました。

  • 「このサイトの表示されている記事を既読にする」コマンドを追加しました。

  • 枠の色やテキストの色を変更できるようにしました。

  • 枠の色やテキストの色のセットを三種類用意しました。

  • ポップアップメニュー表示中は記事を更新しないようにしました。

  • Ctrlキーを押しながらビューを左クリックしたときは記事を既読にするようにしました。

  • 受信データ量を減らして更新処理を高速化しました。

  • 一定時間が経過してもRSS Feedのダウンロードが完了しない場合は中断するようにしました。

  • ビュー毎に起動できるブラウザを選択できるようにしました。

  • ビューに西暦を表示しないようにしました。

  • ビューの移動とサイズ変更を禁止できるようにしました。

  • ビューにRSS FeedをD&Dして登録中に終了すると強制終了することがある問題を解消しました。

  • キーワードの一部が重なっている場合、認識できないことがある問題を解消しました。

  • Win98SEで、概要ウィンドウのフォントが一部乱れる問題を解消しました。

Heimdallr 1.04に追加されたメイン機能は既読ボタンとスキンです。既読ボタンにより記事が簡単に既読にできる(ビューから削除できる)ようになり、スキンによりテキストの色や背景の色を変えることができるようになりました。

なお、Heimdallr 1.04beta2からの変更点は以下の通りです。

  • インストール直後はRSS取得タイムアウト時間が0秒に設定されていた問題を解消しました。

ふう、なんとか一仕事完了です。
安定版のリリース間隔は今のところ一ヶ月強ですね。
このペースを保ちたいところですが、さていつまで保てるやら・・・。

あと、こっそりHeimdallrリリース通知用RSS Feedを配布してみます。
この開発日記から、Heimdallrのリリースに関するお知らせだけを抜き出したものです。
(この開発日記のRSS Feedを取得している人にとっては、このHeimdallrリリース用RSS Feedは不要です。)
URLはこちらRSS

2004年06月10日

Heimdallr 1.04beta2リリース

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

安定版はHeimdallr 1.03です。

Win9X系を使っている方にのみ関係がある変更だけです。
変更点は以下の通りです。

  • Win98SEにおいて概要ウィンドウのフォントが乱れることがあるバグを修正しました。


このまま何も問題が発生しなければ今週末には安定版としてリリースできると思います。

といっても自分だけのチェックではやはり不安なので、
一通り使ってみて問題が無ければ動作報告をお願い致します。

2004年06月07日

Heimdallr 1.04beta1リリース

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

安定版はHeimdallr 1.03です。

変更点は以下の通りです。

  • 一定時間が経過してもRSS Feedのダウンロードが完了しない場合は中断するようにしました。これで、サーバとの接続状態が悪くても、更新アイコンが表示されっぱなしになることはなくなるでしょう。

  • 西暦を表示しないようにしました。これでより多くのタイトルが表示できるようになりました。

  • ビュー毎に起動できるブラウザを選択できるようにしました。重たい高機能ブラウザや軽い低機能ブラウザを適切にビューに割り当てると便利かもしれません。

  • ビューの移動とサイズ変更を禁止できるようにしました。動かす必要のないビューはこれらの操作を禁止することで、誤操作を起こしにくくなります。

1.04で追加する予定の機能は全て追加しましたので、
本バージョンからベータ版になります。
ベータ版では、機能の追加は行いません。
安定版である1.04がリリースされるまで、ドキュメントの整備とテスト、デバッグに専念します。

1.04ではHeimdallrの中核となるコードに手を加えているので、
結構バグが潜んでいるのではないかと思われます。
よってしばらくはベータ版のままではないかと思われます。

もし一週間して何も問題が見つからなければ安定版としてリリースする予定です。

2004年06月06日

特殊なウィンドウを持ったMFCアプリケーションの最初の一歩

環境
Visual C++.NET 2003
ライブラリ
MFC 7.1

MFCは、SDIやMDIなどの標準的なウィンドウを持ったアプリケーションを開発するのに向いたクラスライブラリですが、
MFCで特殊なウィンドウも作ることができます。
例えばHeimdallrはMFCを使って作られています。(HeimdallrのGUIはこんな感じです。)

しかし、特殊なウィンドウを持ったアプリケーションを作りたいんだけれど、 まず最初にどうすれば良いの?というあたりが躓きやすいので、
私が特殊なウィンドウを持ったアプリケーションを開発するとき、 プロジェクトの初期設定をどのようにしているかというのを書いておきます。

最初に、新しいプロジェクトを作成します。
プロジェクトの種類はVisual C++プロジェクトのMFCアプリケーションです。

次に、MFCアプリケーションウィザードでプロジェクトの初期設定を行います。
変更項目は以下の通りです。

  • アプリケーションの種類はシングル ドキュメント
  • ドキュメント ビュー アーキテクチャサポートのチェックをOFF
  • MFCの使用法はスタティック ライブラリでMFCを使用
  • 初期ステータス バーをOFF
  • ツールバーはなし

出来上がったスケルトンコードから、CChildViewを取り除きます。

最初に、プロジェクトから、ChildView.cppとChildView.hを削除します。

次に、MainFrm.hから以下の行を削除します。

  • #include "ChildView.h"
  • OnCmdMsg
  • m_wndView
  • OnSetFocus

OnCreateも削除しても良いのですが、たいていの場合OnCreateにコードを追加する必要が発生しますのでそのままにしておくのが無難でしょう。

次に、MainFrm.cppから以下の行を削除します。

  • ON_WM_SETFOCUS
  • OnSetFocusメンバ関数全部
  • OnCmdMsgメンバ関数全部

次に、OnCreateを編集して以下のようにします(CChildViewに関するコードを取り除いただけです)。

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	return 0;
}

最後に、PreCreateWindowを以下のように編集します。ウィンドウスタイルは、他に追加したいスタイルがあればどんどん追加しておきましょう。

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;

	cs.x = 100;
	cs.y = 100;
	cs.cx = 200;
	cs.cy = 200;
	cs.style = WS_VISIBLE | WS_BORDER | WS_POPUP;
	cs.dwExStyle = 0;
	cs.hMenu = NULL;
	cs.lpszClass = AfxRegisterWndClass(0, ::LoadCursor(NULL, IDC_ARROW), NULL, AfxGetApp()->LoadIcon(IDR_MAINFRAME));
	return TRUE;
}

さて、コンパイルしてみましょう。 スクリーン左上の方に怪しげな四角が表示されていたら成功です。
四角の中を左クリックし、ALT+F4を押してアプリケーションが終了することを確認しておきましょう。

あなたのお望みのインターフェースにするにはまだまだやることがたくさんあるとは思いますが、ひとまずこれが最初の一歩になるでしょう。

2004年06月02日

Heimdallr、紹介されませんねぇ

日経BPRSSリーダーの紹介記事が掲載されています。
残念ながらHeimdallrは紹介されていません。ううっ。(T_T)

前のBroadBand WatchRSSリーダーの紹介記事でも紹介されなかったので、
またダメなのか・・・という感じです。

こういった有名ニュースサイトでソフトが紹介されると利用者が一気に増加するので、
紹介されないかされるかがその後そのソフトが発展するかしないかの運命の分かれ目だったりします。

紹介されると、
利用者が増加→様々な反響がある→やる気がでる→機能向上→利用者が増加
という上向きのスパイラルに入れてどんどん発展していきますが、
紹介されないと、
利用者が増えない→反響が無い→やる気が出ない→機能が増えない→利用者が増えない
という下向きのスパイラル(というか円を描いているだけかな)に陥ってしまうことがあります。

Heimdallrも、窓の杜一度紹介されたことがあり、それをきっかけに上向きのスパイラルに入れました。
まだそれが続いているのでなんとか頑張っていますが、
最近は反響も少なくなってきていますし、そろそろまた何か一押しが欲しい頃です。

一筋の光明があるとしたら、Vectorの人気順検索結果
2004/06/02 23:30時点ではHeimdallrが4位(2004/05/08更新)、Headline-Deskbarが6位(2004/05/02更新)、Rabbit Tickerが7位(2004/01/27更新)。
なんとHeimdallrがHeadline-Deskbarを抑えて4位(ティッカー型ではTOP)に!
正直Headline-Deskbarだけは抜けるとは思いませんでした。そんなバカな!(自分で言うな)という想いです。

でもFeedBackFindForwardなどで日々のRSS関連のエントリを眺めていると、他のティッカー型RSSリーダーを使い始めました、という話はあってもHeimdallrを使い始めました、という記事はほとんどありません。

つまりは上記のVectorの人気順検索結果を説明するための情報が何も見つからないわけです。一筋の光明になるんだかならないんだか・・・。さてはて。

2004年06月01日

Heimdallr 1.04alpha4リリース

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

安定版はHeimdallr 1.03です。

変更点は以下の通りです。

  • 記事更新にかかる時間がより短くなりました。

  • ビューの色セット(スキン)をいくつか用意し、ビューの色をより簡単に変更できるようにしました。

  • 既読ボタンの大きさを変えられるようにしました。


1.04で実装する予定の機能はほとんど実装完了しました。
あとはちょっと安定性を向上させてbeta版をリリースする予定です。

ちなみにこのサイトのアクセス数は、一日あたり約50ですが、
Heimdallrの新版をリリースしたときだけ倍の100くらいになります。
これをHeimdallrに対する期待と受け取って(ホントかな?)頑張ります!