タイピングマネージャ(仮)α4.2公開

ぽぷらさん小池さん報告ありがとうございました.打鍵のtomo起動時に調子が悪くなるという問題がこちらで再現できなかっただけに,直っているようで安心しました.

さて,今日は上記の報告と同時にいただいたバグの修正版を公開します.

ダウンロード
タイピングマネージャ(仮)のダウンロード
実行に必要なもの
Microsoft .NET Framework Version 2.0
以前から使っている人へ
α4.1のファイルをそのまま上書きして使うことができます.

※タイピングマネージャ関連の情報についてはこちらを参照
「タイピングマネージャ」の検索結果一覧 - tomoemonの日記

前回のリリースからの更新内容は以下のとおりです.

2008/02/29
[BUG] スタートアップに登録してある場合,Windows起動時に
      ソフト起動に失敗する問題を修正.
      原因はショートカットに「作業フォルダ」を指定し忘れていたこと
      起動時に必ずカレントディレクトリをセットするようにした
[CHG] 起動時に必要なファイルの存在チェックをするようにした

今回のバグはとりのさんがぽぷさんのコメ欄で指摘しているとおり,私のショートカットの作り方に問題がありました.
タイピングマネージャ - a sentient artist
「Windows起動時にスタートアップに登録しているタイマネが起動できない」と聞いてはじめは「起動時」が問題だと思ったのですが,少し調べてみたらスタートアップフォルダに入れたショートカットに問題がありました.

つまり,スタートアップフォルダの中のショートカットから起動するといつでも発生する問題というわけです.

作業フォルダの問題

僕もすっかり失念していた内容なので少し説明したいと思います.

これまでのすべてのバージョンでメニューのツール→スタートアップに登録を行った場合に作成されるショートカットのプロパティです.リンク先が指定してありますが,作業フォルダが空っぽになっています.

問題はこの作業フォルダで,単純に起動できないだけじゃなく他にも問題があったのでちょっと詳しく説明します.

カレントディレクトリ

まず,プログラムを起動するとその内部では「カレントディレクトリ」という基準になるフォルダの情報がセットされます.例えば以下のような場所にあるtypingmanager.exeを直接ダブルクリックして起動すると,

c:\program files\typingmanager\typingmanager.exe

typingmanager.exeの内部のカレントディレクトリは

c:\program files\typingmanager\

になります.カレントディレクトリはそのプログラムがファイル操作を行うときの基準ですので,プログラムが「hoge.txt」を開くという処理を行うと,自動的にカレントディレクトリの情報を付け足して以下の場所にあるhoge.txtを開こうとします.

c:\program files\typingmanager\hoge.txt

ファイル名を指定する際に「hoge.txt」と書く方法(相対パス指定)と「c:\program files\typingmanager\hoge.txt」と書く方法(絶対パス指定)と書く方法がありますが,後者の方法ですとプログラムの位置を変えた場合にログファイルなどを開けなくなりますので,通常は相対パス指定を使うことが多いです.

作業フォルダとカレントディレクトリ

ショートカットに書いてある作業フォルダはまさにこのカレントディレクトリを指定する情報になります.例えば作業フォルダに「c:\」とだけ書いて打鍵のtomoを起動すると,打鍵のtomoはその本体がどこにあるかに関わらず以下の場所にログを作ろうとします.

c:\log\day_log\
c:\log\detail_log\
c:\log\allday.xml
c:\log\process.xml
c:\log\total.xml

今回はこの作業フォルダが空だったわけですが,空の場合はどうなるかというと,基本的に「そのショートカットがあるフォルダ」がカレントディレクトリになります.

発生する問題

α4.1からは打鍵のtomo起動時に_process.exeというプログラムも起動するようになったのですが,スタートアップフォルダには当然このプログラムが存在しないため,エラーになります.落ちる原因はこれでした.

ただ,落ちるだけならまだかわいげがあって,実はこれまでのすべてのバージョンを使っていた方に問題が発生している可能性があります.先ほど書いたようにログファイルもカレントディレクトリを基準にしますので,スタートアップで起動した場合のログファイルはスタートアップフォルダ内に作ってしまいますorz

スタートアップで起動した場合はログがスタートアップフォルダに,通常の操作で起動した場合はログがプログラム本体のあるフォルダに作成されるので,もしかしたらログがごちゃごちゃになっている可能性があります.(Windows Vistaを除く)

スタートアップを利用されている方はご存じのとおり,α3まではスタートアップで普通に起動できていたため上記のような別の問題が発生しうるわけです.

とりあえず今のバージョンからは必ずプログラム本体があるフォルダを基準にしていますので,スタートアップフォルダにあるログファイルをプログラム本体のあるフォルダに移してもらう作業が必要になります.

1日のうちにスタートアップからだけ起動する場合と通常の操作で起動する場合が完全に分かれている場合は打鍵数については完全に統合することができますが,そうでない場合*1は残念ながら両方のデータをうまいこと整合させるのは難しいです.申し訳ありません.

打鍵数データの統合の方法は以下のとおりです.
スタートアップフォルダ以下にある

log\day_log\20070223.xml
            20070225.xml
            20070226.xml
            ...

というファイルをプログラム本体のあるlog\day_logフォルダの下に移動させるのですが,同じファイル名のものがある場合はファイルサイズが大きい方を残すことをお勧めします.

これだけだと実はプログラムを実行したときに日付別打鍵数に反映されないのですが,この点に関しては次回の更新で対応しようと思います.

あらためて,問題が生じてしまった方にごめんなさい.
まだまだ懲りずにお願いします.

@追記
二つのフォルダに分かれてしまったログの統合処理は次回以降の更新で加える予定ですので,どちらのログフォルダも削除やファイルの移動などをせずに残しておいてください.

*1:PC起動時にスタートアップで打鍵のtomoを起動し,いったん終了させてから同じ日のうちに通常の操作でプログラムを起動させるような場合