みなさん,こんにちは。
シンノユウキ(shinno1993)です。
仕事とプライベートで同じPCを利用する 。これは,私がぜひ実現したいライフ・プロジェクトの1つです。しかし,それを実現するのはまだまだ難しそうです。現状,職場専用PCと自宅専用PCを使い分ける必要があります。
仕事利用と自宅利用のPCを同じする利点はたくさんあり,その内の1つが日本語インプットメソッドのユーザー辞書の統一です。職場でも自宅でも同じユーザー辞書を使えるとスゴく便利です。仕事専用の単語もあるでしょうが,共通する単語も多くあるかと思いますので,分けるよりも統一した方が良いと考えるのは当然です。
今回は,Google日本語入力のユーザー辞書を複数のPCで同期する方法を紹介します。
※私が以前使用していたATOKにはこのような機能があったのですが,Google日本語入力にはそのような機能がありません(ただしデベロッパー版でテストはされている)。
Google日本語入力のユーザー辞書を複数PCで同期するためには,以下で示すように,PCを起動時にクラウドストレージからユーザー辞書をアップデート → シャットダウン時にユーザー辞書をクラウドストレージにバックアップすると良いでしょう:
- PC起動時辞書データをクラウドストレージからアップデート
予めクラウドストレージにバックアップしておいたデータを,使っているPCの辞書データにアップデートします。これは,PCを起動する度に行います。
- PCシャットダウン前辞書データをクラウドストレージにバックアップ
作業を終了し,PCをシャットダウンする前に,辞書データをクラウドストレージにバックアップします。これにより,PCを起動していた間に辞書登録したデータがバックアップされ,次回別のPCで起動する際にアップデートされます。
今回は上記を自動的に行えるようにするスクリプトを紹介し,タスクスケジューラを用いて自動化する方法を紹介します。ではいきましょう!
STEP①クラウドストレージを設定する
まずは,クラウドストレージを設定します。
GoogleドライブやDropBoxなど,ローカルPC上のファイルを自動的に同期してくれるクラウドストレージを選択しましょう。今回は,Googleドライブ(バックアップと同期)を利用していきます。
Googleドライブの場合,以下のリンクからダウンロードできます:
ダウンロード後,GoogleドライブのファイルをローカルPCに同期するように設定しましょう:

すると,以下のようにGoogleドライブのフォルダがローカルPCに作成されます。このドライブ内にGoogle日本語入力の辞書データをバックアップしていきます。

STEP②ユーザー辞書をバックアップ・アップデートするスクリプト
次に,以下の2つを行うスクリプトを紹介します:
- バックアップされたユーザー辞書をローカルPCのGoogle日本語入力のユーザー辞書にアップデートする
- ローカルPCにあるGoogle日本語入力のユーザー辞書をクラウドストレージにバックアップする
ここでキモになるのが「ユーザー辞書の情報が含まれたファイル」です。これをバックアップしたりアップデートしたりします。このファイルは,Google日本語入力のプログラム内に含まれます。おそらく,以下の場所にあるかと思います:
C:\Users{ユーザー名}\AppData\LocalLow\Google\Google Japanese Input\user_dictionary.db
この「user_dictionary.db」にユーザー辞書の情報が含まれると考えられます。これを操作していきます。
まずは,このファイルをアップデートします。コードは以下のようになります:
@rem update_dic.bat
set filepathFrom="{Googleドライブのパス}\user_dictionary.db"
set filepathTo="C:\Users\{ユーザー名}\AppData\LocalLow\Google\Google Japanese Input\user_dictionary.db"
copy /Y %filepathFrom%,%filepathTo%
"C:\Program Files (x86)\Google\Google Japanese Input\GoogleIMEJaTool.exe" --mode=dictionary_tool
パス等は適宜変更してください。上記を実行することで,クラウドストレージから最新のユーザー辞書にアップデートできます。最終行のコードはユーザー辞書を開くもので,これにより変更が反映されます:

次に,ローカルPCのGoogle日本語入力のユーザー辞書をクラウドストレージにバックアップするスクリプトを紹介します。先ほどのコードと似ており,コピー元とコピー先が入れ替わり,ユーザー辞書を開く工程を排除,そして最後にPCをシャットダウンする工程を加えています:
@rem backup_dic.bat
set filepathFrom="C:\Users\{ユーザー名}\AppData\LocalLow\Google\Google Japanese Input\user_dictionary.db"
set filepathTo="{Googleドライブのパス}\user_dictionary.db"
copy /Y %filepathFrom%,%filepathTo%
shutdown.exe /s /t 0
上記のコードを実行することでユーザー辞書の更新を行った場合にその差分をバックアップできます。
これらのスクリプトは,メモ帳等にコピペし拡張子を「.bat」としてわかりやすいファイル名で保存しておいてください。次のステップで,それらのスクリプトを自動で実行できるように設定します。
STEP③タスクスケジューラを設定する
ユーザー辞書をバックアップするスクリプトは,シャットダウンの前に実行します。ただし,Windowsではシャットダウン前にスクリプトを実行するようにスケジュールすることはできません。そのため,上記で紹介したコードのように「バックアップした後にシャットダウンする」ようにしました。
ただし,PC起動時に実行する,ユーザー辞書をアップデートするスクリプトは「タスクスケジューラ」を利用することで自動で実行することが可能です。以下でタスクスケジューラの設定方法を紹介します。
まずは,タスクスケジューラを起動します。
Windows + R で「ファイル名を指名して実行」を開き,「taskschd.msc」を入力してください:

すると,以下のようなタスクスケジューラが開きます。右側から「タスクの作成」をクリックしてください。「基本タスクの作成」ではありません。「タスクの作成」です。

まずはタスクの基本的な設定を行います。
- 名前欄には,タスクを識別しやすいようにわかりやすい名前をつけてください
- 下部にある「最上位の特権で実行する」にチェックを入れてください。基本的には不要なのですが,念の為のお守りと捉えてください
- 右下の「OK」をクリックしてください

次にタスクのトリガーを設定します。トリガーというのはタスクが実行される条件のことを指します。辞書のアップデートがPC起動時に実行されるようにトリガーに設定しましょう。
- 「タスクの開始」を「スタートアップ時」に設定してください
- 「遅延時間を指定する」にチェックを入れ,遅延時間を「30秒間」に設定してください。ここで,遅延を30秒間に設定したのは,クラウドストレージの同期の時間を考慮したためです。たとえばGoogleドライブの場合,PC起動時にクラウドストレージとローカルとが同期されます。同期前に辞書を更新しても意味がないので,その時間を待っているというわけなのです

次はタスクで実行するプログラムを指定します:
- 「操作」では「プログラムの開始」を選択してください
- 「プログラム/スクリプト」には先に紹介した辞書をアップデートするプログラムの含まれたファイルのパスを指定してください
- 下部の「OK」をクリックしてください

最後にタスクに関する追加設定を行います:
- 初期設定では「タスクを停止するまでの時間」にチェックが入っていますので,そのチェックを外してください
- 右下の「OK」をクリックしてください

これで,完了です!
まとめ
今回は,Google日本語入力のユーザー辞書を複数PCで同期するための方法を紹介しました。「user_dictionary.db」にユーザー辞書の情報が含まれていることがわかれば,あとは各々好きなようにすれば良いと思います。まぁ,本音を言えば,1台のPCを職場でも自宅でも使いたいのですが,そのために乗り越えなければならないハードルは,まだまだたくさん存在しているのです…。