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

月: 2021年5月

CotEditorのScript集、PowerPack & Basic Packを近日中にv3.0にアップデート

Posted on 5月 30, 2021 by Takaaki Naganoya

CotEditorの強化用AppleScript集、PowerPackを近日中にv3.0にアップデートします。また、同時にこのPowerPackの使い方を詳細に説明したドキュメントをBooth上で電子ブックとして販売します。

今回の目玉は、グラフ表示。

AppleScriptによって、CotEditorで編集中の最前面のドキュメントの文字種別を分析して、アニメーションしつつグラフ表示します。文章書きがとっても気にする、漢字、ひらがな、カタカナなどの文字種別の使用比率をグラフ化。

AppleScriptでワードクラウド表示。AppleScriptで記述した世界最小(自称)の簡易日本語形態素解析プログラム「easyJParse」を組み込んで、簡易的にワードクラウドを組み立てて表示します。文章内容の傾向を客観的に把握するための表示です。

AppleScriptだけでMarkdownのプレビュー表示を行います。

さらに、AppleScriptでCSVのプレビュー表示も。小規模なデータならその場でダイアログ上でプレビュー表示を、大きなデータはNumbersに渡してそちらで表示させるという寸法です。

Posted in Books PRODUCTS | Tagged 10.15savvy 11.0savvy CotEditor | Leave a comment

Basuke’s Tech Talk Podcastが配信されました

Posted on 5月 27, 2021 by Takaaki Naganoya

BasukeさんのClubhouseの番組「Basuke’s Tech Talk」の話の内容をまとめたPodcastで、「AppleScriptの話 with @Piyomaru」と題して配信されています。興味のある方はお聴きください。

Basuke's Tech Talk #11 「AppleScriptの話 with @Piyomaru」を公開しました。AppleScriptを愛してやまない「AppleScriptの穴」運営の @Piyomaru さんに話を伺いました。 ⚓ https://t.co/uyMS0BftaZ #basuke

— Basuke (@basuke) May 27, 2021

Posted in news | Leave a comment

ミュージック.app scripting book with AppleScript販売開始

Posted on 5月 25, 2021 by Takaaki Naganoya

iTunesの後継ソフトウェア「ミュージック」をmacOS標準搭載のスクリプティング言語「AppleScript」からコントロールするときの記述について、基礎を重視しつつ網羅的に説明する電子ブック「ミュージック.app scripting book with AppleScript」の販売を開始しました。

→ 販売ページ

252ページ+特別付録 AppleScript予約語リファレンス(124ページ)という構成で、もともとは376ページ。大きくなりすぎたので分冊化しました。

ミュージック.appのAppleScript用語辞書をくまなく解説し、印刷の指定からCDにプレイリストを焼くためにCD再生時間ごとにプレイリストを分割したり、iTunes REST APIを利用して指定の曲がApple Musicで配信されているかを調べたり、購入年ごとの集計結果をKeynote上にグラフ作成したりと、おおよそ考えつく内容をすべてまとめています。

さらに、執筆中に見つかった「多階層のフォルダプレイリストを階層指定してアクセス」「曲名が検索で探せない場合の手当て」などさまざまな奥義のかずかずを披露しています。

目次

初級

■スクリプトエディタを起動しよう

スクリプトエディタを起動しよう!
スクリプトエディタのヘルプ
色設定を変えてみよう!
スクリプトを入力してみよう
スクリプトを保存しよう
スクリプトを実行しよう
セキュリティとプライバシー
セキュリティとプライバシー>プライバシー

■ミュージックを起動しよう

ミュージック(Music.app)を指定
Music.appを起動
Music.appを終了
Music.appのAppleScript用語辞書の調べ方
メニュー項目や画面強制操作の調べ方
Music.appの詳細仕様について
Music.appの機能の方向性
Music.appの情報を取得しよう
Musicの名前を取得
mute(消音状態)を取得
mute(消音状態)を設定
volume(音量)を取得
volume(音量)を設定
シャッフルモードを取得
シャッフルモードを設定
リピートモードを取得
リピートモードを設定
current trackを取得
Music.appの情報を一括取得
Music.appのプロパティ項目と内容

■再生コントロールを行おう

Musicの再生コントロール機能
対応するAppleScriptのコマンド
再生/停止(トグル切り替え)
次へ
前へ

■再生ウィンドウの切り替え

Musicのウィンドウ表示状態
Musicのウィンドウ表示切り替え
ウィンドウ表示操作
ミニプレーヤー・ウィンドウ表示操作
その他のウィンドウ表示操作

■選択中のトラックを取得しよう

selection=選択中のもの
current playlist=再生中のプレイリスト

■表示の切り替え

アルバムを表示
ミュージックビデオを表示
カラムブラウザを表示

■エンコーダ情報の取得/設定変更

GUIでエンコーダ情報にアクセス
AppleScriptでエンコーダ情報にアクセス

■AirPlay情報の取得/設定変更

GUIでAirPlay出力先情報にアクセス
AppleScriptでAirPlay情報にアクセス
AppleScriptでAirPlay出力先デバイスを指定
AppleScriptでAirPlay出力先設定

■イコライザ設定

GUIでイコライザにアクセス
AppleScriptでイコライザにアクセス
AppleScriptでイコライザを切り替え

■ビジュアライザ設定

GUIでビジュアライザにアクセス
AppleScriptでビジュアライザにアクセス

■URL上のファイルをオープン

指定URLの音声ファイルをオープン

■Music.appの2つのスクリプトメニュー環境

2つのScript Menu環境
Music.app内蔵スクリプトメニュー

中級

■ソース、ライブラリ情報の取得

ソースの情報を取得

■プレイリストから情報を取得

プレイリスト、フォルダプレイリスト自体の情報
プレイリスト、フォルダプレイリスト内の曲にアクセス
共有プレイリスト

■トラックから情報を取得

トラック(曲)の名前を取得
トラック(曲)の詳細情報を取得
曲プロパティの項目と内容(1/3)
曲プロパティの項目と内容(2/3)
曲プロパティの項目と内容(3/3)

■Apple Musicからダウンロードした曲(トラック)の情報を取得

ダウンロードしたApple Musicの曲の情報
サブスク曲と通常購入曲の属性情報の違い
サブスク曲はMusic/TV.appでしか開けない

■手元にファイルが存在していないトラックをダウンロード

選択中のトラックをダウンロード

■属性情報を書き換えよう

name(曲名)を書き換え
name(曲名)を書き換え(グループ置換)
played count(再生回数)を書き換え
bpm(beat per minute)の情報を書き換え
曲プロパティの項目と内容(1/3)
曲プロパティの項目と内容(2/3)
曲プロパティの項目と内容(3/3)

■曲のアートワークを書き換えよう

トラック(曲)のアートワークを指定
参考資料:Image Eventsの設定変更
トラック(曲)のアートワークを削除

■曲を検索しよう

Music.appで曲を検索する方法

■指定の曲を再生しよう

最もよく聴く曲を再生
指定の曲を再生

■プレイリストの新規作成、名称変更、削除

プレイリストの新規作成
プレイリストの名称変更
プレイリストの削除
プレイリストをCD書き出しのために分割(1/2)
プレイリストをCD書き出しのために分割(2/2)

■フォルダプレイリストの新規作成、名称変更、削除

フォルダプレイリストの制約
多階層フォルダを指定してフォルダプレイリストを特定
フォルダプレイリストの操作
フォルダプレイリスト+プレイリスト作成(1/2)
フォルダプレイリスト+プレイリスト作成(2/2)

■音声ファイルの追加、削除、プレイリストへの登録

音声ファイルのMusicライブラリへの追加
トラック(曲)の指定プレイリストへの登録
選択中のトラックの削除
選択中のトラックの完全削除

■CDにアクセス

CDドライブの存在確認
音楽CD(メディア)の存在確認
CDの情報を取得
CDトラックにアクセス
CDトラックを読み込み
プレイリストからオーディオCD作成
オーディオCDのイジェクト

■プリントアウト

ミュージックから印刷出力
「CDジャケット」形式のプリントアウト内容一覧
「曲」「アルバム」のリスト形式のプリントアウト内容一覧
AppleScriptによるプリントアウト形式指定
AppleScriptによるプリントアウトフロー
AppleScriptによるプリントアウト

上級

■iTunes向けのScriptをMusic.app用に書き換えよう

iTunes向けScriptの書き換え
iTunes向けScriptの書き換え
コラム「Music.appが使用するパス表現」

■曲名の文字コード(Normalize方式)が異なる問題

track(曲)の名称について
track(曲)の名称の文字コードについて
track(曲)の名称をhexdumpするScript
対処方法:インポートした曲名をつけかえる

■音声ファイルの変換

Music.appの機能を用いてオーディオファイル形式変換
音声ファイルのMusicライブラリへの追加

■shared trackとtrackのちがい

shared trackとtrackの違い
shared trackとtrackの違い
ファイルの所在によるclassの違い

■各種playlistのちがい

各種playlistの定義の違い
トラック(曲)にアクセスするための経路

■LAN上の共有Musicライブラリを検出

ミュージックの共有ライブラリ
LAN上の共有Musicライブラリをリストアップ
LAN上の共有Musicライブラリに手動アクセス
LAN上の共有Musicライブラリを指定

■iTunes StoreにREST API経由でアクセス

iTunes REST APIにアクセス
選択中の曲がApple Musicで配信されているか確認
自分のライブラリ中の作曲者のサブスク配信率
(参考)サブスク配信率計算結果

■高度なサンプル集

AppleScriptで操作可能な範囲
ライブラリ中の全トラックのアーティスト名をリストアップ
ライブラリ中のファイルをファイル種別ごとに集計
ライブラリ中の各trackをメディア種別ごとに集計
ライブラリ中の各trackのジャンル集計
ジャンル名簡易名寄せ
ライブラリ中のアートワークをすべてJPGで書き出し
ライブラリ中のアートワークの画像種別集計
ライブラリ中の曲タイトルをアルバムごとにまとめて出力
再生曲が変わったら通知
ライブラリへの追加年(購入年)で集計してグラフ表示
最終再生時を集計してKeynoteで縦棒グラフ表示

■便利な他のプログラムや周辺機器

さまざまなAppleScript呼び出しプログラムから操作①
さまざまなAppleScript呼び出しプログラムから操作②
さまざまなAppleScript呼び出しプログラムから操作③
さまざまなAppleScript呼び出しプログラムから操作④
Mac用AirPlay Serverソフトウェア

資料集

■Music.appのAppleScript用語辞書解説

Music.app用語辞書

■iTunes/MusicのAppleScript用語の変遷

iTunes.app/Music.app用語辞書の変遷

■サードパーティ製FrameworkやAppleScript Librariesを呼ぶ

Script BundleにFramework / AppleScript Librariesを入れる
Shane StanleyのScript Toolの変遷
Shane StanleyのScript Libraries
Piyomaru SoftwareのScript Libraries

■AppleScript mini Reference

macOS搭載 AppleScript関連ドキュメント
AppleScript関連の情報源
macOSバージョンとAppleScriptの動向
macOSとAppleScriptの要素技術史
各macOSごとのAppleScript解説(1/4)
各macOSごとのAppleScript解説(2/4)
各macOSごとのAppleScript解説(3/4)
各macOSごとのAppleScript解説(4/4)
macOS内AppleScript補助ツールの歴史
System EventsのAppleScript用語辞書変更点
AppleScript 各ランタイム環境情報
AppleScript 関連ツール
Cocoa Scripting 関連ツール

■ミュージック&AppleScript Q&A

AppleScriptに関するQ&A❶
AppleScriptに関するQ&A❷
AppleScriptに関するQ&A❸

あとがき
奥付

Posted in Books PRODUCTS | Tagged 10.15savvy 11.0savvy Music | Leave a comment

NSDataのdescriptionの形式がmacOS 10.15で変更された

Posted on 5月 20, 2021 by Takaaki Naganoya

文字列データのhexdumpを表示させようとして、予期しない結果が返ってきたので原因を追求してみました。

問題の発生源はNSDataのdescriptionを取得した箇所。

--> "<e38182e3 8184e381 86e38188 e3818a>"--macOS 10.14.6
--> "{length = 15, bytes = 0xe38182e38184e38186e38188e3818a}"--macOS 10.15.7
--> "{length = 15, bytes = 0xe38182e38184e38186e38188e3818a}"--macOS 11.4

macOS 10.15で、この結果を返すさいの記述が変更になったようです。descriptionからhex値を取得するのは、たしかに「裏技」っぽい解決策。

データが長くなると、

{length = 60, bytes = 0xe38182e3 8184e381 86e38188 e3818ae3 ... 81a4e381 a6e381a8 }

のように途中が省略されるので、データを小分けにして処理する必要があります。

AppleScript名:dataのdescription.scptd
—
–  Created by: Takaaki Naganoya
–  Created on: 2021/05/20
—
–  Copyright © 2021 Piyomaru Software, All Rights Reserved
—   
–  Don’t remove this header!!!

use AppleScript version "2.4" — Yosemite (10.10) or later
use framework "Foundation"
use scripting additions

set aStr to current application’s NSString’s stringWithString:"あいうえお"
set aDat to aStr’s dataUsingEncoding:(current application’s NSUTF8StringEncoding)
set bStr to aDat’s |description|() as string
–> "<e38182e3 8184e381 86e38188 e3818a>"–macOS 10.14.6
–> "{length = 15, bytes = 0xe38182e38184e38186e38188e3818a}"–macOS 10.15.7
–> "{length = 15, bytes = 0xe38182e38184e38186e38188e3818a}"–macOS 11.x

★Click Here to Open This Script 

Shane Stanleyからメールで「debugDescriptionだと従来のdescriptionと同じ結果が得られるよ」と教えてもらいました(Thanks Shane!)。

AppleScript名:hexdumpTest.scptd
–By Shane Stanley 2021/05/21
use AppleScript version "2.7"
use framework "Foundation"
use scripting additions

set a to "あいうえおかきくけこさしすせそたちつてと"
set aStr to current application’s NSString’s stringWithString:a
set aDat to aStr’s dataUsingEncoding:(current application’s NSUTF8StringEncoding)
set bStr to aDat’s |debugDescription|() as string
–> <e38182e3 8184e381 86e38188 e3818ae3 818be381 8de3818f e38191e3 8193e381 95e38197 e38199e3 819be381 9de3819f e381a1e3 81a4e381 a6e381a8>

★Click Here to Open This Script 

Posted in Text | Tagged 10.14savvy 10.15savvy 11.0savvy NSData | 1 Comment

明日、Basukeさん主催のBasuke’s Tech Talkに出演します

Posted on 5月 20, 2021 by Takaaki Naganoya

Clubhouse上でBasukeさんが主催されているBasuke’s Tech Talkに出演します。日本時間で5/21 14:00からです。

明日金曜日の午後2時 JSTから、ぴよまるソフトウェアの長野谷さんと「AppleScriptの話 with @Piyomaru 」をお届けします。歴史は実はかなり長い歴史を持つコアテクノロジー。様々な変化を乗り越えたAppleScriptの深部に挑みます Basuke’s Tech Talk #11 https://t.co/6k1lltJPZ2 #basuke

— Basuke (@basuke) May 20, 2021

Basukeさんといえば、古くは「NoMeMo Busters」の作者として有名。Newton系で活躍されたり、さまざまなMac系のプログラムやWebサービス「関心空間」のプログラムを担当されたあと渡米、KinomaでIoT機器の開発をされたあと現在はPlayStationでプログラマーとして勤務されています。

そのBasukeさんがClubhouse上で開催されているBasuke’s Tech Talkにゲスト出演。「AppleScriptの話 with @Piyomaru」と題して、なんやかんや、あることないこと話すことになることでしょう。

自分は「無限に文章を書く」のはOKというタイプの人間で、その場でリアルタイムにお話をするのはそれほど得意ではないため、ちょっとビビっていますが…

なお、当日の話の内容は、Podcastとして再配信されるとのことなので、リアルタイムに聞けなくても大丈夫(?)です。

Posted in news | Leave a comment

Apple Musicが2021年6月から高音質化、空間オーディオ対応

Posted on 5月 18, 2021 by Takaaki Naganoya

サブスクリプション(月額固定費用)サービスのApple Musicの全曲が、「6月からロスレスオーディオのApple Lossless Audio Codec(ALAC)に対応し、一部ではDolby Atmos空間オーディオに対応した楽曲が利用可能になる」とのこと。噂では聞いていましたが、話半分ぐらいで聞いていました。

目下作成中で完成間近の「ミュージック.app Scripting Book With AppleScript」、「書いていないことはない」と自分が胸を張って送り出そうとしている本ですが、当然のようにこの発表に影響を受けます。

こちらで、iTunes Storeで購入した楽曲の詳細情報と、Apple Musicからダウンロードしてきた曲の詳細情報を比較しているのですが……

6/1になったら、再度確認してアップデートする必要がありそうです。この表自体はAppleScriptで、「AppleScriptの実行結果をNumbersの表にまとめる」という処理を行なっているため、作り直してもそれほど作業は発生しないのですが(自動化しておいてよかった!)、まー、反映しておかないとマズイ情報であることに代わりはありません。

Codecが変わるだけだと思われるので、拡張子やらファイル呼称が変わったりすることはなさそうですが、ファイルのサイズが巨大化しそうでそのあたりどーなるのか? 目下、.m4p形式のファイルをローカルにダウンロードできるようになっていますが、そこが変わるのか変わらないのか。

高音質化しても違いがわからない人向けに、従来どおりのCodecでダウンロード/ストリーミングさせるオプションがあるような気もします。6月にMusic.app自体のアップデートもあると見るべきでしょうか。

Posted in news | Tagged 10.14savvy 10.15savvy 11.0savvy iTunes Music | Leave a comment

LAN上のdaapクライアントの共有名をリストアップ v2

Posted on 5月 12, 2021 by Takaaki Naganoya

LAN上のdaap(Music/iTunesライブラリ共有)サービス名を検出するAppleScriptです。

LAN上の他のマシンで動作中のサービス名を収集します。AppleScriptを実行している自機のサービスは除外しています。

他のフォーラムへの無断転載、および転載時にもヘッダー部分を削除することを厳禁します。

AppleScript名:LAN上のdaapクライアントの共有名をリストアップ v2.scptd
—
–  Created by: Takaaki Naganoya
–  Created on: 2021/05/11
—
–  Copyright © 2021 Piyomaru Software, All Rights Reserved
—   http://piyocast.com/as/
—
–  ** You are allowed to use this AppleScript with holding this header comment **
–  ** Don’t re-post this script to other forums without this header comment **
–  ** I’m very angry with removing header comment **

use AppleScript version "2.4"
use scripting additions
use framework "Foundation"
use framework "AppKit"

property foundList : {}
property myHostNames : {}
property services : {}
property comingF : false
property resolveF : false

set mList to findHostsViaBonjour("_daap._tcp", "") of me
–> {"Takaaki Naganoya のライブラリ", "ぴよぴよ ライブラリ"}

on findHostsViaBonjour(aType as string, aDomain as string)
  set my foundList to {}
  
set my comingF to true
  
set my resolveF to false
  
set my myHostNames to (current application’s NSHost’s currentHost()’s names()) as list
  
–> {"MacMini2014.local", "macmini2014.local", "localhost"}
  
  
set aBrowser to current application’s NSNetServiceBrowser’s alloc()’s init()
  
aBrowser’s setDelegate:me
  
aBrowser’s searchForServicesOfType:aType inDomain:aDomain
  
  
repeat 100 times
    if my comingF = false then
      if my foundList is not equal to {} then exit repeat
    end if
    
delay 0.01
  end repeat
  
  
repeat 100 times
    if my resolveF = false then
      if my foundList is not equal to {} then exit repeat
    end if
    
delay 0.01
  end repeat
  
  
aBrowser’s setDelegate:(missing value)
  
return (my foundList)
end findHostsViaBonjour

–searchForServicesOfTypeのdelegate
on netServiceBrowser:aNetServiceBrowser didFindService:aNetService moreComing:aMoreComing
  copy (aMoreComing as boolean) to my comingF
  
set my resolveF to true
  
aNetService’s setDelegate:me
  
set cInfo to aNetService’s resolveWithTimeout:3
end netServiceBrowser:didFindService:moreComing:

–NetService’s resolveWithTimeoutのdelegate
on netServiceDidResolveAddress:aSender
  set cDesc to (aSender’s |name|()) as string
  
set dDesc to (aSender’s |hostName|()) as string
  
aSender’s |stop|() –すげー大事
  
  
set dDesc to repChar(dDesc, ".local.", ".local") of me
  
  
if dDesc is not in (my myHostNames) then
    set the end of (my foundList) to cDesc
  end if
end netServiceDidResolveAddress:

–文字置換
on repChar(origText as string, targChar as string, repChar as string)
  set curDelim to AppleScript’s text item delimiters
  
set AppleScript’s text item delimiters to targChar
  
set tmpList to text items of origText
  
set AppleScript’s text item delimiters to repChar
  
set retText to tmpList as string
  
set AppleScript’s text item delimiters to curDelim
  
return retText
end repChar

★Click Here to Open This Script 

Posted in Network | Tagged 10.14savvy 10.15savvy 11.0savvy NSHost NSNetService NSNetServiceBrowser | Leave a comment

ScriptDebugger v8が正式リリースに

Posted on 5月 8, 2021 by Takaaki Naganoya

Late Night SoftwareからAppleScriptの統合開発環境、ScriptDebugger v8が正式リリースされました。日本語の表示、入力について問題ありません。そして、日本語で問題が出ないということから、同様のCJK(Chinese, Japanese, Korean)言語環境環境でも問題はないことでしょう。

■v8の対応環境

macOS 10.14.6、10.15.7、11.x
Intel Mac/M1 Mac(Apple Silicon Mac)

■v8の新機能

・Apple Silicon(M1 Mac)へのネイティブ対応
・Dark Mode対応

・macOS 11.x対応。Applet書き出し時にCodeSign Localを実行、notarizingを実行
・バージョン管理
・アプリケーション書き出し時の各種設定が「環境設定」ウィンドウに「Building」タブとして新設された

■v8の変更点

・Bundle IDの変更
SD7 Bundle ID: com.latenightsw.ScriptDebugger7
SD8 Bundle ID: com.latenightsw.ScriptDebugger8

・Enhanced Appletのランタイム・プログラム名の変更(要注意)
SD7:FancyDroplet
SD8:FancyDropletFat

ただし、SD8でもmacOS 10.14.x、10.15.x上でアプレット(Enhanced)書き出しを行ったさいには、ランタイム名は「FancyDroplet」になるとのこと。あくまで、macOS 11.x+SD8でアプレット(Enhanced)書き出しを行ったさいに「FancyDropletFat」になる。

・Bundle Script編集時の表示ルートディレクトリ
SD7:/Contents/Resources/
SD8:/Contents/

■v7→v8で変更されていない仕様

・20日の試用期間ののちLiteモードで動作。一部の機能が制限される
・「as anything」は「as any」と解釈される
・AppleScriptのメインスレッド実行機能なし(Script側でメインスレッド実行の記述を追加して対処。ここだけmacOS標準装備のスクリプトエディタの併用が欠かせない)

Posted in news | Tagged 10.14savvy 10.15savvy 11.0savvy Script Debugger | Leave a comment

Keynoteで現在のスライドのタイトルを指定の文字ではじまるテキストアイテムにコピーする

Posted on 5月 3, 2021 by Takaaki Naganoya

Keynoteの最前面の書類の現在表示中のスライド(ページ)のタイトルを、指定の文字ではじまるテキストアイテムにコピーするAppleScriptです。

Music.app本にプログラムリストを2x Retina表示のスクリーンキャプチャで掲載してみたところ、書き出したPDFのファイルサイズが巨大になりすぎたり、後処理で圧縮したら一律に画像が荒くなったりで、画像で掲載することをあきらめてKeynoteのオブジェクトでそれっぽく組み立てて掲載することにしました。

その際に、Keynoteオブジェクトで作ったプログラムリストっぽい何かのタイトル部分を一律にダミー文字を入れておいたので、各ページのタイトルを入れてみることにしました。

AppleScript名:現在のスライドのタイトルを指定の文字ではじまるテキストアイテムにコピーする.scptd
—
–  Created by: Takaaki Naganoya
–  Created on: 2021/05/03
—
–  Copyright © 2021 Piyomaru Software, All Rights Reserved
—

use AppleScript version "2.4" — Yosemite (10.10) or later
use framework "Foundation"
use scripting additions

tell application "Keynote"
  tell front document
    tell current slide
      set tList to every text item whose object text starts with "あああああ" –抽出条件
      
set titleStr to (object text of default title item) as string
      
      
repeat with i in tList
        set j to contents of i
        
set object text of j to titleStr
      end repeat
      
      
(*
      –サイズを自動で調整してみる???
      repeat with i in tList
        set {xPos, yPos} to position of i
        set aHeight to height of i
        set aWidth to width of i
        
        set oList to every shape
        set pList to position of every shape
      end repeat
      *)

    end tell
  end tell
end tell

★Click Here to Open This Script 

Posted in Text | Tagged 10.14savvy 10.15savvy 11.0savvy Keynote | Leave a comment

未知の予約語

Posted on 5月 3, 2021 by Takaaki Naganoya

AppleScript implementors MLの過去ログを漁っていたら、2006年に作られた資料へのリンクを見つけました。

–> AppleScript Terminology and Apple Event Codes

誰が作った資料かはわかりませんが、AppleEventの4文字コードのコンフリクトが起こらないように、AppleEventコードを調べること、すでにこのような予約語があるのでScriptableなアプリケーションで同様に使えということが目的だったようです。

読んでみると、すでに廃止になったAppleScript Studioの予約語はともかくとして、AppleScript Languageレベルの予約語でも、けっこう知らない予約語があります。

一時期騒ぎになった「linked list」とか「vector」といった予約語は記憶に新しいところですが、構文確認をパスする用語の多いこと多いこと。

無意味語として分類すべきなのか悩ましいものがけっこうあって、驚かされます。C StringsとかPascal Stringsといった予約語もそうですが、見たことのないものばかりです。一部、度量衡の予約語が紛れ込んでいますが、それをのぞいてもけっこう知らないものばかりです。

知っていたからといって自慢できるという種類のものでもなさそうですが、先を見越しすぎたものの実現しなかった「RGB16 color」とか「RGB96 color」あたりが黒歴史案件でしょう。「extended real」あたりで桁数の制限の多い数値型を拡張してもらえたらよさそうなんですが……。

AppleScript系で黒歴史的な予約語といえば、CPU Typeの「Intel 80486」でしょうか。つまり、その頃はMotorola系のCPUを使っていたはずの時期ですが、その時期にi80486で動いていたハードウェアの上でClassic MacOSが動き、その上でAppleScriptの処理系が動いていたことを示唆するもの(?)なわけで……Intel CPU上にCLassic MacOSを移植する「Startrek」プロジェクトの残骸だと(勝手に)考えるとなかなか楽しいものがあります。

AppleScript名:未知の予約語.scpt
text flow
text flows

writing code info
writing code infos
color table

color
condensed
RGB color
RGB colors
C string
C strings

reals
data size

type element info

encoded string
encoded strings
constant
constants
PostScript picture
type event info
event
events

extended real
feet
fixed
font
fixed point
fixed rectangle

file specification
file specifications
full
gallons
type class info
event info
suite info
handler
handlers
hyphens
location reference
floating
zoomable
international text
caps lock down

reference form
reference forms

key kind
modifiers

dates

left

long fixed rectangle
long fixed
linked lists

integers

list or record
long point
long rectangle

machines
unsigned integer

machine location
number or date
negate
no
references

off styles
on styles

outline
ounces

plain

language code

type parameter info

prepositions
print length

script code
writing code

Pascal string
Pascal strings
bounding rectangle

class info
quarts

records
subscript

scripts
shadow

small integer
small real
superscript
strikethrough

styled text
type suite info

styled Unicode text
dash style

pixel map record
RGB16 color
RGB96 color

text style info
text style infos

underline
uniform styles
vector
vectors

application dictionary

system dictionary
booleans

★Click Here to Open This Script 

Posted in sdef | Tagged 10.14savvy 10.15savvy 11.0savvy | Leave a comment

Pixelmator Proで指定の画像を複数の3D LUTを用いてカラー調整して画像書き出し

Posted on 5月 2, 2021 by Takaaki Naganoya

Pixelmator Pro v2.0.8で追加された3D LUT(Look Up Table)によるカラー調整機能。これを用いて、複数の3D LUTファイルによるカラー調整を行い、それぞれ3D LUTファイルのファイル名を反映させて書き出すAppleScriptです。

3D LUTファイルは、探してみるとあちこちで配布されており、割とありふれた存在のようです。実際にフリー配布されている3D LUTファイルをダウンロードしてきて、1つのフォルダに入れておき、指定画像に対してカラー調整を行わせてみました。

–> [全てフリー!] シネマティックなルックになる10のLUTsを紹介します!!

フォルダに入っている3D LUTファイルをすべてループで処理するので、3D LUTファイル100個でも1,000個でも処理できますし、ちょっと書き換えれば複数の画像に対してそれぞれすべての3D LUTファイルによる色調整を実行するようにもできます。

AppleScript名:指定の画像を複数の3D LUTでカラー調整して画像書き出し.scpt
—
–  Created by: Takaaki Naganoya
–  Created on: 2020/05/02
—
–  Copyright © 2020 Piyomaru Software, All Rights Reserved
—
use AppleScript version "2.4" — Yosemite (10.10) or later
use framework "Foundation"
use scripting additions

property |NSURL| : a reference to current application’s |NSURL|
property NSArray : a reference to current application’s NSArray
property NSPredicate : a reference to current application’s NSPredicate
property NSURLTypeIdentifierKey : a reference to current application’s NSURLTypeIdentifierKey

–処理対象の画像を選択
set anImage to choose file of type {"public.image"} default location (path to pictures folder) with prompt "Select Proc Image"
set imgParent to getParentPathFromAlias(anImage) of me

–3D LUTファイルを入れてあるフォルダを選択
set lutFolder to choose folder with prompt "Select 3D LUT folder"

–Filter 3D LUT (.cube) files only
tell application "Finder"
  set fList to (every file of folder lutFolder) as alias list
end tell

set lutList to getFilesWithUTI("com.blackmagicdesign.cube", fList) of me

–指定の画像ファイルをオープン
tell application "Pixelmator Pro"
  close every document saving no
  
open anImage
end tell

–Main Loop
repeat with i in lutList
  set aLut to contents of i
  
  
–ファイルパスの加工処理
  
set newImgName to ((current application’s NSString’s stringWithString:(POSIX path of aLut))’s lastPathComponent()’s stringByDeletingPathExtension()’s stringByAppendingString:".jpg") as string
  
set newImgFullPath to (imgParent as string) & "/" & newImgName
  
set newImgFile to POSIX file newImgFullPath
  
  
tell application "Pixelmator Pro"
    activate
    
tell front document
      tell color adjustments of first layer –ここだけ、ネスティングを分割するとエラーになる
        set its custom lut to aLut
      end tell
      
      
export to newImgFullPath as JPEG with properties {compression factor:0.5, bits per channel:8}
      
undo
    end tell
  end tell
end repeat

–後片付け
tell application "Pixelmator Pro"
  tell front document
    close without saving
  end tell
end tell

on getParentPathFromAlias(aliasPath)
  set aPath to POSIX path of aliasPath
  
set pathString to current application’s NSString’s stringWithString:aPath
  
set newPath to pathString’s stringByDeletingLastPathComponent()
  
return newPath
end getParentPathFromAlias

on getFilesWithUTI(acceptUTI, aliasList)
  set aList to {}
  
  
repeat with i in aliasList
    set anAlias to i as alias
    
set aUTI to getUTIfromPath(anAlias) of me
    
if aUTI is not equal to missing value then
      set uRes to filterUTIList({aUTI}, acceptUTI) of me
      
      
if uRes is not equal to {} then
        set the end of aList to contents of i
      end if
    end if
  end repeat
  
  
return aList
end getFilesWithUTI

–AliasからUTIを求める
on getUTIfromPath(anAlias)
  set aPOSIXpath to POSIX path of anAlias
  
set aURL to current application’s |NSURL|’s fileURLWithPath:aPOSIXpath
  
if aURL = missing value then return missing value
  
set aRes to aURL’s resourceValuesForKeys:{current application’s NSURLTypeIdentifierKey} |error|:(missing value)
  
if aRes = missing value then return missing value
  
return (aRes’s NSURLTypeIdentifierKey) as string
end getUTIfromPath

–UTIリストが指定UTIに含まれているかどうか演算を行う
on filterUTIList(aUTIList, aUTIstr)
  set anArray to NSArray’s arrayWithArray:aUTIList
  
set aPred to NSPredicate’s predicateWithFormat_("SELF UTI-CONFORMS-TO %@", aUTIstr)
  
set bRes to (anArray’s filteredArrayUsingPredicate:aPred) as list
  
return bRes
end filterUTIList

★Click Here to Open This Script 

Posted in Color file File path Image | Tagged 10.14savvy 10.15savvy 11.0savvy Pixelmator Pro | Leave a comment

Pixelmator Pro がv2.0.8で3D LUTをサポート

Posted on 5月 2, 2021 by Takaaki Naganoya

Pixelmator Proがv2.0.5からv2.0.8にバージョンアップして、3D LUT(Look Up Table)をサポートしました。

自分は知らなかったのですが、映像や画像の処理時に、色の明度カーブをテーブルで置き換えることで、色の調子を整えたり、「●●っぽい色(光)使い」のデータを他の映像/画像データに統一的に適用させたりと、カラーフィルタ的なものをプログラムではなくデータで表現したもの、と理解しました。カラーコレクション系の技術というか手法で、調べてみるとnVidiaとかAdobeとか、そういう会社が関わってきたようで。

3D LUTのファイル(拡張子「.cube」)のUTIを確認したところ、”com.blackmagicdesign.cube”。ビデオ編集関連のハードウェア/ソフトウェアでさまざまな製品を世に送り出しているBlackMagic Designが仕様の策定を行っているのでしょうか。

この3D LUTをPixelmator Proがサポート。42個のLUTをアプリケーション内で持っているほか、外部の3D LUTファイルを指定することも、Pixelmator書類から3D LUTを生成して書き出すこともできるようです。

AppleScript用語辞書的には、「export as lut」コマンドを新設したことと、「color adjustments」コマンドに「custom lut」を指定するオプションを追加しています。

AppleScript名:現在オープン中の写真に指定のLUTを反映させる.scpt
–Pixelmator Pro用語辞書内に掲載されているサンプルを、読みやすいように書き換えた
set lutFile to choose file with prompt "Choose the LUT you’d like to apply to the layer:" of type {"com.blackmagicdesign.cube"}

tell application "Pixelmator Pro"
  tell front document
    tell color adjustments of first layer –ここだけ、ネスティングを分割するとエラーになる
      set its custom lut to lutFile
    end tell
  end tell
end tell

★Click Here to Open This Script 

Githubを調べてみたら、Objective-Cで書かれた「CocoaLUT」というプロジェクトを見つけました。ずいぶん前から(7年以上前から)存在していたようで、自分は寡聞にしてこれを知りませんでした。ひととおり機能に目を通してみると、3D LUTのファイルを読み込んでNSImageにカラー変更を適用するといった処理が行えるようです。AppleScriptからダイレクトにCocoaLUTを呼び出して色変更できそうです。

一応、Pixelmator Proの「謝辞」を見てみたところ、「CocoaLUT」に関する記載はなかったので、Pixelmator Proでこのプロジェクトの成果物を利用しているといったことはなさそうです。

YouTubeにアップしたムービーをご覧いただければわかるように、Pixelmator Proで3D LUTによる色置換処理を行ってみると、とても高速です。

Posted in Color Image | Tagged 10.14savvy 10.15savvy 11.0savvy Pixelmator Pro | Leave a comment

Music v1.1.1+macOS 11.4で怪奇現象

Posted on 5月 1, 2021 by Takaaki Naganoya

macOS 11.4betaとMusicで動作確認を行っていたところ、怪奇現象に直面しました。

アプリケーションの名称を取得するという、たいへんにおかわいらしいレベルのAppleScriptを書いて実行したところ、propertiesでまとめて属性値を取得したときと、個別にnameを取得したときで、処理結果が異なります。

propertiesでまとめて取得するとローカライズされたアプリケーション名「ミュージック」が返ってきて、nameで個別に取得すると「Music」が返ってきます。

下手クソなのか? おもいっきり下手くそが開発してるのか??? なんか、学生レベルの人間が担当しているように見えます。

Posted in Bug | Tagged 11.0savvy Music | Leave a comment

ボツ・お蔵入りした本

Posted on 5月 1, 2021 by Takaaki Naganoya

これまでに、企画してはボツになったりお蔵入りした本は山のように。ここに挙げた本も、その後再検討して形になったものもあれば、塩漬けコースに入ったままのものもあります。

当初、Cocoa Scripting本はえほんシリーズの1つとして、ものすごく入門的に難易度を下げた本にする計画がありました。実際に設計してみると、内容は薄いわ分量は少ないわ、その割に誰でもわかるような内容ではないわで、なかなか辛いものがありました。

この本はボツになりましたが、のちにCocoa Scripting Courseで図を中心に説明するという、ボツになった元の本のコンセプトが引き継がれています(分量を減らすとろくなことにならないので、必要な量を書くことに)。

Cocoa Scripting本については、文章で説明するバージョンも試作してみたのですが、書いているうちにAppleへの恨みつらみを書きなぐっていたり、読んでみると書いた自分でも眠くなったりで大変でした。

NumbersとPagesを連携させる本です。最終的にはNumbers上の住所録をもとにPagesのレイアウト上にデータを差し込んでPDF書き出しするとか、プリンタで印刷するといったレベルを考えていました。これも、えほんシリーズの1冊として考えていたので、分量を抑えるのが大変でした。分量を抑えることは、とても大変です。

ボイスコマンドで音声認識によってAppleScriptを実行する本です。企画内容は悪くないのですが、どの程度のテーマをこなせると読者が納得するのかが設定しにくいところです。もう少し、どのあたりで初心者が詰まるかを調査できると「思いつき」から「企画」のレベルに昇華できるのではないでしょうか。

これは思いつきレベルの内容ですね。企画を出す場合には、1冊分だけでなくシリーズ構成で数冊分を出すことになりますが、その中の1つです。QuickTime Player 7であれば説明する意義と分量があるのですが、現行のQuickTime Playerだとできることが少なくて、なかなか困ります。この本で予定していた内容はCocoa Scripting Course本のNSImage編あたりで反映されることになるでしょう。

えほんシリーズの一環として企画していた頃のFileMaker Pro本です。画面図を中心に少ないページ数で構成すると、「言及しないこと」が多すぎて不満を抱えてしまうことでしょう。結局、えほんシリーズではなく「徹底解説シリーズ」にチェンジして、必要な内容はひととおり説明する方向に変更しました。また、オリジナルの企画どおり画面図を多用してわかりやすく説明するというコンセプトは維持されることに。

iPhoneからMac上のAppleScriptを操作するEntanglerやEventScriptsの解説本です。企画自体は悪くないと思うのですが、レベル設定がなかなか難しい内容です。付録のスクリプトをただiPhoneから実行できるようにする、というあたりが落としどころだと思いますが、スクリプトも何も知らない人に説明するのは大変ですし、スクリプトを知っている人に説明するといってもなかなかレベル設定が困難です(コピペでしか書けない人から、自分ですべて書ける人まで、Scripterといってもさまざまです)。

えほんシリーズのCotEditor本です。説明すべき内容が多くないので、1冊分の分量が多くありません。基礎だけだと32ページにもならないでしょう。なので、企画としては他のScriptableなエディタもまとめて説明するような本になることでしょう。単に企画を練り回している段階ではあるものの、ちょっといい感じになった気がします。

表紙だけ作ってみてなんとなく満足してしまいましたが、Pixelmator Proの操作がよくわからないので(簡単な編集とかAppleScriptから操作してまとまった画像処理を行わせるための部品としてしか使っていない)、「Photoshopで行う操作がPixelmator Proだとどう操作するか、わかるといいのに」と考え、こんな本を表紙だけ作ってみました。自分としては読んでみたいですね。

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

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

Google Search

Popular posts

  • macOS 13, Ventura(継続更新)
  • アラートダイアログ上にWebViewで3Dコンテンツを表示(WebGL+three.js)v3
  • UI Browserがgithub上でソース公開され、オープンソースに
  • macOS 13 TTS Voice環境に変更
  • Xcode 14.2でAppleScript App Templateを復活させる
  • 2022年に書いた価値あるAppleScript
  • ChatGPTで文章のベクトル化(Embedding)
  • 新発売:AppleScriptからSiriを呼び出そう!
  • iWork 12.2がリリースされた
  • 従来と異なるmacOS 13の性格?
  • 新発売:CotEditor Scripting Book with AppleScript
  • macOS 13対応アップデート:AppleScript実践的テクニック集(1)GUI Scripting
  • AS関連データの取り扱いを容易にする(はずの)privateDataTypeLib
  • macOS 13でNSNotFoundバグふたたび
  • macOS 12.5.1、11.6.8でFinderのselectionでスクリーンショット画像をopenできない問題
  • ChatGPTでchatに対する応答文を取得
  • 新発売:iWork Scripting Book with AppleScript
  • Finderの隠し命令openVirtualLocationが発見される
  • macOS 13.1アップデートでスクリプトエディタの挙動がようやくまともに
  • あのコン過去ログビューワー(暫定版)

Tags

10.11savvy (1101) 10.12savvy (1242) 10.13savvy (1390) 10.14savvy (586) 10.15savvy (434) 11.0savvy (277) 12.0savvy (185) 13.0savvy (55) CotEditor (60) Finder (47) iTunes (19) Keynote (98) NSAlert (60) NSArray (51) NSBezierPath (18) NSBitmapImageRep (20) NSBundle (20) NSButton (34) NSColor (51) NSDictionary (27) NSFileManager (23) NSFont (18) NSImage (41) NSJSONSerialization (21) NSMutableArray (62) NSMutableDictionary (21) NSPredicate (36) NSRunningApplication (56) NSScreen (30) NSScrollView (22) NSString (117) NSURL (97) NSURLRequest (23) NSUTF8StringEncoding (30) NSView (33) NSWorkspace (20) Numbers (56) Pages (37) Safari (41) Script Editor (20) WKUserContentController (21) WKUserScript (20) WKUserScriptInjectionTimeAtDocumentEnd (18) WKWebView (23) WKWebViewConfiguration (22)

カテゴリー

  • 2D Bin Packing
  • 3D
  • AirDrop
  • AirPlay
  • Animation
  • AppleScript Application on Xcode
  • beta
  • Bluetooth
  • Books
  • boolean
  • bounds
  • Bug
  • Calendar
  • call by reference
  • Clipboard
  • Code Sign
  • Color
  • Custom Class
  • dialog
  • drive
  • 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
  • Machine Learning
  • Map
  • Markdown
  • Menu
  • Metadata
  • MIDI
  • MIME
  • Natural Language Processing
  • Network
  • news
  • Noification
  • Notarization
  • Number
  • Object control
  • OCR
  • OSA
  • PDF
  • Peripheral
  • 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)
  • 未分類

アーカイブ

  • 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