Menu

Skip to content
AppleScriptの穴
  • Home
  • Products
  • Books
  • Docs
  • Events
  • Forum
  • About This Blog
  • License
  • 仕事依頼

AppleScriptの穴

Useful & Practical AppleScript archive. Click '★Click Here to Open This Script' Link to download each AppleScript

カテゴリー: news

マウスの右クリックメニューをカスタマイズするService Station

Posted on 1月 26, 2022 by Takaaki Naganoya

マウスの右クリックで表示されるコンテクストメニューをカスタマイズするツール、「Service Station」(Version 2020.9 (23))を購入して、macOS 12.2+M1 Mac miniの環境で試してみました。

同ツールはMac App Storeで販売されており、フリーでダウンロードしたのち、App内購入(1,840円)で購入できます。

OS標準のScript MenuにFinder上で選択中のファイルを対象としたAppleScriptを大量に仕込んで使っていますが、やはりコンテクストメニューから呼び出せたほうが便利なので、試してみることにしました。

Mac App Storeからダウンロードした状態(フリーで使えるお試し版)ではAppleScriptの起動はできないため、App内購入が必要です。

サポートページ(Github)、Twitterアカウントなどが公開されています。

この手のツールは、AppleScriptに対する知識が少ないデベロッパーが開発したものが多く、実際に使ってみると不満を覚える確率がきわめて高いジャンルです。これまでにも、実際に試すと「使い物にならない」と判断したツールがほとんどであるため、十分な検証が必要でしょう。

# デフォルト状態でAppleScriptの実行を指定できないのは、試用版の制限なのでご注意ください。

Service StationでAppleScript書類をコンテクストメニューから処理してみよう

本ツールのUser Interfaceはきわめてシンプルです。「Rules」でどのようにファイルを特定し、「Menu Items」でオープンするアプリケーションやAppleScriptを指定します。

初期状態では、「Folders」「Images」「Text」の3つのRulesが設定されています。ここに、AppleScript書類を処理するRulesを追加してみましょう。

どのような方法でAppleScript書類を特定できるのか、Rulesのポップアップを調べてみると……

「Kind -> Script」で「AppleScript」を指定するとよさそうです。Rulesを指定したあとで、「Menu Items」にサンプルScriptを指定してみましょう。特定のハンドラ宣言を記述したAppleScriptをここに指定できるようになっています(フラットなScriptだけであってバンドル形式は予想どおり実行できません)。


▲実行Scriptとしてバンドル形式のAppleScript書類(.scptd)を認識しないので、バンドル内に実行バイナリやAppleScriptライブラリを突っ込むのは無理

Service Stationで実行指定するAppleScriptは、~/Library/Application Scripts/com.knurling.ServiceStation.Attendant フォルダに入れる必要があります。

Finder上で試してみると…..AppleScript書類(.scpt、.scptd)を認識しません(ーー;;;


▲この設定にしたくなるが、この指定方法だとAppleScript書類(.scptおよび.scptd)を認識しない。罠なのでこの設定はしてはいけない。作者は.applescriptのテキスト形式のAppleScriptしか試していないもよう

この作者は「AppleScript書類」をテキスト形式(.applescript)でしかチェックしていないようです。なので、さきほどの「Rules」で提示された「Kind -> Script is AppleScript」は罠(Trap)なので選択してはいけません。

拡張子で指定しても応答しません(scpt、scptd)。RulesでUTIを指定できるようなので、

フラットなScript書類「com.apple.applescript.script」、バンドルScript書類「com.apple.applescript.script-bundle」、Script DebuggerのバンドルScript書類「com.latenightsw.osa.bundle」をAny条件で(どれかがヒットしたら該当したものとみなす)登録してみました。

はい。今度は問題なく、Finder上でAppleScript書類を選択した状態で表示させた(マウスの右クリック)コンテクストメニューでサンプルAppleScript(処理用のハンドラを記載しただけ)がメニューに表示され、添付のサンプルScript(「System Setup」タブの「Sample Scripts」ボタンを押すと表示される)を実行できました。

Service Station経由で実行したAppleScript(サンプルScript)は以下のような内容です。

AppleScript名:AppleScript.scpt
on serviceStationDidSelect(targetedURL, selectedItemURLs, menuKind)
  display dialog "targetedURL:
" & targetedURL & "

" & "selectedItemURLs:
"
& selectedItemURLs & "

" & "menuKind:
"
& menuKind
end serviceStationDidSelect

★Click Here to Open This Script 

ランタイム環境はosascript

お約束で、Service StationのAppleScriptランタイム環境名は知っておかなければいけないので、

AppleScript名:Runtime名を表示.scpt
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"

on serviceStationDidSelect(targetedURL, selectedItemURLs, menuKind)
  set procInfo to current application’s NSProcessInfo’s processInfo()
  
set aName to procInfo’s processName() as string
  
display dialog aName
end serviceStationDidSelect

★Click Here to Open This Script 

こんなAppleScriptを書いて実験してみると….

のように、「osascript」を呼び出して実装していることがわかりました。

NSAlertダイアログを表示するも、最前面に表示されず

ランタイム環境が「osascript」だと、自前でアラートダイアログを表示させたときに「最前面に表示されない」といった問題が生じる可能性があります(osascriptでお手軽実装するの勘弁してほしい。Script側に苦労を押し付けないでほしい)。あとは、GUIなしプロセスで実行するようなので、GUI Scriptingの認証を通せるか不明です。

また、どこぞのネット上のサーバー上のREST APIにアクセスしようとしてもセキュリティ上の制約で「アクセスできない」可能性もあります(実行プロセス側でネット接続の許可をもらっていないと無理)。今後も検証が必要です。

現時点でみつけた「おや?」という仕様は、Rulesでルールを作った状態で複数のAppleScript書類を選択すると、コンテクストメニューにService Stationの項目が出てこないという点です。画像の複数選択には反応するようですが、自前で設定したRulesだと複数ファイル選択時に応答しません。

# これは、追試によって設定アプリケーションを終了させるまで設定が反映されない部分があることが判明

また、Service StationのRulesから呼び出すAppleScriptのハンドラで、受け渡されるのはHFS path stringであってURLではありませんし(fURLなのか?)、複数のURLを受信できるような表記がありながらも、本バージョンでは1つのURL(正確にはHFS path)しか受け渡されません。

# 追試の結果、複数のパス(fURL)が受け渡されていることが判明

本ツールの開発者はAppleScriptを日常的に書いていない気配が濃厚ですが、それでも修正されれば我慢できないというほどでもないでしょう。


▲予想どおり、NSAlertのダイアログを表示してもランタイムがosascriptなので最前面に表示されなかった(GUIなしの不可視プロセスからosascriptを実行した際の挙動)。CDN上のJavaScriptライブラリの呼び出しは行えた

パラメータの型チェックを試してみました。

AppleScript名:パラメータの型チェック.scpt
on serviceStationDidSelect(targetedURL, selectedItemURLs, menuKind)
  set c1 to (class of targetedURL) as string
  
set c2 to (class of selectedItemURLs) as string
  
set c3 to (class of menuKind) as string
  
  
display dialog "targetedURL:
" & c1 & "

" & "selectedItemURLs:
"
& c2 & "

" & "menuKind:
"
& c3
end serviceStationDidSelect

★Click Here to Open This Script 

サンプルScriptの記述がよくないせいで勘違いしてしまったようです。targetedURLはfURL、selectedItemURLsはList、menuKindはintegerで返ってきていました。

ホームディレクトリ内のAppleScriptライブラリを呼び出す

コンテクストメニューから呼び出すAppleScript内で、ホームディレクトリ以下のAppleScriptライブラリを呼び出すことができるか確認してみました。

結論:呼べる

AppleScript名:AppleScript v2_with_Library.scpt
use AppleScript version "2.4"
use scripting additions
use radioLib : script "displayTextView"

on serviceStationDidSelect(targetedURL as «class furl», selectedItemURLs as list, menuKind as integer)
  set aStr to do shell script "cal 2022"
  
display text view aStr main message "Main Message" sub message "Sub Message" with properties {font name:"Courier", size:13, width:600, height:300}
end serviceStationDidSelect

★Click Here to Open This Script 

Posted in news Review | Tagged 12.0savvy NSProcessInfo Service Station | Leave a comment

2021年に書いた価値あるAppleScript

Posted on 12月 10, 2021 by Takaaki Naganoya

2021年:macOS 12(自分はmacOS 11、12を使用)

毎年行なっている、Piyomaru Softwareが書いたAppleScriptの1年を振り返る記事の2021年版です。恒例行事です。

あいかわらずコロナ禍の影響で踏んだり蹴ったりの1年だったので、本を書くことに注力。これではPiyomaru SoftwareではなくPiyomaru Publishingだ、などと冗談を言っていましたが、年に13冊出して進行中のものが数冊あるという状況。本当にPiyomaru Publishingです。

→ 2018年に書いた価値あるAppleScript
→ 2019年に書いた価値あるAppleScript
→ 2020年に書いた価値あるAppleScript

本を短期間かつ1人で書いて、レイアウトして、電子書籍として仕上げるためには、それを補助する大量のAppleScriptが必要です。面倒な作業はとっととAppleScriptで自動化して、繰り返し行う煩雑な作業をMacに行わせる環境を整備してきました。逆に、そういうScriptを用意できているので作業を省力化して、書けているという状況があるともいえます。AppleScriptによる補助なしにはこんなペースで書くことは不可能でしょう。

今年書いた本の中でどれがどうということはないんですが、Cocoa Scripting本は書き始める前には、一体どういうものを書いてよいのかさっぱり分かりませんでした。戦場の絆本だってそうです。どれひとつとして、企画段階のままの内容で完成したものなどありません。

2021/1 FileMaker Pro Scripting Book with AppleScript macOS 12対応アップデート
2021/2 [Eng] FileMaker Pro Scripting Book with AppleScript
2021/3 Cocoa Scripting Course Volume #1 NSString
2021/3 Cocoa Scripting Course Volume #2 NSArray
2021/3 Macとアップルスクリプトで学ぶ いまからはじめるプログラミング①
2021/4 Macとアップルスクリプトで学ぶ いまからはじめるプログラミング②
2021/4 Cocoa Scripting Course Volume #3 NSDictionary
2021/5 ミュージック.app scripting book with AppleScript
2021/7 機能強化AppleScript集 CotEditor用 PowerPack 取扱説明書
2021/7 空前絶後あなたの知らない ヤバイAppleScriptの世界
2021/8 elgato STREAM DECK 徹底活用 Mac+STREAM DECKで時短+作業効率化!!
2021/9 空前絶後あなたの知らないヤバイAppleScriptの世界 iOS対応版
2021/10 アーケードゲーム「戦場の絆」僕らの15年戦争

書いた本はどれも「こんなものがあればいいのに!」というアイデアを形にしたものばかり(読者ニーズを形にしたものではないところにギャップはありますが、、、)。新基軸は、iOS用のFileMaker Goを電子書籍プラットフォームと見立てて、各種情報+ロジックを1つにまとまた本を出したことです。「iOSで読む」本についてはいろいろ構想もありますが、まだ試行錯誤の最中といったところでしょう。

FileMaker Pro系のコンテストには「FileMaker選手権2020」「FileMaker選手権2021」「FM-1グランプリ」の3つに応募し、FileMaker選手権2020ではDropbox賞を3つ(3年分)、FM-1グランプリでは仕事効率化部門で部門準賞をいただいています。

■BEST AppleScript of 2021

今年書いたAppleScriptの中で、個人的に一番会心の出来だったのは「部首で漢字検索」シリーズです。外部のデータに依存してはいるものの、テキスト中の漢字を部首で検索できるというのは、なかなかすごいことです。

技術レベル云々を問題にしなければ、macOS 11+M1 MacでAppleScriptの動作速度が遅いことを検証したサンプルAppleScriptと報告書のまとめでしょうか。おそらく、他にも同じようなレポートが行われていたところに、きちんとベンチマークをとって動作の異様さを報告したものが役立ったが、おそらくその前からApple社内で当たりはつけていたのでしょう。

M1 Mac miniが到着してすぐベンチマークを回して「なんだこの遅さは???」と気づいたぐらいだったので、半年前のWWDC以降に開発者向けに貸し出されたDTK(Developer Transition Kit、A12Bionic搭載マシン)を試していた人たちは揃いも揃ってみんな本当に気づかなかったんだろうか? という素朴な疑問があります。

M1上でのAppleScriptからのCocoa呼び出しの速度がmacOS 11.x上のレベルのままだったら、と思うとなかなか怖いものがあります。

■2021/1

FileMaker Pro Scripting Bookの英語版を書いていたので、こうしたものが必要になりました。日本語のままで未翻訳の文章が残っていると困るので、そのチェックのためのツールを書いてみたというところです。
1/28 最前面のKeynote書類のテキストアイテムの英語化率を求める

■2021/2

部首で漢字検索を行えるAppleScriptは、もともとのデータを作った人が偉いわけですが、実際に手元で用意したテストデータに対して実行し、その処理内容を正しく評価してAppleScriptから呼び出せるようにしたところに価値があるものと考えます。
2/21 部首で漢字検索
2/24 指定した文字で囲まれたキーワードの色を置換する

■2021/3

環境を用意するだけで手間がかかる超解像処理が、PixelMator Proで手軽に呼び出せるようになっていることに感服します。本処理は実に有用です。
3/25 画面スナップショット超解像バッチ処理 v1

■2021/4

Pagesの書類から最大サイズの文字で書かれている文章をタイトルとして取り出す処理を行うAppleScriptです。せめてPagesでタイトルの書式属性に該当するテキストを抽出できるようになっているとよいのですが、そういう機能は一切ないので困ります。
4/12 Pagesで最前面の書類中のテキストアイテムと本文テキストで文字サイズが最大のもののテキストを求める

■2021/5

Music.app本に掲載するために書いたものですが、なかなか苦労しました。AppleScriptからデータを取得したい内容です。
5/12 LAN上のdaapクライアントの共有名をリストアップ v2

■2021/6

M1 Mac miniを手にしたその日に強烈な違和感をおぼえ、ベンチマークを用意して実行してみました。これをやっていなかったら、macOS 12でもAppleScriptからのCocoa呼び出しは遅いままだったでしょう。技術的に高度かどうかはさておき、これをやらなかったら全世界的に致命的な影響が出たであろうことを考えると身震いします。
6/22 macOS 11, AppleScriptをFirestormではなくIcestormで実行か?!

■2021/7,8

とくになし。この頃が一番忙しかったので。

■2021/9

電子書籍「僕らの15年戦争」のために用意したものです。Pagesは長大なコンテンツの編集にまったく向いておらず、なるべく記事ごとに小割りに書類を分けないと困ります。そのため、全書類に対して同じ修正を行いたいといった場合、手作業で行うのは現実的な方法ではありません。AppleScriptから一括処理することが必須です。
9/22 Pagesの最前面の書類で選択中のツメを修正する

■2021/10

macOS 12で新規搭載されたショートカットをAppleScriptから呼び出したりいろいろ試し出しました。ただ、ショートカットの完成度がいまひとつというべきなのか、「よくまあこれでいままでiOSユーザーは文句を言わなかったもんだ」と呆れるほどのいい加減な出来に言葉を失っています。
10/27 AppleScriptからショートカット実行&ショートカット内でAppleScriptを実行

■2021/11

macOS 12上でショートカットをAppleScriptの処理内で実行するため、存在確認とインストールまで自動で行うことを試したAppleScriptです。まだ完全体とは言い難いですが、方向性はいいと感じています。
11/1 Shortcuts Eventsでショートカットのインストール+実行

電子書籍の作成補助Scriptの1つ。表のセルに入れた丸つき数字のリナンバー処理は、表コンテンツを編集すると必ず発生していた無意味な作業であり、これを手軽に行えるようにしたことは意義深いでしょう。
11/27 選択中の表の指定行・列のマル付き数字リナンバー v2

Posted in news | Tagged 10.15savvy 11.0savvy 12.0savvy | 2 Comments

Microsoftが新OutlookにAppleScript機能を追加表明

Posted on 12月 9, 2021 by Takaaki Naganoya

Outlook: Support for AppleScript in the New Outlook for Mac
Planned Availability: June CY2022 https://t.co/bGOxW8leZG #M365Roadmap #Outlook #NewRoadmapItem

— Microsoft365Roadmap (@M365Roadmap) December 8, 2021

Microsoft 365のロードマップを流布するTwitterアカウント@M365Roadmapが、Mac用のOffice365(ローカルで動かす版のOffice、月単位契約可)の新たなロードマップとして、新バージョンのOutlookに対して、2022年の6月を目処にAppleScript対応機能を追加することを発表しました。

Microsoft Outlook for Macは企業内のExchangeサーバーにアクセスするクライアントで、筆者の手元にある(契約していないので置いてあるだけ)バージョンをアップデートしたところ、バージョン16.55でAppleScript用語辞書もついています。

Microsoftが言うところの「新Outlook」というのは、バージョン17.xxというものなのか、あるいはそれ以上のバージョン番号がついたものなのかは分かりませんが、Outlook v16.xx系を使っていればAppleScriptサポートはあるので(Exchangeに用がないのでOutlookのScriptingしたことないですけど)、それまで16.xx系を使い続けてもよいのでしょう。

また、本件はあくまで計画段階の話なので、確度のほどは不明です。

Posted in news | Tagged 11.0savvy 12.0savvy Outlook | Leave a comment

Amazon EC2 M1 Macインスタンスが利用可能に

Posted on 12月 3, 2021 by Takaaki Naganoya

Amazon AWSでMacインスタンスが利用可能になって、約1年。当初はMacインスタンスにはMac mini 2018(Intel Mac)が採用されていましたが、M1 Mac miniを採用した「Amazon EC2 M1 Macインスタンス」が本日から利用可能になったと報じられています。

「利用可能なM1 Mac miniのスペックは8CPUコア、8GPUコア、16GBメモリ、16コアApple Neural Engine。これがThunderbolt経由で10GbpsのVPCネットワークと8GB EBSストレージに接続されています。」

とのこと。OSバージョンが書かれていませんが、macOS 11.xか12.xということになるでしょう。

サービス開始当初からM1 Macに言及していた割に提供が1年遅れたことについては、やはり「(AppleScriptや)shell scriptのようなプロセスを決め打ちで遅い高効率コア(IceStorm)で実行してしまう」というmacOS 11.x+M1の問題点(バグといってもいい)がmacOS 12で解消されるのを待っていたというところでしょうか?

ただ、基本単位が24時間で、それを超える分については1秒単位の課金。「瞬間的にMacを大量に用意して大量のデータを処理したい!」という用途にはいまひとつ(費用面で)使いにくいサービスでもあります。

最小単位が1時間とかだったら、いろいろ使ってみようという気になりますが、AppleのEULAをクリアするためにこのようなサービス形態になっているとかいないとか。

あらかじめ起動ディスクイメージを用意しておいて、必要なときに新規インスタンスをこれで起動し、所定の処理を行ったあとでデータをストレージに書き戻すとかいった使い方になることでしょう。

最小単位が24時間というのが、かえすがえすも……。

AppleScriptでこうしたサービスを利用する機会があるのかと言われれば、膨大な量のPDFを処理する必要がある場合などに、一時的にAWS上のインスタンスをかき集めて一気に処理するといったものが考えられるでしょう。

膨大なKeynoteやPagesのデータを処理する必要があって、そのデータ処理を行う……というケースもないことはなさそうですが、別にAWSを利用しなくても処理できそうな気もします(データ量次第です)。

Posted in news | Tagged 11.0savvy 12.0savvy AWS | Leave a comment

FM-1グランプリで仕事効率化部門の部門準賞を獲得!

Posted on 11月 28, 2021 by Takaaki Naganoya

FileMaker Proの「すごいデータベース」のコンテストであるFM-1グランプリにおいて、Piyomaru Softwareの応募作品「FileMaker PowerPack」が、予選を通過し、決勝において仕事効率化部門の部門準賞を獲得いたしました。

FileMaker PowerPackは、CotEditor PowerPackと同様、Cocoa ScriptingのパワーをFileMaker Proユーザーに体感していただく技術的なデモンストレーションであり、かつ日常的にデータベース用のデータ作成などの作業に従事する人たちが便利と感じる(のではないか)という内容のScriptを収録したScriptサンプルデータベースに仕上がっています。

データベース上にサンプルデータを入れ、その場で実行して結果を確認できるようになっています。

内容はあっさり読めるように書いてあるものが多いので、入門用に見えてしまうかもしれませんが……実際にAppleScriptを「書ける」人間が読むと顔をひきつらせるような内容のものが多々入っています。作った本人としては「これを見て書けるようになるとは思わない」というレベル設定です。超絶レベルではないものの、アクロバティックなものが多いので。

技術的にも度肝を抜くような内容であり、178本のScriptを収録してはいるものの、本作品はあくまでFileMaker Pro上で動作するAppleScriptのコードなわけで、「ド派手で巨大で存在感はあるものの、さすがに大賞はとらないだろう」という味付け。本作品のレビュー記事は、文字数からBlog側で単純計算した読了所要時間が23分という大作です(通常の8倍のボリウム)。

それでも、FM-1グランプリの運営方針である「きちんと内容をチェックする詳細なレビュー」が行われおり、日本国内のFileMaker Proコミュニティのレベルを内外に示したという意味において、よそで真似できない「まっとうな」骨太のコンテストであったことを痛感。運営に携わられたお3方、関連スポンサー企業の方々に敬意を表します。

というわけで、このFileMaker PowerPackの書き換え方法や利用方法などを解説した「FileMaker PowerPack活用ガイド」を近日発刊予定です。技術的なレベルを下げて解説し、久しぶりにAppleScriptにさわるという方向けにレベル設定しています。完全理解というレベルでなくても、必要な書き換えはできるだろうという内容を目指しています。

そして、自分で作った作品の作者自身の解説のはずなのに、自分で書いていてとても大変です。「誰だ、こんなもの作ったのは?」という悪態をついてしまうほどですが、それは自分のことなので自業自得というところです。

Posted in news | Tagged FileMaker Pro | Leave a comment

FM-1グランプリにFileMaker PowerPackを出品

Posted on 11月 15, 2021 by Takaaki Naganoya

FileMaker Proの作品コンテスト「FM-1グランプリ」の第2回予選を通過した「FileMaker PowerPack」を、内容拡充し第3回予選に再応募しました。

CotEditorのPowerPackにつづく、FileMaker ProのPowerPack。178本のAppleScriptを収録した、FileMaker Proに組み込んで動かすと便利そうなものを収録したサンプル集です。

Cocoa Scriptingのデモンストレーションを行うフリー配布ソリューションです。

FileMaker ProとAppleScriptなので、相性抜群! 楽勝で作れるに違いない!

……そんなことを考えていた時期が自分にもありました。

しかし、割と前代未聞のトラブルに遭遇。苦労話にはことかかないありさまです。だいたい、内容がなかなか決まらずに企画段階でかなり困っていました。

ここでは、お気楽そうに見える見た目とはまったく異なる技術的な内容について記すこととします。

FM独自のAppleScriptランタイム環境が大変

FileMaker ProのAppleScriptランタイム環境は独特のもので、ランタイム名を取得しても「FileMaker Pro」と独自の名前が返ってきます。Vanilla AppleScriptについては環境の違いにともなう「差異」は感じないところですが、Cocoa Scriptingを行うと「まったくの別物」であることを痛感できます。

FileMaker Pro内蔵のスクリプトステップ「AppleScriptを実行」は、実行したAppleScriptが生成したオブジェクトがメモリ上に常駐したりしません。実行後、即座にメモリ上からパージされるようです。ARC的な「使わなくなって時間がたったから自動で消しとくね!」という挙動とはまるっきり違います。

このことで、OS側から各種Notificationを受信するようなもの(USBメモリがマウントされたらAppleScriptを実行させるなど)は、瞬時にクラッシュ。NSTimerでタイマーを生成してタイマ割り込み処理を行おうとするとクラッシュ!

さらに、標準的なランタイム環境(スクリプトエディタ、Script Menu)で実行したときには発生しないトラブルが山のように発生します。

とくに、CoreImageの機能を呼び出して画像処理を行おうとした場合には、明示的にメインスレッドでの処理を指定する必要があり、これに気づくまではまったく画像フィルタ処理ができない始末。FileMaker PowerPackでは無駄にCoreImageのフィルタ呼び出しプログラムばかり60本ぐらい突っ込んでありますが、このCoreImageの処理で問題のある挙動を示すものがないか全数チェックしたという次第です。

Cocoa Scriptingについては、おそらくメーカー側でもノーチェックの部分なので、調べられる機会に調べておいたほうが得策です。

今回のFileMaker PowerPackでいろいろ余計なノウハウがたまりましたが、osascriptなどのランタイム環境と比べてもずいぶん風変わりなCocoa Scripting環境であることを意識しておく必要があることでしょう。

FileMaker PowerPackには目下178のScriptを入れてあり、FileMaker Pro DB上のサンプルデータをもとにデータ処理を行い、結果がある場合にはDB上に結果を描き戻すようになっています。

今回、さまざまなテストを重ね、「極力FileMaker Pro内蔵のAppleScript実行環境を利用しない」ことが問題解決の近道であることを痛感しました。できるだけ、FileMaker Proの外部に補助アプレットを用意して、そちらでCocoa Scriptingの処理を行うべきです。まして、タイマー処理やNotificationの受信処理などはFileMaker Pro内では行えないため、FM内では最低限の処理にとどめ、処理本体を外部に出すべきでしょう。

macOS 12のFramework再編の影響も

macOS 12で行われたFramework再編の影響も受けました。PDFKitの機能を利用する場合、macOS 11までであれば、

use framework "QuartzCore"

と記述していましたが、macOS 12では、

use framework "PDFKit"

と記述する必要があります。

macOS 11までのOSと、macOS 12以降のOSにそれぞれ対応するライブラリを書いて、実行時のOSバージョンを検出して呼び出しを切り替える処理をスクリプトエディタ上で動作確認してあったのですが、これをそのままFileMaker Proのランタイムに持っていくとコンパイル(構文確認)をパスしません。

仕方なく、macOS 11までのScriptと、macOS 12以降のScriptで別々のものに分ける必要がありました。

自称・世界最小の簡易形態素解析エンジン「easyJParse」のFM環境への移植

さまざまなランタイム環境で動作する必要のある、Piyomaru Softwareによる世界最小の簡易形態素解析エンジン「easyJParse」を、このFileMaker PowerPackに組み込んでいます。

このeasyJParseは初出時には80行程度、現在でも100行そこそこという超小型の形態素解析プログラムであり、自然言語(主に日本語)によるコマンドを分解するために開発したものです(飛行機の中でも動かすべく、REST APIで外部のサービスを呼び出したりはしていません)。

当初、easyJParseがFileMaker Proランタイム上で動かず、けっこう焦りましたが……いつもの「ソート方向指定」の「ascending」とか「descending」などのキーワードがFMの予約語と衝突していただけでした。

このeasyJParseが動くことで、FileMaker Pro上でTanzaku的な自然言語によるコマンド指定ソリューションが動きまくるはずですが、32KBまでのScriptしかホスティングできないという制限が地道に大変そうであります。

FM-1 GPにFileMaker選手権2021と結果発表が相次ぐ

ウチの検証環境(Intel+M1 Mac mini)でテストした範囲では問題ないことを確認していましたが、どうもM1 MacBook+Retina Display環境では検証できないので、その環境ではいろいろ問題に遭遇していたようです。問題の洗い出しを行えたことは前向きにとらえるべきですが、その環境がないので事前にチェックすることは不可能です。

# M1のRetina Display+MacBook環境が手元にないのでコンテストに応募したわけで…

肝心の総合結果発表は11月27日。大賞を取ることは難しそうですが、予選を通過したため何かいただけそうです。噂によればFileMaker選手権2021も近い日程で結果が発表されるとかしないとか。こちらにも応募はしているため、せめて参加賞ぐらいはいただきたいものです(モバイルバッテリーだったか)。

FileMaker PowerPackについては、その内容を解説し、書き換えるためのガイドを行う書籍を近日発行予定です。さらに、Cocoa Scripting的な立ち入った解説を行うものも計画しています。

これらの付録に、「FM-1グランプリ戦記」をつける予定です。

Posted in news | Tagged 12.0savvy FileMaker Pro | Leave a comment

FileMaker Pro Scripting Book with AppleScriptをアップデート

Posted on 11月 4, 2021 by Takaaki Naganoya

FileMaker ProのAppleScriptからの操作を詳細に解説した電子書籍「FileMaker Pro Scripting Book with AppleScript」(日本語版)をアップデートしました。

macOS 12に合わせた内容のアップデート、v1.2までに説明されていなかった内容の補完、および別冊付録リファレンスをまとめています。

すでに購入された方は、購入ページからの再ダウンロードで入手可能です。

→ FileMaker Pro Scripting Book with AppleScript オンラインブックストア(BOOTH)

Posted in Books news PRODUCTS | Tagged 12.0savvy FileMaker Pro | Leave a comment

AppleScript初期プロダクトマネージャーWilliam Cook氏が死去

Posted on 10月 29, 2021 by Takaaki Naganoya

I'm devastated to hear that William Cook passed away on Wed. Much of 1990s OOP was defined by his seminal papers. When he returned after a decade in industry (AppleScript!) I invited him to @BrownCSDept (where he got his PhD from Peter Wegner) and we became friends. Tragic. pic.twitter.com/SwiPvZZgd2

— ShriramKrishnamurthi (@ShriramKMurthi) October 28, 2021

Posted in news | Leave a comment

Skim v1.6.5+macOS 12.0.1でPDFに埋め込んだapplescript://リンクの動作を確認

Posted on 10月 28, 2021 by Takaaki Naganoya

macOS 10.15で「PDFView上で発生した(カスタムURLスキームの)URLイベントを途中でブチ切る」という変更を、ユーザーに何の断りもなく行ったApple。

本Blog掲載のプログラムリスト末尾に入っている「applescript://」URLリンク。Webブラウザ(HTML)→スクリプトエディタの間では、このURLリンクは有効です。この仕様を引き継いで、AppleScript解説本のPDFでも同様のURLリンクを入れてあったのですが……これがmacOS 10.15で意図的にブロックされました。

URLリンクの長さが規定の文字数を超えるものは途中で切ったり、リンクをそもそも無効にしたりと、AppleはmacOS 10.15.x上でマイナーアップデートのたびに悪のかぎりを尽くしていました。90年代の傍若無人なマイクロソフトを想起させるような、強引すぎるやり方です。

こういうのはとてもよくないことだと思います。PDFの扱いがいいからmacOSを使っている、という部分は大きいわけですが、その基盤となるPDFの扱いをいろいろ無断で変更するというのは、感心しません。

macOS 10.15はβ段階から出来が悪く、「こんなのに付き合っていられるか!」と10.14を継続使用することを決め、10.15をガン無視することにしました。

macOS 10.15は「リリースしてはいけない」レベルのOSだと感じました。このあたり、ダメなものにストップをかけられないのは、Appleという会社の構造的な問題なんでしょう(イエスマンばっかりやがな)。

macOS 10.15を無視したことは個人の生産性を損なわなかったという意味では「いいこと」でしたが、macOS 10.5で発生していたさまざまな問題を自分が認識しなかった(そういうレベルまで付き合う気がしなかった)ために、問題の発覚が遅れたという副作用もありました(まさか、Cocoa Scriptingの実行速度が大幅に低下していたとは!>macOS 10.15)。

macOS 10.15におけるPDF埋め込みリンクについては、macOS標準添付のPreview.appであろうがサードパーティの(オープンソースの)Skim PDF Viewerだろうが、自分でXcode上で作ったお気軽PDFブラウザだろうが、PDFViewを使っている限りはこの制限が発生していました。

真剣にサードパーティのPDF関連Frameworkの利用も検討しましたが、価格面でなかなか折り合いが合わなかったのと、PDFViewに相当するクラスが提供されていなかったのでダメでした。

本件についてはAppleにレポートしていましたが、Apple側でガン無視状態(いろいろリクエストしても無視されるのがデフォルト状態)。サードパーティのPDFビューワまで影響が出るため、macOS 10.15を使わないという消極的な対策しかできない状況でした。

ちょうどこの時期に執筆していたMusic.appのScripting本が完全に頓挫するなど、少なからず打撃を受けた出来事だったのです(各種既刊本のアップデート計画も白紙撤回していました)。

その後、Piyomaru SoftwareのScripting本については「本誌掲載Scriptは別途Zipアーカイブを添付」という原始時代のやり方にたちかえることになります。

そんな中、ふとmacOS 12.0.1+Skim v1.6.5で冗談半分に「URLリンクが復活してたりして」と試してみたら……………「!!!!!』

なんと、Skim上では「applescript://」URLリンクが正常に動作して、内容が途切れることなくスクリプトエディタに転送されていました。さすがに、追加試験でPreview.app上で実行してみたらリンクをまるごとブロックされましたが、Skimについては大丈夫なようです。

こっそり禁止して、こっそり修正ということなんでしょうか。現状がこのまま維持されるのか、それとも将来にまた仕様が変更されるのか不明ですが、コソコソ仕様を変えられるのはとても不愉快です。

OSのRelease Notesをちゃんと出さないことは、不満です。

Posted in news PDF | Tagged 12.0savvy | Leave a comment

AppleScriptからショートカット実行&ショートカット内でAppleScriptを実行

Posted on 10月 27, 2021 by Takaaki Naganoya

macOS 12で新規搭載された「ショートカット.app」、このアプリケーション上で記述するワークフローを「ショートカット」、ショートカットを構成する各コマンドを「アクション」と呼びます。

ショートカット.appは日本語ローカライズされた名称であって、実際には「Shortcuts.app」という名前です。

AppleScript用のショートカット実行GUIなしアプリケーション「Shortcuts Events.app」が別途(ショートカット.appのバンドル内に)存在しており、こちらもAppleScript用語辞書を備えています。

Shortcuts.appに対してコマンドを実行すると、同アプリケーションが起動します。Shortcuts Events.appに対してコマンドを実行すると、Shortcuts.appは起動しません。

両者とも辞書内容は一緒であり、バージョン番号と名前以外に差異はありません。

AppleScript名:ショートカットのプロパティを取得.scpt
tell application "Shortcuts"
  properties
  
–> {frontmost:false, class:application, name:"Shortcuts", version:"5.0"}
end tell

★Click Here to Open This Script 

AppleScript名:Shortcuts Eventsのプロパティを取得.scpt
tell application "Shortcuts Events"
  properties
  
–> {frontmost:false, class:application, name:"Shortcuts Events", version:"1.0"}
end tell

★Click Here to Open This Script 

ショートカット.appを起動するとこのようなウィンドウが表示されます。

あるいは、このようなウィンドウです。

ショートカット一覧が並んだ表示状態で実行することもできますし、ダブルクリックして個別ウィンドウ表示した状態で実行することも可能です。

また、メニューから実行することも可能です。

環境設定では、以下のような設定が行えます。「詳細」に「スクリプトの実行を許可」の項目があり、デフォルトではオフになっています。当然、ここはオンにします。他の項目についても適宜、自己責任でオンにすることになります。

ショートカット(ワークフロー)はローカルに保存されません。iCloud上に保存されます。

ショートカット(ワークフロー)の共有はコンテクストメニューから行います。このさい、iCloud上のURLが直接表示されないため、少々面倒な感じです。

「リーディングリスト」で共有すると、WebブラウザのURL欄に詳細なURLが表示されるため、これを用いるとよさそうです。

https://www.icloud.com/shortcuts/e788482535704922aaa9f617491353b2

新規ショートカットの作成には、メニューから「ファイル」>「新規ショートカット」(Command-n)を実行するか、ショートカット.appのウィンドウでツールバーの「+」をクリックします(すべてのショートカット、My Shortcutなど選択中のフォルダによって表示/非表示状態が変わります)。

初期状態はこんな(↑)感じです。アクションを選択してダブルクリックするか、ビュー上にドラッグ&ドロップするとアクションが置かれます。

最初なので、ダイアログでも出しておきましょう。

ツールバー上の「▶︎」ボタンをクリックするか、Command-rでショートカット(ワークフロー)を実行します。

ショートカットは名前で識別することになります。ツールバー上の名称を変更すると名前を付けられます。

AppleScript側からはこの名前「AS TEST2」を指定して呼び出すことになります。

AppleScript名:ショートカット.appでショートカット実行.scpt
tell application "Shortcuts"
  run shortcut "AS TEST2"
end tell

★Click Here to Open This Script 

AppleScript名:Shortcuts Eventsでショートカット実行.scpt
tell application "Shortcuts Events"
  run shortcut "AS TEST2"
end tell

★Click Here to Open This Script 

現在のところ、Shortcuts.appならびにShortcuts Events.appのrunコマンドでパラメータを指定すると実行時にエラーになるので、パラメータをAS側からショートカット側に指定できていません。クリップボード経由で指定するとかいってアクロバット技を使えばできないことはありませんが、パラメータを指定できないのは明らかな「バグ」です。

あとは、他のプログラムとの相互運用性を高めるためには、ショートカット側の実行結果をAS側に返してくれることが望ましいです。オブジェクトによっては、sdefを通じてやりとりできないCocoa Object(CLLocationなど)もありますが、結果は得られるべきでしょう。

ショートカット.appについては、ヘルプにけっこうな内容の説明が書かれているので、まずはそちらを読むとよいでしょう。ただ、日本語訳がよくないのか「お前は何を言ってるんだ?」という表現が散見され、説明文というよりも広告みたいな内容の箇所もあります。

Posted in news | Tagged 12.0savvy Shortcuts Shortcuts Events | 12 Comments

macOS 12が正式リリースされる

Posted on 10月 26, 2021 by Takaaki Naganoya

macOS 12が正式にリリースされました。ソフトウェアの互換性が確認されていれば、macOS 10.15や11からは(久しぶりに)乗り換える価値のあるOSです。とくに、Apple Silicon Macについては「Must Update」なOSといえるでしょう。

あらたに搭載されたmacOS用のショートカット.app

iOS用にサードパーティが出していたアプリケーション「DeskConnect」をAppleが買収してiOSに「ショートカット」の名前で搭載した自動化アプリケーション。そのmacOS版が搭載されました。Automatorの後継環境として位置付けられているもので、AutomatorのWorkflowの読み込み機能を有しています。

デフォルトでショートカットの内容をメニューバーに表示する機能があり、Script Menuのようにメニューバーから選択・実行が可能です。

自分のiOS環境にはDeskConnectをインストールしてあったので、

Mac上で見てもこんなDeskConnect時代のショートカットも残っているのですが、すでにDeskConnectが動作しないので消すしかありません。

ショートカット.appについては、現時点では「使い物にならない」という評価しかできません。Mac上で動作する標準装備ツールでありながら、実行にiOS用のアプリが必要なMac上で動かないショートカット・アクションが大量に存在しており、Mac上で実行できないことを警告する機構が存在していません。実行してはじめて「Mac上で実行できない」というエラーが表示される程度。「ツイート」アクションも、実行するとエラーになります。

ショートカットについては、Automatorよりも1つ1つのアクションに細かいものが用意されているため、Automatorよりは一般的なプログラミング言語っぽい(下手するとAppleScriptと同じぐらいの粒度の命令がある)印象さえ受けるのですが、微妙に日本語訳がこなれていないのか、日本語で表示すると理解に苦しむアクションが大量に存在しています。

下手をすると、これは「日本語AppleScript」の再来なのではないか、と思わせるような風景が展開されており、ちょっと困惑をおぼえます。

ただ、「AppleScriptを実行」アクションが搭載されており、これが一応普通に動くことを確認してあります。Cocoaの機能も呼び出せるなど、ここだけは「ちゃんとしている」印象を受けます。

ちなみに、ショートカット実行プログラムのランタイム名は「MacHelper」となっており、これは「ショートカット.app」上から実行しても、GUIなしの「Shortcuts Events.app」から実行しても同じ内容が返ってきます。

ショートカット上のAppleScriptの処理速度については、実行されるまでのチェック段階が多々存在しているため、スピードを議論するレベルではないと思います。Automatorにきわめて似た使用感です。

ショートカットのAppleScriptを実行アクションに記述するAppleScriptについては、

use AppleScript
use scripting additions
use framework "Foundation"

on run {input, parameters}
	set procInfo to current application's NSProcessInfo's processInfo()
	set aName to procInfo's processName() as string
	display dialog aName
	
	return aName
end run

と、Automatorとほぼ同一の記述方法です。この実行環境は、ローカルにインストールしたAppleScriptライブラリの呼び出しを許容するので、Switch Controlよりは自由度があります。

ここはよしあしで、iCloud経由で共有するショートカットで、AppleScriptライブラリの個別環境へのインストールが必要となるAppleScriptを含んでいる場合には、運用性が下がります。AppleScriptライブラリ自体をアクションに埋め込むような形態になっていれば話は別なんでしょうけれど。

現状では、macOS上でショートカットを運用できるメリットが少ないものと判断しました。荒削りすぎて、まだα版みたいな完成度です。こまかいところでバグも多々あります。macOS 12の登場に合わせてショートカットの書籍の発行を検討していたものの、そのあまりの完成度の低さにプランを投げ出したほどです。

それでも、現状のショートカットに対して2つだけメリットを見出すとしたら、

 (1)iOS用のアクションを編集できる大きな画面を備えた環境であること。macOS環境は「編集環境」と割り切る
 (2)macOS上でSiriによる音声認識からAppleScriptを実行できる仕組みとして活用

といったあたりでしょうか。現状ではiOS用ショートカットのクロス開発、Mac上での音声認識コマンド実行用部品 としての価値しかありません。

macOS上にはアクセシビリティ系の音声認識+AppleScript実行システムが搭載されており、macOS 10.12あたりから日本語音声認識が使えるようになりました。現状ではこのDictation音声認識システムとSiriの音声認識システムの2つのシステムが載っています。前者についてはなるべくメニューの奥深くの目立たない場所に移動されており、そのあたりに「意図」を感じずにはいられません。

Automatorを置き換える件については、現状では夢物語のレベル。もともと性格が大きく異なります。Automatorのほうがすぐれている点もあれば、ショートカットのほうがすぐれている点もあります。ただし、AppleScript Studioの仕組みを引きずっているAutomatorの機構の維持そのものにかかる手間が大きいのでしょう。移行は止むを得ないというところでしょう(現状で、Automatorが事実上何にも役立っていないので)。

AppleScript v2.8

バージョン番号を変えるほどの変化があったのか、自分にはよくわからないのですが、リリースノートが「AppKit」といった単位でしか書かれなくなったために、詳細がわかりません。

……少なくとも、macOS 10.15で極端に遅くなっていたCocoa呼び出し速度が(Intel Macでも)改善され、さらにApple Silicon MacでのCocoa呼び出し速度が大幅に向上しています(macOS 11の30〜40倍速)。これは、macOS 11+Apple Silicon MacでAppleScriptからのCocoa機能呼び出しが極端に遅くなっていた(高性能コア「FireStorm」ではなく、高効率コア「IceStorm」で実行されてしまっていた)点が修正されたためです。

Cocoaの機能を利用していない場合でも、macOS 11より高速になっているため、M1 Macを使っているScripterにはmacOS 12へのアップデートをおすすめしたいところです(職場のアプリケーションの互換性維持のため、アップデートしないというポリシーがある場合をのぞく)。

OSの構造変化による影響も受けています。既報のように、macOS内のフレームワークがmacOS 11あたりで再編(Umbrella Frameworkだったものが独立。とくにPDFKitとか)され、useコマンドで別のものを指し示すよう書き換える必要が出てきています。

macOS 12.0.1では、日本語環境でNSDataDetectorを用いて自然言語テキストから電話番号を抽出できないというバグがまだ解消されていません。

総評

このmacOS 12というOSにアップデートする価値があるのかどうか、という話については「アップデートできるならアップデートすべき」です。これは、バグだらけでリリースされて信用を大きく失ったmacOS 10.13、10.15とは異なるレベルの「ちゃんとしたmacOS」です。

また、macOS 11ではApple Silicon Macの持つパフォーマンスを発揮し切れていませんでした。M1 MacにmacOS 12を入れると、AppleScriptで作成したソリューションの動作速度の向上幅に腰を抜かすことでしょう。自分もMac App Storeで販売しているAppleScriptで記述した自作アプリケーションのかずかず(とくにKamenoko)をmacOS 12で動かすと、その速さと快適さにmacOS 11には戻れなくなってしまいました。

M1 MacでもIntel Macでも、環境が許せばすぐにアップデートすべき、近年稀に見るOSでしょう。ただし、Uncontrollableな混乱を楽しめる限りにおいて。

Posted in news | Tagged 12.0savvy Shortcuts Shortcuts Events | Leave a comment

macOS 12.0.1betaが登場

Posted on 10月 19, 2021 by Takaaki Naganoya

昨日発表されたApple Silicon MacBook ProをサポートするmacOS 12が10/26にリリースされることが明らかにされました。

そして、電源を入れてセットアップするとまず最初に降ってくるアップデートがこのmacOS 12.0.1アップデートのようです。

# 情報源未確認ですが、12.0.1がGMという話があります

macOS 12 Beta 10から何か変わったのかと言われても、自分では検証できていません。Script Editorの立ちゴケ(放っておくとクラッシュする)の確率が減ったような気がしますが、まだ半日も使っていないのでなんとも。SafariでWebフォームからテキスト入力中にコケたりする現象に遭遇しているので、まだ何か問題があるのでしょう。

# 既知の問題は何も修正されていません。
# Script Editorの立ちゴケは発生しています。寝る前に立ち上げておくと、朝にはコケています

にしても、M1でさえ腰が抜けるほど速い(とくに、Cocoa Scriptingの実行速度が激速)のに、ここからさらに速いとか言われると腰が抜けそうです。

M1 Pro/Maxについては、CPUコア数増、バス速度(メモリアクセス、SSDアクセス)が高速になったもので、シングルコアあたりの処理速度がそれほど上がったわけではない、という認識で間違いなさそうです。実機を見ていないのでなんともいえませんが。

Geekbenchのベンチマーク値が出てきましたが、M1 Mac mini(Macmini9,1)がシングルコアで1711ぐらいなのに対して、MacBookPro18,3(多分14インチ)で1767ぐらい、MacBookPro18,2(多分16インチ)で1783ぐらいと、AppleScriptの処理だけを行なっているかぎりでは、「差が出ない」ものと思われます。

もちろん、画像処理や映像処理を行うアプリケーションやFrameworkを操作した場合には速度差が出るでしょうし、メモリの帯域幅も上がっていてSSDの転送速度も2倍となれば、トータルで1〜2割ぐらいは処理性能が上がるんじゃないでしょうか。Pixelmator ProのML処理(解像度倍増)あたりは差がつきそうです。

お遊びでM1 Mac mini上にRAM Diskを作って速度を計測してみたら、読み出し速度が秒間10GBぐらいになっていて腰を抜かしたのですが、新しいMacBook Proでは普通にSSDに対して秒間7.4GBぐらいの転送が行えるとのこと。SSDがRAM Disk並みの速度でアクセスできるわけで、腰が抜けまくるのではないかと。

Posted in news | Tagged macOS 12 | Leave a comment

Stream Deck Softwareがバージョン5.1.2にバージョンアップ

Posted on 10月 16, 2021 by Takaaki Naganoya

ElgatoのStream Deck用ソフトウェアがバージョン5から5.1.2にバージョンアップしました。

従来は1台のStream Deckに対してプロファイルを複数登録して、「プロファイルを切り替え」アクションで1→2→3→4→1と、順送りで切り替えして、物理ボタンが15個であってもボタン数を超える機能を呼び出せるようにしてありました。

この仕組みはあらためて説明されると理解できるのですが、一目見て理解できるというものでもありません。自分も書籍を書くために仔細に調査を行うまで分かりませんでした。このあたりの「説明不足感」を解消するために「ページ切り替え」「ページインジケータ」も用意したのでしょうか。

物理ボタン数を超える機能を呼び出すための「プロファイルを切り替え」アクションであったり、「フォルダ」アクションであったり、「ページ切り替え」アクションであったり。同じ働きを行う機能を、見せ方を変えて複数実装してあるというのは、それだけ「問題点」だと(販売・営業的に、)みなされているためでしょうか。

より多くのアクションをボタン上にホスティングするために、プロファイル切り替えアクションに、ページ切り替えアクション、ページ表示アクション、フォルダ移動アクションなど操作系のアクション配置ボタンが増え、実質的にSD上に配置できるアクションが減ってしまう(6ボタンの最小のSDの場合には切り替え用で半分埋まる?)わけで、購入時によりボタン数の多いSDモデルへの誘導を行いたいのか、実ボタン以上のアクションをホスティングできることを訴求したいのか……それは自分にはわかりませんが、力を入れている場所であることは確かです。

最終的にはフェイスプレート部分に透明窓を追加して、プロファイル切り替えやページ切り替え、フォルダ切り替えなどの追加表示をSDの画面上で行うといったあたりに「落とし所」がありそうです。

Posted in news | Tagged 10.14savvy 10.15savvy 11.0savvy 12.0savvy Stream Deck | Leave a comment

macOS 12beta10が登場

Posted on 10月 14, 2021 by Takaaki Naganoya

AppleScriptの実行速低下は観測されていませんが、日本語環境でNSDataDetectorでテキストから電話番号を抽出できないバグは治っていません。

2021/10/19にApple Eventがオンライン開催されることが発表され、どうやらMacBook Pro 16インチにApple Silicon搭載モデルが出てきそうだ、と見られています。果たしてどうなりますやら。

Script Editorを背面に回した瞬間にクラッシュする傾向が見られます。Script Editorがやたらと不安定で、何もしていない瞬間にクラッシュするようになりました(Beta 9では発生せず)。システム環境設定に登録してあったプリンタのエントリが消去されるとか、いろいろ不思議が現象が多発。なんか、いきなりこれまでに見られなかった不具合が急に増えてきて「残念な完成度」に>macOS 12

Posted in news | Tagged 12.0savvy | Leave a comment

macOS 12 Frameworkの再編の影響がAppleScriptにも

Posted on 10月 14, 2021 by Takaaki Naganoya

Cocoa Scripting Course本のVol.4「System Hardware & Software Information」の執筆のために基礎調査を行なっていた段階で気づいていたのですが、macOS 10.15あたりからFrameworkの再編が行われていて、AというFrameworkの下位Frameworkとして存在していたBというFrameworkが、macOS 12あたりで独立したりと位置付けがいろいろ変わっています。

具体例を出すと、みんな大好きPDF操作用のPDFKit。これまでPDFKitはQuartzフレームワークの下位フレームワーク(Umbrella Framework)として存在していました。それが独立したため、AppleScriptでも、

use framework "Quartz"

などと書いていたものを、

use framework "PDFKit"

などと書き換える必要が出てきました。

なかなかこのあたりの問題が顕在化しないのは、実行環境側でPDFKitをincludeしていると、AppleScriptもそのご利益にあやかってuse frameworkが目的のものを指していなくても、実行できてしまっているためです。

ところが、別のランタイム環境(Script Menuとか)に持って行くと、そちらではPDFKitをincludeしていなかったりする場合に、「PDFDocumentなんて知らないよ? allocできないよ?」という話になってしまいます。とくに、Script Menuはエラーの出力先もない「寡黙な実行環境」なので、エラー発生源がよく分からないんですね。

そして、Script Menuから呼び出すScriptにいろいろエラートラップを仕掛けて発生しているエラーを調査し、この問題が発生していることが判明したわけです。

もしかしたら、AppleScript ver. 2.8でバージョン番号をあらためる必要があったのは、内部的な要因(Apple Silicon Macへの最適化)もさることながら、こうしたOS内のさまざまな変更が大きいため、それを区切る必要がある(外部的な要因)と判断されたためなのかもしれません。

Posted in news | Tagged 12.0savvy | Leave a comment

AppleScript Version 2.8?

Posted on 10月 9, 2021 by Takaaki Naganoya

macOS 10.13以降、ながらくAppleScript Version 2.7の時代が続いておりました。

正直なところ、macOS 10.15でScripting Additionsを廃止したあたりとかでバージョン番号を変えておかないとまずくないか? と思っておりました。サードパーティのScripting Additionを使えなくした、というのは世界観の大きな分岐点といってよいでしょう。

AppleScriptの処理系そのものには手を加えていませんよ、互換性に問題が出たりはしませんよ、というメッセージをこめて意固地にバージョン番号を変えてこなかったのかと思っていました。


それが、macOS 12beta9でAppleScriptのバージョンを「system info」コマンドで確認していたところ(Cocoa Scripting Course続刊作成のため)、2.8という数字が表示されていることに気づきました。

{AppleScript version:"2.8", AppleScript Studio version:"1.5.3", system version:"12.0", short user name:"me", long user name:"XXXXXXXXXX", user ID:504, user locale:"ja_JP", home directory:alias "Macintosh HD:Users:me:", boot volume:"Macintosh HD:", computer name:"M1 mini", host name:"m1mini.local", IPv4 address:"192.168.0.xx", primary Ethernet address:"99:99:99:99:xx:99", CPU type:"ARM64E", CPU speed:missing value, physical memory:16384}

上記の実行例はM1 Mac miniの実行結果ですが、Intel Mac上でも同様のAppleScript Version 2.8という結果を返します。

Apple Silicon Macの「真の能力(ちから)」を発揮するバージョンとしての2.8なのか、それともiOSを含めたショートカット的な世界観を含んだ2.8なのか、テーマ設定がどこにあるのかはわかりませんが、ここで1つの区切りをつけたいんだろうなという「意図」は感じます。

AppleScript Version 2.7の期間のmacOSときたら、史上最低最悪の事故物件であるmacOS 10.13、大失敗を容易に2度繰り返してしまったmacOS 10.15、トラブルが絶えずβ版という印象がぬぐえなかったmacOS 11など、macOS 10.14以外は(それ自体も末期になるまで使う気がしなかった)あまり思いだしたくないOSバージョンばかりで、これらとの訣別という意味において「2.8」の数字を冠する(臭いものにはフタをしたい)という意図であれば一定の理解は可能です。

バージョン2.8になったからといって、64bit化されたCocoa Finderに対するフィルタ参照の実行速度が上がったりはしていません。Finderによるファイル操作は、「現在選択中のファイルの取得」「最前面にオープンされているWindowのターゲット取得」ぐらいにとどめておいたほうがいい(遅いので)という傾向が変わることはありません(Cocoa系の機能を呼び出すと100〜1,000倍ぐらい高速)。

これら以外に、何か意味が込められているのかはインサイダーではないため不明ですが、とにかくVersion 2.8というバージョン番号が振られたことについては認識しておく必要があることでしょう。

macOS 10.13の大失敗が、キリスト教国における不吉な数字としての「13」に起因するものであるとしたら、macOS 12の次の「macOS 13」は不吉な存在の集合体であり総決算でもあるわけで、ぜひとも開発プロジェクトの瓦解の真相究明と公表が求められるところです。

Posted in news | Tagged 12.0savvy | Leave a comment

macOS 12 beta9が登場

Posted on 10月 7, 2021 by Takaaki Naganoya

macOS 12 beta9が出てきています。もう、リリース間近というより大した問題がなければbeta 8でリリースしていたのでしょう。

AppleScript系では、Cocoa Scriptingの処理速度の低下は観測されていません。Beta 5以降はほぼ誤差の範囲内の変化しかありません。これはいいことです。

あいかわらず、日本語環境でNSDataDetectorで自然言語テキストからの電話番号の抽出に失敗します。これは、少し不幸なことですが、修正されることを期待したいところです。

Posted in Bug news | Tagged 12.0savvy | Leave a comment

僕らの15年戦争、発売

Posted on 10月 6, 2021 by Takaaki Naganoya

アーケードゲーム「戦場の絆」の15年の歴史をまとめたアーカイブ本「僕らの15年戦争」を発売します。PDF 232ページ、3,000円。iOS版アプリつきです(別途、App StoreからのClaris FileMaker Go(無料)のダウンロードが必要です)。

→ 販売ページ

この本を作るために、さまざまなFileMaker Go版のオマケとか単独販売の本などを作って実験と実績作りを重ねてきました。Piyomaru Softwareの総力を結集して作成した本です。

ほぼ「AppleScript」の「A」の字も出てこない本ですが、あらゆるページでAppleScriptによるワークフローの自動化テクノロジーが投入されています。

# でないと、実質1人で2か月では作れない分量です

指定フォルダ以下のPages、MarkDown、Word、PDFなどのファイルをファイル名順にソートしてまとまった1つのPDFに出力するAppleScriptに、ページのツメをつけかえるAppleScript、FileMaker Proのデータベースを処理するAppleScriptに、コピーした画像をモザイク処理するAppleScript、そして公式Webサイトをクローリングしてデータ収集するAppleScript……と、逆にAppleScriptで処理していないページが1ページもないほどです。

Posted in Books news | Leave a comment

iWorks Apps v11.2が登場

Posted on 9月 30, 2021 by Takaaki Naganoya

Apple純正のiWorks App(Keynote、Pages、Numbers)の新バージョンv11.2がリリースされました。

バージョン番号が「11.1」から「11.2」に変わっただけですが、内部的にも…各アプリケーションともアイコン自体が変更になり、大きな節目のバージョンであることが伺われます。

iOS、iPadOSが新製品とともに9月にアップデートし、iWorkアプリケーションがアップデートした後にmacOSのアップデートが行われるわけで、実にリリース間近であることを感じさせます。Windows 11の発表日がどの程度注目を浴びているかはわかりませんが、10月5日より前に発表することは…ないのではないかと(ノーアイデアです)。

これらのアプリケーションのAppleScript用語辞書については、「get」コマンドが追加されたことを確認していますが、このコマンドがないと実現できないことが不明(普通は省略されるコマンド)なので、何か後で追加するための「布石」と見るのが正しい見方でしょう。

Keynote v11.2の変更点:
・スライド上のライブビデオ
・複数発表者スライドショー
・レーダーグラフ(レーダーチャートのこと)

Pages v11.2の変更点:
・ブックの公開の改善
・素早くテキストを翻訳
・レーダーグラフ(レーダーチャートのこと)

Numbers v11.2の変更点:
・強力なピボットテーブル
・レーダーグラフ(レーダーチャートのこと)
・フィルタの改善

そして、AppleScript用語辞書に「レーダーグラフ」の作成機能は反映されていないため、まだAppleScriptから追加することはできません。通例だと、マイナーアップデート2回後ぐらいに反映されるのではないでしょうか?

Pages v11.2でトンでもない変更が加わっていることが判明しました。なんと、selectionを取得できなくなっています。

これは、Pagesの数少ない長所だったのですが、selectionを取得できないととても困ります、、、、、

一応、フィードバックしておきましたが、直るかどうかは不明です。Pagesの唯一の美点であった、selectionを返せ!!!

Keynote v11.2でも、selectionが使えなくなっていました(スライド単位の選択も無効に)。

Posted in news | Tagged 10.15savvy 11.0savvy 12.0savvy Keynote Numbers Pages | Leave a comment

macOS 12 beta8が登場

Posted on 9月 30, 2021 by Takaaki Naganoya

macOS 12 beta7からほどなく、beta8が出てきました。どうやら、このbetaか次あたりでリリースしたい様子が伺われます(推測)。

レポートずみのバグは修正されていませんが(確認された事実)、Release版で駆け込み修正が行われるか、Release後に後付け修正するつもりなのでしょう(希望的観測)。

macOS 10.13のときにRelease版が壊滅した(客観的事実)のは駆け込み修正の整合性がとれていなかったためと見る(推測、憶測)筋もあり、それに懲りて「GM」宣言をやめました(客観的事実)し、駆け込み修正を行わないように方針を転換したように見えます(観測結果からの意見)。

現状のmacOS 12beta8のままリリースされれば、自分が見ている範囲ではそれほど悪くない出来でしょう(個人の感想)。

→ Beta8でIntel Macで外部ディスプレイに表示できないというバグが発生したもよう。Intel Mac miniで動作確認していますが、こうした構成ではなくノートなど本体にディスプレイを搭載しているモデルの話でしょうか

Posted in news | Tagged 12.0savvy | Leave a comment

Post navigation

  • Older posts
  • Newer posts

電子書籍(PDF)をオンラインストアで販売中!

Google Search

Popular posts

  • 開発機としてM2 Mac miniが来たのでガチレビュー
  • macOS 15, Sequoia
  • Pages本執筆中に、2つの書類モード切り替えに気がついた
  • Numbersで選択範囲のセルの前後の空白を削除
  • メキシカンハットの描画
  • Pixelmator Pro v3.6.4でAppleScriptからの操作時の挙動に違和感が
  • AppleScriptによる並列処理
  • Safariで「プロファイル」機能を使うとAppleScriptの処理に影響
  • macOS 15でも変化したText to Speech環境
  • AppleScript入門③AppleScriptを使った「自動化」とは?
  • デフォルトインストールされたフォント名を取得するAppleScript
  • macOS 15 リモートApple Eventsにバグ?
  • 【続報】macOS 15.5で特定ファイル名パターンのfileをaliasにcastすると100%クラッシュするバグ
  • Script Debuggerの開発と販売が2025年に終了
  • AppleScript入門① AppleScriptってなんだろう?
  • macOS 14で変更になったOSバージョン取得APIの返り値
  • NSObjectのクラス名を取得 v2.1
  • macOS 15:スクリプトエディタのAppleScript用語辞書を確認できない
  • 有害ではなくなっていたSpaces
  • Xcode上のAppleScriptObjCのプログラムから、Xcodeのログ欄へのメッセージ出力を実行

Tags

10.11savvy (1101) 10.12savvy (1242) 10.13savvy (1391) 10.14savvy (587) 10.15savvy (438) 11.0savvy (283) 12.0savvy (212) 13.0savvy (194) 14.0savvy (147) 15.0savvy (135) CotEditor (66) Finder (51) iTunes (19) Keynote (119) NSAlert (61) NSArray (51) NSBitmapImageRep (20) NSBundle (20) NSButton (34) NSColor (53) NSDictionary (28) NSFileManager (23) NSFont (21) NSImage (41) NSJSONSerialization (21) NSMutableArray (63) NSMutableDictionary (22) NSPredicate (36) NSRunningApplication (56) NSScreen (30) NSScrollView (22) NSString (119) NSURL (98) NSURLRequest (23) NSUTF8StringEncoding (30) NSView (33) NSWorkspace (20) Numbers (76) Pages (55) Safari (44) Script Editor (27) WKUserContentController (21) WKUserScript (20) WKWebView (23) WKWebViewConfiguration (22)

カテゴリー

  • 2D Bin Packing
  • 3D
  • AirDrop
  • AirPlay
  • Animation
  • AppleScript Application on Xcode
  • Beginner
  • Benchmark
  • beta
  • Bluetooth
  • Books
  • boolean
  • bounds
  • Bug
  • Calendar
  • call by reference
  • check sum
  • Clipboard
  • Cocoa-AppleScript Applet
  • Code Sign
  • Color
  • Custom Class
  • date
  • dialog
  • diff
  • drive
  • Droplet
  • exif
  • file
  • File path
  • filter
  • folder
  • Font
  • Font
  • GAME
  • geolocation
  • GUI
  • GUI Scripting
  • Hex
  • History
  • How To
  • iCloud
  • Icon
  • Image
  • Input Method
  • Internet
  • iOS App
  • JavaScript
  • JSON
  • JXA
  • Keychain
  • Keychain
  • Language
  • Library
  • list
  • Locale
  • Localize
  • Machine Learning
  • Map
  • Markdown
  • Menu
  • Metadata
  • MIDI
  • MIME
  • Natural Language Processing
  • Network
  • news
  • Noification
  • Notarization
  • Number
  • Object control
  • OCR
  • OSA
  • parallel processing
  • PDF
  • Peripheral
  • process
  • PRODUCTS
  • QR Code
  • Raw AppleEvent Code
  • Record
  • rectangle
  • recursive call
  • regexp
  • Release
  • Remote Control
  • Require Control-Command-R to run
  • REST API
  • Review
  • RTF
  • Sandbox
  • Screen Saver
  • Script Libraries
  • sdef
  • search
  • Security
  • selection
  • shell script
  • Shortcuts Workflow
  • Sort
  • Sound
  • Spellchecker
  • Spotlight
  • SVG
  • System
  • Tag
  • Telephony
  • Text
  • Text to Speech
  • timezone
  • Tools
  • Update
  • URL
  • UTI
  • Web Contents Control
  • WiFi
  • XML
  • XML-RPC
  • イベント(Event)
  • 未分類

アーカイブ

  • 2025年6月
  • 2025年5月
  • 2025年4月
  • 2025年3月
  • 2025年2月
  • 2025年1月
  • 2024年12月
  • 2024年11月
  • 2024年10月
  • 2024年9月
  • 2024年8月
  • 2024年7月
  • 2024年6月
  • 2024年5月
  • 2024年4月
  • 2024年3月
  • 2024年2月
  • 2024年1月
  • 2023年12月
  • 2023年11月
  • 2023年10月
  • 2023年9月
  • 2023年8月
  • 2023年7月
  • 2023年6月
  • 2023年5月
  • 2023年4月
  • 2023年3月
  • 2023年2月
  • 2023年1月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年10月
  • 2021年9月
  • 2021年8月
  • 2021年7月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年2月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年7月
  • 2020年6月
  • 2020年5月
  • 2020年4月
  • 2020年3月
  • 2020年2月
  • 2020年1月
  • 2019年12月
  • 2019年11月
  • 2019年10月
  • 2019年9月
  • 2019年8月
  • 2019年7月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年11月
  • 2018年10月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年6月
  • 2018年5月
  • 2018年4月
  • 2018年3月
  • 2018年2月

https://piyomarusoft.booth.pm/items/301502

メタ情報

  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org

Forum Posts

  • 人気のトピック
  • 返信がないトピック

メタ情報

  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org
Proudly powered by WordPress
Theme: Flint by Star Verte LLC