MacのAutomatorでサービスを作って定型的テキスト処理を楽にしましょう

ちゃお……†

普段の仕事とかで、カタカナをひらがなにしたり漢字をひらがなにしたりだとかそういうちょっとした文字列の置換をしたい場合がちょくちょくあります。わたしは、いちいちそういうのキーボードで再入力してIMEとかで変換するのがとてもめんどくさく感じます。

そこで、この記事ではMacAutomatorでサービスを作ってそのサービスを使ってテキスト処理を楽にする方法を紹介したいと思います。プログラマーだけでなく事務作業をされている方でも使いこなすと効率化出来るかと思うのでぜひ。

Automatorって?

AutomatorMacに標準で入っているソフトウェアで、色々な処理を自動化することが出来ます。例えば複数の画像ファイルのサイズを一括で変更したり、マウスやタッチパッドの操作を記録して自動実行させたりと、アイディアさえあれば色々なことが自動化出来ます。

ここでは、テキスト処理についてだけ扱うことにします。Automatorの一番のメリットはサービスとして登録することで様々なアプリで実行出来ることかなと思います。サービスとして登録すると右クリックやショートカットキーから簡単に呼び出すことも出来ます。

注意点

Autometorでは .profile などで設定した環境変数を読み込まないっぽいので、コマンドを絶対パスで指定した方がよいです。あらかじめターミナルで which コマンドを実行して、実行したいバイナリやスクリプトなどのパスを確認してください。

例1: 選択したテキストをなるべくひらがなに変換する

前提: あらかじめMeCabnkfをインストールしてください (Homebrewや自前コンパイルなど各自の好きな方法で)

サービスの作り方

f:id:yukinoi:20210529234247p:plain f:id:yukinoi:20210529234311p:plain

  1. Autometorを起動する (わたしの場合は、Spotlight検索でautometorと入力して起動してます)
  2. クイックアクション (歯車のアイコン) を選択
  3. 画面右上の 選択されたテキストを出力で置き換える にチェック✅
  4. 画面左のアクションの下の ユーティリティ > シェルクスクリプトを実行 というアクションを選んで右の空いてるところにドラッグアンドドロップ
  5. 画面右の シェルクスクリプトを実行入力の引き渡し方法:stdinへ になっていることを確認する
  6. その下の入力スペースに /usr/local/bin/mecab -E '' --node-format '%f[7]' -U '%M' | /usr/local/bin/nkf -Ww --hiragana と入力 (mecabnkfのパスはインストール方法によって異なります。ここではHomebrewでインストールした場合のパスを記述しています)
  7. Command⌘キーとsキーを同時押しで保存 (この時の名前がサービス名に使われるのでわかりやすい名前にしましょう)
  8. (任意) もしもショートカットキーを設定したい場合は、画面左上のAppleアイコン (🍎みたいなやつ) をクリックした後に出てくる システム環境設定 をクリックして キーボード > ショートカット > サービス からショートカットを設定したいサービスを選んで ショートカットを追加 をクリックして設定したいショートカットキーを同時押ししてください
シェルスクリプトの処理内容の説明
  1. MeCabで文字列の "読み" だけを推定します (辞書にない素性列が含まれている場合はその部分だけそのままです)
  2. MeCabが推定した読みをパイプでnkfに渡します
  3. MeCabの読みはカタカナなのでnkfで読みをひらがなに変換します (MeCabの辞書にない非カタカナはそのままです)

サービスの使い方

変換したい文字列を選択します。そして下記の方法で変換出来ます。

  • 右クリックして出てくる サービス という項目から使いたいサービスを選ぶ
  • 画面上のバーからアプリ名 (MacVimとかChromeとか) をクリックして サービス という項目から使いたいサービスを選ぶ
  • ショートカットキーを押す (ショートカットを設定した場合)

例2: 選択したテキストをあるファイルに追加で書き込む

手順は例1の1〜2、4、7〜8は同じです。変更点は下記の通りです。

f:id:yukinoi:20210531122838p:plain

  1. 選択されたテキストを出力で置き換える にチェックしない
  2. 画面右の シェルクスクリプトを実行入力の引き渡し方法:引数として にする
  3. 入力スペースに echo ${1} >> ${HOME}/negative.txt みたいに追加書き込みしたいファイルを書きます (この場合は ${HOME}/negative.txt)

サービスの使い方は同じです。

f:id:yukinoi:20210531123135p:plain

ここでは「負例として追加する」という名前のサービスにしました。このようにテキストを選択して右クリックするだけで負例のテキストを追加出来ます。

最後に

ここではテキスト変換を例にAutomatorの使い方を説明しました。応用としてアルファベットを全て大文字にするとか小文字にするとかといったことも出来ます。退屈なことはAutomatorにやらせよう。

宣伝

store.line.me

つい最近罪深わいいLINEスタンプが発売されました!もし気に入っていただけたらバンバンスタンプを貼り付けてください…!

ところでみんな、終電大丈夫?