今後の為のメモ

 どうも、version2009では「アプリ」というのを使うみたいなので、それの関連リンク。

http://d.hatena.ne.jp/taichitaichi/20080905

 ここで課題列挙

  1. アプリの日本語ドキュメントはあるのか
  2. アプリの実装は簡単に出来るのか・デバッグ出来るのか
  3. アプリでダイスは(mihaDice並に簡単に)振れるのか
  4. アプリが実装出来たとして、それを各人にインストールする事が出来るのか
  5. アプリが実装出来たとして、公開先をどこにするか

まず最初に

 旧mihaDiceを使っていた方は、version2009アップデートにあたり、version2009の一部機能が使えなくなっている可能性があります(恐らく、機能バッティングを防止する為だったのではないかと予想されます)。

 想定される現象は以下の通り。みはえるの環境で発生していた現象です。

  • メインウィンドウ配下に「トゥデイ」以外のアイコンが出ない
  • その「トゥデイ」を選択してもなにも出ない
  • 「ゲーム」を選んでもなにも出ない
  • 「アプリ」で「ニコニコメッセ」その他が出ない

 上記のような現象が起きていたら以下の作業を行って下さい(レジストリの修正になります。ご自身の責任において作業をお願いします)

  • 「スタート」から「ファイル名をして実行」を選択
  • 「regedit」と入力し、レジストリエディタを起動
  • HKEY_CURRENT_USER/Software/Microsoft/MSNMessenger配下のAddInFeatureEnabledにセット
  • Windows live messengerを再起動する

 これで上記の障害は治ると思います。

日記復活のキッカケ

今日、TRPGのイベントに久しぶりに行きまして、そこで「mihaDiceがWindowsLiveMessenger2009で使えないんだけどどうなってるの」という衝撃の質問を受けました。知らなかったよ! 誰か教えてよ!(笑)

と、思ったら、サイトが消失してました。すみません、友人のサイトを間借りしていたんですが、どうも契約が終わっていたようで……。

でまあちょっと調べてみたら、どうやらversion2009からはAdd-in SDKが廃止された模様です。まあ元々実験的な機能だったから文句言えないんですが、でもちょっとひどいなあ(あ、文句言っちゃった^^;)

そんな訳で、別の方法でダイスを振るべく、今後ここで検討していきます。ただし、こちらにそれほど時間を割けないので(あと、別案が本当に実現しうるのか微妙なので)、あまり期待しないで下さい^^;

なんかはてダの記法を全然覚えてないな。水平線って引けないんだっけ?

WLM(Windows Live Messenger) Add-inプログラミング

 お友達のタイチ(id:taichitaichi)さんが、WLM Add-inのサンプルプログラムとプログラミング上のコツを公開しています。

http://d.hatena.ne.jp/taichitaichi/20070816/1187285628

 そこで、みはえるからもmihaDice(と、現在製作中のアドイン)を作成している際に気がついた事を、羅列しておきます。参考になれば幸いです。まあ、国内でWLM Add-inに挑戦してる人が我々以外に何人もいるのかわかりませんが^^;

Initializeメソッドが実行されるタイミングは、ユーザーが「ツール」メニューを開いた時(っぽい)。

 FriendlyNameが表示される訳だから、当たり前と言えば当たり前なんですが、「ツール」メニューを開いた時にInitializeメソッドが実行されます。確認してないけど、アドインdllを指定した時もなのかな? Initalize内で別スレッド走らせる場合とかに注意。

アドインをオフにしても、イベントが発行されなくなるだけで、アドイン自体は殺されない(っぽい)。

 上と関連してますが、Timerにメソッドをハンドリングさせて、90秒ごとにBBSにテキストを登録するテストをしてたら、アドインをオフにしても1時間くらいテキストが登録され続けて、後で気づいてビビリました^^; shutdownはキチンと実装しましょうという話。

オリジナル絵文字は同時に5個までしか送信できない

 WLMではオリジナルのアイコンを登録して、絵文字として送信する事が出来ますが、同時に送れる異なる絵文字は5個に制限されているようです。6個以上送信しようとすると、発言自体が蹴られます。

 この為、mihaDiceでグラフィカルダイスを表示する野望が潰えました(;;)。mihaDiceでグラフィカルダイス機能が5d6までに制限されているのはこの為です。

とりあえずここであればファイルを保存出来る(他の所は知らない)

 今の所、%APPDATA%フォルダ配下に、アドインと同名のフォルダを作り、そこのファイルの読み書きが出来ています。当然ながら、フォルダは先にインストーラーなどで予め作っておく必要があるでしょう(リアルタイムで作れるのかどうかは知らない)。あ、Webアクセスやファイル操作は、dllをGACに登録しないと出来ないので注意。

 あと、一度作ったフォルダはロックされるようですが、どのタイミングでロックが設定/解除されるのかわかりません(調べてない)。

アドインは他のアドインの発言を感知出来ない。

 Incoming(OutGoing)TextMessageメソッドで取得出来るのはユーザーの発言だけであり、アドインの発言は取得出来ません。まあ、出来たら無限ループしちゃいますけど^^;。「○○が会話に参加しました」などのあらゆるシステムメッセージも取得不能です。これはアドイン製作者にとっては結構厳しい仕様だと思う〜。

 今作っているアドインはmihaDiceと連携して動作する筈だったのですが、この仕様により、mihaDiceの発言を取得出来ない為、別個のアドインを作るのではなく、mihaDiceの機能を拡張する事にしました。

SendTextMessageは、イベント発生中にしか機能しない。

 「アドインの発言は文字数が一定以上(400byte前後。正確な仕様は不明)になると蹴られる」「SendTextMessageは、発生したイベント内では1回しか実行出来ない」という制限があるため「じゃあキューイングして分割送信しよう」という発想になりましたが、これはNGでした(ドキュメントにも書いてあった)。

ウィンドウを判別する機能は無い

 上と関連してますが、現状(WLM8.1)のアドインの仕様では、複数立っているチャットウィンドウを識別する手段がありません。その為、あるウィンドウでのみ動作するアドイン、という物を作る事が不可能です(誰か分かったら教えて下さい!)。

リビルド後は毎回再起動が必要

 これは確かドキュメントにも書いてありますが、WLMがアドインのDLLをキャッシングしてしまう為、リビルド後はWLMの再起動が必要です。

終わりに

 現状(WLM8.1)のアドインの仕様は、非常に限定的です。そもそも「アドインを有効にする為にはまずレジストリをいじる必要がある」って、敷居が高すぎです^^;。恐らく、オフィシャル的にもアドイン機能は試験的な実装なのではないかと予想します。バージョンアップで、より機能が強化される事を期待しています。

 アドインの作り方その物も、いずれ簡単に書きたいと思っています。まあ、MSDNの英語は簡単なので、直接読んじゃうのも良いと思います。

Windows MobileとWindows CEの関係

 Ad[es]用のツールを作ってみたくて、参考資料として国内外の書籍をAmazonで調べてるんですが、いまいちWindows MobileWindows CEの関係がよくわかりません。Wikipediaを見たらちゃんと書いてありました。以下覚え書き。

Windows Mobile
http://ja.wikipedia.org/wiki/Windows_Mobile
Microsoft Windows CE
http://ja.wikipedia.org/wiki/Microsoft_Windows_CE

Windows CEをベースに開発した、PDA向けプラットフォーム」が、(現在の呼称で言えば)Windows Mobileなんですね。更にバージョンの関係は、Windows Mobile 6.0 = Windows CE 5.0カーネル(ちなみにWM5もCE5.0)で、最新版のCEカーネルである"Windows Embedded CE 6.0"は、WM6には採用されて無い。

 CEカーネルは今後重要性がガンガン上がってく筈だけど、割とマーケティングに名称が左右されてるみたいですね^^;

スケジューリングとTODO管理

 みはえるはスケジューリングには「超」整理手帳を使っています。PDA(あるいはスマートフォン)でスケジュール管理する予定は最低5年はありません。紙の手帳サイコー!!

 が、TODO管理は色々悩みどころです。なので、ちょっとAd[es]の「仕事」を試してみたんですが、これって、Todayにタスクを表示できないんですね。それじゃ意味ないんじゃー! Todayってスクロールできるんだから、締め切りが近いタスクだけでも表示出来れば良いのに……。