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

新発売:AppleScript基礎テクニック集(25)Script分割と統合

Posted on 10月 12, 2022 by Takaaki Naganoya

Piyomaru Software Booksの61冊目。基礎テクニック集25巻目の「Script分割と統合」を発売しました。本文32ページとなっています。7月ぐらいから書いていたので、割とこのシリーズの電子書籍では試行錯誤の期間が必要だったものです。ほぼ同時に3冊出ていますが、長期間書いて、途中で行き詰まって放り投げて、後から着手したら割とすぐに仕上がった….という感じでしょうか。

→ 販売ページ

何気ないAppleScriptを書いているだけでは直面しない問題なのですが、書いているスクリプトが「巨大」になると、いろいろ問題が出てきます。

それを避けるためには、Scriptを小分けにすること=分割することが必要です。さらによいことに、小分けにしたScriptは再利用が簡単になります。

そうして、さまざまな大きさのScriptを書いていると、途中である程度の機能の塊を取り出して動作検証する必要が出てきます。いわゆる「分解修理」(オーバーホール)という作業です。

部品単体で動作検証するのではなく、ハンドルとかエンジンとかトランスミッションといった、ある程度の機能の塊になっているものを、塊のまま取り出して、単独で動作確認できるようにしておく必要があります。

かように、Scriptの分割や結合は、割とAppleScriptの開発に欠かせない作業ノウハウなのです。

目次

■AppleScriptの分割単位と分割方法

AppleScriptの分割
AppleScriptの分割手段
Ⓐハンドラ、サブルーチン
ⒷScript Object❶
ⒷScript Object❷
ⒸAppleScriptライブラリ(物理分割)
ⒹScriptファイル分割(物理分割)

■AppleScriptの論理/物理分割の目的

AppleScriptは分割しないとリスクが高まる
目的①生産効率の向上
目的②記述/動作時の安定性の向上
目的③問題発生時に分解して動作検証しやすく
目的④異なるバージョンのアプリをサポート
分割したスクリプトは再利用性が高まる

■オーバーホール(分解修理)を前提とした、単体検証可能なAppleScriptのモジュール構成例

分解修理はよく発生します
ファイルを取り出して単独チェック
実戦レベルのScriptを例に、分解修理への備えを紹介
参考資料:書籍のデータ構造
1つの書類を処理(PDF出力→連結)するライブラリ

Posted in Books news PRODUCTS | Leave a comment

新発売:AppleScript実践的テクニック集(1)GUI Scripting

Posted on 10月 10, 2022 by Takaaki Naganoya

Piyomaru Software Booksの60冊目。GUIアプリケーションを強引に動かす「GUI Scripting」について動作原理から気をつけるべき点、実戦レベルのScriptで注意している点やサンプルなどをまとめた「AppleScript実践的テクニック集(1)GUI Scripting」を発売しました。本文283ページとなっています。

→ 販売ページ

「AppleScript実践的テクニック集」とは、従来の「基礎テクニック集」の枠組みでは収まりきらないテーマを扱う新シリーズです。基礎テクニック集は32ページ前後のコンパクトな構成にするために、いろいろ省略した部分もありましたが、この枠組みに入り切らないテーマを別枠でご紹介することにしたものです。

ページ数の上限をとくに設けず、徹底的に情報を入れる設計です。それでいて、「基礎テクニック集」ゆずりの図や表を多用した構成はそのままです。

使い所さえ間違えなければ強力な武器になるGUI Scriptingについて、動作原理からノウハウ、注意すべきポイントや実戦レベルのScriptで気をつけていること、さまざまな「ありがちな処理」のサンプルなどを紹介する1冊です。

■GUI Scripting (UI Element Scripting)とは?

AS用語辞書にすべての機能は掲載されていません①
AS用語辞書にすべての機能は掲載されていません②
AppleScript非対応機能を呼ぶGUI Scripting
GUI Scriptingとは?
GUI ScriptingはSystem Eventsごしに操作
操作対象のアプリケーション①
操作対象のアプリケーション②

■AppleScript非対応機能を操作する

KeynoteでASから利用できない機能を呼ぶ
GUIアプリケーションの挙動確認が欠かせません
メニュー項目操作の実例
実行結果のリストアップ①
実行結果のリストアップ②

■GUI Scriptingの実行を許可する

デフォルト状態だとGUI Scriptingは無効
AppleScript実行アプリケーションを登録
設定するとGUI Scriptingが有効に
スクリプトメニューも登録必須
資料:macOS上のAppleScript実行環境①
資料:macOS上のAppleScript実行環境②

■GUI部品への参照を求める方法

メニュー項目:メニューを頂点としたツリー
ウィンドウ上のオブジェクト:ウィンドウが基準
簡単なGUI部品の求め方

■GUI Scriptingでやりたい特徴的な操作

GUI Scriptingの有効チェック
属性値の取得(properties)
属性値の取得(AX-attributes)
GUI部品のクリック
指定座標のクリック
参考資料:GUI Scriptingの座標系
ポップアップメニューの項目選択
キー入力操作
項目選択
コンテクストメニューの表示
スクロール操作
ファイル保存/書き出し
自分で発生させたモーダルなダイアログのクリック
ドラッグ&ドロップ操作
日本語IMの文字入力モード取得/設定

■マウスカーソルの強制移動&強制クリック

マウスカーソルを移動させる必要性
マウスカーソルの強制移動とクリック

■実戦レベルのAppleScriptにおけるGUI Scripting解説

指定フォルダ以下のPagesなどをPDF出力して連結
実際のメインScript部分
generatePDFLibの当該箇所
本プログラムが環境の影響を受けた点
参考資料:デスクトップの表示/非表示切り替え

■Accessibility Inspectorの使い方

Xcodeに入っているGUI部品探索ツール
Accessibility Inspectorの画面構成①
Accessibility Inspectorの画面構成②
プロセス一覧から対象を選択してInspection
指定プロセスのGUI部品の追跡中の画面表示
GUI部品の追跡ポーズ中の画面表示

■OSやアプリケーションのアップデートに備える

OSアップデートごとにGUI構成は変わる
GUI Scripting処理部分だけをサブルーチンに分離
GUI Scripting処理部分をライブラリに分離
OSアップデートの影響を受けにくい構造に

■GUI Scriptingの信頼性は?

GUI Scriptingの信頼性は?
一般的な信頼性の計測方法
経験に基づく傾向と対策
GUI Scriptingで直面した問題とその解決策
指定した処理の終了前に次の処理が行われる
同じ名前のプロセスが存在していると名称衝突①
同じ名前のプロセスが存在していると名称衝突②

■GUI Scriptingサンプル集

指定のアプリケーションの全メニュータイトルを取得
選択中のテキストを取得
選択中のテキストを書き換え
Safariの最前面のウィンドウへの参照を得る
GUI部品への参照から所属するアプリケーション名を取得
Dockに登録されているアイコンの情報を取得
Keynoteで選択中のテキストを縦書きに
CotEditorで最前面のウィンドウを縦書きに

■GUI Scripting資料集

click【クリック】コマンド
key code【キーコード】コマンド
keystroke【キーストローク】コマンド
perform【パフォーム】コマンド
select【セレクト】コマンド
application【アプリケーション】クラス
action【アクション】クラス
application process【アプリケーションプロセス】クラス
attribute【アトリビュート】クラス
browser【ブラウザ】クラス
busy indicator【ビジーインディケータ】クラス
button【ボタン】クラス
checkbox【チェックボックス】クラス
color well【カラーウェル】クラス
column【カラム】クラス
combo box【コンボボックス】クラス
desk accessory process【デスクアクセサリプロセス】クラス
drawer【ドロワー】クラス
group【グループ】クラス
grow area【グローエリア】クラス
image【イメージ】クラス
incrementor【インクリメンタ】クラス
list【リスト】クラス
menu【メニュー】クラス
menu bar【メニューバー】クラス
menu bar item【メニューバーアイテム】クラス
menu button 【メニューボタン】クラス
menu item 【メニューアイテム】クラス
outline 【アウトライン】クラス
pop over 【ポップオーバー】クラス
pop up button 【ポップアップボタン】クラス
process 【プロセス】クラス
progress indicator 【プログレスインジケータ】クラス
radio button 【ラジオボタン】クラス
radio group【ラジオグループ】クラス
relevance indicator【レレベンスインジケータ】クラス
row【ロー】クラス
scroll area【スクロールエリア】クラス
scroll bar 【スクロールバー】クラス
sheet 【シート】クラス
slider【スライダ】クラス
splitter【スプリッタ】クラス
splitter group【スプリッタグループ】クラス
static text【スタティックテキスト】クラス
tab group【タブグループ】クラス
table【テーブル】クラス
text area【テキストエリア】クラス
text field【テキストフィールド】クラス
toolbar【ツールバー】クラス
UI element【ユーアイエレメント】クラス
value indicator【バリューインディケータ】クラス
window【ウインドウ】クラス

■AppleScript資料集

macOSバージョンとAppleScriptの動向
macOSとAppleScriptの要素技術史
各macOSごとのAppleScript解説
macOS内AppleScript補助ツールの歴史
System EventsのAppleScript用語辞書変更点
AppleScript 各ランタイム環境情報
AppleScript予約語一覧
AppleScriptのエラーコード
あとがき
奥付

Posted in Books GUI Scripting news PRODUCTS | Tagged 12.0savvy CotEditor Keynote System Events TextEdit | Leave a comment

新発売:iWork Scripting Book with AppleScript

Posted on 9月 30, 2022 by Takaaki Naganoya

Piyomaru Software Booksの59冊目。Keynote、Pages、Numbersの3つのアプリケーションのScriptingについて、共通する部分に着目して3つとも解説するScripting本、「iWork Scripting Book with AppleScript」を発売しました。本文239ページ、資料編198ページの合計437ページの大ボリウムです。

→ 販売ページ

目次

スクリプトエディタを起動しよう
スクリプトエディタを起動しよう!
スクリプトエディタのヘルプ
色設定を変えてみよう!
スクリプトを入力してみよう
スクリプトを保存しよう
スクリプトを実行しよう(1/3)
スクリプトを実行しよう(2/3)
スクリプトを実行しよう(3/3)
セキュリティとプライバシー
セキュリティとプライバシー>プライバシー
iWork appsを起動しよう
Keynote/Pages/Numbersを指定
Keynote/Pages/Numbersを起動
Keynote/Pages/Numbersを終了
Mail.appのAppleScript用語辞書の調べ方
メニュー項目や画面強制操作の調べ方
各iWork appsの詳細仕様について
iWork appsの情報を取得しよう
アプリケーションの名前を取得
アプリケーションの情報を一括取得
アプリケーションのプロパティ項目と内容
新規書類の作成
新規書類の作成
テーマ/テンプレート名の取得
テーマ/テンプレートを指定しつつ新規書類作成①
テーマ/テンプレートを指定しつつ新規書類作成②
参考資料:テーマ/テンプレート名
Keynote:SD/HD、他のサイズの書類の指定
新規スライド/ページ/シートの作成
各iWork appsにおける新規ページの作成
Keynote:レイアウト名の取得とスライド追加
Pages:ページ追加
Numbers:シート追加
書類情報の取得
書類からの各種情報取得
書類名(name)はFinder設定と連動
書類のパスワード保護状態を取得
書類保存
書類を保存(保存ずみ書類に上書き保存)
書類を新規保存①
書類を新規保存(A.)
書類を新規保存(B.)
書類を新規保存(C.)
コラム「iWork appsが使用するパス表現」
書類へのパスワード
設定と解除
iWork書類へのパスワード設定
パスワード設定されたiWork書類のオープン
書類へのパスワード設定と解除
通常書類とパスワード保護された書類の比較

■中級

書類上の座標系
書類上の座標系
Pages書類の座標系
現在表示中のページ
書類上の現在表示中のページ番号を取得
選択中のアイテムの取得
selectionで取得できる選択中のオブジェクト
Numbersで取得できる表オブジェクト情報
デフォルトタイトル
アイテムへの文字設定(Keynote)
デフォルトタイトルアイテムのオブジェクト
デフォルトタイトルアイテムのテキストを取得
デフォルトタイトルアイテムにテキストを設定
Pagesの本文作成
書類タイプ別のPages本文の作り方
Pagesの文章の本文(body text)の操作
Pagesの文章の本文(body text)の色指定
Pagesの文章の本文(body text)のフォント指定
Pagesの文章の本文(body text)の単語にアクセス
Pagesの文章のページにアクセス(追加)
Pagesの文章のページにアクセス(削除①)
Pagesの文章のページにアクセス(削除②)
Pagesの文章のセクションにアクセス
Pagesの文章のセクションにアクセス
選択中の表からのデータ取得/設定
選択範囲(selection range)へのアクセス
選択範囲のセルの取得
選択範囲のセルのデータの取得
指定セルのデータの取得①
指定セルのデータの取得②
指定範囲のセルのデータの取得
カラム名の数値からの変換
指定範囲のセルのデータを2次元配列で取得①
指定範囲のセルのデータを2次元配列で取得②
指定範囲のセルのデータを2次元配列で取得③
指定セルにデータを設定①
指定セルにデータを設定②
指定範囲のセルへの配列データの設定
表にクリップボード経由で大量の2次元配列データを設定
テキストボックスの作成
テキストボックスのオブジェクト
テキストボックスの作成
表の作成
表の作成
表の作成+データ設定
表のソート、
セルの結合と分離
表の昇順(A→Z)ソート
表の降順(Z→A)ソート
表セルの結合
結合セルの解除
画像(image)の挿入
指定画像の挿入
Keynote:イメージスライドの作成
shape, lineの作成
shape/lineの分類
shapeの識別
shapeの作成
放射状にラインを引く(Keynote)
放射状にラインを引く(Pages)
放射状にラインを引く(Numbers)
audio clip, movieの作成
音声トラックのaudio clipの作成
ムービー(movie)の作成
プレースホルダへのデータさしこみ(Pages)
プレースホルダとは?
Pagesのテキストプレースホルダの作成①
Pagesのテキストプレースホルダの作成②
Pagesのテキストプレースホルダを利用
Pagesのメディアプレースホルダの作成
Keynoteのテキストプレースホルダ
グループへのアクセス
Keynote:グループ内のオブジェクトにアクセス
Pages:グループ内のオブジェクトにアクセス
Numbers:グループ内のオブジェクトにアクセス
Keynote:グループ内のオブジェクトの親にアクセス
シート処理(Numbers)
Numbers:シートの新規追加
Numbers:シートの削除、表示切り替え
Numbers:シートの名称変更
Numbers:現在表示中のシートのIDを返す
Numbers:シートの名称による検索
スライドの追加と順次ループ(Keynote)
Keynote:スライドの追加
Keynote:スライドの順次ループアクセス
Keynote:スライドの順次追加
スライド間の表示切り替えエフェクト指定(Keynote)
Keynote:スライド切り替え効果一覧
Keynote:スライド切り替えを設定
発表者ノート(Keynote)を記入
Keynote:発表者ノートとは?
Keynote:発表者ノートの操作
表への計算式の代入
iWork appsで共通して利用できる関数
表のセルに計算式を代入
表のセルの計算結果(値)を取得
表のセルの計算式を取得
グラフ作成(Keynote)
Keynoteで扱えるグラフの一覧
Keynote:2D横/縦棒グラフ
Keynote:3D横/縦棒グラフ
Keynote:2D/3D面グラフ
Keynote:2D/3D円グラフ
Keynote:2D散布図グラフ
Keynote:2D積み重ね縦/横棒グラフ
Keynote:3D積み重ね縦/横棒グラフ
Keynote:2D/3D階層グラフ
Keynote:2D/3D折れ線グラフ
データの書き出し(エクスポート)
各iWork appsが書き出し可能なフォーマット
書き出し用ファイルパスの組み立て
PDF書き出し
Microsoft Office書類として書き出し
Keynote:HTML書き出し
Keynote:QuickTimeムービー書き出し
Keynote:イメージ書き出し
Keynote:Keynote 09形式書き出し
Pages:EPUB形式書き出し
Pages:テキスト書き出し
Pages:Pages 09形式書き出し
Pages:リッチテキストフォーマットで書き出し
Numbers:Numbers 09形式で書き出し
Numbers:CSV形式で書き出し
印刷
iWork appsから印刷出力
AppleScriptによるプリントアウト
Keynote:印刷オプションの指定
Pages:印刷オプションの指定
Numbers:印刷オプションの指定

■上級

書式付きテキストへのアクセス
Keynoteでobject textの書式属性設定
Pagesでobject textの書式属性設定
Numbersでobject textの書式属性設定
Keynoteでobject textの文字色、フォント置換
Pagesでobject textの文字色、フォント置換
Numbersでobject textの文字色、フォント置換
書式付きテキストの幅に応じたtext item自体のリサイズ
Text itemの枠の幅を文字内容でリサイズ①
Text itemの枠の幅を文字内容でリサイズ②
Text itemの枠の幅を文字内容でリサイズ①
Text itemの枠の幅を文字内容でリサイズ②
Text itemの枠の幅を文字内容でリサイズ①
Text itemの枠の幅を文字内容でリサイズ②
text item内のテキストの使用言語の自動推定
Keynote:書類中のtext itemの使用言語を推定①
Keynote:書類中のtext itemの使用言語を推定②
Pages:書類中のtext itemの使用言語を推定①
Pages:書類中のtext itemの使用言語を推定②
Numbers:書類中のtext itemの使用言語を推定①
Numbers:書類中のtext itemの使用言語を推定②
指定行列ヘッダによる表セルへのアクセス
Keynote:指定行列ヘッダによる表セルへのアクセス
Keynote:指定行列ヘッダによる表セルへのアクセス
Pages:指定行列ヘッダによる表セルへのアクセス
Pages:指定行列ヘッダによる表セルへのアクセス
Numbers:指定行列ヘッダによる表セルへのアクセス
Numbers:指定行列ヘッダによる表セルへのアクセス
汎用オブジェクト(iWork item)によるアクセス
汎用クラスiWork itemで取得できるオブジェクト
Keynote:iWork itemでアクセス
Pages:iWork itemでアクセス
Numbers:iWork itemでアクセス
オブジェクトの重なり検出(Keynote)
Keynote:テキストとshapeの重なり検出①
Keynote:テキストとshapeの重なり検出②
書類内部データへのアクセス
iWork app書類の構造
通常書類とパスワード保護された書類の比較
Keynote固有のプレゼン系操作について
Keynote:プレゼン再生コントロール
Keynote書類のプレゼン関連情報
Keynote:プレゼン再生関連の属性値
Keynote:transitionサンプル書類作成&再生

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

バカスタム App選手権 入賞!

Posted on 9月 18, 2022 by Takaaki Naganoya

FM-1グランプリ運営委員会(iC株式会社、合同会社イボルブ、株式会社未来Switch)が今年(2022年)に開催した、FileMaker Proの「笑えるソリューション」のコンテスト「バカスタムApp選手権」において、Piyomaru Softwareが応募した「FM-Clock」が入選を果たしました。

# あくまで入賞であって、優勝とか準優勝とかいうどえらいものではありません

「笑える作品」という、割ととらえどころのないテーマではありましたが、36ページにもわたる企画・仕様書を作成し、綿密な設計をおこなったうえで応募したことが入選につながったのではないでしょうか。協力してくれたすべての人々に感謝を!

Posted in news | Tagged FileMaker Pro | Leave a comment

macOS 13 Beta 7 Font Book.appのAppleScript用語辞書が削除される

Posted on 9月 11, 2022 by Takaaki Naganoya

macOS 13の標準添付アプリケーションのAppleScript用語辞書をチェックする段階になって、Font Book.appのAppleScript用語辞書が削除されていることが判明しました。

Font Book.appは割と実用性が高く、気合いの入ったAppleScript用語辞書を搭載していましたが、どうもアプリケーション自体をすべてCatalystで書き換えたようで、その際にAppleScript用語辞書が削除されたようです。人によってはとても困るかもしれません(こういうことばっかりやるので、Catalyst製アプリケーションに負の感情を抱いてしまう)。

また、予想通り「システム環境設定」から「システム設定」に名前が変わったSystem Setting.appについては、一応System Preferences.app時代のAppleScript用語辞書がついているものの、paneの情報を取得したりidを指定してpaneを表示させたり、anchorの情報取得/表示は行えていません。

通例でいえば、macOS 13上ではこれらの機能は実装されず、macOS 14上で実装されるパターンですが、いつまでそんないい加減なことをやっているのでしょうか(Mac App Storeに出すときに、自社製アプリケーションも審査を通してリジェクトされるべき)。一応、レポートして文句は言っておきましたが、複数のチームにまたがる作業になるので、改修要望が通るかどうかはひたすらに不明です。

その他変更点は、Music.appにexportコマンドが追加され、Shortcuts.appのIconのApple Events Codeが変更になっている程度でしょうか。

Posted in beta news | Leave a comment

macOS 13 beta 7 スクリプトメニューの復活

Posted on 9月 10, 2022 by Takaaki Naganoya

macOS 13 Beta 7が出てきました。いまのところ、そんなに本気で使い込んでいるわけではありませんが、ド派手なバグには遭遇していません(気づいていないだけかも?)。

# 最近のmacOSのリリースは、Beta段階では大人しくしておいて、リリース後に大規模な改修を入れて完全体になるのが最終アップデートの頃なので…もう、2年おきのアップデートにしないと無理なのでは?

Beta 6まで起動すらしなかったスクリプトメニューがbeta 7で復活しています。起動させると、アイコン右側に何か余計な文字が出ているような気もしなくもありませんが、それでも復旧したことは喜ばしいことです。

あとは、全般的に…これまでアプリケーションのPreferencesは「環境設定」というメニュー項目になっていましたが、Venturaからは「設定」に変わるようです。ローカライズのテーブルが変更になったということなんでしょうが、気をつけたい箇所です。

Posted in beta news | Leave a comment

新発売:AppleScriptからSiriを呼び出そう!

Posted on 8月 31, 2022 by Takaaki Naganoya

電子書籍の新刊を発売しました。「AppleScriptからSiriを呼び出そう!」です。PDF 42ページ。サンプルScriptおよびSiriを呼び出すAppleScriptライブラリ「AgentCallerLib」を添付。

# 内容および添付の「AgentCallerLib」をv1.1にアップデートしました。
# 「AgentCallerLib」をmacOS 13対応のv1.2にアップデートしました
# macOS 14, 15での「AgentCallerLib」v1.2の動作を確認しました。
# macOS 15.4betaでは、Siri=Apple Inteligenceを呼び出せています

→ 販売ページ

本書は、iOS生まれの音声エージェント「Siri」をAppleScriptから呼び出すために必要な情報をまとめたものです。

SiriはiOSからmacOSに移植され、MacBookやiMac、Mac miniやMac Proなどでも利用できるようになりました。

職場や学校などで音声で呼び出すことははばかられますが、キーボードから呼び出す分には、周りに人がいても利用しやすくなりました。

今回、本書をまとめるにあたってAppleScriptからSiriを呼び出すためのライブラリ「AgentCallLib」を整備し、めんどうな設定についても画面キャプチャをまじえて、わかりやすくまとめてみました。

本書では、AppleScriptにくわしくない人でも最低限の操作ができるように、AppleScript書類の保存や実行について、基礎的な情報を重点的におさえています。

AppleScriptはApple Silicon Macでも、Intel Macでも動きますので、どちらの環境でも本書の内容はご利用いただけます。「AppleScriptにとりあえずさわってみる」テーマとしても、Siriのコントロールはわかりやすくてよいものでしょう。

目次

■Siriを呼び出すAgentCallLibのインストール

AppleScriptからSiriを呼び出す意義
最初に、システム環境設定の2つの設定を
AppleScriptからSiriを呼び出すための部品
AgentCallLibインストール先フォルダ
どのプログラムからSiriを呼び出すか?
資料:利用可能なAppleScript実行環境
資料:利用できないAppleScript実行環境
利用可能な開発環境
利用可能なアプレット,ドロップレット
利用可能なメニュー形式Scriptランチャー
その他の利用可能なScriptランチャー
利用可能なアプリケーション内蔵Scriptメニュー

■Siriを呼び出すAppleScriptの書き方

セキュリティ&プライバシー設定
Siriを呼び出すAppleScriptの書き方①
Siriを呼び出すAppleScriptの書き方②
Siriを呼び出すAppleScriptの構文確認
Siriを呼び出すAppleScriptの実行
Siriを呼び出すAppleScriptの保存
AppleScriptに指定するSiriコマンドのサンプル

■他の言語のSiriをAppleScriptから呼び出そう

他の言語のSiriも呼び出せます
Siriの対応言語一覧
英語(English)のSiriを呼び出す
フランス語(French)のSiriを呼び出す
ドイツ語(Germany)のSiriを呼び出す
スペイン語(Spanish)のSiriを呼び出す
中国語(北京語)のSiriを呼び出す

■Siriで呼び出せるコマンドや機能について

Siriが受け付けるコマンドの方向性
HomeKit対応デバイスを操作

Posted in Books news PRODUCTS | Tagged 12.0savvy | 3 Comments

macOS 13beta6依然としてスクリプトメニューが動かない

Posted on 8月 27, 2022 by Takaaki Naganoya

外付けのSSDを用意してmacOS 13βをインストールして試しています。beta5あたりから「ソフトウェアアップデート」を実行しても最新版にアップデートできない、という問題に直面して首をひねっていたのですが…..これが、アップデートを呼び出す画面上のささいな操作方法の違いにより、EULAが表示される順路を通ってくればアップデートでき、EULAが表示されない順路だとアップデートされないということに気づきました。

つまり、「EULAが表示されない順路」を毎回行っていたら、えんえんとアップデート作業を行ってもアップデートされないという作りになっているようで……これが「βあるある」なのか、Appleがまともに検証していない証左なのかはわからないですが、「落とし穴」を開けたままリリースしている状態だと認識しています。

落とし穴を回避して、Beta 6にはアップデートできました。スクリーンショットの掲載はできないので、詳細に画面操作を掲載することはできませんが、EULAが表示されなかったらアップデートは(ダウンロードやアップデートしているように見える画面が出ても)失敗します。

実際に試してみると、依然としてmacOS 13上ではスクリプトメニューが動作しないことに気づきます。廃止とかいった状態ではなくて、明確に存在するのに動作しないという状況は、以前のβ版から変わりません。

スクリプトメニューは、macOSの中では割と技術的な側面ではなくセキュリティ面で問題になりやすい部品です。それなりの実行権限を持ったソフトウェアであり、悪用されると困ります。ふだん使っているメニュー表示のまま、別の悪意あるScriptを組み込まれたら、その強力な実行権限でいろいろ操作できてしまいます。

ただ、デフォルトではオフになっており、スクリプトエディタの環境設定からオンにする必要があるという、何もよく知らないユーザーからは「見えない場所」にあるので、問題にならないという程度の存在です。

そして、ショートカット.appのメニューという「機能的に似た同じようなもの」が出てきているため、これとの取捨選択といった話もApple社内では出ていることでしょう。

ただし、ショートカット.appは一見「いろいろできそうなオモチャ」ではあるものの、実際に使ってみると「まともに動かないクズ」「検索キーワードに画像とイメージと写真とか類語語バラバラに使いたがるクズ」なので、実際にはショートカットのほうが消えるべき存在です。実用性がさっぱりです。下手をすると、Automatorの置き換えにすらならないかもしれません。

そうした実用性皆無のオモチャと実際に使える道具のどちらを重視するのか、といった話になると、現在のAppleの体制ではどうも「実用性皆無のオモチャ」を選択しそうで困ります。

スクリプトメニュー自体、AppleScriptで作れないことはないので、いっそ「AppleScriptで書き直したスクリプトメニュー」というものを用意してもよいのかもしれません。あるいは、FastScripts 3のような同様のソフトウェアの利用を考えるべきなのかも。

macOS 10.13というリリース時に崩壊した悪夢のようなアップデート、そしてmacOS 13という新OSのバージョン番号。macOS 13には、「余計なことをしないで地道でまっとうなアップデートを出してほしい」と思っています。


▲個人的にスコアをつけている各macOSのβ版のクオリティ。macOS 13は「議論やすり合わせの欠如を感じる」「macOS 10.15以来の嫌な予感を感じる」「必要な仕事をしていない割に余計なことをやっている感じ。総じて、仕事をしている人間の人数が少ない雰囲気」な出来。現状では10点。β版の間は大人しくしていて、Release後に極端なやらかしが頻発する傾向にある昨今のmacOS

Posted in beta news | Tagged 13.0savvy | Leave a comment

2002年に作った人工知能インタフェース・シリーズの最新作を近日リリース

Posted on 8月 26, 2022 by Takaaki Naganoya

2002年に発表した人工知能インタフェース「Newt On」シリーズは、Newtonのアシスト機能をMac OS X上にAppleScriptで実装したものでした。当時はまだAppleScript Studioも存在していませんでしたが、UI部分ならびに日本語形態素解析部分をMicrosoft Word v.Xに行わせることで実現していました。

# 海外の人間に、実際に動かしているところのムービーを見せても信用されないのはなぜ?

翌年には、日本語音声認識によるコマンドセンター「符令韻投句」(ぷれいんとーく)を開発。いまのスマートスピーカーのような操作系を実現していました。これも、AppleScriptで開発。

これらのプログラムの市販化をめざしていろいろプロジェクトをすすめていましたが、当時の開発環境の不安定さとノウハウの蓄積がなかったことから、途中で頓挫してしまった経緯があります。

その後、AppleからSiriというかたちで、これらの自然言語インタフェース(音声/文字)を発展させたものがOSに添付されていきました。直接の技術的なつながりはありませんが、概念的なつながりはあるわけです。

そして、そうしたノウハウやさまざまな(Siriに対する)フィードバックを集約したプログラムとして「Tanzaku」(たんざく)を発表。Siriに見られる「繰り返し同じように音声で操作するのがかったるい」「繰り返し何回も実行するのが苦痛」「ファイルを扱う操作との相性の悪さ」といった問題点を根本的に解決するようになっています。

ただし、Tanzakuも何かの分野でユーザーからのフィードバックを反映させつつ「熟成」「機能追加」していく必要があるわけですが、なかなかそのような「場」を設けることができてきませんでした。

そこで、「書籍」(電子書籍)というかたちで、使い方や概念をわかりやすく説明しつつ、段階的に熟成させていくことにしてみました。「ファイル名をつけかえると動きがかわる! ラベルプログラミング」という電子書籍です。

ファイル名を変更することで、さまざまな動作を変更させられる「Tanzaku」(たんざく)を、楽しみながら使っていただける環境をご用意します。

ぜひとも、ご声援、ご購入のほどよろしくお願いいたします!

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

macOS 12.5.1、11.6.8でFinderのselectionでスクリーンショット画像をopenできない問題

Posted on 8月 22, 2022 by Takaaki Naganoya

β版も出ないで唐突にリリースされたmacOS 12.5.1および11.6.8において、Finderのselectionでスクリーンショット画像を取得し、Finderにopenコマンドを送ってLaunch Serviceまかせでオープンすると、「……を表示するためのアクセス権がないため、開けませんでした。」というメッセージが表示され、画像がオープンされないという問題が報告されています。

tell application "Finder"
	open selection
end tell

たしかに、Finderまかせでアプリケーション無指定でファイルオープンさせるのは「楽」なのですが、もしもこれが「スクリーンショット画像を装った実行ファイル」への対処だったりすると、バグとも言い切れないような印象を受けます(何の問題なのかが報告しづらいです)。

いろいろ確認してみると、スクリーンショットであることを示すメタデータ、

kMDItemIsScreenCapture                 = 1

が付いている場合に、このアクセス権がないというダイアログが表示されるようです(他の因子もあるかも???)。

me@myMac ~ % mdls /Users/me/Pictures/as\ runtimes.jpeg 
_kMDItemDisplayNameWithExtensions      = "as runtimes.jpeg"
kMDItemBitsPerSample                   = 24
kMDItemColorSpace                      = "RGB"
kMDItemComment                         = "Screenshot"
kMDItemContentCreationDate             = 2022-08-21 01:51:41 +0000
kMDItemContentCreationDate_Ranking     = 2022-08-21 00:00:00 +0000
kMDItemContentModificationDate         = 2022-08-21 01:51:41 +0000
kMDItemContentModificationDate_Ranking = 2022-08-21 00:00:00 +0000
kMDItemContentType                     = "public.jpeg"
kMDItemContentTypeTree                 = (
    "public.jpeg",
    "public.image",
    "public.data",
    "public.item",
    "public.content"
)
kMDItemDateAdded                       = 2022-08-21 01:51:41 +0000
kMDItemDateAdded_Ranking               = 2022-08-21 00:00:00 +0000
kMDItemDisplayName                     = "as runtimes.jpeg"
kMDItemDocumentIdentifier              = 0
kMDItemEXIFVersion                     = "2.2.1"
kMDItemFSContentChangeDate             = 2022-08-21 01:51:41 +0000
kMDItemFSCreationDate                  = 2022-08-21 01:51:41 +0000
kMDItemFSCreatorCode                   = ""
kMDItemFSFinderFlags                   = 0
kMDItemFSHasCustomIcon                 = (null)
kMDItemFSInvisible                     = 0
kMDItemFSIsExtensionHidden             = 0
kMDItemFSIsStationery                  = (null)
kMDItemFSLabel                         = 0
kMDItemFSName                          = "as runtimes.jpeg"
kMDItemFSNodeCount                     = (null)
kMDItemFSOwnerGroupID                  = 20
kMDItemFSOwnerUserID                   = 504
kMDItemFSSize                          = 259097
kMDItemFSTypeCode                      = ""
kMDItemHasAlphaChannel                 = 0
kMDItemImageIsScreenshot               = 1
kMDItemInterestingDate_Ranking         = 2022-08-22 00:00:00 +0000
kMDItemIsScreenCapture                 = 1
kMDItemKind                            = "JPEGイメージ"
kMDItemLastUsedDate                    = 2022-08-22 05:31:24 +0000
kMDItemLastUsedDate_Ranking            = 2022-08-22 00:00:00 +0000
kMDItemLogicalSize                     = 259097
kMDItemOrientation                     = 1
kMDItemPhysicalSize                    = 262144
kMDItemPixelCount                      = 1003255
kMDItemPixelHeight                     = 1073
kMDItemPixelWidth                      = 935
kMDItemProfileName                     = "Cinema HD Display"
kMDItemResolutionHeightDPI             = 72
kMDItemResolutionWidthDPI              = 72
kMDItemScreenCaptureGlobalRect         = (
    15,
    25,
    935,
    1073
)
kMDItemScreenCaptureType               = "window"
kMDItemUseCount                        = 6
kMDItemUsedDates                       = (
    "2022-08-20 15:00:00 +0000",
    "2022-08-21 15:00:00 +0000"
)

ただ、これがFinderの問題なのかといえば、Finder上でファイルをダブルクリックしてデフォルトのアプリケーションでオープンさせるという動作はできるので、Finderのバグと言いにくい。

AppleScriptの問題なのかといえば、個別にオープンするアプリケーションを指定すれば問題は起こらないので、問題として報告しにくい。

Launch Serviceの問題なのかといえば、Launch Serviceそのものの問題とも言えない。

Apple内の複数チームにまたがる「複合要因」による障害というのは、Appleのチーム間の調整がとぼしいことにより、問題が顕在化したまま治らない傾向があります。ユーザー側もこの問題を「バグ」として報告しにくいものがあります。

Finderにアプリケーション・ファイルをオープンさせるとアプリケーションを起動できてしまうという、Sandboxの「穴」をふさいだのではないか、という見立てもあるわけですが、正直よくわかりません。

少なくとも、これらのバージョンのOSではこういう動作を行うよ、という情報をユーザー間で共有するぐらいしか「できること」がなさそうに見えます。

個人的には、こういう処理はしないので「そうなの??」ぐらいの印象でしたが、ちょっとしたAppleScriptをコピペで書いて、さまざまなツールから起動するだけという種類のScripterはよく利用する記述のようなので、不満を感じる内容のようです。

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

新発売:AppleScript基礎テクニック集(24)フォント指定

Posted on 8月 7, 2022 by Takaaki Naganoya

電子書籍の新刊を発売しました。「AppleScript基礎テクニック集」の第24巻、「フォント指定」です。PDF 34ページ。サンプルScriptのZipアーカイブを添付。

→ 販売ページ

macOS上でフォントは「PostScript Name」、「正式名称(Display Name)」で管理されており、どちらの指定も受け付けるアプリケーションもあれば、PostScript Nameだけを要求するアプリケーションもあるなどさまざまです。CocoaのAPIではPostScript Nameが利用されています。

また、フォント名を「ファミリー」と「スタイル」に分けて指定できるようにもなっており、個別に指定できるアプリケーションもありますが(Adobe InDesignなど)、これはごく一部です。

結局、アプリケーションごとに対応はまちまちですが、指定できることにはかわりありません。こうしたフォント指定について、フォント管理アプリケーションFont Bookを通じてさまざまなフォントの属性情報を取得する方法についてご紹介します。

目次

■AppleScriptにおけるフォント情報管理

フォント情報は「Font Book.app」で調べる
フォントを階層構造とコレクションで管理
これが、フォントの識別情報
AppleScriptに対応しているFont Book.app
Font Book上の選択中のフォントを取得
標準搭載、メニューからScriptを実行する機能

■Keynote/Pages/Numbersでフォント情報を指定

Keynote書類上のテキストアイテムのフォント指定
iWork apps全般では正式名称でもPS名でも可
Pagesでも正式名称/PostScript名でOK
Numbersでも正式名称/PostScript名でOK

■書式付きテキストをAppleScriptから生成

TextEditには特殊なオブジェクトで書式アクセス

■Font Book.app関連AppleScriptサンプル

FontBook.app自体のプロパティを取得
フォントライブラリ情報を取得
フォントコレクション情報を取得
フォントコンテナ情報を取得
選択中のアイテムを取得
フォントにアクセス①
フォントにアクセス②
フォントを削除

Posted in Books Font news PRODUCTS | Tagged 10.15savvy 11.0savvy 12.0savvy | Leave a comment

新発売:AppleScript基礎テクニック集(23)サブルーチン、ハンドラ

Posted on 8月 5, 2022 by Takaaki Naganoya

電子書籍の新刊を発売しました。「AppleScript基礎テクニック集」の第23巻、「スクリプトメニューの使い方」です。PDF 35ページ。サンプルScriptのZipアーカイブを添付。

→ 販売ページ

AppleScriptのサブルーチンを構成する「ハンドラ」の記述方法は、普段使わないものも含めると、いろいろな書き方があります。

サブルーチンは、一度書いた有用な処理は何回でも使い回すことを目的に、使い回しやすいように清書したものです。記述量を減らすことができ、一度書いた内容は二度目からは書く必要がなく、他人が書いたサブルーチンを利用することで、生産性を大幅に上げられます。

サブルーチンの有効性を理解できたら、初級者から中級者にステップアップしたと言ってよいでしょう。

ふだんなにげなく使っていて、存在そのものを知っているのに、実際に調べてみると割と内容がてんこもりという、まさに「基礎」と呼ぶに値する内容です。

個人的には、サブルーチンのハンドラ記述は、あまりバリエーション豊富な記法を採用すべきではないと思っていて、本Blogに掲載のリストのように、極力単純な記法を採用しています。凝ったハンドラ記述をしたところで、生産性なんてこれっぽっちも向上しません。保証します。

ただ、海外で癖の強いScriptを書く連中がいて、とくにキーボードショートカットやファンクションキーからAppleScriptを呼び出すようなツールのコミュニティにいる連中の書くScriptは「なまり」がすごくて、読みにくくて頭痛がします。そうした際に、サブルーチン呼び出し記述部分を「解読」するためのスキルは、欠かせないものとなることでしょう。

目次

■AppleScriptのサブルーチン、ハンドラとは?

どの言語にもあるサブルーチン、ハンドラ
ハンドラ内の変数の取り扱い
tellブロック内で記述するハンドラ呼び出し①
tellブロック内で記述するハンドラ呼び出し②
イベントハンドラ①
イベントハンドラ②

■基礎的なハンドラ記述 on subHandler(param)

基礎的なハンドラ記述
ハンドラの情報を取得①
ハンドラの情報を取得②

■分割パラメータつきハンドラ記述 on subHandler:param

分割パラメータつきハンドラ記述

■パターン化位置パラメータつきハンドラ記述on hello(a, b, {length:l, bounds:{x, y, w, h}, name:n})

パターン化位置パラメータつきハンドラ記述

■ラベルつきハンドラ記述

パラメータの受け渡し方で2つに大別される
ラベル付きパラメータ

■予約語をオーバーライドしてハンドラ宣言

コマンド予約語をオーバーライド
オーバーライド可能な標準搭載の予約語
オーバーライドの有効範囲①
オーバーライドの有効範囲②
オプションすべてに対応するとけっこう大変

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

新発売:AppleScript基礎テクニック集(22)スクリプトメニューの使い方

Posted on 7月 21, 2022 by Takaaki Naganoya

電子書籍の新刊を発売しました。「AppleScript基礎テクニック集」の第22巻、「スクリプトメニューの使い方」です。PDF 33ページ。サンプルScriptのZipアーカイブを添付。

→ 販売ページ

macOSには「ジャンルごとに区分け」「アプリケーションごとに内容を切り替え」「フォルダ構造がそのまま階層メニューとして表示される」スクリプトメニューという、実行専用の機能を標準搭載しています。

決められたフォルダ以下の内容がそのままメニューに表示され、フォルダに入れたAppleScriptのファイル名やフォルダ名がそのままメニュー項目として表示され、選択したAppleScriptを実行できるようになっています。

ただ、漫然とAppleScriptをスクリプトメニューに入れただけでは、時間がたつと処理内容を忘れてしまいがちです。そこで、スクリプトメニューからAppleScriptを選択する際に装飾キー(Control)を押しておくとAppleScript書類の「説明」欄の内容をダイアログ表示するライブラリを本書執筆時に新規作成。これで、「何を入れたか忘れがち」なスクリプトメニュー生活が快適になります。

また、このスクリプトメニュー用のテンプレートを添付し、スクリプトエディタの「テンプレートから新規作成」でヘルプ表示対応のAppleScript書類を作成できます。

便利なスクリプトメニューを今日からはじめてみましょう! PDF 33ページ、サンプルScript Zipアーカイブ添付

目次

■階層メニュー型AppleScriptランチャー「スクリプトメニュー」

標準搭載、メニューからScriptを実行する機能
タイプ別、さまざまなAppleScript実行環境
OS標準搭載AppleScript実行環境の比較
スクリプトメニューの有効化
3段階で管理されるスクリプト・フォルダ
アプリケーション専用のスクリプトフォルダを作成
スクリプト実行中のインジケータ
スクリプト以外のものも入れられます
装飾キーを押しながらScriptを実行すると…

■スクリプトメニューを構成

スクリプトメニューを構成すること自体は簡単
階層フォルダを利用してファイル名を記述
パラメータを書き換えたスクリプトを複数用意

■スクリプトメニューならではの利用ノウハウ

間違ったオブジェクトの選択に備える
フローティングパレットを利用したほうがよい例も
ヘルプ機能がないことへの備え
AppleScriptでヘルプ表示を実装
テンプレートからヘルプつきスクリプトを新規作成
スクリプトメニューQ&A
機能強化版のシェアウェア「FastScripts 3」

Posted in Books news PRODUCTS | Tagged 10.14savvy 10.15savvy 11.0savvy 12.0savvy | Leave a comment

display text view Script Library v2.2をリリース

Posted on 7月 21, 2022 by Takaaki Naganoya

display text view Script Libraryをバージョンアップしました(v2.2)。いま書いているAppleScript基礎テクニック集の「スクリプトメニューの使い方」で本ライブラリの機能を利用しているために、サンプルScriptを記述したときにいろいろ問題を見つけました。

–> Download displayTextView (To ~/Library/Script Libraries/)

主に、日本語の一部の文字の連なりが組文字として表示されてしまうという問題で、

のように「ます」が「〼」、株式会社が1文字で表示されるという状況でした。

v2.2ではこれを修正したため、

のようになっています。

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

display text view Script Library v2.1をリリース

Posted on 7月 20, 2022 by Takaaki Naganoya

display text view Script Libraryを早速バージョンアップしました(v2.1)。

–> Download v2.1 displayTextView.scptd

ダイアログのボタンに「Cancel」と「OK」がついていましたが、「Cancelボタンはいらないよね」という話になって削除しました。

ヘルプボタンっぽいものがついていて、テストで実装したままになっていましたが、これを本ライブラリを使用しているメッセージを出すように文面を変更しました。

ThemeがLight Modeのときのテキストビューの背景色を黒から灰色に変更しました。

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

display text view Script Library v2.0をリリース

Posted on 7月 19, 2022 by Takaaki Naganoya

display text view Script Library v2.0をリリースしました。同ライブラリは、OSが提供するNSTextViewを用いて、大きな文字を、指定フォント、指定サイズ、指定色で表示/入力することが目的です。

→ display text view Script Library v2.0をダウンロード

本ライブラリのAppleScript用語辞書には、本Blog同様にURLリンクつきのサンプルAppleScriptを掲載してあります。

本ライブラリは、CotEditor PowerPackや、現在執筆中の「AppleScript基礎テクニック集(22)スクリプトメニューの使い方」にて、スクリプトメニューに収録したAppleScriptの使い方を説明するのに、AppleScriptの「説明」欄に書いておいた内容を、Controlキーなどを押しながらメニュー選択することで大きな文字で表示する、という用途のために改修したものです。

アラートダイアログをスクリプトメニューなどのGUIなしAppleScript実行環境から表示させたときに、ダイアログ自体が最前面に表示されない問題への対策を行ってあります。

また、以前のバージョンからの機能追加で、テキスト表示色の指定が行えるようになっています。

Posted in Library news PRODUCTS | Tagged 10.15savvy 11.0savvy 12.0savvy | Leave a comment

macOS 12.5(21G72)がリリースされた!

Posted on 7月 19, 2022 by Takaaki Naganoya

Release候補だった21G69から若干ビルド番号が上がって、21G72がmacOS 12.5としてリリースされました。

macOS 12.x系は、正式リリース後から大幅な変更が続けられており、「それは、リリース前にやっておくことでは?」「リリースの意味とは?」「実質、リリース後の1年で開発が完結しているのでは?」といった疑問が山のように出てくるOSになっています。

それでも、破滅的なバグやユーザー環境を無視しまくった改変などを各βの段階でとどめておけたのは、よかったことでしょう。魔のAppleの手から世界を救っても、自分にはほとんど利益がないところがなんとも。

Appleのソフトウェアも、App Storeのレビューチームの手で一度レビューを加えるべきなんではないでしょうか。β版に致命的なバグが多すぎです。

Posted in news | Tagged 12.0savvy | Leave a comment

macOS 13 beta 3

Posted on 7月 18, 2022 by Takaaki Naganoya

macOS 12の各Betaの出来が著しくよくないので、macOS 13betaの出来映えに不安を覚える昨今です。macOS 12は、β版のときには非常に出来が良かったのに、リリース後にどんどん不具合が増えるという謎のリリースが行われていました。もう2年に一度ぐらいのアップデートぐらいにしないと無理だと思います。

外付けのSSDにmacOS 12.4→macOS 13 beta 3にアップデートの順でアップデートしてインストールしてみました。

慣れの問題なのか、iOSに寄せた画面構成に変更して、デザインがどんどんダメになっていっているような印象があります。「コレジャナイ感」が全体に漂っています。やる気のなさでWindowsと似ている印象です。

Blogへの画面キャプチャの掲載は控える必要はありますが、バージョン情報やその他のファイルについてはとくに問題ないものと考え、調査した概略を記しておきます。

真剣に使い込んだわけではなく、あくまでも触ったぐらいの試用です。

macOS 13上のAppleScriptバージョンは2.8

これは、macOS 12の時にもかなり後のβになってからバージョン番号が変わったので、なんともいえません。現状はそうだというだけです。

スクリプトメニューが起動しない?

スクリプトエディタの環境設定から、スクリプトメニューを有効にしてもメニューバー上に表示されません。プログラム的には同じ場所に存在しており、単独で起動ができない状況。ただし、これが「廃止された」という話ではなく、現状では起動できていない(macOS 13のセキュリティモデルと合致していないため起動できない???)状況です(多分)。廃止、という状態ではないと思います。macOS 13 beta4でもまだ起動できていません。

システム環境設定が「システム設定」に

System PreferenceがSystem Settingsに名称変更になりました。User InterfaceがmacOS(NEXTSTEP)風からiOS風に変更になっており、Preferences Paneの区分が変わってしまっています。AppleScriptから各パネルを表示できるようになっており、このあたりでmacOS 13上のパネルIDなり名称でオープンできることと、旧来のIDや名称で表示できるという状態にまで持っていくのか? あるいは、いつものApple風のお仕事でいえば「macOS 13上では何もしなかった」ということもありえます。

スクリプトエディタのコンテクストメニューのバグ修正

スクリプトエディタの編集支援のために用意されている「Script Assistant」の仕組みにおいて、macOS 12では「絵文字入りのフォルダ、絵文字入りのファイル」が入っていると、項目が重複して表示されるバグが発生していました。macOS 13beta 4ではこれが発生していないことを確認しています。

Posted in news | Tagged 13.0savvy | Leave a comment

新発売:AppleScript基礎テクニック集(21)Cocoa Scripting

Posted on 7月 15, 2022 by Takaaki Naganoya

電子書籍の新刊を発売しました。「AppleScript基礎テクニック集」の第21巻、「Cocoa Scripting」です。PDF 42ページ。サンプルScriptのZipアーカイブを添付。

→ 販売ページ

Cocoa Scriptingについては、既刊の「Cocoa Scripting Course」があり、同書の冒頭の入門部分を再編集したものが本書です。

macOS 10.10以降、すべてのAppleScriptの実行環境において、Cocoa呼び出しの機能がサポートされました。いわゆる、Cocoa-Bridgeされた言語になったのです。

Cocoaのすべての機能を呼び出せるわけではないですし、主にmacOSのFoundationとAppKitの範囲内ですが、一部の機能が呼び出せるだけでも機能は膨大で、かつ、これまでに無理やり間に合わせで組んでいたような内容が、本物を呼べるようになり、AppleScriptの世界に質と量と処理速度の面で大きな変化をもたらしました。

Cocoaのオブジェクトに特有の挙動……オブジェクトの生成に専用のメソッドを利用し、属性値を取り出すのにもメソッド呼び出しが必要。複数のオブジェクトが同じことを確認するのに、上位クラスで定義されている照合メソッドを呼び出す必要があるなど、実際に使ってみるとそんなに難しくはないと感じました(量が多くて面倒なだけで)。

目次

■Cocoa Scriptingとは?

Cocoa Scriptingは何のために?
Cocoa Scriptingってどういうもの?
Cocoa Scriptingの実際
Cocoa Scriptingの威力
Cocoa Scriptingのメリット
Cocoa Scriptingに必要なもの
Cocoa Scriptingまとめ
Cocoa Scripting9つの誓い

■Cocoa Scriptingに適したmacOSの選定

Cocoa Scripting環境の進化の歴史
Cocoa Scriptingに適したmacOS
参考資料:AppleScriptランタイム環境情報
SIP解除の是非

■Cocoa Scriptingのプログラミングスタイル

開発・実行環境のちがい
処理手順の違い
メインスレッド実行が必須な機能への対処
delegation, notification
実行環境の違いによる書き換え
AppleScriptでCocoaオブジェクトを呼び出すと…
サブルーチン記述
Objective-C風ハンドラにおけるme/my記述
クラス拡張(継承)
高速なCocoa Scriptを書くためには
アプリケーションとの相互乗り入れに注意
暗黙の型変換
一部のAppleScript内蔵コマンドで書き換えが必要
計算の優先順位を示すカッコを修正
オブジェクトの数え方
Application ScriptingとCocoa Scripting

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

新発売:AppleScript基礎テクニック集(20)コンパイル(構文確認)

Posted on 7月 14, 2022 by Takaaki Naganoya

電子書籍の新刊を発売しました。「AppleScript基礎テクニック集」の第20巻、「コンパイル(構文確認)」です。PDF 32ページ。

→ 販売ページ

スクリプトエディタのウィンドウに、思わせぶりに配置されている「コンパイル」コマンドのボタン。

この「コンパイル」というのは、世間一般的には、プログラム言語を実行コードに変換する作業です。SwiftやObjective-Cなどの言語で「コンパイル」といったら普通は実行コードへの変換です。

しかし、スクリプト言語で、かつインタプリタ(逐次実行)型言語であるAppleScriptにおいて、その意味は少し異なっています。AppleScriptのコンパイルとは、構文確認+中間コードへの変換です。

また、AppleScriptの実行処理系が演算の優先順位の指定を必要とした場合には、どこか適当な(正確ではなくあてずっぽうという意味で)場所にカッコを補います。

コンパイル時の構文チェックは、AppleScriptの最低限のお約束的な文法チェックだけなので、対象のアプリケーションのオブジェクト階層や、コマンドを実行する対象のオブジェクトが正しいか、といった厳密なチェックは行われません。実行して確認する必要があります。コンパイル(構文確認)の挙動は独特で、誰もが知っておくべき内容です。

目次

■コンパイル(構文確認)とは?

AppleScriptのコンパイル(構文確認)とは?
最低限の構文チェック
ライブラリ、Frameworkのチェック
OS(AppleScript)互換性チェック
実行環境チェック
中間コードへの置き換え
構文色分け設定にもとづいて書式適用

■コンパイル(構文確認)で行われる入力内容補完

コンパイル(構文確認)時に大/小文字を書き換え
空白文字,インデント文字の置き換え
if, tell, repeatなどのブロックの入力補完
特殊記号の置き換え
パラメータのboolean表記を置き換え
列挙パターン表記の置き換え ほか

■コンパイル(構文確認)で行われる演算優先順位を示すカッコの補足

演算優先順位を示すカッコを補う①
演算優先順位を示すカッコを補う②

■コンパイル(構文確認)で行われる正しいアプリケーション名への置き換え

実行環境にアプリケーションが存在しない場合
バンドルIDが同じで名称変更になった場合

Posted in Books news | Tagged 10.14savvy 10.15savvy 11.0savvy 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%クラッシュするバグ
  • AppleScript入門① AppleScriptってなんだろう?
  • Script Debuggerの開発と販売が2025年に終了
  • macOS 14で変更になったOSバージョン取得APIの返り値
  • NSObjectのクラス名を取得 v2.1
  • 有害ではなくなっていたSpaces
  • macOS 15:スクリプトエディタのAppleScript用語辞書を確認できない
  • 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