今年の反省と来年への抱負

DonutPの改造版の配布から始めていろいろやってきましたねぇ。まとめてみればunDonutの開発ということなのでしょうけれど、C++Perlなどを始めいろいろな知識を蓄えることが出来た年でもありました。とりわけ「設計」の大事さを認識されられることが多く、来年はもう少しスマートな設計を目指してプログラムを作成できるようにしたいですねぇ。

反省といえば、予定が遅れに遅れていることでしょうか。まぁどだい無理な予定立ててたんでそれなりに頑張れたとは思うのですが。あとは、手を広げすぎて未だに未実装の機能が山ほどあることもありますね。これは結局一つずつ何とかしていくしかありませんね。来年も頑張ります。ということで。

来年はどうしましょうかねぇ。とりあえず1月にはサイトのリニューアルを考えてます。いろいろと増えてきて見づらくなったので。ついでに掲示板を改造してバグと要望のデータベースみたいなものを作りたいと考えてます。

本体の方ではプラグイン機能の強化を検討しています。本体自体の機能の増加は抑えてプラグインの数を増やしたいです。ドキュメントも図とかを取り入れて敷居を低くしたいですね。出来ればドッキングウィンドウの仕組みを取り入れてプラグインを各部に配置できるようになったらいいなぁとか企んでいますが、それは大仕事なので慎重に行きますけれど。

それ以外ではユーザー定義メニューの改良とGUIの整備ですね。GUI以外は動作するんですが全然使われてなさげなので。便利なのになぁ。

ここまではunDonutの話なんですが、来年は他にも手をつけてみたいんですよねぇ。WEBプログラミング関係にも興味が出てきて、いろいろやってみたいです。誰か開発引き継いでくれないかなぁ。引き継いでくれなくても両方やる気ですが。

しんどい

ご無沙汰です。とりあえず、一段落しました。年末の忙しさは流石に半端ではありませんでした。というのもちょっと半年に一度のイベントに全力を注いでいたので、開発に割く時間が全く取れませんでした。それもまあ昨日で終わったのでそろそろこちらの活動も再開しようかと。来年から。もう実家帰りますし。

ちと何だかよく分からないバグが多いようで、苦労しています。全然再現しないのでどう対策したらいいか分かりません。ちょっと行き詰ったので別の要望されていた機能をつけました。いい感じです。今28日夜中の3時です。もう眠いです。寝ます。

お気に入りメニューの並び替えについて

以前から散々出来ないだのやりたくないだの言ってきたんですが、正直こちらとしてもこの機能は欲しかったので、暇を見て情報収集等をしてました。それで何とか出来そうだという光が見えたので他の要望そっちのけで作業に入りました。(皆さんごめんなさい)

まず、メニューをドラッグ&ドロップする仕組みが必要だったんですが、それはWindows2000以降にあるWM_MENUDRAGとWM_MENUGETOBJECTメッセージを使うことで何とかしました。この時点で98系を切り捨ててしまうことになってしまいましたが、やむを得ずというところです。これ以外の方法は時間的にも能力的にも正直選択不可能でした。

ドラッグ&ドロップの機構に必要なものは既にDonutのソースにまとまっていたので、後作るものはIEメニューの並び順の取得、操作、書き込みでした。独自定義フォルダについては今回考えないことにしました。独自の方が設計が簡単になるんですが私が使いたいのはIE互換だったもので。IEお気に入りの並び順はレジストリにあって、仕様不明のバイナリデータになっていますが、先人が解析したデータを残されているのでそれにしたがってプログラムを書きました。自分でも再解析してみましたがおおよそ同じ構造でした。

残った問題はデータの変更に対する柔軟さです。IEを操作したり、お気に入りファイルに対して、移動、改名、削除または追加などをしたりするとデータとファイルが一致をしなくなったりするので、データをファイルに合わせて修正や再構築したりしてなんとかしのぎます。まだいろいろと想定していない操作パターンとかがあるはずなので一通り何とかしないと実用になりませんね。

とりあえず今のところ出来てるのがこれです。
http://www5.ocn.ne.jp/~minute/tab/MenuOrderTest.zip

本音を言うと安心して使えるものじゃないなぁと思いますが、一応動くことは動くのでないよりはましです。

試す場合は適当なフォルダを作って適当なお気に入りをいくつか追加してから、そのフォルダ内で並び替えてみるのがいいかと思います。

個人的メモ

Menu API
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/Resources/Menus.asp

vtable
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vccore/html/vcconspecifyingatl_no_vtablemacroforcompileroptimization.asp
http://www.ascii.co.jp/pb/msdn/article/a01_0029.html

Ole D&D
http://hp.vector.co.jp/authors/VA016117/winsdk2.html

MenuOrder
http://donutp.com/bbs/srch.cgi?no=0&word=4031&andor=and&logs=18.txt&PAGE=20

WM_MENUDRAGとWM_MENUGETOBJECTの情報が見つからない・・・。英語情報すらろくに無い。Minimum operating systemsがWindows 98, Windows 2000と書いてあるから98でも動くのかと思ったけど試してみるとドラッグは効くがドロップが効かない。対策を考えつつ暫定として2000以降に絞る。

SAKURA Internetに登録してお試し中。アドレスは張らないけど頭使わなくてもすぐ分かります。とりあえずCGIを置いてみる。いろいろと調整が必要のようで。

掲示板について

今は一つの掲示板でやっているわけなんですが、正直要望やバグの処理が全然追いつかず、どんどんログが流れていってしまうという状況にあります。それで、どうにもタスクの把握が難しい状況にあるので掲示板を別のものに変えるか、もう一つ設置したいと考えています。

出来れば要望やバグ報告に対して情報交換するとともに、私のタスクリストとして同時に活用できるようなシステムを考えています。要するに、今私はいただいた要望などをテキストエディタでまとめて一個一個処理しているわけですが、正直その作業だけでも随分だるいです。掲示板は200件までしか見れませんし、どこにどの要望が出されたのかとか把握しづらいですし。結局は私が使いこなせていないだけなんですが、ええ。

多分そういう機能を持つ掲示板は無料レンタルにはなさそうな感じなんでCGIの使えるスペースを借りて何とかすればいいのかなぁと思ってるのですが、いかんせん経験が無いので二の足を踏んでいたり。

何でもいいですのでこうしたらいいんじゃないかー、とかこんな掲示板あるよ、とかありましたらコメントいただけるとありがたいです。

Sleipnirについて技術的なこと

ソースが無いにしてもプラグイン機能が備わっているのである程度のことは出来ると思います。プラグインは多分DLLの形式をとってSleipnirと同じプロセスに組み込まれるはずで、同一プロセスであればウィンドウなどの操作はほぼ自由に出来るはずです。私は以前DonutPツールバープラグインから操作してツールバーを固定するプログラムを書いたことがありますし、2chブラウザのかちゅーしゃの拡張ソフトkageもまた同様にDLLから本体の動作を制御しています。Sleipnirの場合はBCGControlBarというやたら高機能なライブラリを使っていて、ライブラリが行う標準の動作を妨げておかしくなることもありうるのでどれだけ問題なく制御できるかはわかりませんが、ソースが無くても多少の変更は効くかもしれませんということです。ただしこの方法でGecko対応とかは無理でしょうし、リソースの追加とかも効かないんで、結局のところはソースが戻ってくるのを祈るしかないかなぁ。

unDonut開発日記(11/19)

ここ数日IEコンポーネントの検索ダイアログをのっとっていろいろ出来たらいいなとか画策してたんですが結局失敗して海の藻屑と化しました。というのも、検索ダイアログのコントロール(ボタンとか)がIEコンポーネントと同様で標準のボタンではなかったんです。標準のボタンならタスクバーだろうがメッセージボックスのボタンだろうが無理矢理操ることも可能なんですが、IEコンポーネントは画面にボタンのイメージをレンダリングするだけなので勝手が違うみたいです。検索ダイアログの中身はInternet Explorer_Serverというクラス名を持っていて、IEコンポーネントと同じだったので、これを操作するのと同じ手順でいけるかなと思って試したんですがダメでした。最後の手段は自分で作った検索ダイアログを標準のと置き換えるというものですが、もうくたびれたのでここで中止。あーあ、随分と時間を使ってしまった。

(追記)http://www.codeproject.com/wtl/wtldockingwindows.asp
これを組み込んでみたい衝動にかられてます。でも多分プログラムサイズが100〜200KBぐらい増えそうな気もするので微妙なところです。