SKKIMEで使うため辞書は、 SKK辞書 - FreeStyleWiki にて配布されています。
その中で私が現在使っているのは、
- L辞書 - SKK-JISYO.L
- 人名辞書 - SKK-JISYO.jinmei
- 地名辞書 - SKK-JISYO.geo
- 英和辞書 - SKK-JISYO.edict
ですが、L辞書と人名辞書は結構更新が頻繁です。
この記事を書いているのは、2009年4月11日ですが、
- L辞書は2009年4月4日
- 人名辞書は2009年3月21日
となっていますので、更新したいところです。
wceSKKSERVをSKKサーバとして使っているWIndows XP環境で、PCを起動するたびに辞書を更新するためのバッチファイル(.bat)を書いてみました。
準備
必要なソフト
下記をインストールします。
- wceSKKSERV
http://megadriver.yi.org/~fumi/wceskkserv/ - Wget for Windows
http://gnuwin32.sourceforge.net/packages/wget.htm
wecSKKSERVのインストールについては、wceSKKSERVの導入・SKKIMEから利用 | 君のてのひらからもご参照ください。 私が作成したバッチファイルでは、wceSKKSERVのインデックスファイルの作り先は、辞書を置いてあるフォルダとは別になっている前提です。
下準備
環境変数の設定でGNUWIN32の実行ファイルがインストールされるフォルダをPATHに追加しておくと、後がラクです。 [コントロールパネル] → [システム] → [詳細設定] → [環境変数] で「システム環境変数」PATHを編集してください。 wget for WIndowsのインストール先がデフォルトであれば、「C:Program FilesGnuWin32bin」を追加です。
ディレクトリ構成
- バッチファイルの配置先 D:bat
- SKK辞書の配置先 C:Appsskkimedic
- wceSKKSERVのインデックス作成先 C:Appsskkimedicindex
- wceSKKSERVのインストール先 C:AppswceSKKSERV
上記構成の前提です。
バッチファイル作成
各辞書ファイル(SKK-JISYO.*)に対し、
を繰り返し実行します。 Linuxなどシェルスクリプトであれば、for do~doneで処理を回せるのですが、バッチファイルでは一つのコマンドしか実施できないようでした。 しかたないので繰り返し部分を司るバッチファイル(skk_dictionary_download.bat)も作成しています。 2ファイルは同じディレクトリ(D:bat)に置いてください。
skk_dictionary_update.bat
@echo off rem skk_dictionary_update.bat rem ------------------------- rem by Takuya Y. rem rem 必要なもの: rem wceSKKSERV http://megadriver.yi.org/~fumi/wceskkserv/ rem wget (GnuWin32) http://gnuwin32.sourceforge.net/packages/wget.htm set BATDIR=D:bat set WCESKKSERV=C:AppswceSKKSERVwceSKKSERV.exe set SKKDICDIR=C:Appsskkimedic set ERRORLOG=D:batskk_dictionary_update_error.log rem SKK-JISYOファイルをダウンロード cd %BATDIR% for /f "usebackq" %%D in (`dir /B %SKKDICDIR%SKK-JISYO.*`) do cmd /c %BATDIR%skk_dictionary_download.bat %%D rem wceSKKSERVを起動 set ERRMSG="wceSKKSERV not started" start %WCESKKSERV% IF ERRORLEVEL 1 GOTO ERROR :END exit 0 :ERROR echo %ERRMSG% > %ERRORLOG% exit 1
skk_dictionary_download.bat
@echo off rem skk_dictionary_download.bat rem ------------------------- rem by Takuya Y. rem rem 必要なもの: rem wceSKKSERV http://megadriver.yi.org/~fumi/wceskkserv/ rem wget (GnuWin32) http://gnuwin32.sourceforge.net/packages/wget.htm set ERRORLOG="D:batskk_dictionary_update_error.log" set SKKDICDIR="C:Appsskkimedic" rem ディレクトリ移動 cd %SKKDICDIR% rem oldファイル削除 del old_%1 rem /// 辞書ファイルをrename set ERRMSG="rename error." rename %1 old_%1 IF ERRORLEVEL 1 GOTO ERROR rem /// 辞書ファイルをwget set ERRMSG="wget error." wget http://openlab.jp/skk/skk/dic/%1 IF ERRORLEVEL 1 GOTO ERROR ELSE GOTO END :END exit 0 :ERROR echo %ERRMSG% > %ERRORLOG% rename old_%1 %1 exit 1
skk_dictionary_update.batのショートカットを「スタートアップ」に配置しておいてください。 自分のユーザ環境にログインするたびに実行されます。
改善案
wceSKKSERV をkill → 辞書アップデート → wceSKKSERV起動 としたいのですが、taskkillがWindows XP HOME Editionには付いてこないということなので、とりあえずあきらめました。GnuWin32でkillコマンドが使えるのであれば、それで実戦しようかな。