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

新発売:AppleScript高速化テクニック

Posted on 6月 20 by Takaaki Naganoya

電子書籍の新刊を発売しました。「AppleScript高速化テクニック」です。PDF 86ページ、サンプルAppleScriptのZipアーカイブを添付。

→ 販売ページ

本書は、高速なAppleScriptを書くための実践的なノウハウをまとめた、おそらく世界で初めての、現時点では唯一の書籍です。

AppleScript自体はインタプリタ型の処理系であるため、実行速度はSwiftやObjective-Cなどで書かれたプログラムにスピード面では遠く及びません。

ただし、処理系そのものや周辺環境に対する十分な理解をともなわずに書かれたScriptは、本来期待されるレベルを大きく下回るスピードしか出せません。大変残念なことです。AppleScriptはプログラミング言語というよりも、OSに対するシェルであるとか、一種のアプリケーションとしての性格が強いものです。そこには、明確な「使いこなし」のノウハウが存在しますし、癖もあります。

残念な状態に書かれたAppleScriptのプログラムは、自動車でいえば整備不良、ガス欠で、洗車も行われずに野ざらしになっている状態です。

本書は、いわばそうした残念な状態の自動車に対しての、整備、ガソリン補給、オイル交換や洗車についてご提案するものです。

実機で実際にAppleScriptのプログラムを動かし、実行時間を計測。どの程度速くなるか、そのメリットを数値でご理解いただけることでしょう。

目次

■AppleScriptは遅いのか?

書き方によって速度差が出やすいAppleScript
①大規模データ操作時の固有ノウハウ
②GUIアプリ操作の固有ノウハウ
③各アプリ固有の操作ノウハウ
④適材適所
⑤連携運用できるプログラムなどへの知識
まとめ:AppleScriptは遅いのか?

■遅いScriptを実際に高速化

とても遅くて下手なScriptのサンプル
素人Scriptからの高速化:さまざまな方向から
Script高速化の第一歩は「時間計測」
下手なScriptは、少ないデータ件数では目立たない
高速化ポイント1:一括取得
高速化ポイント1:一括取得
高速化ポイント2:受け取ったデータの保持
高速化ポイント3:受信データの変換
高速化ポイント4:rangeの変換処理を自前で
素人Scriptを高速化①:データ保持方法を変える
素人Scriptを高速化②:通信頻度を減らす

■高速化しやすい処理の傾向

AppleScriptの処理で高速化しやすい箇所
Finderをファイル処理に使わない①
Finderをファイル処理に使わない②
1次元リスト(配列)のソート
1D Listのソート
1D Listのソート
2次元リスト(配列)のソート
2D Listのソート(1/2)
2D Listのソート(2/2)
2D Listのソート
アプリケーションのオブジェクトへのアクセス
画面部品を強引に動かすGUI Scripting
指定の値をクリップボードに入れる
遅くなりがちな処理を避ける
漠然と「遅い」と言われた処理の傾向
スクリプトエディタとAppleScript間の通信①
スクリプトエディタとAppleScript間の通信②

■データ量と処理内容のバランスを取る

複数アクセス方法すべてで実行速度を計測
リスト(配列)データの要素数によって変わる選択肢
1000〜3万件文字列追加+時間計測
まとめて操作できるデータを個別操作
要素が連続する部分をリスト上で検出
まとめて書式設定(1/2)
まとめて書式設定(2/2)
RTF読み取りライブラリ(1/2)
RTF読み取りライブラリ(2/2)
RTF読み取りライブラリ(rtfToDict)の結果
非同期実行モードの利用
Numbersの表のセルを100個埋めるテスト
処理対象に応じて因数分解を行う部品を変更

■処理内容を見直す &使用部品を変える

AppleScriptの速いバージョンのmacOSを選択
処理に使用する部品を変更(乱数生成)
処理に使用する部品と方式を変更
処理モジュールを一体化
使用するマシン構成を変更:複数のマシンで分散処理
使用するマシンを変更:本当に速いマシンを使う

■ランタイム環境の選択

AppleScriptのさまざまな実行環境
AppleScript実行環境の名称を取得する方法
エディタ①
エディタ②
エディタ③
アプレット,ドロップレット①
アプレット,ドロップレット②
メニュー実行①
メニュー実行②
メニュー実行③
その他実行プログラム①
その他実行プログラム②
その他実行プログラム③
アプリケーション内蔵メニュー①
アプリケーション内蔵メニュー②

(Visited 18 times, 1 visits today)

More from my site

  • 新発売:AppleScript基礎テクニック集(17)リスト(配列)新発売:AppleScript基礎テクニック集(17)リスト(配列)
  • 1D Listを2Dに評価してアイテム内の相違点を検出1D Listを2Dに評価してアイテム内の相違点を検出
  • 相対パスを計算で求める相対パスを計算で求める
  • 新発売:AppleScript基礎テクニック集(15)フォルダアクション新発売:AppleScript基礎テクニック集(15)フォルダアクション
  • 新発売:AppleScript基礎テクニック集(14)ファイルサーバーのマウント新発売:AppleScript基礎テクニック集(14)ファイルサーバーのマウント
  • DTKeychainのじっけんDTKeychainのじっけん
Posted in Books news | Tagged 10.14savvy 10.15savvy 11.0savvy 12.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 12が正式リリースされる
  • AppleScriptからショートカット実行&ショートカット内でAppleScriptを実行
  • Xcode 13.2 〜 13.3は有害(正式版でもまだ有害)
  • Intel MacとApple Silicon Macの速度差〜画像処理
  • 2021年に書いた価値あるAppleScript
  • AS Publisher v18
  • AppleScriptによるWebブラウザ自動操縦ガイド
  • Stream Deck Softwareがバージョン5.1.2にバージョンアップ
  • CotEditorで選択範囲の行頭にある数字をリナンバーする v1
  • ドラッグ&ドロップ機能の未来?
  • macOS 12.x上のAppleScriptのトラブルまとめ
  • Shortcuts Eventsでショートカットのインストール+実行
  • Amazon EC2 M1 Macインスタンスが利用可能に
  • マウスの右クリックメニューをカスタマイズするService Station
  • macOS 12.3 beta 5、ASの障害が解消される(?)
  • 不可視プロセスで表示したNSAlertを最前面に表示
  • macOS 12.3 beta4、まだ直らないASまわりの障害
  • AppleScript Version 2.8?
  • 与えられた自然言語テキストから言語を推測して、指定の性別で、TTSキャラクタを自動選択して読み上げ
  • 集中モード(Don’t Disturb Mode)に設定する

Tags

10.11savvy (1102) 10.12savvy (1243) 10.13savvy (1391) 10.14savvy (574) 10.15savvy (416) 11.0savvy (252) 12.0savvy (124) CotEditor (54) Finder (46) iTunes (19) Keynote (90) NSAlert (60) NSArray (51) NSBezierPath (18) NSBitmapImageRep (21) NSBundle (20) NSButton (34) NSColor (51) NSDictionary (27) NSFileManager (23) NSFont (18) NSImage (42) NSJSONSerialization (21) NSMutableArray (61) NSMutableDictionary (21) NSPredicate (36) NSRunningApplication (56) NSScreen (30) NSScrollView (22) NSString (117) NSURL (97) NSURLRequest (23) NSUTF8StringEncoding (30) NSUUID (18) NSView (33) NSWorkspace (20) Numbers (53) Pages (33) Safari (38) Script Editor (17) WKUserContentController (21) WKUserScript (20) WKUserScriptInjectionTimeAtDocumentEnd (18) WKWebView (22) WKWebViewConfiguration (22)

カテゴリー

  • 2D Bin Packing
  • AirDrop
  • AirPlay
  • Animation
  • AppleScript Application on Xcode
  • 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
  • History
  • How To
  • Icon
  • Image
  • Input Method
  • Internet
  • iOS App
  • JavaScript
  • JSON
  • JXA
  • Keychain
  • Keychain
  • Language
  • list
  • Locale
  • Machine Learning
  • 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
  • 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)
  • 未分類

アーカイブ

  • 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