2010年7月17日土曜日

ATOK の辞書を RAM ディスクに置く

ATOK 2010 が発売されました。ATOK 2009 と Mac OS X 10.6 の組み合わせで発生していた、ATOK で入力した文字がテキストの最後尾に追加する形でしか入力できない、という致命的なバグが解消され、再び快適な環境が帰ってきました。

それと前後して、MacBook Air の SSD が老朽化したようで、プチフリーズが発生し、文字入力中 (ATOK の学習辞書書き換え中?) に数秒程度待たされるという、見過ごせないパフォーマンス劣化が継続的に発生していました。S.M.A.R.T. 値は以下の通りで、そんなに悪くはないのですが…。(2010-08-09 追記) ATOK は無実です。

ATTRIBUTE_NAME          VALUE WORST THRESH TYPE
Used_Rsvd_Blk_Cnt_Chip  088   088   011    Pre-fail
Used_Rsvd_Blk_Cnt_Tot   098   098   010    Pre-fail
Unused_Rsvd_Blk_Cnt_Tot 098   098   010    Pre-fail

Mac OS X には RAM ディスクの機能があります。学習情報や登録単語情報が頻繁に更新されますので、これを RAM ディスクに移すことにします。私の場合 ATOK 2010 のユーザ辞書もろもろ (~/Library/Preferences/ATOK23/) で 2MB 程度です。

RAM ディスクを作成し、ATOK のユーザ辞書を RAM ディスクにコピーし、動作中の ATOK を強制終了するスクリプトは、以下の通りです。

#!/bin/sh

# Parameters
SIZE=4194304
MOUNTPOINT=/Volumes/ramdisk
ATOK=ATOK23.app/Contents/MacOS/ATOK23

# Initialize a RAM disk
NUMOFSECTOR=`expr $SIZE / 512`
RAMDISK=`hdid -nomount ram://$NUMOFSECTOR`
newfs_hfs -v ramdisk $RAMDISK
mkdir -p $MOUNTPOINT
mount -t hfs $RAMDISK $MOUNTPOINT

# Copy contents to the RAM disk
cp -R $HOME/Library/Preferences/ATOK23 $MOUNTPOINT

# Kick ATOK
kill `ps -ef | grep ${ATOK} | grep -v grep | awk '{ print $2; }'`

このスクリプトを、システムを起動する度に実行します。Automator を起動し、アプリケーションとしてワークフローを作成し、ログイン項目に登録しておけば OK です。本来の順番としては、RAM ディスクを作成 → 初期化 → 辞書をコピー → ATOK 起動にしないといけないのですが、私の環境では FileVault を使っているなど、諸々の事情で起動順序をうまく制御することができません。ATOK を強制終了するというのは、あまり気持ちよくないのですが、ATOK 起動後にしかこれ以外の方法がないのが現状です。

Mac OS X の RAM ディスクはうまくできていて、4MB の容量を指定して初期化しても、実際にファイルをコピーして使用した分だけメモリを確保します。ですので、容量をどうするか試行錯誤しなくても、若干大きめに設定しておけば大丈夫です。

あとは、ATOK の環境設定で、RAM ディスクのユーザ辞書データを参照するように設定します。

“ATOK省入力学習データ” も時々更新されますので、これも RAM ディスクのファイルを参照するようにしたいのですが、設定する GUI がありません。仕方がないので、設定ファイルを直接いじります。現在使用中の設定ファイル (私の場合は “環境移行設定 (ATOK 2009)” でした) をテキストエディタでで開き、“ATOK省入力学習データ” を検索し、以下のように変更します。

<key>ユーザーデータ</key>
<dict>
  <key>パス種別</key>
  <integer>1</integer>
  <key>辞書ファイル名</key>
  <string>/Volumes/ramdisk/ATOK23/ATOK省入力学習データ</string>
</dict>

同様に、“ATOK再変換ユーザー辞書”も RAM ディスクのファイルを参照するようにしたいのですが、こちらは設定箇所がわかりません。どうしたらよいのでしょうか?

RAM ディスクなので、電源を切ると内容が消えてしまいます。辞書のデータをどうバックアップするかは、今後の課題です。

0 件のコメント:

コメントを投稿