当Blogでは、日々AppleScriptを書いている中で、「この情報は有用なので共有しておくべき」と考えたものを掲載し、すぐに使っていただけるようにして公開しています。
書き方、使い方、詳しい説明については、電子書籍にまとめて約90冊ほど出しています。
つまり、当BlogはAppleScriptが何であるかを理解していて、実際に書ける人に対して情報を発信する立場です。
ただ、ちょうど夏休みということもあり、ちょっとそのあたりについて書いてみることにしました。
AppleScriptってなに?
「macOS上で動くマクロ言語」とか言うと、何か理解できたような気になりますが……これだけでは何も説明わかりません。
macOS上の機能、各種GUIアプリの機能、shell scriptの機能など、さまざまな機能を呼び出して、データをやりとりする、インタプリタ型(逐次解釈実行型)のプログラミング言語です。
macOS上の大きな機能や小さな機能を呼び出せるようになっていて、とくにGUIアプリの操作や、GUIアプリの設定情報や、GUIアプリがオープンしている「書類」にアクセスして情報をとってきたり、設定したり……という操作が行えます。
AppleScriptがGUIアプリを操作する方法は、いくつか手段が用意されています。
(1)アプリ内の用語辞書を通じてやりとりする
AppleScriptがGUIアプリを操作するやりかたは、マウスカーソルを操作してメニューを選ぶといった方法ではありません(別途ありますが)。それでは、遅すぎるし、画面に表示されていなかったら操作できないですし、「できないこと」が多すぎます。
なので、あらかじめ「こういうコマンドを受け付けるよ!」というコマンドの一覧がAppleScriptに対して読める形でアプリ内に格納されています。ユーザーもこのコマンド一覧(用語辞書)を読んで、AppleScriptを書くことになります。
(2)GUI部品を操作してGUIアプリを操作する
「メニューのx番目の項目を選んでクリックする」といったGUI部品を操作するやりかたです。これはこれで便利ではあるものの、スピードが(1)にくらべて100倍以上遅いですし、毎回確実に動くAppleScriptをこの方法で書くのは、けっこう難しいです。
いまだと、システム設定.appを操作していろんなシステムの状態を変更するようなAppleScriptを動かしたいと考えているユーザーさんがけっこういて、そのための方法をいろいろ探してはいるんですけれど、システム設定.appで細部まですべて操作するのはかなり無理があるので(iOSっぽい作り方になったことが災いして、GUI部品の階層を追いきれない)、この(2)の方法があるからできるっしょ! と、安易に考えないほうがいいです。
先日、X(旧Twitter)上でMacにつながっている複数のディスプレイのうち、メインディスプレイを切り替えたり、画面の解像度を切り替えたいという人がいて、ちょっとやりとりしました。その彼は、この(2)の方法でなんとかなるんじゃないかと考えていたようですが、実際に自分でやってみたところ、それはできませんでした。
なので、かつて調べてあった「SwitchResX」を用いる記事を紹介したところ、「有料アプリを買うほどではない」とのことでした。事実上、SwitchResXを使う方法でしか実現できないのですが、どうするんでしょう?
(3)その他の手段をさがす
shell commandなどでディスプレイ解像度を取得・変更するものがあれば、それを呼び出すことになります。