Windowsのユーザ辞書をMacに移行する

サムネイル画像

WindowsからMacに乗り換える際に、キーボードの辞書をそのまま移行する方法があまりネットになかったので書いてみます。

全体の流れとしては、以下の3ステップです。

  1. Microsoft IMEからユーザ辞書をテキストファイルにエクスポートする
  2. Pythonスクリプトでplist形式に変換する
  3. Macの日本語入力にインポートする

1. Windows IMEからユーザ辞書をエクスポートする

Windows側での作業です。

  1. タスクバーのIMEアイコン(「あ」や「A」と表示されているところ)を右クリック
  2. 「単語を追加」をクリック
  3. 左下にある「ユーザ辞書ツール」をクリック
  4. メニューから「ツール」>「一覧の出力」を選択
  5. 任意の場所にテキストファイルとして保存する

    デフォルトではわかりにくい場所に指定されているので、デスクトップに変えておくことをおすすめします。

エクスポートされたファイルは、以下のような形式になっています。

!Microsoft IME Dictionary Tool
!Version:
!Format:WORDLIST
...

うけち	請地	名詞
がかく	画角	名詞

先頭の数行は ! で始まるコメント行で、それ以降がタブ区切りの辞書データです。各行は「よみ」「単語」「品詞」の3列で構成されています。

2. Pythonスクリプトでplist形式に変換する

Mac側での作業です。以下のPythonスクリプトを使って変換します。

最新のmacOSにはPython3が標準搭載されていますが、何らかの理由でインストールされていない場合はあらかじめインストールしておいてください。

macOSのユーザ辞書plist形式について

macOSのユーザ辞書は、XML形式のplistファイルとして管理されています。各エントリは shortcut(よみ)と phrase(変換後の単語)のペアです。

<dict>
    <key>phrase</key>
    <string>変換後の単語</string>
    <key>shortcut</key>
    <string>よみ</string>
</dict>

変換スクリプト

以下の内容を convert_dict.py という名前で、辞書ファイルが入っているフォルダに保存してください。

import plistlib
import sys

def convert(input_path, output_path):
    # UTF-16LEで書かれたWindows IME辞書ファイルを読み込む
    with open(input_path, "rb") as f:
        raw = f.read()

    text = raw.decode("utf-16-le")

    # BOM(バイトオーダーマーク)があれば除去
    if text.startswith("\ufeff"):
        text = text[1:]

    # 各行をパースして、よみ・単語を取り出す
    entries = []
    for line in text.splitlines():
        line = line.strip()

        # コメント行と空行はスキップ
        if not line or line.startswith("!"):
            continue

        parts = line.split("\t")
        if len(parts) >= 2:
            reading = parts[0].strip()   # よみ
            phrase = parts[1].strip()    # 単語
            entries.append({
                "shortcut": reading,
                "phrase": phrase,
            })

    # plist形式で書き出す
    with open(output_path, "wb") as f:
        plistlib.dump(entries, f, fmt=plistlib.FMT_XML)

    print(f"{len(entries)}件の単語を変換しました")
    print(f"出力ファイル: {output_path}")

if __name__ == "__main__":
    if len(sys.argv) != 3:
        print("使い方: python3 convert_dict.py <入力ファイル> <出力ファイル>")
        print("例:     python3 convert_dict.py windows_imedict.txt macos_user_dictionary.plist")
        sys.exit(1)

    convert(sys.argv[1], sys.argv[2])

スクリプトの実行

ターミナルを開き、スクリプトと辞書ファイルを保存したフォルダに移動して、以下を実行します。

python3 convert_dict.py <Windowsの辞書テキストファイル.txt> macos_user_dictionary.plist

「100件の単語を変換しました」のようなメッセージが出れば成功です。

👉

スクリプトが何をしているか

Windowsの辞書形式からMacの形式に変換するためのプログラムです。

  1. UTF-16LEでデコード --- WindowsのテキストファイルをMacやPythonで扱える形式に変換
  2. コメント行をスキップ --- ! で始まるヘッダ行を除外
  3. タブで分割 --- 各行を「よみ」「単語」「品詞」に分ける
  4. macOS形式にマッピング --- 「よみ」を shortcut、「単語」を phrase として辞書を組み立てる
  5. plistとして出力 --- Pythonの plistlib でXML plist形式に書き出す

なお、Windows IME側にある「品詞」の情報(名詞・人名・地名など)は、macOSのユーザ辞書形式に対応するフィールドがないため使用していません。

3. Macの日本語入力にインポートする

  1. 日本語入力モードにする(画面右上に「あ」の表示がある状態)
  2. 「あ」をクリックすると出てくるメニューから、”ユーザ辞書を編集…”をクリック
  3. 出力されたplistファイルをドラッグ&ドロップ!

これでWindowsで使っていた単語がMacの日本語入力に登録されます!

補足

  • このスクリプトはMacに最初からインストールされているPython 3の標準ライブラリだけで動くため、追加のパッケージインストールは不要です。
  • エクスポート元のファイルがUTF-16LEでない場合(手動でエンコーディングを変更した場合など)は、スクリプト内の decode("utf-16-le") を適切なエンコーディングに変更してください。
  • macOS側で辞書に重複があっても、インポート時に上書きされるだけなので問題ありません。

最後まで読んでいただきありがとうございました。

実際はこんな記事を読まなくても、Claude Codeをお使いの方なら、Macのターミナルで以下のプロンプトを投げれば1分で変換してくれます。

cd "Windows IMEでエクスポートした辞書ファイル(.txt)が入っているフォルダ"

claude

# 起動後に以下のプロンプトを入力

フォルダに入っているテキストファイルは、Windows IMEで出力したユーザ辞書一覧です。これをMacにインポートするために、plist形式のファイルに変換してください

この記事の文章もついでにClaude Codeで書いてもらいました。わたしが編集したのは細かい言い回しと画像だけです。