#オブジェクト指向言語 AppleScript
DTP の現場での AppleScript は、
Illustrator や InDesign の流し込みをさせたり、
ファイルの管理や整理を行なわせたりと、
**「かゆいところに手が届く」**使われ方をしています。
クライアントが増えるごとに
クライアント特有の流し込みやデータベース管理を
AppleScript で組むことになりますが、
似たような処理を使い回す必要が出てきます。
この**「似たような処理を使い回す」**という点について、
ユーザーによっては
過去に作ったプログラムを開いて、
必要な部分をコピペして新たなプログラムに組み込む、
という作業を行なっていると思います。
ところが、
AppleScript は
Script Libraries という機能を実装しており、
過去に作ったプログラムをライブラリ(パーツ)として
そのまま使い回せるようになっています。
いわゆる
オブジェクト指向プログラミングが
実践できるのです。
#スクリプトバンドルを作る
論より証拠、作ってみましょう。
最初にライブラリとなるスクリプトを作成します。
(1)以下のスクリプトを、デスクトップに保存。
ファイル名は「myAlert.scpt」とします。
sample1
on do(theTXT)
display alert theTXT
end do
**手順1**(gif)
![0125_13.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/500852/06034526-89ea-4bcf-2db6-1789032c17ec.gif)
***
次に スクリプトバンドル のファイルを作ります。
**(2)新規ドキュメントを開いて、保存。
「ファイルフォーマット」を「スクリプトバンドル」に。**
※拡張子が「.scptd」になっていればOK。
**手順2**(gif)
![0125_11.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/500852/b3e764bf-425e-8875-0ee8-968552025778.gif)
***
**(3)ウィンドウの「バンドルの内容」をクリック、
右側にウィンドウが表示されたら、右クリックで「新規フォルダ」を選択。
さらに「名称未設定フォルダ」を右クリックして「名称変更」、
「Script Libraries」に変更。**
**手順3**(gif)
![0125_12.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/500852/8c7b3d64-f92b-6d0f-67f2-44a296fe3650.gif)
***
**(4)今作った「Script Libraries」フォルダに、
(1)で作った「myAlert.scpt」ファイルを入れます。**
**手順4**(gif)
![0125_14.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/500852/e8a2db4d-dce0-c89b-13e0-357ec6147722.gif)
ここまでで、準備完了です。
#スクリプトバンドルの使い方
あとは、
「Script Libraries」フォルダに入れたファイルから、
サブルーチン(ハンドラ)を呼び出すだけです。
スクリプトバンドル「名称未設定.scptd」に、
以下を打ち込んで実行してみてください。
sample2
script "myAlert"'s do("Hello World")
**手順5**(gif)
![0125_15.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/500852/0da81b09-6ef1-239e-ec5c-da678f45f58e.gif)
***
**「こんなの、わざわざライブラリにしなくても、display alert でよくね?」**
と思った方は、
スクリプトバンドル「名称未設定.scptd」に、
以下を打ち込んで実行してみてください。
sample3
property myAlert : script "myAlert"'s do
myAlert("Hello World")
**手順6**(gif)
![0125_16.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/500852/fc47548a-45e2-73c4-f121-505e90cfceea.gif)
こうすることで、トップレベル(メインスレッド)なら
いつでも「myAlert()」でハンドラ呼び出しができるので、
見通しがかなりすっきりします。
#ライブラリファイルはエイリアスも可
やってみたらできました。
**手順7**(gif)
![0125_17.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/500852/70c139b2-1c19-6194-ccf1-3c6b9d7b1477.gif)
#次は!
ということで、
「スクリプトバンドル」とは、
・スクリプトファイルなのにフォルダを内包している不思議なファイル
なのでした。
これを使うことで、
過去に作ったハンドラをライブラリとして保管、
使い回しが簡単に行なえます。
次回はこれに
script object を入れて
高速処理をしてみたいと思います。