はじめまして、この度CDSLに配属となりました院生の高谷です。
サービス開発について研究していて、夢と目標は大きく、パフォーマンスにメリハリを、がモットーです。
夢に関しては、夢川ゆい派閥と華園しゅうか派閥があると思いますが、私は華園しゅうか派閥に属しています。
大学入るまでデザイン・イラストを専門にしていて、コロナ騒動前まではコミケ中心に色々出してました。はやく気にせず参加できる日が来ることを心待ちにしています。
ヤリスクロスに乗っています。近いうちに愛知にFC3Cを乗りにいくつもりです。
ここまで自己紹介でしたが、たぶん意味不明だと思います。そういう人間だと認識いただければ光栄です。
話が脱線しそうですので、本題に入りたいと思います。
Appleにちょっぴり詳しいです。
なので、今回は意外に知られていないオートメーション機能について語ります。
AppleScript
近頃、MacBookを使い始める人をよく見かけるようになりました。
特にM1チップ登場後からは、そのマシン親和性の高さから”沼”にハマっていく人を、暖かい目で見守っています。
そんなMacシリーズには、macOS 7の頃から AppleScript というものが実装されています。
これはApple独自の言語で、macOS内のあらゆる動作を自動化することができます。
実は標準搭載されているもので、専用のアプリケーション スクリプトエディタ を使って記述することができます。
標準では /system/Applications/Utilities/Script Editor.app
となります。
図:クリップボードにあるテキストデータをGoogle検索するAppleScript
スクリプトエディタは、ほぼAppleScriptを記述する専用のアプリケーションになります。
AppleScriptというだけあり、記述方法もApple独自のものとなります。
考え方自体はSwiftに近いものがありますが、それでも全く違うものと考えた方が良いです。
というのも、AppleScriptは「可能な限り自然な英文で記述可能」であることを目指しているもので、構文を読むと確かに英文っぽさを感じます。
この英文ぽさが、記述された処理の理解のしやすさでもあり、冗長記述の原因でもあるため、一概に良いものとは言えませんね。
例えば、「クリップボードにあるテキストデータをGoogle検索する」スクリプトを書くと次のようになります。
-- URLを入力
set url_txt to "http://google.co.jp"
-- 検索ワードを入力
page_open(url_txt)
key_stroke()
-- ページオープンメソッド
on page_open(url_txt)
--処理開始
set url_txt to url_txt
tell application "Safari"
activate
delay 1
make new document with properties {URL:url_txt}
delay 1
end tell
end page_open
-- 指定したキーを入力する
on key_stroke()
tell application "System Events"
tell process "Safari"
--検索ワードをはりつけ
keystroke "v" using {command down}
delay 0.5
end tell
end tell
end key_stroke
簡単に説明をしますと、 set ~ to
は変数定義、 on ~
は関数定義となります。
独特なのが、tell application
です。
これは、指定したアプリケーションをアクティベートする処理にあたります。
tell application "Safari"
では、Safariを起動して利用可能な状態にします。
tell application "System Events"
は、特定のアプリではなく、システム管理されているイベント処理全般を行うことができます。
ここでは keystroke
で、キーボード入力を行っています。
図:スクリプトエディタはメニューバーに設置可能
そうして作成した自動化スクリプトは、macOS上のメニューバーで簡単に呼び出すことができます。
この機能を使えば、お使いのMacでの作業を大幅に効率化することができるはずです。
普段している作業で、自動化してしまいたいものがあれば、大体のことが可能だと思うのでぜひ挑戦してみてください。
ちなみに、シェルスクリプトを実行する do shell script
や、ブラウザによってはJava Scriptを実行することも可能です。
私は、仕事でヤマト運輸の伝票をたくさん記入しなきゃいけない時に、伝票記入フォームをJavaScriptで操作して、かなり楽な自動化を行いました。
シェルスクリプトで行うバックアップなどの動作も、AppleScript側から行うと何かと便利なこともあります。
AppleScriptは、有名でないところもあり、調べてもリファレンスというものがなかなか見つかりません。
しかし、アプリケーションごとの固有の関数などのドキュメントは存在するため、基本を覚えれば十分活用できます。
Automator
AppleScript はスクリプトで記述していくことで、自動化においてかなり細かい設定を行うことができます。
しかし、独特な言語であることもあって、すぐにモノにしにくいのも確かです。
Automator は macOS X から登場した GUI でのオートメーションアプリケーションです。
むしろ、スクリプトエディタ(AppleScript)は、macOSのバージョンアップによって(セキュリティが理由で)機能が削除されていく一方で、Automatorはアップデート毎に安定している気がします。
Automator も macOS における処理を大体自動化することが可能です。
こちらも標準搭載されているもので、専用のアプリケーション Automator を使って記述することができます。
標準では /system/Applications/Automator.app
となります。
図:PDFファイルからテキストを取り出してテキストファイルを作成するAutomatorフロー
処理したい内容は、ワークフローウィンドウの左サイドバーに全て表示されます。
上記の例では、「PDFファイルからテキストを取り出して、テキストファイルを作成する」ワークフローを作成しました。
このように左サイドバーから、行いたい処理を探して組み立てることができます。
そして、ウィンドウ右上に『記録』とあります。
この機能がなかなか凄くて、『記録』を開始してからマウスの動作やキー操作、全てのユーザインタラクティブを記録して、再現まで行ってくれます。
マウス操作の自動化が地味に便利で、同じ操作をしなければいけない”作業ゲー“は大体解決することができます。
私は、くだらない人間なので、minecraftで自動操作botを作ったり、LINEのスタ爆botを作ったり(アカウント一時凍結した)して遊んでいました。
図:Automatorではトリガーが選択可能
また、 Automator のワークフローをいつ実行するかのトリガーも指定することができます。
例えば、カレンダーイベントでのトリガー、音声入力でのトリガー、トリガーをアプリケーションとして事実上大体の処理をトリガーとして動かすことができます。
ただ、スクリプトエディタ(AppleScript)と比べて、モッサリ感は否めません。
そこも処理速度の問題だと思うので、M1チップとかで解決してるかもしれません。
iOSショートカット
最後にiOSでのオートメーションアプリケーションとして『ショートカット』があります。
ショートカットは(確か)iOS13に登場したiOSアプリです。
この、ショートカットアプリについては、Apple自体がかなり推していると実感していて、登場から間もなくも様々なレシピが登場しています。
図:iPad OSでも同様にショートカットが利用可能でレシピが豊富
ものとしては、iOS版Automator みたいなもので、iOSで結構多くのことが自動化できます。
Automatorと同様に、トリガーを設定することができます。
例えば、「指定されたNFCタグに反応して時」みたいなトリガーが可能なため、ショートカット登場当時は、「出勤時にかざすとタイムカードがわりに──」みたいなことが話題になった気がします。実際にやってるかはわかりません。
「職場から離れた時」みたいなものもあるため、職場から帰る時に自動で親族に連絡したり、家のエアコンを起動しておいたり、みたいなことも実現可能です。
私のiPhoneでは、電源に接続するトリガーを使っていて、充電器を挿すと真中らぁらちゃんが反応してくれます。
また、AppleScriptやAutomatorとは違って、新しいレシピがよく提案されているので、まだまだ新しい使い方は模索されていくと考えられます。
みなさんも、Apple製品を使っているなら、無駄なことはなるべく自動化してみましょう。
それでは良いAppleライフを✋