こんな人におすすめ
ユーザー辞書を使い始めたんだけど、これってかなり便利!
でも、登録するときにいちいちシステム環境設定を開かないといけないから面倒。
楽にユーザー辞書登録できる方法はない?
ということで、今回はMacの標準機能「ユーザー辞書」で単語を登録する画面をショートカットで開く方法を紹介する。
実際に執筆者も面倒と感じていたので思い切って作成した。
作成直後のTwitterのツイートが以下。テンションが上がっているのがわかる。
AppleScriptでユーザー辞書の登録画面を一瞬で出すスクリプトを書きました
久しぶりにAppleScript使ったけど、情報が少なくて少し苦労🥺
あとはクイックアクションで保存してシステム環境設定からショートカット割り振ればサクッと使える!
参考:https://t.co/MIpXde0PO6 pic.twitter.com/wIFfZrS71A
— メガネ 🦊 ガジェット・Pythonのブロガー/YouTuber/Webエンジニア (@m_ten_pa) September 10, 2022
本記事ではユーザー辞書とはということから始まり、ショートカットの作成方法の紹介とざっくりとした解説を行う。
ユーザー辞書を有効活用してよりMacライフを充実させてほしい。
本記事でのMacの環境は以下だ。なお、macOS Venturaでは「システム環境設定」→「システム設定」の名称変更があったため、この記事の方法が使えないことに注意。
- M1 MacBook Pro
- macOS Monterrey
- バージョン12.6(21G115)
macOS Ventura版もあり
すでに書いたが本記事の内容はmacOS Ventura以降は動作しない。もしmacOS Ventura以降のシステム設定アプリでユーザー辞書の爆速起動をしたい場合は以下の記事を参照。
コードは複雑にはなったが、やっていることは本記事の内容と同じで、アプリ起動もしくはショートカットだけで簡単にユーザー辞書の画面に飛べる。
-
【ユーザー辞書&Automator】macOSのユーザー辞書登録をショートカットで行う方法(macOS Ventura以降)
続きを見る
ユーザー辞書とは
そもそもユーザー辞書ってのは、特定の文字を打ったらそれに対応する文章が出てくるって機能だ。
よくあるのが以下のようなユーザー辞書。
- じゅ:(自宅の住所)
- めー:(自分のメールアドレス)
- あり:ありがとうございます。
- お:お世話になっております。
- ひ:引き続きどうぞよろしくお願いいたします。
要するに文章入力用のショートカット(短縮系)のことだ。これをうまく使いこなせるようになると、文章入力が爆速になる。
実際、執筆者は200近くのユーザー辞書を登録している。
と言いつつ、実は全ての言葉を短縮しているわけではない。
タイピングミスを正常な文で登録しておくことで、ミスを簡単に修正することができる。
例えば執筆者の場合は以下のようなタイピングミスを登録している。
- 勉強:bねきょう
- できる:dけいる
- 変更:へのく
Macは自動変換(ライブ変換)が搭載れているので、多少のタイプミスもこれで解決できてしまうんだ。
逆にユーザー辞書に頼りすぎていつまで経ってもタイプミスが減らない気もするが。
一般的なユーザー辞書の登録方法
一般的なユーザー辞書での単語登録では、「キーボード」を選択。
続いてユーザー辞書のタブに移動して左下の「+」を押してユーザー辞書を登録する。
いちいちシステム環境設定を開かないといけないし、画面遷移もしないといけなくて面倒。
登録するのが面倒だと登録しなくなる、その結果ユーザー辞書を活用できずに非効率に陥ってしまう。
一方で、記事の方法だとショートカット1つですぐにこの画面までいけるのでかなり楽に登録できる。
本記事の完成系イメージとコード
完成系のイメージが上の通り。
ショートカット1つでシステム環境設定を開いて自動でユーザー辞書登録画面まで移動している。
あとはユーザー辞書を登録するだけだ。
本記事でのショートカット作成はMac標準アプリの「Automator」の「クイックアクション」の機能で行っている。
Automatorの検索欄から「AppleScriptを実行」をダブルクリックして以下のコードをコピペ。
tell application "System Preferences" --システム環境設定のキーボードのユーザー辞書の画面へ reveal anchor "Text" of pane id "com.apple.preference.keyboard" activate end tell delay 1 --処理が詰まるのを防止 tell application "System Events" tell process "System Preferences" tell window "キーボード" tell tab group 1 --キーボード画面のタブ tell group 1 --単語の登録・削除のボタングループ click button 1 --登録ボタン「+」 end tell end tell end tell end tell end tell
以下のように入力できていればOKだ。
たったこれだけでMacでのユーザー辞書の登録が楽になるから驚きだ。
あとはファイルを保存してシステム環境設定のキーボードのサービスから保存したファイルを探してショートカットを設定。
ここでは「Register_UserDictionary」という名称でファイルを保存している。
ショートカットを実行した際のアプリによってはエラー的なものが出るが問題ない。
「システム環境設定」の「セキュリティとプライバシー」の「プライバシー」の「アクセシビリティ」からエラーになったアプリのチェックを入れるだけ。
これが使いこなせるようになるとより効率的にキーボード入力ができるようになる。
Automatorでユーザー辞書の登録ボタンを押す手順
ここからはユーザー辞書登録のコードがどういう構造なのかをざっくり解説する。
この部分を読むことで、他の操作にも応用できるだろう。
Automatorでコードを書く準備
まずはアプリ「AUtomator」を起動する。ロボットのアイコンのアプリだ。
アプリを起動して左側の検索欄に「ap」と入力すると「AppleScriptを実行」というアクションがヒットする。
これをドラッグ&ドロップするか、ダブルクリックで右側の灰色の部分に移動させる。
すると紫の初期コードが表示されるが、以下で処理コードを使用するので、これは使わない。
なお、入力していくコードは、右上の「実行」もしくは⌘ r
のショートカットでお試し実行できる。
サクッと確認したいって時に使うと良いだろう。もちろんエラーの際はエラーと表示される。
システム環境設定を開く
tell application "System Preferences" activate end tell
基本的にアプリはtell application
で呼ぶことができる。システム環境設定は英語で「System Preferences」だ。
他にもカレンダーなら「calendar」、テキストエディットなら「TextEdit」と入力することで使用することができる。
なお、小文字でも大文字でもつづり(スペル)が正しかったらそのアプリが起動する。
ただし、つづりが違っている場合はどのアプリのことなのかを聞かれる。
上の画像では「calendar」のつづりを「calndar」にしたときの様子だ。
この画面でお目当てのアプリを選択しても、スクリプトでは修正されないので注意が必要だ。
誤解を避けるためにも正しいつづりにすることをおすすめする。
ユーザー辞書の設定まで一足飛びする
tell application "System Preferences" reveal anchor "Text" of pane id "com.apple.preference.keyboard" activate end tell
システム環境設定の画面からキーボードの画面、そしてユーザー辞書まで進むにはこのコードにすれば一発だ。
システム環境設定の各大項目にはid
的なものが割り振られており、anchor
でその中のタブが決められている。
なので、id
とanchor
を選択すればすぐに飛べるというもの。
今回はキーボードの中のユーザー辞書の画面まで飛ぶことができた。
Text
:ユーザー辞書com.apple.preference.keyboard
:キーボードの設定
com.apple.preference.keyboard
から遷移できるタブについては以下から確認することができる。
一覧にすると以下の通り。ユーザー辞書(ユーザ辞書)がText
なのは紛らわしい。
InputSources
:入力ソースshortcutsTab
:ショートカットkeyboardTab_ModifierKeys
:キーボードタブの装飾キーの変更keyboardTab
:キーボードText
:ユーザー辞書Dictation
:音声入力
システム環境設定のキーボード部分の要素を取得
ここまでで一瞬で「システム環境」を開いて「キーボード」画面まで遷移、そして「ユーザー辞書」まで移動できた。
次の作業が一番の鬼門で、ユーザー辞書の登録ボタン「+」を押す作業だ。
執筆者が調べた感じ、このプラスボタンをサクッと押すことができないようだった(知っている人がいたら教えてほしい)。
ということで、以下の方法で1つひとつ確認していった。地道だが単純なので苦ではない。
- ユーザー辞書画面の要素の一覧を表示
- 1要素ずつ何なのか確認
- プラスボタンを探し当てる
なお、この方法については以下の記事を参考にした。
キモになるのがevery UI element
という部分で、この文で要素一覧を出力できる。
しかし、これまでの分にevery UI element
を加えるだけだとエラーになる。
tell application "System Preferences" reveal anchor "Text" of pane id "com.apple.preference.keyboard" every UI element activate end tell
参考にしたサイトではtell process
でアプリ「テキストエディタ(TextEdit)」を読んでいるので、今回もこれに倣うことにする。
一連の処理は以下。tell window "キーボード"
がないとシステム環境設定の画面で要素を取ろうとする。
- システム環境設定→ユーザー辞書を開く
- 1秒待つ
- ユーザー辞書の画面の全ての要素を出力
tell application "System Preferences" reveal anchor "Text" of pane id "com.apple.preference.keyboard" activate end tell delay 1 --処理が詰まるのを防止 tell application "System Events" tell process "System Preferences" tell window "キーボード" every UI element end tell end tell end tell
このコードを実行すると以下のように「結果」画面にコードが出力される。
ダークモードだと黒文字が被って見づらいのでライトモードで示す。
結果部分の内容は以下。ダブルクリックで全選択でき、そのままコピペが可能だ。
{button 1 of window "キーボード" of application process "System Preferences" of application "System Events", tab group 1 of window "キーボード" of application process "System Preferences" of application "System Events", button "Bluetoothキーボードを設定…" of window "キーボード" of application process "System Preferences" of application "System Events", toolbar 1 of window "キーボード" of application process "System Preferences" of application "System Events", button 3 of window "キーボード" of application process "System Preferences" of application "System Events", button 4 of window "キーボード" of application process "System Preferences" of application "System Events", button 5 of window "キーボード" of application process "System Preferences" of application "System Events", static text "キーボード" of window "キーボード" of application process "System Preferences" of application "System Events"}
長ったらしいが、基本的にはof application process "System Preferences" of application "System Events”
という部分が続いているだけ。
この部分を削除し、適当に改行などを加えて整理すると以下のようになる。
{ button 1 tab group 1 button "Bluetoothキーボードを設定…" toolbar 1 button 3 button 4 button 5 static text "キーボード" }
この要素はシステム環境設定の「キーボード」画面の「キーボード」タブの要素だ。
なので「Bluetoothキーボードを設定…」という文字があったりする。
ユーザー辞書は画面上部のタブに該当するので、コードの上から2番目tab group 1
を選択する。
tab group 1
の選択は簡単で、tell tab group 1
とするだけ。
これでユーザー辞書の画面に遷移できた(実際に遷移するわけではなく、プログラムの中で遷移しているイメージ)。
ユーザー辞書の画面の要素を取得
tell application "System Preferences" reveal anchor "Text" of pane id "com.apple.preference.keyboard" activate end tell delay 1 --処理が詰まるのを防止 tell application "System Events" tell process "System Preferences" tell window "キーボード" tell tab group 1 every UI element end tell end tell end tell end tell
あとは同じように画面遷移した先でevery UI element
で要素一覧を取得、1つひとつ検証するだけだ。
出力された要素はまたまたややこしいので整理する。整理は先ほどと同じように被っている文字を削除するだけ。
ただし、階層が深くなっている分、削除する文章も長くなっていることに注意。今だと以下の文を削除する必要がある。
of tab group 1 of window "キーボード" of application process "System Preferences" of application "System Events"
整理した後の要素一覧は以下だ。日本語が多いのでどこのボタンなのかわかりやすくて助かる。
{ radio button "キーボード" radio button "ユーザ辞書" radio button "ショートカット" radio button "入力ソース" radio button "音声入力" scroll area 1 pop up button 1 pop up button 2 checkbox "英字入力中にスペルを自動変換" static text "二重引用符:" static text "スペルチェック:" pop up button "スペルチェック:" checkbox "スマート引用符とスマートダッシュを使用" checkbox "スペースバーを2回押してピリオドを入力" checkbox "Touch Barに入力候補を表示" static text "一重引用符:" checkbox "文頭を自動的に大文字にする" group 1 }
ユーザー辞書の画面と照らし合わせて確認すると、確かにこの画面の要素を取得しているのがわかる。
そうなると選別しないといけないのは以下の4種類だけとなる。かなり絞られた。
scroll area 1 pop up button 1 pop up button 2 group 1
これらを1つひとつ確認する。答えは本記事の上の方で書いているが、この際、全てのボタンについて検証してみる。
scroll area 1
の要素を見てみる
tell application "System Preferences" reveal anchor "Text" of pane id "com.apple.preference.keyboard" activate end tell delay 1 --処理が詰まるのを防止 tell application "System Events" tell process "System Preferences" tell window "キーボード" tell tab group 1 tell scroll area 1 every UI element end tell end tell end tell end tell end tell
まずはscroll area 1
から見ていく。と言ってもスクロールエリアはすでに登録している単語一覧の部分しかない。
なので、取得される要素は以下の2つだけ。表(table
)とスクロールバーだ。
{ table 1 scroll bar 1 }
試しにtabel
の要素を取得してみる。結果は案の定、すでに登録している単語の一覧が取得できる。
執筆者の場合はユーザー辞書に200近い数の単語を保存していたので、それを取得できたということだろう。
pop up button 1, 2
をクリックしてみる
tell application "System Preferences" reveal anchor "Text" of pane id "com.apple.preference.keyboard" activate end tell delay 1 --処理が詰まるのを防止 tell application "System Events" tell process "System Preferences" tell window "キーボード" tell tab group 1 click pop up button 1 end tell end tell end tell end tell
pop up button 1
とpop up button 2
は同じ構造なので一緒に見ていく。
それぞれボタン形式なので、tell
で要素を呼ばずにそのままクリック(click
)する。
そうするとユーザー辞書の「二重引用符」の箇所のトグルがクリックされた。
ということはclick pop up button 2
とすると変わりに一重引用符のトグルが押されることになる。シンプル。
これはこれで感動ものだが、欲しいのはユーザー辞書の新規単語登録の「+」のみ。
残されたgroup 1
が正解の「+」だ。
group 1
の要素を見てみる
tell application "System Preferences" reveal anchor "Text" of pane id "com.apple.preference.keyboard" activate end tell delay 1 --処理が詰まるのを防止 tell application "System Events" tell process "System Preferences" tell window "キーボード" tell tab group 1 tell group 1 every UI element end tell end tell end tell end tell end tell
ということで、最後のgroup 1
を見ると、おそらく「+」「-」だろうボタンが2つ出現した。
{ button 1 button 2 }
左にある「+」がbutton 1
に該当するだろう。
実際に確かめてみるとちゃんとユーザー辞書の登録ボタンが押されているのが確認できた。
一方でbutton 2
にすると、一番下にあった「わ:WordPress」が削除された。
完全にビンゴだ。
これでクリックせずに「システム環境設定を開く」「キーボードのユーザー辞書の画面に遷移」「ユーザー辞書の登録状態」まで遷移することができた。
コメント付きのAppleScriptコードが以下だ。
tell application "System Preferences" --システム環境設定のキーボードのユーザー辞書の画面へ reveal anchor "Text" of pane id "com.apple.preference.keyboard" activate end tell delay 1 --処理が詰まるのを防止 tell application "System Events" tell process "System Preferences" tell window "キーボード" tell tab group 1 --キーボード画面のタブ tell group 1 --単語の登録・削除のボタングループ click button 1 --登録ボタン「+」 end tell end tell end tell end tell end tell
あとはこのコードを保存して使いやすくするだけだ。
アプリorクイックアクションとして保存
続いては作成したコードをファイルをして保存する。
今回、執筆者はクイックアクションとして保存するが、初めにアプリを選択した場合はちょっと表示が異なるだろう。
ファイルの保存先はそれぞれ以下だ。
- クイックアクション:
/Users/(ユーザー名)/Library/Services
- アプリケーション:
/Applications
ショートカットを作成(クイックアクションのみ)
クイックアクションを選択した人は「システム環境設定」「サービス」からショートカットを選択できる。
執筆者は今回「Register_UserDictionary」という名称で保存したので、この欄にその名称が表示されている。
右側の「ショートカットを追加」をクリックし、好きなショートカットを登録する。
登録して他の部分をクリックすると登録内容を確認できる。
この時、他のアプリやMac標準のショートカットと被ると使いづらいので注意が必要だ。
次にショートカットを入力すると以下のようにエラーが発生することがある。
この場合は「システム環境設定」「セキュリティとプライバシー」「プライバシー」「アクセシビリティ」から設定を変更する必要がある。
左下のロックを解除してそのショートカットを押した時のアプリの項目にチェックを入れる。
例えばChromeの状態でショートカットを押してエラーが起きたのなら、Chromeの項目にチェックを入れる必要がある。
今回だとブラウザのSidekickで起きたので、Sidekickの項目にチェックを入れた。
チェックを入れて再度ショートカットを実行すると正常に動作してユーザー辞書の新規登録ができるようになる。
以上でユーザー辞書登録の手順は終わりだ。
お疲れ様でした。
ユーザー辞書をもっと気軽に
ということで、今回はMacのユーザー辞書の新規登録をショートカットで実現する方法を紹介した。
ユーザー辞書の機能は広まっていると思うが、その多くはポチポチと押しているだけだろう。
本記事の手法を使って一瞬でユーザー辞書登録をして、さらに効率的に作業に取り組んでいただきたい。