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

2025年に書いた価値あるAppleScript

Posted on 12月 29 by Takaaki Naganoya

2025年に使用していたmacOS:macOS 15+macOS 26

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

2008年から10年ほど運営を続けてきた旧「AppleScriptの穴」Blogが2018年の年初にホスティング会社との行き違いでシャットダウンされ、ゼロから再構築したのが現行の「AppleScriptの穴」Blogです。

→ 2018年に書いた価値あるAppleScript
→ 2019年に書いた価値あるAppleScript
→ 2020年に書いた価値あるAppleScript
→ 2021年に書いた価値あるAppleScript
→ 2022年に書いた価値あるAppleScript
→ 2023年に書いた価値あるAppleScript
→ 2024年に書いた価値あるAppleScript

旧「AppleScriptの穴」Blogの内容については、データベースから抜き出したデータをもとに再構成した「Blogアーカイブ本」にまとめています。

AppleScriptの穴Blogアーカイブvol.1
AppleScriptの穴Blogアーカイブvol.2
AppleScriptの穴Blogアーカイブvol.3
AppleScriptの穴Blogアーカイブvol.4
AppleScriptの穴Blogアーカイブvol.5
AppleScriptの穴Blogアーカイブvol.6

本Blogは、もともとは、2000年代初頭に開発していた「人工知能インタフェース Newt On」のソースコード部品バラバラにして掲載し、用いた部品を個別にメンテナンスすることを「隠れた目的」としていました。また、Scripter間のノウハウの共有を推進することも目的としています。

AppleScript以外の一般的なテーマの記事については、こちらにいろいろ投稿しています。

https://note.com/140software/

前述のとおり、2018年1月にいちど本Blogは消えていました。その際に、「本Blogが存在しない場合にはどのような現象が起こるのか」を観察。その結果、AppleScriptについて知識を持たない人たちが好き勝手に「嘘」を流布しはじめる、という現象が観測されました。本Blogはそうした「嘘つき」を封じ込めるためのキーストーンとしての役割を果たしているといえます。

電子書籍の発行状況

本Blogを公開しているだけでは、ホスティング費用やドメイン費用がかかるだけで、何も収益が生まれません。そこで、本Blog+αの情報を整理してまとめた電子書籍を発行しています。本Blog読者のみなさまにおかれては、電子書籍を購入することで本Blog運営を支えていただけますと幸いです。

電子書籍の2025年末における刊行は、現時点で98冊。年間4冊となっています。

AppleScriptセキュリティ実践ガイド
AppleScript+Xcode GUIアプリソース集
AppleScript最新リファレンス v2.8対応 v2.0
スクリプトエディタScripting Book with AppleScript

目下、既刊本の最新環境へのアップデートを実行中です。

2025年に書いたAppleScriptの中で注目すべきもの

Blogよりも電子書籍用(掲載用、作業用)にかなりまとまったScriptを書いていたため、そちらの充実度が光ります。とはいえ、かなり技術的に重要なScriptをBlogにも多数書いています。ChatGPTを用いてScriptの作成を行なってみたところ、技術的な難易度が高い割につまらないとか、書くのが面倒くさいとか、すでに存在するものを作り直したくないといった「人間が書くのは気が乗らない」ものを中心に、Webブラウザとのやりとりだけで書けているので

2025年1月
NSObjectのクラス名を取得 v2.1

NSObjectのクラス名を取得 v2.1

Script Debuggerの開発が終了したことを受けて、Xcode上でAppleScriptObjCによるAppleScript開発環境の構築の可能性や、Xcode Projectの作業性の向上をねらって、とりあえずログに情報を出すためのまともな手段を用意しておこうと考えたものです。

こうした試みの成果により、Xode上でもともとのlogコマンドのように情報の確認が行えるようになってはいるものの、やはりlogコマンドが使えないと取りきれない(特定し切れない)バグなどもあるので、logコマンドの正常化には期待を寄せたいところです。

2025年2月
画像をAppleScriptでアスキーアート化

画像をAppleScriptでアスキーアート化

これは、Script内容自体は割とどうでもいいのですが、ChatGPTで高度なScriptを書かせる実験の一環です。やればできることはわかっていつつも、めんどうくさいので書きたくない種類のScriptをChatGPTに書かせてみました。

かなり使えるという手応えが得られたので、一歩進めてObjective-CのプログラムもChatGPTに書かせ、書籍のオマケ用に利用しています。

2025年3月
NSIndexSetを作成し、各index要素を取り出す

NSIndexSetを作成し、各index要素を取り出す

これも、ChatGPTに書かせたものです。必要に迫られて書く必要があったものに対して、ChatGPTを利用。Cocoa Scriptingのプログラムは、割とAPIの仕様を確認して、それに合わせるだけの内容のものが多いため、「プログラミングというよりも作業」だと感じていました。つまり、Cocoa ScriptingはChatGPTなどのLLMとの相性がいいと言えるかもしれません。

2025年4月
macOS 15.5で特定ファイル名パターンのfileをaliasにcastすると100%クラッシュするバグ

macOS 15.5で特定ファイル名パターンのfileをaliasにcastすると100%クラッシュするバグ

自分で書いたScriptという話ではなく、macOSのバグの話です。これをレポートするために、割といろいろ書いて試行錯誤しました。一応、macOS 15.5のRelease版で修正されたしたが、ちゃんと検証してからReleaseしてほしいところです。

Xcode上のAppleScriptObjCのプログラムから、Xcodeのログ欄へのメッセージ出力を実行

Xcode上のAppleScriptObjCのプログラムから、Xcodeのログ欄へのメッセージ出力を実行

Xcodeのログに出力するObjective-Cのプログラムを見つけたので、以前に作ったものと組み合わせてかなり便利に使えるようになりました。

2025年5月
macOS 26, Tahoe

macOS 26, Tahoe


Beta登場時に「Finderにempty trashコマンドを実行するとエラーになる」バグが発見されており、Release版で修正されていなかったことに驚かされました。

2025年6月
macOS 26, 15.5でShortcuts.app「AppleScriptを実行」アクションのバグが修正される

macOS 26, 15.5でShortcuts.app「AppleScriptを実行」アクションのバグが修正される

CotEditor用ブロック崩しゲーム

CotEditor用ブロック崩しゲーム

ChatGPTに書かせてみたものですが、CotEditorの最前面の書類ウィンドウの内容をAppleScriptで書き換えてゲームを実現してみました。

2025年7月
ASCII ARTで円を線で描く
ASCII ARTで円を塗る
ASCII ARTで直線を引く v3.1

テキストで作成した仮想画面に対して各種描画を行うものです。ChatGPTに書かせて手動で高速化を行なっています。

2025年8月
開始時刻から終了時刻までhh:mm形式の文字列を15分単位でリスト出力

開始時刻から終了時刻までhh:mm形式の文字列を15分単位でリスト出力

1か月分の(奥様の職場の)勤務パターンの視覚化、勤務形態を自動で処理できないかと考えて試作したものです。

2025年9月
暗黙のuseコマンド

暗黙のuseコマンド



個人的に忙しかったのですが、海外の掲示板で聞かれた内容についてまとめたものです。この記事を書く義理は400%なかったのですが、まとめておきました。掲示板にリンクURL を置いておき、あとは勝手に質問者が翻訳サービスなどを使って翻訳すればよいのでは? と、考えてそのまま放っておいたら、掲示板のアカウントが「日本語でコメントを書いた」などの理由で停止されていました。まったくおかしな理由でアカウント停止にされたので、その掲示板のことは忘れることにしました。なので、その掲示板にはログインできないし、メッセージを受け取ることもできません(何回書いても理解してもらえないようなので困っております。どうして被害者の自分が何回も無駄な説明をしなくてはならないのでしょう)。

macOS 15.xで自作AppleScriptライブラリの一部がScript Menuから使えなくなったので修正

macOS 15.xで自作AppleScriptライブラリの一部がScript Menuから使えなくなったので修正

割と困って、いろいろ書き換えてテストしていたのですが……どうやら、JXAをサポートするためにパラメータ(enum)をas stringでcastしていた部分が、スクリプトメニュー上で動かした場合にエラーになっていました。つまり、「AppleScriptライブラリでJXAをサポートしてはいけない」というのが現状のようです。

JXAはバージョン1.1でアップデートが停止しているため、動いても動かなくても知らないよという存在に見えます。

指定フォルダ内から指定拡張子のファイルを取得し、エイリアスだったらオリジナルのパスをPOSIX pathで取得

指定フォルダ内から指定拡張子のファイルを取得し、エイリアスだったらオリジナルのパスをPOSIX pathで取得

フォルダにScriptを入れて動作を行うプログラムにおいて、Scriptのエイリアスを入れておけば処理できるようにしたかったので書いたものです。

各種GUIアプリ書類のオープン速度を向上するためにUIアニメーションの一時停止を

各種GUIアプリ書類のオープン速度を向上するためにUIアニメーションの一時停止を

これは、久しぶりに大笑いしました。たったこれだけのささいな処理を追加するだけで、書類のオープン/クローズをともなう処理において、1書類あたり0.2秒、400書類で80秒も処理速度が向上。つまり、M1 MacでM4 Macと同等の速度を叩き出すことが可能になるわけで、実に爽快な話です(M4で実行すればM4なりに速くなります)。

スクリプトメニューでAirDropが使えない?

スクリプトメニューでAirDropが使えない?

macOS 15/26上のスクリプトメニューに対してAppleの魔の手が迫ってきました。セキュリティ上の制限がさらに厳しくなり、スクリプトメニュー内でAirDropを呼び出すAppleScriptの実行が妨害されるようになりました。

2025年10月
指定日が所属する週のうち、最終日の日付を求める v2

指定日が所属する週のうち、最終日の日付を求める v2

かなり込み入ったカレンダー計算系Scriptです。ただ、書いた甲斐はあったと思います。
カレンダー計算系のScriptは「Newt On Project」の遺産であり、自然言語とAppleScriptを組み合わせた処理を行ううえで、欠かせないものです。

FaceTimeカメラから取り込み v1

FaceTimeカメラから取り込み v1

Cocoaの機能を利用して、FaceTime Cameraから静止画を取り込むものです。いま、ちょうどXcode上で同様のテストを行なっているのですが、なかなか取り込めません。

タブでインデントしたテキストをOutLineViewで表示できるデータ形式に変換 v4(3階層対応)

タブでインデントしたテキストをOutLineViewで表示できるデータ形式に変換 v4(3階層対応)

NSOutlineViewをアラートダイアログ上に表示する「箱庭ダイアログ」系のScript Librariesを準備していますが、単にOutlineViewを表示できるだけでなく、タブでインデントしたテキストデータの構造を読み取ってOutlineViewを表示できるようにする必要性を感じて作成したものです。これも、めんどくさかったのでChatGPTに書かせて添削を行ないました。

階層を指定したlistからOutLineViewで表示できるデータ形式に変換 v4(3階層対応)

階層を指定したlistからOutLineViewで表示できるデータ形式に変換 v4(3階層対応)

1つのScriptを書けたからといって、運用上すべてのニーズを満たせるわけでもありません。複数のやりかたが存在するので、複数のデータ型でパラメータを受け取る準備はしておく必要があります。タブでインデントしたテキストが適しているパターンもあれば、リストで指定するのが適していることもあります。

macOS 15.7.2 スクリプトメニューから実行できなくなった地図系ライブラリ?

macOS 15.7.2 スクリプトメニューから実行できなくなった地図系ライブラリ?

NSAlertダイアログにさまざまなGUI部品を載せて利用する「箱庭ダイアログ」シリーズにおいて、地図を表示するものは実に使い勝手のよい部品です。ただし、スクリプトメニューから実行したときにMkMapViewを表示するScriptが実行できなくなっていました。とはいうものの、すべてが実行できなくなっているということではなく、一部に表示できるものもあり……まだ問題点の洗い出しが済んでいません。住所ジオコーダーまわりは実行できない環境が多いのですが、より機能が低いライブラリで実行できなかったりと、なかなか理解しにくいものがあります。

2025年11月

YouTubeムービー再生実験 v2c

YouTubeムービー再生実験 v2c

YouTube側の仕様が変わったことで、「display youtube」ライブラリを書き換える必要が出てきました。こうした箱庭UIライブラリを公開している人は(Shaneのライブラリは方向性が違いすぎるし)ほかにいないので、なかなか苦労させられます。幸いにしてedama2さんの助言を得られて最小限の修正(Local Web Serverを使用しない)で済みました。

Keynote書類上の選択中の2つのテキストアイテムで、左を比較元、右を比較先として行単位の差分を比較先に赤くマーク

Keynote書類上の選択中の2つのテキストアイテムで、左を比較元、右を比較先として行単位の差分を比較先に赤くマーク

diffとほぼ同じ動作をGUIアプリ上のオブジェクト内のテキスト同士に対して実行できています。Keynote版とPages版を用意しました。こういう道具の必要性を感じていたので、たいへん便利です。これまで、個人的に「車輪の再発明」をなるべく避けていましたが、自分で書くのでなければ再発明上等。ChatGPTは、他の処理系や言語で書かれた既存の処理をAppleScriptで再現するのが一番得意に感じます。

(Visited 1 times, 1 visits today)
Posted in news | Tagged 15.0savvy 26.0savvy | Leave a comment

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

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

Google Search

Popular posts

  • macOS 26, Tahoe
  • Script Debuggerの開発と販売が2025年に終了
  • 【続報】macOS 15.5で特定ファイル名パターンのfileをaliasにcastすると100%クラッシュするバグ
  • NSObjectのクラス名を取得 v2.1
  • 2024年に書いた価値あるAppleScript
  • Xcode上のAppleScriptObjCのプログラムから、Xcodeのログ欄へのメッセージ出力を実行
  • AppleScript Dropletのバグっぽい動作が「復活」(macOS 15.5β)
  • macOS 26, 15.5でShortcuts.app「AppleScriptを実行」アクションのバグが修正される
  • Script Debuggerがフリーダウンロードで提供されることに
  • 指定フォルダ以下の画像のMD5チェックサムを求めて、重複しているものをピックアップ
  • Dock Menu
  • 執筆中:AppleScript最新リファレンスver2.8対応(macOS 15対応アップデート)
  • Claris FileMaker Pro 2025(v22)がリリースされた
  • macOS 15.5beta5(24F74)でaliasのキャスティングバグが修正された???
  • 複数の重複検出ルーチンを順次速度計測
  • Cocoa-AppleScript AppletがRosettaオンで動いた!
  • シンプルな文字置換
  • Excel 指定範囲のセルの上に画像を配置
  • Applicationのactivateを記録する v2
  • Numbersで選択範囲のdateの年を+1する

Tags

10.11savvy (1101) 10.12savvy (1242) 10.13savvy (1391) 10.14savvy (587) 10.15savvy (438) 11.0savvy (283) 12.0savvy (212) 13.0savvy (204) 14.0savvy (159) 15.0savvy (161) 26.0savvy (28) CotEditor (67) Finder (53) Keynote (120) 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 (56) 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
  • Newt On Project
  • 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
  • Scripting Additions
  • 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年12月
  • 2025年11月
  • 2025年10月
  • 2025年9月
  • 2025年8月
  • 2025年7月
  • 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