オープンソースのPDFビューワー「Skim」がv1.7.9にアップデートしました。AppleScript用語辞書に変更が加わっていますが、説明文が追加された程度であり機能面での変更は見られません。


ファイルのドラッグ&ドロップを受け付ける「ドロップレット」の異常動作がmacOS 10.12からずっと続いてきました。AppleScriptドロップレットに対して(Finderから)ファイルをドラッグ&ドロップすると、欠落するものが出てくるという現象です。
昨年、macOS 15.2betaか15.1あたりでこのバグが解消されたように見えました。
「見えました」というのは、一応現象としては観測できつつも、その動作を意図して実現していないんじゃないか、という懸念があったためです。つまり、Appleの現場なりマネージャー級で意思決定が行われた成果ではなさそうだ、と判定。
この動作がmacOS 15.5βで以前と同様の動作に戻っている(バグ的な動作)ことを観測しています。
on open droppedFiles
set fileCount to count of droppedFiles
display dialog “ドロップされたファイルの数: ” & fileCount buttons {“OK”} default button 1
end open
一応、ドラッグ&ドロップされたファイル/フォルダの受付で取りこぼしが出ないように対策は(Scripter側で工夫して)できているのですが、上記のように一般に知られている単純な受信コードでは対処できません。
ChatGPTをはじめとするLLMでは、上記のような単純なコードを出力することを確認しています。そして、Apple側がOSに不具合を発生させた場合にはLLMが出力するコードでは対処できません。
そして、macOSのヘルプメニューから表示できる「AppleScriptヘルプ」に書かれているドロップレットのコードがまともに動かないというのでは、話になりません。

iWork Apps(Keynote、Pages、Numbers)がバージョン14.4にアップデートしました。各アプリのAppleScript用語辞書に変更はありません。
Pagesで継続して発生している、現在画面上で表示中のページ+2見開きのページ上のオブジェクト情報の取得/操作が行えない現象については、修正されていません。
Apple側はこれをバグとも思っていないようですし、修正するつもりもないのでしょう。この不具合に対処するために、情報取得する対象のページを強制的に表示するよう指示する必要があることでしょう(そんな機能はないので、GUI Scriptingで?)。
個人的な資料として、Shane Stanleyの電子書籍「AppleScript Explored」を日本語訳して使っておりました。部分的にmacOS最新版+Xcode最新版にスクリーンキャプチャを入れ替えて。
最初の版から、購入して読んでいましたが……実にいい本です。「もうちょっと画面キャプチャが多いとわかりやすいのに」とは思っていましたが、自分には書けないタイプの本です。
# そのフィードバックをもとに、画面キャプチャ主体の本「AppleScript+XcodeでつくるMacアプリ Xcode 14対応」を出したわけで
冗談半分でShaneに「日本語訳版を出してもいい?」と聞いてみたところ、快諾。えっ? いいの?!(^ー^;;;
いまXcodeで作っているAppleScriptのプロジェクトがあるのですが、こうした資料が充実していないと本当に辛いので、日本語版を出せることは個人的に素直に嬉しいです。
ただ、本書がOS X 10.8ぐらいの時代に書かれたという時代背景があり、そのあたりの状況認識を大幅に変更する必要はあると思います。当時はShaneがAppleScriptObjC Explorerを作っていたので、そうしたツールの存在を前提として書かれた部分もあるので、macOS 15時代+Xcode 16環境に合わせてアップデートする必要もあることでしょう。
相次いで、AppleScriptに関する電子書籍を2冊刊行しました。
「AppleScript最新リファレンス OS X 10.11対応」から最新環境の情報を反映させ、さらにmacOS 15の情報を反映させた最新アップデート版です。最新のAppleScript v2.8環境を対象としています。
→ 販売ページ
macOS搭載のApple純正GUIアプリケーション操作用スクリプト言語「AppleScript」について、スクリプトの書き方、基本的な文法から高度なノウハウまで紹介する最新のリファレンス! macOS 12/13/14/15対応
90ページの記事を追加しました。すでに購入された方は、再ダウンロードにより無料で最新版を入手できます。
本書および「スクリプトエディタScripting Book with AppleScript」には、お待たせの(?)Piyomaru Script Assistant最新版を添付しています。
PDF 1,098ページ+付録Zipアーカイブ
macOS上のスクリプティング言語「AppleScript」によって、macOS標準装備のAppleScript記述用アプリ「スクリプトエディタ」を操作するノウハウについて基礎から応用までを詳細にまとめた電子書籍です。
→ 販売ページ
AppleScriptの中でも、超高レベルな内容であり、この内容が苦もなく理解できたら達人と言って問題ないでしょう。ただし、基礎から詳細に解説を行なっているため、難しい内容については読み飛ばしていただいてもけっこうです。それでも、日々のMac生活の中で役立つ超絶テクニックを感じることができるでしょう。 PDF 570ページ、Zipアーカイブ添付
これまであまり外部に出してこなかった、AppleScriptでAppleScriptを解析して処理する内容や、AppleScript用語辞書を解析して処理する内容、スクリプトアシスタントの書き方などの「秘伝のタレ」的な内容を多く含んでいます。
とくに、AppleScript構文色分け設定から実際のAppleScriptの各構文要素を特定して処理(変数のみの置換など)する内容は、Mac OS X 10.4の時代から続いてきた手法から最新の手法まで詳細にご紹介しています。
Script Debuggerという強力なプレイヤーがいるために、スクリプト作成のためのツールを企画しても製品を実現するのは大変でした。でも、SDがディスコンになると、従来いろいろ検討してきたアイデアを実現できるかもしれません。
大量にAutomatorのアクションを用意して、つないでプログラムを組む環境を作ることを考えたことがありました。Automatorそのものに突っ込んでよかったのですが、Apple純正のアクションを削除する方法がわからなかったのと、一般ユーザーがAutomatorを2つぐらいのアクションしかつないで使っていないことが分かって、ちょっと難しそうだと判断しました。
コンテクストメニュー経由で大量の補助Scriptを呼び出すエディタタイプを企画していました。ただ、それって普通にスクリプトエディタに組み込めばいいじゃない? ということで、Piyomaruスクリプトアシスタントを充実させました。
ChatGPTみたいに、文章からコードを生成するエディタ。ありもののScriptライブラリを呼び出すタイプ。
LLMに各プログラムをどのように学習させられるかが不明。アイデアだけは検討してきた内容。
正月早々になかなか大きなニュースが入ってきました。AppleScriptの統合開発環境であるScript Debuggerの開発と販売の終了をLate Night Softwareが発表しました。
Script Debuggerはまだ2025年の6月まで購入可能とのことです。Appleが買収するしか継続の目がなさそうなのですが、Appleがそうするかどうかは不明です。
Script DebuggerはAppleScriptの統合開発環境ですが、上級者にはあまり役立たず、むしろ入門者が使うと役立つツールであることが問題だと思っていました。そのあたりの対処として、ライトユーザーへの訴求を行うべく価格の引き下げやLightモード動作(試用版の継続使用が可能に)が導入されたようですが、有効な手段にはなり得なかったようです。
ソフトウェア製品としてのScript Debuggerは、コア部分がC++で書かれているようで(推測)、思い切った構造の変更やインタフェースの改良を行いづらいところです。
実際に、30年続いたプロジェクトでもあり、大幅な書き換えは難しかったところでしょう。
まだ、どのように受け取るべきかが分からないため、速報ということで。
ただ、macOS 10.13あたりまでのスクリプトエディタ(10.15あたりまで?)では、バンドル内にDebugアイコンとか未使用のアイコンがたくさんあって、
「Apple純正のスクリプトエディタでデバッグ機能をつけていないのは、製品版(Script Debugger)に配慮した結果ですよ」
みたいな言い訳の痕跡(こんせき)を垣間見ることができ、それなりに担当者レベルでは敬意を払われてきた製品だと思います。
オープンソースのテキストエディタ「CotEditor」の「write to console」コマンドにオプションが追加されました。
title(実行したAppleScript名の表記)と、timestamp表示の有無を指定できるようになっています。
ただし、これらのオプションが効くには条件があります。CotEditorの外部から、スクリプトエディタやScript Debuggerなどで実行したAppleScript内でCotEditorに対してwrite to consoleコマンドを実行した場合には、これらのオプションを指定していても、とくにtitle(ファイル名)については効きません。
CotEditorの内蔵スクリプトメニュー内で実行したAppleScriptにおいて「write to console」コマンドを実行した場合にはtitle(ファイル名)、timestamp(日時)の指定が有効です。
| AppleScript名:コンソールテスト1.scpt |
| tell application "CotEditor" write to console "ぴよまるさんだよ" with title without timestamp write to console "ぴよぴよさんだよ" with title and timestamp end tell |
Keynote、Pages、NumbersのiWork appsがバージョン14.3にアップデートしていました(気づかなかった)。
アップデート内容もたいしてありませんし、Apple Inteligenceを利用した機能なので、日本語環境では利用できません。
AppleScript用語辞書についても、とくに前バージョンから変更はありません。
2024年に使用していたmacOS:macOS 13+macOS 15
毎年行なっている、Piyomaru Softwareが書いたAppleScriptの1年を振り返る記事の2024年版です。
2008年から10年ほど運営を続けてきた旧「AppleScriptの穴」Blogが2018年の年初にホスティング会社との行き違いでシャットダウンされ、ゼロから再構築したのがこの現行の「AppleScriptの穴」Blogです。
→ 2018年に書いた価値あるAppleScript
→ 2019年に書いた価値あるAppleScript
→ 2020年に書いた価値あるAppleScript
→ 2021年に書いた価値あるAppleScript
→ 2022年に書いた価値あるAppleScript
→ 2023年に書いた価値あるAppleScript
旧「AppleScriptの穴」Blogの内容については、データベースから抜き出したデータをもとに再構成した「Blogアーカイブ本」にまとめています。
AppleScriptの穴Blogアーカイブvol.1
AppleScriptの穴Blogアーカイブvol.2
AppleScriptの穴Blogアーカイブvol.3
AppleScriptの穴Blogアーカイブvol.4
AppleScriptの穴Blogアーカイブvol.5
AppleScriptの穴Blogアーカイブvol.6
本Blogは、もともとは、2000年代初頭に開発していた「人工知能インタフェース Newt On」のソースコード部品バラバラにして掲載し、用いた部品を個別にメンテナンスすることを「隠れた目的」としていました。また、Scripter間のノウハウの共有を推進することも目的としています。
AppleScript以外の一般的なテーマの記事については、こちらにいろいろ投稿しています。
前述のとおり、2018年1月にいちど本Blogは消えていました。その際に、「本Blogが存在しない場合にはどのような現象が起こるのか」を観察。その結果、AppleScriptについて知識を持たない人たちが好き勝手に「嘘」を流布しはじめる、という現象が観測されました。本Blogはそうした「嘘つき」を封じ込めるためのキーストーンとしての役割を果たしているといえます。
本Blogを公開しているだけでは、ホスティング費用やドメイン費用がかかるだけで、何も収益が生まれません。そこで、本Blog+αの情報を整理してまとめた電子書籍を発行しています。本Blog読者のみなさまにおかれては、電子書籍を購入することで本Blog運営を支えていただけますと幸いです。
電子書籍の2024年における刊行は、現時点で95冊。年間8冊となっています。
Cocoa Scripting Course #7 NSColor
Cocoa Scripting Course #8 File path Processing
Cocoa Scripting Course #9 File Processing
AppleScriptでたのしむ レトロ・グラフィックス プログラム集
Pages+AppleScriptで本をつくろう!
AppleScript基礎テクニック集(32)複数のアプリをコントロール
AppleScript基礎テクニック集(33)選択中のオブジェクト取得
AppleScript 基礎テクニック集(34)電源制御
目下、既刊本の最新環境へのアップデートを実行中です。
余白トリミング実験 v3
2024年に書いたScriptのうちで一番気合いが入っているのが、この画像の余白トリミングです。AppleScriptでそんな画像処理ができるとは思ってもいませんでしたが、実際にやってみたらそれなりに機能して、それなりの速度で動きました。
Outline View Lib
NSOutlineViewを手軽に使えるライブラリです。他のアプリで作った階層データ(Keynoteのマスターページ名など)をプレビューするなどの用途に使えます。
書式つきテキストを組み立てて、画像を追加し、RTFDとして保存 v2
電子書籍用にまとめていたScriptの中のひとつです。RTFDの新規保存については書いたことがなかったので、「書いておいたほうがよいだろう」と。同様にScptd(バンドル形式AppleScript)の作成Scriptも書いておきたいところ&scptdの実行Script(Script Viewを自前で作成して)も書いておきたいところですが、公表されているAPIの範囲では実行できるものが見当たりません。
アラートダイアログ上にWebViewで3Dコンテンツを表示(WebGL+three.js)v4
これも、ずいぶん前に試作品を見ていたのですが、前バージョンが動かなくなって久しかったのでアップデートしておきました。あくまで、デモ用で実用性が皆無ですが、そういうものなんでしょう。
Pagesで、現在表示中のページから離れたページのオブジェクト情報を取得できない
Pagesが怪奇現象を起こすことについては、ずいぶん前から知っていたのですが、その発生条件と範囲を明確にできたことは意義深いことです。
指定のSDEFファイルからコマンドを抽出
SDEF処理系AppleScriptはいろいろ組んでいますが、電子書籍作成時にアプリのアップデート履歴を表で示すためにこうしたScriptが必要です。
Chat GPTに書かせたQuickSort(昇順・降順ソート)2D
ChatGPTに書かせたAppleScriptです。バージョン依存しなかったり、他の言語で書いてあるものを翻訳するようなScriptだと割とまともなAppleScriptを出力してくれます。ただし、高速化の余地があるレベルの(遅い)Scriptだったので、自前で高速化してみました。
Excel__Numbersセルアドレスの相互変換
ChatGPTに書かせたAppleScriptです。こちらも、OSのバージョンに依存せず、他の言語でも書ける内容だったので、問題なく処理できるScriptが出力されました。
新刊電子書籍「AppleScript基礎テクニック(34)電源制御」を刊行しました。全57ページ、サンプルAppleScriptアーカイブつき。Piyomaru Softwareによる電子書籍の95冊目です。
→ 販売ページ
ちょっとAppleScriptを書けるようになった方が、必要に感じてふりかえる「基礎」的な内容をプレゼン資料風に絵でご紹介する「AppleScript基礎テクニック集」の34冊目、Macの電源制御に関する1冊です。 スリープ、シャットダウン、スリープ解除日時指定、バッテリー残量取得、電源種別の判定など、電源制御系の機能は、AppleScriptに添える「気の利いた」スパイス。知っておくと役立つ、実際に動かすと楽しい電源制御機能について、詳細にご紹介します。 いまはMacBook Airで1日中バッテリーで駆動できるのでシビアな計算が必要な場面は減ったように感じますが、それでもバッテリー残量を取得する処理はAppleScriptでも欠かせません。電源制御は使って動かすと面白い処理です。
■最初に:macOS 13以降では最初にステージマネージャを必ずオフにしてください
macOS 13.x
macOS 14.x
macOS 15.x
その他、オフにすることが望ましい機能
■電源制御 関連機能
macOSの各種電源コントロール機能
AppleScriptからスリープ実行
指定日時にスリープ解除
電源種別判定
バッテリー残量データ取得
■スリープ
2つのスリープ処理
スリープ処理
ディスプレイ消灯処理
■スリープ解除
スリープ解除(スケジュール登録)
スリープ解除日時設定のAppleScript①〜③
■スリープ解除検出
スリープ解除検出、2つの方法
一番単純なスリープ解除検出
システム通知を利用したスリープ解除検出①〜③
■電源オフ
電源オフは2コース
■電源種別判定
電源種別判定
■Mac本体のバッテリー残量取得
バッテリー情報を取得する前に
デスクトップ機とノート機の区別①〜③
取得できるMac本体のバッテリー仕様
Mac本体のバッテリー残量を取得
■その他資料
ログアウト処理
再起動
CPU種別判定
CPU動作クロック取得
Apple Siliconの各種温度センサーの値を取得①〜③
15インチMacBook Air用の充電アダプタの位置合わせ用「チャージガイド・シール」を発売しました。
→ 販売ページ
注文が発生したらプリンターで印刷するので、在庫の山で部屋が埋もれるといったことはないはずです。
新刊電子書籍「AppleScript基礎テクニック(33)複数のアプリをコントロール」を刊行しました。全74ページ、サンプルAppleScriptアーカイブつき。
→ 販売ページ
macOS上のGUIアプリの書類やウィンドウ中で選択中のオブジェクトを取得し、その情報をもとにAppleScriptで処理を行なって、もとの選択オブジェクトに反映させるといった処理を、日常的に行っています。
このような書き方ができると、まるでAppleScriptによってGUIアプリの機能を拡張しているようにも見えます。実際には外部で処理を行なっていたとしても、使い勝手としては拡張しているように振る舞えます。
ある意味、AppleScriptの備える最強の機能といってもよいでしょう。本書で、この強力なselection機能について、その概要から実例、注意点にいたるまで幅広くご紹介いたします。
PDF 74ページ、Zipアーカイブ添付
■最初に:macOS 13以降では最初にステージマネージャを必ずオフにしてください
macOS 13.x
macOS 14.x
macOS 15.x
その他、オフにすることが望ましい機能
■アプリ上の選択中のオブジェクトにアクセスする予約語「selection」
GUIアプリ上の選択中のオブジェクトを知る
選択中のオブジェクトは、1つだけじゃない
選択中のオブジェクトを加工することも
選択中のオブジェクトの情報分析
■選択中のオブジェクトの情報をもとに他のアプリで処理
selection系の機能をサポートしているアプリ一覧
selectを含む予約語を持つアプリと予約語①
selectを含む予約語を持つアプリと予約語②
selectを含む予約語を持つアプリと予約語③
■selectionの主な実例
selectionの取得方法①(Finder)
selectionの取得方法②(Finder)
selectionの書き換え①(Finder)
selectionの書き換え②(Finder)
selectionの取得方法③(Finder)
selectionの取得方法(住所録)
selectionの書き換え(住所録)
selectionの書き換え(住所録)
selectionの取得方法①(Keynote)
selectionの取得方法②(Keynote)
selectionの書き換え(Keynote)
selectionの取得方法①(ミュージック)
selectionの取得方法②(ミュージック)
selectionの書き換え(ミュージック)
selectionの取得方法①(CotEditor)
selectionの取得方法②(CotEditor)
selectionの書き換え(CotEditor)
selectionの取得方法①(Numbers)
selectionの取得方法②(Numbers)
active sheetの取得方法(Numbers)
selection rangeの取得方法①(Numbers)
selection rangeの取得方法②(Numbers)
selection rangeのセル内容書き換え①(Numbers)
selection rangeのセル内容書き換え②(Numbers)
selection rangeのセル内容書き換え③(Numbers)
selectionの取得方法①(Excel)
selectionの取得方法②(Excel)
選択中のワークシートの取得方法(Excel)
selectionの書き換え(Excel)
selectionの取得方法(Pixelmator Pro)
select-を含む予約語解説①(Pixelmator Pro)
select-を含む予約語解説②(Pixelmator Pro)
select-を含むコマンド実例①(Pixelmator Pro)
select-を含むコマンド実例②(Pixelmator Pro)
select-を含むコマンド実例③(Pixelmator Pro)
select-を含むコマンド実例④(Pixelmator Pro)
select-を含むコマンド実例⑤(Pixelmator Pro)
select-を含むコマンド実例⑥(Pixelmator Pro)
select-を含むコマンド実例⑦(Pixelmator Pro)
select-を含むコマンド実例⑧(Pixelmator Pro)
select-を含むコマンド実例⑨(Pixelmator Pro)
select-を含むコマンド実例⑩(Pixelmator Pro)
select-を含むコマンド実例⑪(Pixelmator Pro)
■selectionを使用うえで注意すべき点
注意点1:大量のオブジェクトの受け渡しに要注意
注意点2:情報の書き戻し時には時間がかかる例も
注意点3:選択オブジェクトの種別判定を①
注意点3:選択オブジェクトの種別判定を②
電子書籍新刊「AppleScript基礎テクニック(32)複数のアプリをコントロール」を刊行しました。全370ページ、サンプルAppleScriptアーカイブつき。
→ 販売ページ
1つのAppleScriptで複数のアプリを操作して処理するのは「常識」ですが、複数のアプリをAppleScriptで操作して処理を行うスタイルは割と独特なものだと指摘されました。
複数アプリの操作はとくに特殊な話ではありませんし、それほど難しい話でもありません。日常的にやっていることなので、その原理がわかれば柔軟で多用途なScriptを書いて「業務を積極的に楽にする」手助けとなることでしょう。
PDF 39ページ、Zipアーカイブ添付
最初に:macOS 13以降では最初にステージマネージャを必ずオフにしてください
macOS 13.x
macOS 14.x
macOS 15.x
その他、オフにすることが望ましい機能
■複数アプリのコントロール3つのパターン
複数アプリのコントロール
自動処理フローから見た各アプリの役割
複数アプリ操作パターン①コマンド呼び出し
複数アプリ操作パターン②ファイル入出力
複数アプリ操作パターン③選択箇所を処理
■複数アプリのコントロール処理の具体例
各アプリは他のアプリのオブジェクトを理解できない
他のアプリのオブジェクトを理解するには
オブジェクトの属性値をよく見てみよう①
オブジェクトの属性値をよく見てみよう②
Keynote上のテキストをPages上に再現①
Keynote上のテキストをPages上に再現②
Keynote上のテキストをPages上に再現③
Keynote上のテキストをPages上に再現④
■GUI Scriptingによるコピペではほとんどの処理を実現できません
GUI Scriptingでコピー&ペースト動作?
異なるアプリ間のオブジェクトのテキスト色の反映
■複数アプリのコントロールその具体例
アプリAのデータをもとにアプリBの機能を利用
複数アプリ、機能の操作例①
複数アプリ、機能の操作例②
複数アプリ、機能の操作例②(参考資料)
複数アプリ、機能の操作例③
2024年11月1日付けでPixelmator Teamから発表された発表において、同社がAppleに買収されたとのこと。
Conguratulations!
Pixelmator ProなどのソフトウェアがそのままAppleの製品ラインナップに組み込まれるのか(Apertureの後釜)、あるいは既存のApple製品(Photos.appとか?)との融合が行われるのかはいまのところ不明です。
名前は、変わるかもしれないですね>Pixelmator Pro
電子書籍新刊「Pages+AppleScriptで本をつくろう!」を刊行しました。全370ページ、サンプルAppleScriptアーカイブつき。
→ 販売ページ
本書は、Appleのかんたんワープロ「Pages」の使い方を「本づくり」という観点からわかりやすくまとめたものです。
本という「お約束の塊」について、それぞれの部品をどのように作っているか、実例にもとづいてご紹介しています。本書を作ったときのPages書類を含め、用例をオマケとして添付しています。
Pagesはシンプルで強力な機能を備えていますが、シンプルであるがゆえに手間が増えてしまうケースがままあります。
これに対して、macOSのスクリプト言語である「AppleScript」を利用することで、手間のかかる作業を省ける構造になっています。
本書では、筆者がPagesを使って本を作るなかで、「どうしてもこれが必要」と感じた内容をまとめたAppleScriptを付録としてご提供しています。
本書をお買い求めいただくことで、どなたも同じ道具を使って手軽に電子書籍コンテンツを作る環境とノウハウを得られる、と自負するものです。
電子書籍の筆者になろう!
本を作るために、Pagesになれよう!
Pagesで作る「本」とは?
Pagesのツールバー設定
Pagesの参考書
AppleScriptでパワーアップ
Pagesの基本操作
テキスト
表
写真
図形
欄外の表記
「本」を作る作業に慣れよう!
本を作る「作業」の流れ
Pages、4つのオキテ
PDF書き出し
Skim PDF Viewerの使い方
本の部品を作る作業に慣れよう!
表紙
記事一覧でもある「目次」
読者へのあいさつ「まえがき」
仁義のための登録商標表記
記事本文ページ
記事を区切る「章トビラ」
本の名刺「奥付」
本の余韻を生む「裏表紙」
ページの左右を調整する「空白」
Pagesのレイアウトに翻訳
本は「顔」(表紙)が命
応用編
頒布/配布方法を選ぼう
作成した電子書籍を各種Book Storeへ
電子書籍をクリエーター天国のBOOTHで販売
電子書籍をAmazon Kindleで販売!
各電子書籍ストアの「検閲」
Mac App Storeから取得
ユーザー辞書の作り方
表情豊かな、フォントをそろえよう!
フリーで利用できるイラスト/画像素材を活用しよう!
本の構造を知ろう!
プリンタで両面印刷してホチキス製本
コンビニのコピー機で出力してホチキス製本
付録AppleScriptについて
①PDF書き出し+結合
②ツメ操作
③パーソナル面付け
④PDFへのTOC追加
⑤テキストボックス操作
⑥表の列幅、行高さ調整
⑦フォント情報収集
⑧ファイル名(章)修正
⑨ファイル名(仮想ノンブル)修正
⑩PDF操作
筆者が刊行した電子書籍の仕様
Pagesのバージョン履歴
Spacesは、macOS標準搭載の仮想デスクトップ機能であり、最大16個の仮想デスクトップを作れるようになっているほか、F3キーを押すと縮小表示を行うようになっているなど、ハード/ソフトともによく統合された機能です。
ただし、AppleScriptユーザー側からすると
「他の仮想デスクトップにアプリのウィンドウを置くとAppleScriptからアクセスできないカス機能」
「開発チームが他の機能のことを考慮していないクズ機能」
といった感想になります。
このため、さまざまな書籍で「AppleScriptとの互換性のない機能」のひとつとしてリストアップされ、AppleScript系の開発/運用現場では「安全のためにSpacesを使わないように」と注意するのが真っ先に行う恒例行事になっていました。
内蔵HDD/SSDの暗号化機能なみに、登場時にAppleScriptとの互換性検証が不十分なものについては「信用できない」として、以来、安全のために暗号化機能は極力使わないようにしてきました。
# HDDの暗号化機能が登場したときに、暗号化したHDDにAppleScriptからアクセスできないというバカみたいな不具合が発生。その後も、有効にするとeGPUが使えなくなるなど、この機能を作っている担当者だかチームのことが信じられません。
そして話はSpacesに戻ります。執筆中の電子書籍「Pages+AppleScriptで本をつくろう!」の注意点でSpacesについて言及し、確認のために「やっぱり今でも動かないのか?」と、試してみたら……他の仮想デスクトップ上に配置したPagesの書類の情報を取得できます。
「…………。」
何度試してみても、他の仮想デスクトップに配置したPages書類の情報を取得できます。
macOS 13.7.1と、macOS 10.13.7で試してみたところ、両方で動作しました。
このぐらいの範囲のmacOSで動くのであれば、さまざまな本でSpacesに関する「危険なので使用を推奨しない」という評価は取り下げる必要があることでしょう。
ただ、Pagesについては表示中のページから+6ページぐらいを超えるとオブジェクトのposition属性を取得できないといった不具合があり、これはmacOS 15で再テストしても発生が確認されています。
新たにリリースされたSafari v18(macOS 13/14/15用)で、各Tabに「pid」属性が新設されました。
各Webコンテンツのブラウズを行う処理プロセスを、独立したプロセスで行うことで、メモリの食いすぎでプロセスが止まったような場合にでも他のWebブラウジングに影響を与えない、というあたりにメリットがあったとか。

▲Safari v17とv18のAppleScript用語辞書(sdef)を比較したところ

▲SafariでYouTube上のムービーを再生しているところ
pidがわかると、どういう「いいこと」があるのかが問題です。メモリの使用状況などを確認することはできますし、個別にプロセスをkillすることもできるわけですが、そこまでやるんだろうかと。そういうニーズがあって新設したのか、ちょっとわからないところです。
それはともかく、Safari(≒WebKit)系はゴミプロセスがメモリ上に残りまくるので(Mail.appもメッセージを表示するだけでゴミプロセスが残るし)、その点がちょっとどうなのかという点と、Webコンテンツ上の画像ボタンを文字認識しておかしな動作をしまくるので、そのあたりは勘弁してほしいところです。
| AppleScript名:Safariのtabのpidを取得.scpt |
| tell application "Safari" tell window 1 set aList to pid of every tab –> {33892} end tell end tell |
iWork Apps(Keynote、Pages、Numbers)がバージョン14.2にアップデートしました。
すべてのアプリでAppleScript用語辞書への変更はありません。
Keynote 14.2では、macOS 15, Sequoia上でHDRコンテンツの表示をサポートしています。
バグの修正がうたわれていますが、Pagesのページ上のオブジェクトの情報を取得できる範囲が現在表示中の見開き+6ページに制限されるというアホな仕様は変わっていないことを確認しています。