Piymaru Softwareによる電子書籍の84冊目、「ゆっくりAppleScript解説(3)」を発売しました。PDF42ページで構成されています。
第7章:デフォルト色のまま使うのはヤバいんだぜ!
第8章:tellを閉じるのに「end tell」と書くのは無駄無駄無駄無駄無駄ァ! なんだぜ!
第9章:「遅い」という文句は、残念なヤツの自己紹介なんだぜ
Piymaru Softwareによる電子書籍の84冊目、「ゆっくりAppleScript解説(3)」を発売しました。PDF42ページで構成されています。
第7章:デフォルト色のまま使うのはヤバいんだぜ!
第8章:tellを閉じるのに「end tell」と書くのは無駄無駄無駄無駄無駄ァ! なんだぜ!
第9章:「遅い」という文句は、残念なヤツの自己紹介なんだぜ
Piymaru Softwareによる電子書籍の83冊目、「Cocoa Scripting Course #6, PDFKit」を発売しました。PDF560ページ+サンプルScript Zipアーカイブで構成されています。
PDF処理は、Cocoa Scriptingの1つの価値ある到達点です。この処理が行いたいからCocoaの呼び出しについて苦労を重ねてきたと言えます。機械学習やREST API呼び出し、配列からの高速なデータ抽出など、Cocoa Scriptingの「おいしい用途」は星の数ほどありますが、PDF処理は間違いなくその中でもトップランクの攻略目標のうちの1つです。
日常的にPDFを扱っているScripterなら、Cocoa Scriptingによって得られるメリットが膨大なものであることをもれなく間違いなくいかんなく実感できることでしょう。
1章 入門編
2章 実践編
3章 PDFKit編
PDFKitの位置付けと役割
用途別のフレームワークを知ろう
PDFKit内の主要クラス
PDFKit+AppleScriptのつかいどころ
PDFKit+AppleScriptの注意点
PDFKit.frameworkの利用宣言文
(参考資料)PDFの座標系
PDFDocument Basic Samples
PDFPage Basic Samples
PDFOutline Basic Samples
PDFAnnotation Basic Samples
4章 PDF処理 基礎編
PDFの処理の流れ
AppleScript+PDFKitでよく使う基礎的な処理
AppleScript+PDFKitの基礎的な処理手順
AppleScript+PDFKitでよく使う基礎的な処理の手順
PDFからの情報取得
PDFのサイズをPointで取得
PDFから各種情報をNSDictionaryで取得
PDFから各種情報を文字列で取得
PDFページカウント
PDFのページカウント(PDFDocument)
PDFのページカウント(Metadata Lib経由)
PDF本文テキスト抽出
PDFの全ページのテキストを抽出
PDFのテキストをページ単位で抽出
PDFを回転
PDFを回転させて新規保存
PDFを印刷
PDFを印刷
RTFをPDFに変換
RTFをPDFに変換
PDFからのテキスト検索
PDFテキストからの指定キーワード検索
ページ単位でPDF分割
ページ単位でPDF分割
複数PDF結合
choose fileコマンドで選択した複数のPDFを結合
PDF→他形式画像変換
ページ単位でJPEG画像に変換
画像連結してPDF作成
フォルダ内のJPEG画像を新規PDFに連結
指定フォルダ下のすべての画像を新規PDFに連結
フォルダ内のJPEG画像を既存のPDFに連結
Multi Page TIFFからPDFへの変換
Multi Page TIFFからPDFへの変換
アラートダイアログでPDFを表示
アラートダイアログ+WkWebViewでPDFを表示
アラートダイアログ+PDFViewでPDFを表示
5章 PDF処理 上級編
PDFのパスワード、暗号化設定
PDFのアクセス権とパスワード
パスワード設定をチェック
設定されているパーミッションを取得
PDFにパスワードを設定(1/2)
PDFにパスワードを設定(2/2)
PDFのパスワードを解除
PDFの空白ページ検出
PDFから空白ページを削除(1/3)
PDFから空白ページを削除(2/3)
PDFから空白ページを削除(3/3)
PDFフォーム入力
PDFフォームにテキスト入力して別名保存(1/2)
PDFフォームにテキスト入力して別名保存(2/2)
PDFフォームにチェックボックス入力(1/2)
PDFフォームにチェックボックス入力(2/2)
Quartzフィルタ
Quartzフィルタとは?
QuartzFilter出力例一覧
Quartzフィルタの一覧を出力
白黒のQuartzフィルタをかけて出力
ブルートーンのQuartzフィルタをかけて出力
PDFX-3のQuartzフィルタをかけて出力
グレートーンのQuartzフィルタをかけて出力
明度低下のQuartzフィルタをかけて出力
明度上昇のQuartzフィルタをかけて出力
ファイルサイズ縮小のQuartzフィルタをかけて出力
セピアトーンのQuartzフィルタをかけて出力
PDFアノテーションを取得、追加、書き換え、削除
アノテーションについて
アノテーションを取得
サークル・アノテーションを追加
スクウェア・アノテーションを追加
ライン・アノテーションを追加
テキスト・アノテーションを追加
URLリンク・アノテーションを追加(1/2)
URLリンク・アノテーションを追加(2/2)
指定語群にハイライトを追加(1/2)
指定語群にハイライトを追加(2/2)
指定語群にアンダーラインを追加(1/2)
指定語群にアンダーラインを追加(2/2)
指定語群に打ち消し線を追加(1/2)
指定語群に打ち消し線を追加(2/2)
PDFからすべてのアノテーションを削除
PDFのリンク抽出、リンク置換
PDFのリンク先は?
リンクの各種情報を取得(1/2)
リンクの各種情報を取得(2/2)
リンク・アノテーションからURLを抽出
URLリンク・アノテーションを追加(1/2)
URLリンク・アノテーションを追加(2/2)
書類内リンク・アノテーションを追加(1/2)
書類内リンク・アノテーションを追加(2/2)
リンクアノテーションのURLを置換
PDFのOCR処理(OCRテキスト埋め込み)
PDFのOCR処理(1/3)
PDFのOCR処理(2/3)
PDFのOCR処理(3/3)
PDFのしおり(TOC)を取得、追加、削除
TOCの題名と階層が悩ましい(1/2)
TOCの題名と階層が悩ましい(2/2)
指定PDFのTOCを取得してレコード化(1/2)
指定PDFのTOCを取得してレコード化(2/2)
ノンブルだけのフラットなTOCを付加(1/2)
ノンブルだけのフラットなTOCを付加(2/2)
Recordデータから階層TOCを付加(1/3)
Recordデータから階層TOCを付加(2/3)
Recordデータから階層TOCを付加(3/3)
Numbersの表データから階層TOCを付加(1/4)
Numbersの表データから階層TOCを付加(2/4)
Numbersの表データから階層TOCを付加(3/4)
Numbersの表データから階層TOCを付加(4/4)
指定PDFのTOCを削除
添付サンプルScript紹介
サンプルScript集
資料編
macOS 11以降用の常駐ツール、クリップボードに入った書式つきテキストをプレーンテキスト化する「PlainerText」を開発、販売を開始しました(macOS 11以降)。
起動すると常駐し、メニューバー右側のステータスバー・エリアに「P」の絵文字を表示します。クリップボードを0.5秒ごとに監視し、スタイル付きテキストが入っていた(スタイル付きテキストをコピーした)場合にはプレーンテキストに変換して、beep音を鳴らします。
–> Download Trial Version (Work for 10 minutes)
PlainerTextはBOOTHで500円でダウンロード販売しています。
また、動作内容がわからないと安心できないという人向けに、ソースコードおよび詳細なソースコード解説書を別途販売中です。
ご注意:PlainerTextでAppleScriptの継続記号(¬)をプレーンテキスト変換されてしまうと、継続記号として認識されなくなります。ご注意ください(誤ってAppleにバグ報告してしまいましたが、自分のアプリのせいでした)。
Piyomaru Software Booksの65冊目。「誰でも気軽に開発体験 プログラム・キット①」を発売しました。PDF 90ページとなっています。
→ 販売ページ
プログラム・キットは、プラモデルのように誰もが挫折せずに、部品を組み立てて動かせるという「体験」を提供する本です。
組み上がったプログラムキットは、カスタマイズすることで、より新たな動きをするプログラムに進化させられます。
「プログラム・キット」シリーズの第1巻である本書では、人気のテキストエディタ「CotEditor」のウインドウを画面上でぐるぐる回転させるプログラムを扱っています。macOS 12以降用。
完成したプログラム・キットをいろいろなツールから起動できることをご紹介
完成したプログラム・キットをmacOS上のさまざまなプログラムから実行する方法についてご紹介
Piyomaru Software Booksの64冊目。「AppleScript基礎テクニック集(27)dateオブジェクト」を発売しました。PDF 37ページとなっています。
→ 販売ページ
dateオブジェクトは、数字や文字列ではなく「オブジェクト」であるために、かなり独特な挙動を行います。多くは「仕様」なのですが、これを知らないと怪奇現象のオンパレードという話になってしまいます。
一見すると「ナニコレ?」という挙動のかずかずも、実際にその理由を確認してみると納得できることばかり。dateオブジェクトに関して、知らないと遭遇するトラブルの数々を、華麗にかわしていきましょう。
dateは、日付時刻を保持するオブジェクト
date objectを手軽に取得して属性値を取得
システム環境設定の影響を受けるdateオブジェクト
システム環境設定の影響を受けるdateオブジェクト
スクリプトエディタ上だと自動修正される
日付文字列の記述形式は「優先する言語」で変化
Data Detectorでテキストから日付情報をピックアップ
言語環境を問わずに動くdate object作成処理
dateオブジェクトに対するパラメータ指定
1881年1月1日よりも過去の日付を扱うには注意が必要
dateの相対計算
指定月の日数を求める
指定日付の和暦の元号を求める
グリニッジ標準時(GMT)との時差を求める
秒以下の時間待ち計測
自然言語テキストからdate objectを抽出
dateオブジェクトを指定の日付文字形式で返す
dateオブジェクトをISO8601形式テキストに
ISO8601を考慮した週カウント
dateオブジェクトをRFC822形式文字列に変換
UTC時刻文字列をdateオブジェクトに変換
epoch timeの処理
Piyomaru Software Booksの63冊目。「AppleScript 7つの宝珠 神より授かりしプログラミングの魔法」第2の宝珠 if文〜条件分岐を発売しました。PDF 37ページとなっています。
→ 販売ページ
ものすごい変化球で作ってみた本の続刊で、他に書いていた巨大なテーマの本で挫折して中断したので、その気分転換に書いてみました。魔導書になぞらえたプログラミング入門書です。
入門書とひとことにいってもいろいろあります。決められたカリキュラムを淡々とこなしていくタイプ、根本からテーマを掘り下げるタイプ。そして本書は後者に該当し、「その技術が存在しなかった時代」というものを想像し、その技術を獲得したことにより魔法(プログラミング)はどう進化したのか、どのようなメリットがあったのかという「進化史」をなぞるような構成です。
誰もが、最初はif文の存在なんて知らなかったわけで、それを覚えて徐々に書けるものが進歩していったわけです。人間でいえば、赤ん坊の頃にハイハイして這って歩いていたのが、つかまり立ちするようになり、そして立って歩けるようになった、と。そうした過程をなぞってみたもので、割と真剣に作っているものです。
神(Computer)との対話を行う人の子の書
失われし魔法の7つの宝珠を求めて
変数と代入文という最初の宝珠
if文〜条件分岐という宝珠
繰り返しループ 体力を削らせない宝珠
配列変数 詠唱呪文の機能を高める宝珠
コメント文 失われた知恵の宝珠
ログ表示 簡単に変数の中身を確認する宝珠
終了 そこで呪文実行を止める宝珠
神の言葉から人の子の言葉への移行
例外事項の指定が効率化を生む
牛飼いを羊飼いに変える変数
魔法が自分で判断を行う条件分岐魔法
大きい、小さいといった関係性を表現
「含まれる」ことを調べられる魔法演算
魔法入門〜条件分岐呪文
条件式
条件文
条件文(魔法言語AppleScriptで記述)
文字列の大小判定&並べ替え=ソート①
文字列の大小判定&並べ替え=ソート②
複数の値をまとめて判定
文字をコード(番号)で指定
ゆうしゃ(=あなた)のステータス
Piyomaru Software Booksの62冊目。基礎テクニック集26巻目の「処理停止」を発売しました。本文32ページとなっています。
→ 販売ページ
AppleScriptによる自動処理中に、途中で止めたいという状況は生まれることでしょう。
そのときになって、はじめて人は気付くのです。「どうやって止めたらいいんだろう?」と。
AppleScriptの処理を止める、途中で中断する……という一見シンプルな要望は、そのScriptがどの実行環境によって実行されているのか? という話がわかっていないと叶えられません。
AppleScriptが実行中に、止めるための操作方法、確実に止めるための仕組みづくりなどを解説します。
AppleScriptを途中で止めるために
AppleScriptの主要実行環境
スクリプトエディタの実行停止操作
Script Debuggerの実行停止
Automatorの実行停止
Shortcutsの実行停止
Visual Studio Codeの実行停止
スクリプトメニューの実行停止
CotEditorのスクリプトメニュー実行停止
TerminalのAppleScript実行停止
アクティビティモニタ上で実行プロセスを強制停止
Command-Option-Escで強制停止
標準的な方法では、停止できることの方が珍しい
対処方法:メインループ中に「何か」を監視して停止
いつでもすぐに確実に停める!
サンプルScript
サンプルスクリプトの書き出し方
サンプルスクリプトの実行画面
Piyomaru Software Booksの61冊目。基礎テクニック集25巻目の「Script分割と統合」を発売しました。本文32ページとなっています。7月ぐらいから書いていたので、割とこのシリーズの電子書籍では試行錯誤の期間が必要だったものです。ほぼ同時に3冊出ていますが、長期間書いて、途中で行き詰まって放り投げて、後から着手したら割とすぐに仕上がった….という感じでしょうか。
→ 販売ページ
何気ないAppleScriptを書いているだけでは直面しない問題なのですが、書いているスクリプトが「巨大」になると、いろいろ問題が出てきます。
それを避けるためには、Scriptを小分けにすること=分割することが必要です。さらによいことに、小分けにしたScriptは再利用が簡単になります。
そうして、さまざまな大きさのScriptを書いていると、途中である程度の機能の塊を取り出して動作検証する必要が出てきます。いわゆる「分解修理」(オーバーホール)という作業です。
部品単体で動作検証するのではなく、ハンドルとかエンジンとかトランスミッションといった、ある程度の機能の塊になっているものを、塊のまま取り出して、単独で動作確認できるようにしておく必要があります。
かように、Scriptの分割や結合は、割とAppleScriptの開発に欠かせない作業ノウハウなのです。
AppleScriptの分割
AppleScriptの分割手段
Ⓐハンドラ、サブルーチン
ⒷScript Object❶
ⒷScript Object❷
ⒸAppleScriptライブラリ(物理分割)
ⒹScriptファイル分割(物理分割)
AppleScriptは分割しないとリスクが高まる
目的①生産効率の向上
目的②記述/動作時の安定性の向上
目的③問題発生時に分解して動作検証しやすく
目的④異なるバージョンのアプリをサポート
分割したスクリプトは再利用性が高まる
分解修理はよく発生します
ファイルを取り出して単独チェック
実戦レベルのScriptを例に、分解修理への備えを紹介
参考資料:書籍のデータ構造
1つの書類を処理(PDF出力→連結)するライブラリ
Piyomaru Software Booksの60冊目。GUIアプリケーションを強引に動かす「GUI Scripting」について動作原理から気をつけるべき点、実戦レベルのScriptで注意している点やサンプルなどをまとめた「AppleScript実践的テクニック集(1)GUI Scripting」を発売しました。本文283ページとなっています。
→ 販売ページ
「AppleScript実践的テクニック集」とは、従来の「基礎テクニック集」の枠組みでは収まりきらないテーマを扱う新シリーズです。基礎テクニック集は32ページ前後のコンパクトな構成にするために、いろいろ省略した部分もありましたが、この枠組みに入り切らないテーマを別枠でご紹介することにしたものです。
ページ数の上限をとくに設けず、徹底的に情報を入れる設計です。それでいて、「基礎テクニック集」ゆずりの図や表を多用した構成はそのままです。
使い所さえ間違えなければ強力な武器になるGUI Scriptingについて、動作原理からノウハウ、注意すべきポイントや実戦レベルのScriptで気をつけていること、さまざまな「ありがちな処理」のサンプルなどを紹介する1冊です。
AS用語辞書にすべての機能は掲載されていません①
AS用語辞書にすべての機能は掲載されていません②
AppleScript非対応機能を呼ぶGUI Scripting
GUI Scriptingとは?
GUI ScriptingはSystem Eventsごしに操作
操作対象のアプリケーション①
操作対象のアプリケーション②
KeynoteでASから利用できない機能を呼ぶ
GUIアプリケーションの挙動確認が欠かせません
メニュー項目操作の実例
実行結果のリストアップ①
実行結果のリストアップ②
デフォルト状態だとGUI Scriptingは無効
AppleScript実行アプリケーションを登録
設定するとGUI Scriptingが有効に
スクリプトメニューも登録必須
資料:macOS上のAppleScript実行環境①
資料:macOS上のAppleScript実行環境②
メニュー項目:メニューを頂点としたツリー
ウィンドウ上のオブジェクト:ウィンドウが基準
簡単なGUI部品の求め方
GUI Scriptingの有効チェック
属性値の取得(properties)
属性値の取得(AX-attributes)
GUI部品のクリック
指定座標のクリック
参考資料:GUI Scriptingの座標系
ポップアップメニューの項目選択
キー入力操作
項目選択
コンテクストメニューの表示
スクロール操作
ファイル保存/書き出し
自分で発生させたモーダルなダイアログのクリック
ドラッグ&ドロップ操作
日本語IMの文字入力モード取得/設定
マウスカーソルを移動させる必要性
マウスカーソルの強制移動とクリック
指定フォルダ以下のPagesなどをPDF出力して連結
実際のメインScript部分
generatePDFLibの当該箇所
本プログラムが環境の影響を受けた点
参考資料:デスクトップの表示/非表示切り替え
Xcodeに入っているGUI部品探索ツール
Accessibility Inspectorの画面構成①
Accessibility Inspectorの画面構成②
プロセス一覧から対象を選択してInspection
指定プロセスのGUI部品の追跡中の画面表示
GUI部品の追跡ポーズ中の画面表示
OSアップデートごとにGUI構成は変わる
GUI Scripting処理部分だけをサブルーチンに分離
GUI Scripting処理部分をライブラリに分離
OSアップデートの影響を受けにくい構造に
GUI Scriptingの信頼性は?
一般的な信頼性の計測方法
経験に基づく傾向と対策
GUI Scriptingで直面した問題とその解決策
指定した処理の終了前に次の処理が行われる
同じ名前のプロセスが存在していると名称衝突①
同じ名前のプロセスが存在していると名称衝突②
指定のアプリケーションの全メニュータイトルを取得
選択中のテキストを取得
選択中のテキストを書き換え
Safariの最前面のウィンドウへの参照を得る
GUI部品への参照から所属するアプリケーション名を取得
Dockに登録されているアイコンの情報を取得
Keynoteで選択中のテキストを縦書きに
CotEditorで最前面のウィンドウを縦書きに
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【ウインドウ】クラス
macOSバージョンとAppleScriptの動向
macOSとAppleScriptの要素技術史
各macOSごとのAppleScript解説
macOS内AppleScript補助ツールの歴史
System EventsのAppleScript用語辞書変更点
AppleScript 各ランタイム環境情報
AppleScript予約語一覧
AppleScriptのエラーコード
あとがき
奥付
電子書籍の新刊を発売しました。「AppleScriptからSiriを呼び出そう!」です。PDF 42ページ。サンプルScriptおよびSiriを呼び出すAppleScriptライブラリ「AgentCallerLib」を添付。
# 内容および添付の「AgentCallerLib」をv1.1にアップデートしました。
# 「AgentCallerLib」をmacOS 13対応のv1.2にアップデートしました
→ 販売ページ
本書は、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のコントロールはわかりやすくてよいものでしょう。
AppleScriptからSiriを呼び出す意義
最初に、システム環境設定の2つの設定を
AppleScriptからSiriを呼び出すための部品
AgentCallLibインストール先フォルダ
どのプログラムからSiriを呼び出すか?
資料:利用可能なAppleScript実行環境
資料:利用できないAppleScript実行環境
利用可能な開発環境
利用可能なアプレット,ドロップレット
利用可能なメニュー形式Scriptランチャー
その他の利用可能なScriptランチャー
利用可能なアプリケーション内蔵Scriptメニュー
セキュリティ&プライバシー設定
Siriを呼び出すAppleScriptの書き方①
Siriを呼び出すAppleScriptの書き方②
Siriを呼び出すAppleScriptの構文確認
Siriを呼び出すAppleScriptの実行
Siriを呼び出すAppleScriptの保存
AppleScriptに指定するSiriコマンドのサンプル
他の言語のSiriも呼び出せます
Siriの対応言語一覧
英語(English)のSiriを呼び出す
フランス語(French)のSiriを呼び出す
ドイツ語(Germany)のSiriを呼び出す
スペイン語(Spanish)のSiriを呼び出す
中国語(北京語)のSiriを呼び出す
Siriが受け付けるコマンドの方向性
HomeKit対応デバイスを操作
2002年に発表した人工知能インタフェース「Newt On」シリーズは、Newtonのアシスト機能をMac OS X上にAppleScriptで実装したものでした。当時はまだAppleScript Studioも存在していませんでしたが、UI部分ならびに日本語形態素解析部分をMicrosoft Word v.Xに行わせることで実現していました。
# 海外の人間に、実際に動かしているところのムービーを見せても信用されないのはなぜ?
翌年には、日本語音声認識によるコマンドセンター「符令韻投句」(ぷれいんとーく)を開発。いまのスマートスピーカーのような操作系を実現していました。これも、AppleScriptで開発。
これらのプログラムの市販化をめざしていろいろプロジェクトをすすめていましたが、当時の開発環境の不安定さとノウハウの蓄積がなかったことから、途中で頓挫してしまった経緯があります。
その後、AppleからSiriというかたちで、これらの自然言語インタフェース(音声/文字)を発展させたものがOSに添付されていきました。直接の技術的なつながりはありませんが、概念的なつながりはあるわけです。
そして、そうしたノウハウやさまざまな(Siriに対する)フィードバックを集約したプログラムとして「Tanzaku」(たんざく)を発表。Siriに見られる「繰り返し同じように音声で操作するのがかったるい」「繰り返し何回も実行するのが苦痛」「ファイルを扱う操作との相性の悪さ」といった問題点を根本的に解決するようになっています。
ただし、Tanzakuも何かの分野でユーザーからのフィードバックを反映させつつ「熟成」「機能追加」していく必要があるわけですが、なかなかそのような「場」を設けることができてきませんでした。
そこで、「書籍」(電子書籍)というかたちで、使い方や概念をわかりやすく説明しつつ、段階的に熟成させていくことにしてみました。「ファイル名をつけかえると動きがかわる! ラベルプログラミング」という電子書籍です。
ファイル名を変更することで、さまざまな動作を変更させられる「Tanzaku」(たんざく)を、楽しみながら使っていただける環境をご用意します。
ぜひとも、ご声援、ご購入のほどよろしくお願いいたします!
電子書籍の新刊を発売しました。「AppleScript基礎テクニック集」の第24巻、「フォント指定」です。PDF 34ページ。サンプルScriptのZipアーカイブを添付。
→ 販売ページ
macOS上でフォントは「PostScript Name」、「正式名称(Display Name)」で管理されており、どちらの指定も受け付けるアプリケーションもあれば、PostScript Nameだけを要求するアプリケーションもあるなどさまざまです。CocoaのAPIではPostScript Nameが利用されています。
また、フォント名を「ファミリー」と「スタイル」に分けて指定できるようにもなっており、個別に指定できるアプリケーションもありますが(Adobe InDesignなど)、これはごく一部です。
結局、アプリケーションごとに対応はまちまちですが、指定できることにはかわりありません。こうしたフォント指定について、フォント管理アプリケーションFont Bookを通じてさまざまなフォントの属性情報を取得する方法についてご紹介します。
フォント情報は「Font Book.app」で調べる
フォントを階層構造とコレクションで管理
これが、フォントの識別情報
AppleScriptに対応しているFont Book.app
Font Book上の選択中のフォントを取得
標準搭載、メニューからScriptを実行する機能
Keynote書類上のテキストアイテムのフォント指定
iWork apps全般では正式名称でもPS名でも可
Pagesでも正式名称/PostScript名でOK
Numbersでも正式名称/PostScript名でOK
TextEditには特殊なオブジェクトで書式アクセス
FontBook.app自体のプロパティを取得
フォントライブラリ情報を取得
フォントコレクション情報を取得
フォントコンテナ情報を取得
選択中のアイテムを取得
フォントにアクセス①
フォントにアクセス②
フォントを削除
電子書籍の新刊を発売しました。「AppleScript基礎テクニック集」の第22巻、「スクリプトメニューの使い方」です。PDF 33ページ。サンプルScriptのZipアーカイブを添付。
→ 販売ページ
macOSには「ジャンルごとに区分け」「アプリケーションごとに内容を切り替え」「フォルダ構造がそのまま階層メニューとして表示される」スクリプトメニューという、実行専用の機能を標準搭載しています。
決められたフォルダ以下の内容がそのままメニューに表示され、フォルダに入れたAppleScriptのファイル名やフォルダ名がそのままメニュー項目として表示され、選択したAppleScriptを実行できるようになっています。
ただ、漫然とAppleScriptをスクリプトメニューに入れただけでは、時間がたつと処理内容を忘れてしまいがちです。そこで、スクリプトメニューからAppleScriptを選択する際に装飾キー(Control)を押しておくとAppleScript書類の「説明」欄の内容をダイアログ表示するライブラリを本書執筆時に新規作成。これで、「何を入れたか忘れがち」なスクリプトメニュー生活が快適になります。
また、このスクリプトメニュー用のテンプレートを添付し、スクリプトエディタの「テンプレートから新規作成」でヘルプ表示対応のAppleScript書類を作成できます。
便利なスクリプトメニューを今日からはじめてみましょう! PDF 33ページ、サンプルScript Zipアーカイブ添付
標準搭載、メニューからScriptを実行する機能
タイプ別、さまざまなAppleScript実行環境
OS標準搭載AppleScript実行環境の比較
スクリプトメニューの有効化
3段階で管理されるスクリプト・フォルダ
アプリケーション専用のスクリプトフォルダを作成
スクリプト実行中のインジケータ
スクリプト以外のものも入れられます
装飾キーを押しながらScriptを実行すると…
スクリプトメニューを構成すること自体は簡単
階層フォルダを利用してファイル名を記述
パラメータを書き換えたスクリプトを複数用意
間違ったオブジェクトの選択に備える
フローティングパレットを利用したほうがよい例も
ヘルプ機能がないことへの備え
AppleScriptでヘルプ表示を実装
テンプレートからヘルプつきスクリプトを新規作成
スクリプトメニューQ&A
機能強化版のシェアウェア「FastScripts 3」
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実行環境から表示させたときに、ダイアログ自体が最前面に表示されない問題への対策を行ってあります。
また、以前のバージョンからの機能追加で、テキスト表示色の指定が行えるようになっています。
対象のキーワードの構成情報を分解して、2つのキーワードの共通要素をリストアップする「マッキー演算」を行うライブラリ「Common Elements Lib」をアップデートしました。
–> Common Elements Libをダウンロード(v1.3a)
マッキー演算とは、「槇原敬之」と「SMAP」の共通項を求め、結果に「世界に一つだけの花」をリストアップする処理です(ほかにも出てきますが)。
–> {“第58回NHK紅白歌合戦”, “木村拓哉”, “東京都”, “ニッポン放送”, “テレビ朝日”, “ミリオンセラー”, “大阪城ホール”, “インターネットアーカイブ”, “社長”, “ミュージックステーション”, “ケンタッキーフライドチキン”, “スポーツニッポン”, “日刊スポーツ”, “第42回NHK紅白歌合戦”, “リクルートホールディングス”, “エフエム東京”, “日本ゴールドディスク大賞”, “フジテレビジョン”, “J-POP”, “小倉博和”, “世界に一つだけの花”, “We are SMAP!”, “日本”, “日本武道館”, “ISBN”}
WikipediaのMedia APIを用いて問い合わせを行って計算を行います。そのため、(Wikipedia上における当該項目の記事内容の変化によって)実行時期によって演算結果に差が出ます。
アップデート理由は、前バージョンではインターネット接続確認を「http://www.google.com」に対して行っていたところに、このドメインに対してhttp経由でのアクセスが行えないようになったので、エラーを起こすようになりました。
このドメインにhttps経由でアクセスするよう変更しました。
既存のAppleScript対応アプリケーションから、Cocoa Scriptingの現在のパワーを利用できるようにした「PowerPack」シリーズ。
第1弾は日本国内外で多くのユーザーに支持されている「CotEditor」用PowerPack。
第2弾がさまざまなプラットフォームへの広がりを見せつつmacOSのコア機能であるAppleScriptへの対応も行っているデータベース製品「FileMaker Pro」用のPowerPack。「FileMaker PowerPack」は、このFileMaker Proの上で動くCocoa AppleScriptサンプル集です。
サンプル集としてAppleScriptが掲載されているだけなく、FileMaker Pro上でそのまま実行でき、サンプルデータをもとに実行して、その結果をFileMaker Pro上に返してきます。
一般的なAppleScriptランタイム環境と異なるFileMaker Pro上のランタイム環境においても動作するようFileMaker Pro向けのチューニングを行ってあります。
「FileMaker PowerPack」は、日本国内のFileMaker系最難関コンテスト「FM-1グランプリ」への応募作品でもあり、業務効率化部門準賞 入賞作品でもあります。
日頃、AppleScriptになじみのない開発者にもこのPowerPackを試し、実際に実行し、そして書き換えて自分のシステムで使うための使い方を詳細に解説する電子書籍「FileMaker PowerPack」活用ガイドを刊行いたしました。
PDF 317ページ、FileMaker PowerPackの最新版 v2.1を同梱。
さらに、期間限定おまけコンテンツ「FM-1 GP戦記」(PDF 43ページ)を添付。前代未聞の難関コンテストを勝ち残るためにチーム内で行われた詳細な議論。試作品を没にしてたどりついた、コンテスト攻略の秘策とは?! いまだからこそ明かされる、真剣かつ呑気なやりとりに全米が泣いた、総ページ数350ページを超える1作です。
FileMaker ProのAppleScriptからの操作を詳細に解説した電子書籍「FileMaker Pro Scripting Book with AppleScript」(日本語版)をアップデートしました。
macOS 12に合わせた内容のアップデート、v1.2までに説明されていなかった内容の補完、および別冊付録リファレンスをまとめています。
すでに購入された方は、購入ページからの再ダウンロードで入手可能です。
→ FileMaker Pro Scripting Book with AppleScript オンラインブックストア(BOOTH)
「空前絶後 あなたの知らないヤバイAppleScriptの世界」のiOS版、FileMaker Goを使って読む電子ブックの販売を開始しました。1,000円です。
→ 販売ページ
なんでこれを作ろうと思ったか?
PDF版をiOS上で読んでいただくことも可能ですが、画面の縦横比とかなんとか。とにかくPDF版の読書体験がよくありません。
そして、AppleのiBooks Storeに本を出すのに、ISBNだ何だといろいろうるさく、これに付き合っていられません。
そのため、いろいろ検討したうえでFileMaker Goに白羽の矢を立て、このアプリケーションを読書用のプラットフォームとして活用するために実験を繰り返していました。
小さな画面で文字を読むのは、ガラケーの時代から大変なことですが、スマホで読んでも大変なことに変わりはありません。
レイアウトに一緒に画像を入れるのも大変なので、基本的に文字コンテンツだけです。一応、なんとかすれば画像表示用レイアウトも混在させて、画像を見ていただくことは可能です。
これまで、PDF版(フル・レイアウト)のオマケとか、サブセットとして出すとか(AppleScriptポケットリファレンス)、そういう試みはしてきましたが、.fmp12単体で売ってみるというのははじめてのことです。iPhoneだけで暮らしたことが皆無なので、まだちょっと見落としていることがあるかもしれませんが、失敗も含めて貴重な経験になることでしょう。
FileMaker Goのデータベースアプリケーションとしての出来については、いまひとつ評価が定まっていないというか、バージョンごとに少しずつ問題があるという見立てになっています。期待をしすぎてはダメというところなんでしょう。
ですが、単にレイアウト切り替えをするとか、フィールドに入れた文字を読むというだけであれば問題が出るとも思えません。
いえ、正直なところiPad mini+FileMaker Go 18(前バージョン)で読んでいたときに、突如としてフィールドが真っ白になってレコード表示がうまく動かなくなったということはありました。
それでも、iPhone+FileMaker Go 19であれば、とくに問題らしい問題に遭遇したことはありません。RAMが少ないと環境だと問題があるのかもしれません。
とりあえず、「何かあったとき」のために……筆者に文句を送信できるよう、電子ブックに感想送信フォームをつけておきました。
個人的には、.fmp12形式のままBOOTH上で販売したいのですが、その点について提案したもののお返事をいただいていません。
既刊本「AppleScript最新リファレンス」に追加ダウンロードコンテンツをご用意いたしました。
FileMaker Goを使ってiPhone/iPad上で閲覧する、「AppleScriptリファレンス ポケット版」ともいうべきものです。
購入された方は、無料で追加ダウンロードしていただけます。Mac上にダウンロードしたうえで、Zip圧縮を展開し、iCloud Drive経由でiPhone/iPadに転送していただけます。もちろん、Mac/Windows版のFileMaker Proをお持ちであれば、Mac/PC上でご覧になることも可能です。
コンテンツは、「最速マスター」、「各MacOSのAppleScriptの歴史」、「コマンドリファレンス」部分を独立させたものです。
(1)BOOTHの「AppleScript最新リファレンス」ダウンロードページから、追加ダウンロードコンテンツをMac/PCにダウンロード
(2)ダウンロードしたZipアーカイブを展開(AppleScript_Reference.fmp12.zip→AppleScript_Reference.fmp12)
(3)Finder上のiCloud Drive経由でiPhone/iPadに転送
(4)iPhone/iPad上のFileMaker Goを起動
(5)FileMaker Go上で「マイApp」>「iPhone上」を選択
(6)画面上のフォルダ+ダウンロード矢印のついたアイコンをタップ
(7)iCloud Drive上から「AppleScript_Reference.fmp12」を指定
(8)iCloud Driveからダウンロードが終了すると起動
(1)BOOTHの「AppleScript最新リファレンス」ダウンロードページから、追加ダウンロードコンテンツをMac/PCにダウンロード
(2)ダウンロードしたZipアーカイブを展開(AppleScript_Reference.fmp12.zip→AppleScript_Reference.fmp12)
(3)MacのWiFi接続をオンにして(WiFiネットワークにつながっていることが前提)、AirDrop経由で「ppleScript_Reference.fmp12」ファイルをiPhone/iPadに転送
(4)iPhone/iPad上で画面にどのアプリケーションを利用してオープンするかを聞いてくるので、インストールしたFileMaker Goのうち一番新しいバージョンのものを指定
(5)起動
となります。
ついに出ました! AppleScriptによる各種自動化と相性のよい、elgato STREAM DECKの説明と使いこなしのガイド本、「elgato STREAM DECK 徹底活用Mac+STREAM DECKで時短+作業効率化!!」を刊行しました。
わかりやすくSTREAM DECKについて、その機能や設定方法について紹介し、効果的な使い方とその中でももっとも効き目のある「アクションからのAppleScript呼び出し」について、実例(添付AppleScriptあり)をあげて紹介しています。
AppleScript書きの立場からも、いつもの「走り出したら数分間処理が止まらない」とかいったヘビー級の処理ではなく、だいたいユーザーが期待する時間内に終わって、事前の準備や条件がデリケートでなく、機能が名前から類推しやすいものが適していたりもします。また別の方向性が求められる実行環境でもあります。
ページ数:126ページ(PDF+付録Script Zipアーカイブ)
価格:2,000円
となっています。日本国内の代理店を探して多方面に問い合わせしたり、elgatoに問い合わせたりと、予想よりもはるかに手間のかかったものになりました(>_<)
→ サポートページ
→ 販売ページ
→ お試し版PDFダウンロードページ