たまたま、macOS 11.0Betaで特定のアプリケーションのアイコンを取得できない問題に直面し、その調査を行なっていたところ……カレンダーアプリケーションのバンドル内のResourcesフォルダに大量(32本)のAppleScriptが入っているのを見つけました。
見つけたのはmacOS 11.0Beta上ですが、10.15.7環境でもチェックしてみたところ同数のAppleScriptが入っていました。10.14.6ではみつかりません。10.15.x以降でこうなっているようです。
macOS 10.15はBetaの途中で「これは使い物にならない!」と見切りをつけ、テスト環境で様子を見ながらも本気では使い込んでこなかったので、いまごろ細かい変更点に気づきました(全力で10.15はパスして11.0に移行したいです)。
▲macOS 10.15.7のカレンダー内に入っているAppleScriptと11.0betaに入っているもののdiffをとってみた結果。違いはないもよう
拡張子がscptで、実行専用になっていません。つまり、中身が読めるわけです。
サンドボックス環境のアプリケーションが内部からこうしたAppleScriptを呼ぶ際には実行専用で、かつファイルを読み取り専用に設定しておく必要があります。読み取り&編集可能な状態なので、サンドボックス化されている「カレンダー」アプリケーションがこれらを内部で呼び出している可能性は低そうです。部品として入れるならハンドラ宣言を行なって、外部から呼び出しやすいようにするはずです。これらのAppleScriptをテンプレートとして読み込んで、変数内容を実際のデータに置換して実行するという方法もないことはありませんが、そこまでやらないでしょう(必要に迫られて、やったことありますけれども)。そういう使い方をするならテキスト形式で保存しておくとか、もっと「テンプレートらしく」書いておくことでしょう。書き換え部分を「%@」と書いておくとか。
よって、カレンダーアプリケーション内部でこれらのAppleScript群を呼び出している可能性はほとんどないと思います。
実際にScriptの内容を読んでみると、基礎的なカレンダーアプリケーションの操作を行う、地に足のついた実に質実剛健で良質なサンプルScript集という雰囲気でした。AppleのサンプルScriptにありがちな、冒頭に著作権と(訴訟回避の)お断り文言のオンパレードのテンプレートコメントが30行ぐらい書いてありそうなものではありません。
AppleScript名:addAttendees.scpt |
–> Script creates an event and adds invitees. Please modify the email to test account before running the script set theStartDate to (current date) set hours of theStartDate to 15 set minutes of theStartDate to 0 set seconds of theStartDate to 0 set theEndDate to theStartDate + (1 * hours) tell application "Calendar" tell calendar "calendar" make new event with properties {summary:"Apple Script Invitations", start date:theStartDate, end date:theEndDate, location:"one Infinite Loop"} set theEvent to (first event where its summary = "Apple Script Invitations") tell theEvent make new attendee at end of attendees with properties {display name:"test", email:"caltest_as1@icloud.com"} end tell end tell end tell |
自分もCotEditorのサンプルAppleScriptパックを配布していますが、あれの飛び道具系(PowerPack)ではなく、基礎的なBasicPackの雰囲気です。
この手のサンプルScriptというと、AppleがmacOSに同梱している悪夢のようなApple純正サンプルスクリプト集があるわけですが(日本語環境で構文確認が通らないとか言語道断。しかも書き方が古臭い)、そういうテイストではありません。
「実務でAppleScriptを書いている人間」による簡素なテストコードといった雰囲気を感じます。
まるで、Apple社内で機能テストに使っているAppleScriptがそのままRelease版に残ってしまったような感じです。正確なところはわかりませんけれども。
意図して入れているのか、意図していないのかはまったく不明ですが、OSのアップデートで消去されないうちにバックアップをとっておくことをおすすめします。
このScriptを入れてあることが何かのメッセージなのかどうかは不明です。たいして意味はないでしょう。ただ、Apple社内もしくは外注にちゃんとまともなAppleScriptを書ける人間がいるぞ、という自己紹介的なものだと受け取っておきます。
カレンダーアプリケーションのAppleScript用語辞書内にこれらのAppleScriptサンプルを(本Blog掲載のAppleScriptのようにリンクつきで?)掲載しておけという指定を受けた部下が、その言葉の意味がわからずにそのままバンドル内に渡されたAppleScriptをファイルのまま入れてしまったというあたりが真相ではないかと思われます。