ATOKの辞書をmacOS標準の日本語入力のユーザ辞書にインポートする方法

普段Macの日本語入力にはATOKを使っています。
macOS標準の日本語入力に比べて、機能も豊富でかなり細かい設定ができたり、変換の気の利きようも比べものになりません。
そんなATOKに、どんどん単語登録をしていってるのですが、iPhoneやiPadなどのMac以外の文字入力になると、その登録した単語が使えません。
iPhoneとの連携を考えると、macOS標準のユーザ辞書にATOKの辞書をインポートするのが1番てっ取り早いと思い、試してみました。
ATOKの辞書をエクスポート
まずは辞書をエクスポートするところからです。
ATOKの[辞書ユーティリティ]を起動して、メニューの[ツール]→[単語・用例の一覧出力…]を選択して、「単語出力」をします。
このとき、「Unicodeで出力する」にチェックが入っていることを確認するのと、人によっては「対象品詞」を「普通名詞」など一部にしておきましょう。

設定と、ファイルの出力先を決めたら「出力」をクリックしてエクスポートします。
macOS標準の辞書形式に編集
出力したファイルは.txt形式ですが、それをmacOS標準の辞書形式の.plistに編集する必要があります。
かなりがっつり編集するので、使うテキストエディタはJedit Ωがオススメです。
まずは.txtファイルの1番上にある!!部分を削除します。

そのあとは最終的に下記の形式にする必要がるので、Jedit Ωの検索・置換機能を使って近づけていきます。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
<key>phrase</key>
<string>へんかん</string>
<key>shortcut</key>
<string>変換</string>
</dict>
<dict>
<key>phrase</key>
<string>きーわーど</string>
<key>shortcut</key>
<string>キーワード</string>
</dict>
</array>
</plist>行を<dict>で囲む
Jedit Ωの[検索]→[検索…(command + F)]で検索パネルを開きます。
あとは「検索:」と「置換:」に下記の正規表現を追加するのと、下の「正規表現」にチェックを入れて「すべてを置換」します。
\n\n</dict>\n<dict>\n
これで行が<dict>で囲まれます。
名詞の削除
次に1番右の列にある「名詞」は不要なので、下記の正規表現で名詞を削除します。
\t名詞* 「置換:」の方は空にしておくことで、単に削除できます。
名詞をいろいろ追加している人はこの作業が少し面倒になります。
変換前のキーワードを編集
次にタブ前(1番左の列)に<key>phrase</key>を追加するのと、<string>で囲みます。
(.*)(?=\t)<key>shortcut</key>\n<string>$1</string>自分の正規表現の書き方が悪いのか、なぜか2個追加されてしまうので2個目の方は削除しておきます。
<key>shortcut</key>\n<string></string> 変換後の単語を編集
タブ後(左から2列目)に<key>shortcut</key>を追加するのと、<string>で囲みます。
(?<=\t)(.*)<key>phrase</key>\n<string>$1</string>余計なタブを削除
最後に余計なタブを消して、改行にしておきます。
\t\n.plistに変更
あとは最初に紹介した下記のテンプレートの<array>の中身に編集したリストを追加して.plist形式で保存します。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
<key>phrase</key>
<string>へんかん</string>
<key>shortcut</key>
<string>変換</string>
</dict>
<dict>
<key>phrase</key>
<string>きーわーど</string>
<key>shortcut</key>
<string>キーワード</string>
</dict>
</array>
</plist>macOS標準の辞書形式にインポート
あとは[システム環境設定]の[キーボード]→[ユーザ辞書]に.plistファイルをドラッグアンドドロップするとインポートできます。

1行でも形式が崩れているとインポートしてくれないので、ちゃんとインポートされない場合は.plistファイル内を見ておかしなところがないか確認しましょう。
また、数千行を超えたファイルをインポートする場合は少し時間がかかります。


Chrome拡張機能の「1Password」と「1Password X」の違いはなに?どちらを使えばいいの?
ATOKで変換時に文章を指摘してくれる「校正支援」タブの設定項目
Chrome拡張機能のVimiumを使ってキーボードだけでブラウザを操作する
Path Finderの「Finderで開く」が機能しないので、Keyboard Maestroで代替用マクロを作成する
Finderで選択したフォルダをVisual Studio Codeで開くAlfred Workflowの作り方
ウェブサイト内の動画キャプチャから保存して共有までをスムーズに行うChrome拡張機能「Screencastify」
アプリやフォルダを一気に開ける「Workspaces」の環境設定
Alfred 4のClipboard History機能で、前にコピーした内容をペーストする方法
定番のパスワード管理ツール「1Password」を使ってパスワードの管理をする
メールによくある「アーカイブ機能」が何なのか今まで知らなかったので調べてみた
AirPodsで片耳を外しても再生が止まらないようにする方法
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
MAMPでhtdocs内に複数のローカルホストを作成する方法
Homebrew Caskを使ってアプリケーションをコマンド一発でインストールできるようにする
Apple Watchでスクリーンショットを撮る方法
Apacheのテストページを非表示にする方法
Ulyssesの「コードブロック」と「ソースブロック」の違いと使い分け
Figmaのフレームを一瞬で整列するプラグイン「LilGrid」
Figmaの画像書き出し方法
Alfred 4のスニペットで使えるプレースホルダー機能
Sketchでデザインを作成するときの基本的な操作方法
Transmitで特定拡張子のファイルを開くアプリケーションを指定する方法