2009/10/27(火)SofTail .Net版
ならば GUI も Windows Form で書き直して SofTail .Net版にするか!と思いたった。
正直、やってみよう、と思った時にはちょっとワクワクした。
Visual Studio で Windows Form アプリケーションの雛形にしたがって作り、よくわからないのでイベントハンドラも IDE にお任せで生成させて...。とやったんだが、ヘッダの中に実装を書け、といわんばかりにヘッダファイルが開いた。なんの陰謀だよ、とそのヘッダを読んでみるとすでに自動生成されたコンストラクタがばっちりと「実装」されていた。
何を言ってるのかわからねーと思うが俺も何をされたのかわからなかっ(ry。
旧来どおりに GUI をリソースエディタで書いて、ウィンドウプロシージャを生でさわるっていうスタイルのままで行くことにしました。
2009/10/26(月)SofTail
SofTail
SofTailNet-1.0.1.2.zip (2015/06/06)SofTailNet-1.0.1.3.zip (2016/04/20)
MD5 (SofTailNet-1.0.1.2.zip) = 2f9e7f77ac0654dbe50cea8bc2be6367
MD5 (SofTailNet-1.0.1.3.zip) = 547fb48110a151d961ce0d8c76103b4b
棒読みちゃん用プラグイン
これは何?
ファイルの更新を見張って、追記された部分を SofTalk(通称ゆっくりさん) や棒読みちゃんに渡して再生するプログラムです。主に、UOSA クライアントのチャットログを音声再生するために作りました。
単にしゃべる tail としてもお使いいただけます。
UNIX には tail というファイルの末尾を表示するプログラムがあり、-f というオプションをつけるとファイルの追記分を継続して出力し続けるという機能があります。SofTail はこの出力を SofTalk に渡すような動作をします。よって、SofTalk + tail = SofTail としました。
使い方
SofTalk は付属していません。SofTalk からダウンロードしておいてください。SofTalkに複数の行を読ませた際に、読み上げる順序が入れ替わってしまうバグがあります。棒読みちゃんは 棒読みちゃんから。
.Net Framework 3.5 以上が必要です。Microsoft Update などで最新版をインストールして置いてください。
棒読みちゃんを使う場合は、再生開始前に棒読みちゃんを起動しておいてください。
起動すると以下のウィンドウが表示されます。

操作方法
ファイル読み上げさせるテキストファイルを指定します。「参照」ボタンで開きます。
文字コード
入力ファイルの文字コードを指定します。UOSA のチャットログは utf-16 です。
リストにない文字コードでも、Encoding クラス に記載されている文字コードを直接入力して指定することも可能です。
SofTalk
SofTalk を使う場合は SofTalk.exe の場所を指定します。こちらも「参照」ボタンが使えます。
音声合成ソフトウェア
どちらを使うか指定します。棒読みちゃんを使う場合はパスを指定する必要はありません。
※ 棒読みちゃんとSofTailを別々に起動するのが面倒、という要望には別の形でお応えする予定です。
UOSA chat.log の日付を省略する
UOSA の chat.log の行頭についている、[09/10/03][10:10:10] みたいな日付を省略して音声合成ソフトウェアに渡します。
Play
このボタンを押すと再生を開始します。指定されたテキストファイルが更新されると 音声合成ソフトウェアが内容を読み上げます。
Stop
再生を停止します。
Stop ボタンで再生を止めた後に再度 Play ボタンを押しても、停止中の内容は再生されません。
SofTail を終了しても SofTalk は終了しません。
動作環境
推奨環境は .Net Framework 3.5 SP1 が動作する環境 == Windows XP 以上です。動作確認した環境は Window7 64bit, Windows XP SP3 + .NetFramework3.5SP1です。
.NetFramework2.0 及び、Windows XP 以前の環境での動作は未確認です。
よくありそうな質問
Q. 棒読みちゃんだけでは足りないの?A. 棒読みちゃんに付属しているプラグインを見ると、内部では同じような事をしていそうですがユーザー指定のファイルを対象にしたプラグインはありませんね。そんなプラグインが追加されたらとっとと身を引きます。
Q. SofTalk が文章を読もうとする度に Windows セキュリティの警告が出ます。
A. SofTalk.exe のファイルのプロパティで ブロックを解除する を実行してみてください。
Q. 突然すごい勢いで喋り始めました
A. ファイルの末尾に追記されたのではなく、ファイルが"変更"された場合には頭から全部読むかもしれません。SofTail と音声合成ソフトを停止する他に道はありません。
Q. 再生中にグレイアウトしていない項目は変更できるってことですか?
A. 知りません。
Q. MacOSX で tail -f text.txt | saykana -f - を実行するのと何が違うんですか?
A. UNIX文化っていいですよね。
Q. このツールを使うことで EA に怒られませんか
A. SofTail は UO の情報を云々したり、ましてや UO に対してどうこうするものではないので安心してください。ていうか、単にテキストファイルをリアルタイムに読むだけのツールです。
Q. UOSA のチャットログはどこですか?
A. インストールディレクトリの logs\chat.log に置かれます。標準では C:\Program Files\Electronic Arts\Ultima Online Stygian Abyss\logs\chat.log です。
Q. UO2D クライアントのログは読み上げられませんか
A. 試していませんが、utf-16 として読めるかもしれないし、不正な utf-16 なので読めないかもしれません。
Q. UO2D クライアントのログをリアルタイムで読めませんか
A. 2D クライアントのジャーナルログ保存機能はリアルタイムではなく、かつ正しいテキストファイルではないので基本的には無理です。
2D クライアントのジャーナルをリアルタイムで読めるツールはあるので技術的には実現可能ですが、そういったツールの使用はグレーを通り越して完全に黒なので私は作りません。
既知の問題点
重大な問題があります。各機能の詳細な動作確認をしていない、という主に作っている人に起因する問題があります。おかしな動作があったらずばり言ってください。- Start, Stop を連打すると落ちることがある
- SofTalk と連携できるのか、0.9.7.2以降全然確認していない
- Harley Davidson に SofTail っていう車種があるらしい
SofTalk やログファイルのパスは記憶させたい一応実装- メッセージを指定して読み飛ばす機能があるといい
変更履歴
2016.04.20 ver1.0.1.3- Stopしてから再度Startしようとするとクラッシュする問題に対処
- ファイル名に、書式指定文字列を使用できるようになりました
- 文字コードの指定を、リストにないものも直接入力で指定できるように変更
- 一旦指定した文字コードは記憶されて、次回からはリストに表示されます
- [fix] SofTalk との連携が出来なくなっていた問題を修正
- [fix] 存在しないファイルを読む設定にした場合に、Stop ボタンを押しても動作が止まらない問題を修正
- 内部の処理を色々変更
- テキストファイルを吐き出すソフトウェアがファイルを排他ロックで開いている場合に、なるべく邪魔せず邪魔されず動くように変更
- ファイルを読むたびに開いては閉じ、権限エラーがあれば再試行したりするようにしました
- テストはしていますが、エラー処理が漏れていたらすみません
- 設定を記憶するようになりました
- Vista,7では %USERPROFILE%\appData\Local\SofTail に、XPでは %USERPROFILE%\Local Settings\Application Data\SofTail に保存されます
- アイコンを付けました/Aboutダイアログを変えました
- 落書きたのしー
- ビルドターゲットを .NetFramework3.5 から .NetFramework3.5ClientProfile に変更しました
- 対応環境が広がったという事になりますが、実質的には何も変わらないと思います
- .NetFramework2.0 での動作確認をやめました
- SofTalk.exe のパスを指定するための[参照]ボタンが有効にならないバグの修正
- 棒読みちゃんのバージョンアップに伴い、ライブラリを入れ替え
- 棒読みちゃん 0.1.10.0 に付属のBouyomiChanClient.csを使用しています
- 指定したテキストファイルが存在しない場合に不正終了する問題を修正
- 存在しない場合はエラーになるのではなく、ファイルが生成されるまで待つ
- 読み上げソフトに棒読みちゃんを選択した場合に、SofTalkのパスを指定する「参照」ボタンを無効化する
- デフォルトの値を、自分用のUOSA向けパラメータから変更して一般的と思われる値に変更
- 内部の処理をちょっと変更
- .NetFramework 2.0 で動かなくなっていたらごめんなさい
- 棒読みちゃんをライブラリ経由で使用するようになった
- 再生したままプログラムを閉じようとしたときに正常終了できない場合の処理をちゃんとした。
- 棒読みちゃんを利用できるようになった
- 修正: 再生したままプログラムを閉じようとすると正常終了できない場合があったのを修正
- C# + .Net Framework で作成して公開
- C++ Win32 API 版があった
2009/10/26(月)無料のセキュリティソフト
ニュースでみたのは一ヶ月ちょっと前だったか、MS が無料で使えるセキュリティソフトを公開した。
VirtualBox に入れて試してみようかと思う。
残念ながら(?)XP 以降の OS にしか対応していない。
2009/10/24(土)SofTalk
「カスタムUIでゆっくりさんにしゃべらせよう」計画で、毎回プログラムを起動するのが気持ち悪い気がして、でもゆっくりさんは標準入力から読み込んでくれたりはしないようなので自前でライブラリとして使えるものを作ってみようと思った。
読み上げライブラリはフリーで使用可能なものが使われているので、与えられた文字列をひらがなに直す部分だけつくればいい。漢字の逆変換は Win32 の imm* 関数を使い、英数字は固定で読み方を振ってしまえば出来るんじゃないか、と。
が、SofTalk に付属の yomi.html を読んであきらめた。
読みの判定の際に形態素解析までつかってる?
まぁ、そうしないとかなりでたらめな読みになっちゃうわなぁ。
...と思ったけどプログラムのサイズ的にそこまではしてないのか?
参考:
商業利用もされている形態素解析エンジン: MeCab
BSD ライセンスでも利用できる。
2009/09/29(火)Windows の Quick Launch
新しいタスクバーの機能は、アプリケーションが起動してタスクバーにアイコンが現れたらそれを残すかどうかを設定して残しておけば、残ったアイコンからアプリケーションを起動できる。便利っちゃ便利な機能。
が、ここで選んだアプリケーションはアプリケーションそのものの実行ファイルが登録される。
- 引数をつけないといけないアプリケーション
- 関連付けされた設定ファイルから起動するアプリケーション
複数起動したいアプリが合った場合、の操作は覚えればいいレベルなのでスルー。
ということで、設定ファイルダブルクリックで指定されたアプリケーションが起動する、という場合、には操作はしずらい。タスクバーに登録されるのはアプリケーションであって設定ファイルではない。
ジャンプリストの子メニューに設定ファイルを選択できる操作があるが、ちと冗長かと。
結局。従来の quick lauch を使う。
- フォルダを掘る
- フォルダ quick launch に置きたかったショートカット置く
- タスクバーの 新規ツールバーで新しく作ったフォルダを指定
- ツールバーの、タイトルの表示、ボタン名の表示を off にする
- 適当に位置あわせ

従来の quicklaunch は C:\Users\take\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\ に入っているので、これを流用するのがアップグレードインストールの際の豆知識になるかな。
新しいタスクバーは悪くないので、自前quick launch に入れるものはかなり少なくなるはず。