2009/10/28(水)Windows7

しばらく Windows7 64bit を使ってます。
UO は 2D も SA も動く。UOA も動く。落ちたりもしない。

互換性はかなり出来がいい。今の所、動かなかったアプリケーションはない。得体の知れないフリーウェアを多用していない、というのはあるけども。
ドライバもかなり対応が進んでいるようだ。

アプリケーションが 64bit 対応しているか、はさほど問題にならない。32bit アプリケーションはそのまま動く。32bit アプリ実行の互換性は超よくできてる。Linux や FreeBSD でアレコレやらないといけないことと比べて、やっぱり商用 OS はすごいわ、と思う。OS にとっては厄介な仕事であってもユーザーはそんなこと考えなくていい。
そういう意味では FreeBSD amd64 の 64bit 版 firefox で 32bit 版の Linux 版 Flash プラグインが動くっていうのは超すごいと思った。

アプリケーションそのものが動かなかったことはないが、アプリケーションのプラグインで動かないものはあった。DTM ソフトの VST, DXi プラグインの一部と foobar2000 のプラグインの一部。
どうやら DLL によっては 32bit アプリケーションから 32bit DLL を読む場合でも動かない場合があるっぽい。呼び出し規約とかの問題だろうか?ただの勘だけど。


Flash プラグインが 64bit 対応しないっつー文句をよく見かけるんだけど、俺が中の人ならすでに完成してても Windows8 まで出さない。Windows が標準で使うブラウザが 64bit になるまで出さない。64bit 対応しろって言ってるやつほど真っ先にハマりそうで超うざそうだから。

2009/10/27(火)SofTail .Net版

.Net Framework に正規表現関数があるようだ。
ならば GUI も Windows Form で書き直して SofTail .Net版にするか!と思いたった。
正直、やってみよう、と思った時にはちょっとワクワクした。

Visual Studio で Windows Form アプリケーションの雛形にしたがって作り、よくわからないのでイベントハンドラも IDE にお任せで生成させて...。とやったんだが、ヘッダの中に実装を書け、といわんばかりにヘッダファイルが開いた。なんの陰謀だよ、とそのヘッダを読んでみるとすでに自動生成されたコンストラクタがばっちりと「実装」されていた。
何を言ってるのかわからねーと思うが俺も何をされたのかわからなかっ(ry。

旧来どおりに GUI をリソースエディタで書いて、ウィンドウプロシージャを生でさわるっていうスタイルのままで行くことにしました。

2009/10/26(月)ゆっくりしっぽ

UOSA のカスタムUI からはゆっくりさんにしゃべらせることはできなかったが、あきらめ切れなかったのでなんとなく作った。
Softail-0-1.png

サイドメニューの「ツール」からダウンロードしてください。

指定したファイルを見張り、追加された内容をゆっくりさんに渡す。
ゆっくりさんに [freebsd:jman:tail] -f させるから SofTail。

使い方:
ゆっくりさん は自分で用意してください。
  1. SofTalk の設定で、「引数をファイル名/オプションとして処理する」にチェックを入れておく
  2. 上の段の「入力ファイル」にゆっくりさんに読ませたいテキストファイルを指定します
  3. 下の段の 「SofTalk」に SofTalk.exe の場所を指定します
  4. Play ボタンを押すとファイルを見張ってゆっくりさんにしゃべらせ始めます
  5. Stop ボタンを押すと止まります
一番下の欄はデバッグメッセージです。気にしないでください。

要するに、UOSA のチャットログを指定するとゆっくりさんがそれをしゃべる。

他の用途に使えるかどうかは知らない。UOSA のログが UTF-16 で、SofTalk が UTF-16 を受け入れてくれるのでそのまま食わせてるだけ。漢字コードの変換や特殊な操作は何もしてない。

大事な注意:
β版どころかパイロット版です、エラー処理もバグ出しもしてません。たとえばテキストファイル、SofTalk.exe を指定しないで Play ボタンを押すと不正終了したりするかもしれません。
Play 状態のままファイルを切り替えるとよくないことが起きる気がしてます。
64bit 版 Windows7 で作りました。一応 32bit プログラムとしてコンパイルしていますが、他の環境で動くかどうか知りません。
SofTalk のオプションの変更はしないほうが実は簡単だけど、使い方をよくわからないまま作り始めたのでこうなってるだけ。
UTF-16 のファイルしか試してません。ていうか UTF-16 と他の文字コードを共存させるのって関数ごとちがうから超めんどくさそうで俺には無理っぽいんだけどなんかいい方法あるの?
たった今動くものができてろくに確認もせずに公開してます。

そんなモノですが試して笑っていただけると幸いです。



使ってみた。

UOSA のログは頭に日付、時間が付いているのでそれを読み上げられて邪魔。
-> なんとかしたいけど、PCRE と Boost の regex とどっちが便利なん?
ゆっくりさんのしゃべるスピードよりログが流れるスピードの方がものすごく速い。ヘイブンにいたらあっという間に5分くらい置いてかれた。
-> どうにもならんね
UO のキャラ名は英語だけど、ゆっくりさんは英語の人名の読み方なんて知らない。魔法のスペルなんて知る由もない。俺だって読めない。
-> 地道に辞書を編集するか、どこかで辞書を拾ってきてゆくりさんが読めるようにしてつっこむか。
そもそも SA クライアントはダメだ。
-> 多分ずっとそう。

ということがわかった。

2009/10/24(土)SofTalk

ゆっくりさん こと SofTalk。
「カスタムUIでゆっくりさんにしゃべらせよう」計画で、毎回プログラムを起動するのが気持ち悪い気がして、でもゆっくりさんは標準入力から読み込んでくれたりはしないようなので自前でライブラリとして使えるものを作ってみようと思った。
読み上げライブラリはフリーで使用可能なものが使われているので、与えられた文字列をひらがなに直す部分だけつくればいい。漢字の逆変換は Win32 の imm* 関数を使い、英数字は固定で読み方を振ってしまえば出来るんじゃないか、と。

が、SofTalk に付属の yomi.html を読んであきらめた。
読みの判定の際に形態素解析までつかってる?
まぁ、そうしないとかなりでたらめな読みになっちゃうわなぁ。
...と思ったけどプログラムのサイズ的にそこまではしてないのか?

参考:
商業利用もされている形態素解析エンジン: MeCab
BSD ライセンスでも利用できる。