2019/12/21 Mac OS Nativeのイベント向けに作成、発表

2019/12/22 掲載用に一部のフォントを置換AppleScriptで遊ぶ
RPCの世界Takaaki Naganoya
Piyomaru Software

ProﬁleAppleScript系デベロッパー、Mac System Integrater（お仕事募集中！）
ライター、編集者（ワンマン出版社）元ソフトバンク「UNIX USER」誌編集者
Blog「AppleScriptの穴」を更新中
人工知能インタフェースから下世話な業務自動化システムまで、AppleScriptで開発
Mac App StoreでAppleScriptによるアプリケーション「Double PDF」販売中。
macOS 10.13以降に対応したバージョンv2.0を近日発売開始（審査中）Terms....

AppleScript
Remote Procedure Call (RPC)

CotEditor PowerPack
Script AssistantTanzaku & Tanshio

macOS 10.15

AppleScriptとは？（1/2）

複数アプリケーションにまたがる作業の自動化

アプリケーション上に存在しない機能をあとから追加

ファイルを受け取って自動処理して結果を返す

時間のかかる、めんどうな作業の自動化すでに存在しているものを組み合わせて、存在しないものを作る

もうひとつのOS（シェル）AppleScriptとは？（2/2）
ﬁrst item
be going to second item
item 1使える命令や予約語がアプ

sdef

予約語が英語の連語

序数が英語っぽい表記

returnreturnthe

構文色分け機能で構文要素を見分ける

英語っぽく書くための無意
味語がある（theとか）

リケーションに書いてある

下手くそが書くと遅い

AppleScriptで使える無意味語
about, above, against, apartfrom, around, aside from, at,below, beneath, beside, between,by, for, from, instead of, into, on,onto, out of, over, since, thru
(throughも可), underAppleScriptの歴史（1/2）
「最新事情がわかるAppleScript 10大最新技術」より引用

年

できごと1993

v1.0リリース

1998

Classic Mac OS 8.5でPowerPC Native化

2001

Xcode上でGUIアプリを記述する機能「AppleScript Studio」が搭載される

2005

スクリプトエディタがCocoa化（Mac OS X 10.4）されて、Scriptの32Kバイトの制限が撤去される（サードパーティの統合開発環境では制限なし）

2009

Xcode上でCocoaの機能を使える新たな機能「AppleScriptObjC」が搭載される2013

ライブラリ機能が標準搭載される（macOS 10.9）

2014

通常のスクリプトエディタ上でCocoaの機能が使えるようになる

AppleScriptの歴史（2/2）

「最新事情がわかるAppleScript 10大最新技術」より引用

macOS Ver 10.x

12345678910111213

1415

AppleScriptバージョン

1.7

1.9

1.9.2

1.10

2.0

2.1

2.2

2.2

2.3

2.4

2.5

2.5

2.7

2.7

2.7

64bit対応
GUI Scripting
OSAXサポート
AppleScript Libraries
Mac App StoreiCloudAppleScript StudioAppleScriptObjC(Xcode)
Cocoa AppleScript Applet
AppleScriptObjC(スクリプトエディタ)
スクリプトエディタによるコード
署名
SIP（System IntegrityProtection）, rootless
フルディスクアクセス
オートメーション(制限)強力な手段：RPC

No CODE

アプリケーションAの機能を利用したい場合には、その機能をそのまま呼び出せばいい（結果だけそのままもらってくる）

No SDK

アプリケーションAの機能を利用したい場合でも、いちいちアプリケーションAのSDKを用意しなくていい

No FeeアプリケーションAの機能を利用しても、別途料金を請求されたり、従量課金されることはない

RPCが使えない世界（iOS, Windows）だと……

!
!
##

!"

●●と同じ機KをもつアプリケーショDをゼロから作ることになります。見積もりはこんな感じに…
$"

%

SDKとサDプルコードがあれば作れます$#%"

RPCが使える世界（macOS）だと……

!



!"

●●を起動して●●の機能を呼び出しましょう#



$



●●にデータを送信するように命令しますねー$AppleScriptはRPCの記述言語
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"

Safariのアプリケーションプロセスと通信を行う部分

tell application "Safari"if (count of (every document)) = 0 then returntell front document
set bStr to sourceend tellend tell
CotEditorのアプリケーションプロセスと通信を行う部分

tell application "CotEditor"
set newDoc to make new documentwith timeout of 300 seconds
tell newDoc
set coloring style to "HTML"set contents to bStr
end tellend timeout
end tellCotEditor PowerPack
現在のAppleScriptの処理レベルのデモ、Cocoa Scriptingの活用

CotEditor
PowerPack

前回のデモ
2019/3

コマンド解釈用簡易
形態素解析エンジン「easyJParse」

Tanzaku

メニュー構成絵文字表現

TanzakuTanshio
技術実証試作

ファイル名フィードバック、GUI Scripting自動化
コンテクストメニュー
呼び出しツール

符令韻投句
多コマンドで構成

実用品

日本語音声認識コマンダー(2004)

Newt On

人工知能インタフェース(2002)

ScriptAssistant-->10.12

フィードバック

Script Assistant
10.14/10.15

10.13で動かなくなった機能の更新

さらなるCocoa Scriptingの活用

PowerPack --> Script AssistantPowerPack

Script Assistant

OLDNew