NaganoyaiTunesLibrary.framework経由でiTunes/Music.appのライブラリのジャンルごとの再生回数を集計するAppleScriptです。10.14.6)で0.7秒程度で終了します。10.15.1で0.6秒程度です。10.15以降(Music.app)でも同様にiTunesLibrary.framework経由でライブラリへのアクセスが行えます。Naganoya2つのレコードのキーの重複を検出するAppleScriptです。10.10以降のAppleScriptでないとプログラムが組めなくなっている今日このごろ。AppleScript(Cocoaの機能を使わない)だけで組めないこともないですが、それだけで半日は費やして数百行のプログラムになってしまいそうです。いうわけで、Cocoaの機能を利用した「ありもの」のルーチンを組み合わせるだけでほぼ完成。2つのレコードのキーの重複計算を行います。いう用途で使うかといえば、パラメータつきのURLに対して追加パラメータを付加したい場合です。URLからレコード形式でパラメータを分離し、追加パラメータ(レコード形式)を足し算する「前」に、2つのレコード間で重複キーがないかチェックする、という用途です。いう話になりますが、それは単に&演算子で加算するだけです。Naganoya指定のテキストをAppleScriptとみなして構文確認して、指定の構文要素が入っていないかチェックするAppleScriptです。scriptすると、一応いろいろ保護機能はあるものの、セキュリティ的にリスクの高い操作になってしまいます。scriptコマンドで実行されてしまったらと思うとゾッとします。ためしに実行してみたら、実行権限がないので実行できないエラーになりましたそこで、文字列をいったんAppleScriptとして評価(構文確認)し、コマンドなどの危険と思われる構文要素が入っていないかどうかチェックするものです。これら、「コマンド」および「追加コマンド」といった構文要素が入っていたらtrueを返します。scriptしてよいかどうか判定できるようにするものです。repChar–リストに入れたレコードを、指定の属性ラベルの値で抽出。Naganoya指定のAppleScriptのテキストを構文確認して、構文的に「変数・プロパティ、サブルーチン名」部分に該当する部分のテキストを取得して、目的のテキストに差し替えるAppleScriptです。Debugger上の生産性を向上させるために書いたものです。Debuggerはいわゆる「デバッグ」段階では役に立ちますが、快適にScriptを書くための機能はほとんどありません。いわゆる、ブレークポイントの設定、プログラムのステップ実行、ステップ実行時の変数値のリアルタイムモニタリング、という「デバッガ」の機能は持っていますが、巨大なScriptを書いたときの特定のサブルーチンを前回実行時に指定したパラメータで再実行して結果を比較といった機能は備えていません(切実にほしー。自分で作りたいぐらい)。記述中のAppleScriptの選択部分の構文要素を検出して特定の構文要素(コメントとか変数名とか)についてのみ処理を行うような機能が用意されていない点が残念です(スクリプトエディタ用は数百本書いて使っているので)。プロパティ文の記述などは毎回同じようなものをコピペで足すだけなので、書き足すのがかったるいと思っていました。そこで、編集中のAppleScriptの範囲から構文要素を考慮して変数名だけ書き換えてくれるといった機能を足してみました。{}実際にメモリ上でコンパイル(構文確認)して、書式付きテキストを取得し、そこから構文色分け設定に基づいて該当する構文要素をピックアップ。該当する構文要素の箇所を置換します。値が近すぎると)エラーになります。先日報告された「RGB以外の色空間の色」で設定してある場合でもRGB色空間に色データを変換して処理しています(まさかCMYKとかグレースケールで色設定しているユーザーがいるとは思わなかったわー)。Debugger上での動作を確認していますが、Applet書き出ししたときにまだ謎なメッセージを出すようです。何か、明示的にメインスレッドで実行する必要のあるものがあったでしょうか。Naganoya指定のAppleScript書類のソースコードを取得し、構文色分け情報をもとにコメント部分の文字列のみを取得するAppleScriptです。Assistant」に入っています)。Cocoaの機能を利用して処理すると、スクリプトエディタを操作せずにAppleScript書類から情報を取得できます。GUIアプリケーションを操作しないぶん、並列処理にも有利です。本Scriptを実行すると、指定のAppleScript書類をバックグラウンドでオープンして、書式情報を取得し、コメントに該当する箇所の文字のみを取得して返します。library)ほんの少し修正することで、ソースコードからコメント部分のみを削除したテキストを取得することも可能です。Debugger上でオープン中の2つのAppleScript書類のうち、名称が同じハンドラ(サブルーチン)の内容同士を比較して、お互いに合っているかどうかをチェックするAppleScriptです。Lib内のフレームワークが呼べないため)。▲本Scriptはスクリプトエディタの環境設定で行うAppleScriptの構文色分け設定色が「RGBカラー」でないとエラーになります。CMYKとかグレースケールカラーで指定して、そのままRGBに変換されずに保持される(CMYK色はアクセスしているうちにRGBに変換されるが、グレースケールは保持される)ため、色空間の判定を行ってRGB色に変換してから処理する必要があります(自分用メモ)スクリプトエディタ上で設定する構文色分け設定をもとに、AppleScriptの構文要素を考慮したハンドラ一覧を作成し、2つのAppleScript書類の間に共通して存在するハンドラ名のハンドラ(サブルーチン)のAppleScriptソースを取得。インデント(tab)を削除したのちに比較を実行。共通名称のハンドラすべてをチェックして、結果を表インタフェースで表示します。初版(v1)では実行するたびに1つのハンドラをチェックしていたのですが、あまりにかったるいので即座にループですべて調べてまとめて結果を表示するようにしました(v2)。Object(JavaScriptでいうところのClosureみたいなもの)で論理分割された同名のハンドラが複数回登場するパターンは想定していません。複数検出するとエラーになります。Debuggerを対象にせずスクリプトエディタを対象にしてもよいのですが、些細な変更で実現できるため、興味のある方はやってみてください。あと、本Scriptは必要に迫られまくって作ったものなので、動作でおかしい箇所があったらぜひぜひご指摘を。個人的には、ハンドラ名称を構文要素を考慮しつつ取得している一方で、ハンドラの内容は単なる文字列検索で取り出しているというあたりにアンバランスさを感じます。10.14.5上のスクリプトエディタで、構文色分け情報を何回設定しても「黒」になるという現象に遭遇したのですが、他のユーザー環境上での再現性については未知数であるため、まだレポートできない状況です。その後、本ツールは強化されて、構文色分け設定にRGB以外の色が設定してあってもRGBに変換して処理する機能や、構文色分け設定を参照したコメント除去機能や、各種書式情報の取得を3倍高速化するカラーキャッシュなどの機能を実装したプログラムに(必要に迫られて)成長しました。Objectの使用は考慮していない。NaganoyaCotEditorで編集中の最前面の書類の本文中から指定桁の数値を抽出して登場回数で度数分布の集計を行うAppleScriptです。テキストで集計していた情報のうち、数値部分の度数分布を計算したいと考え、ありもののルーチンを組み合わせて作ったものです。実行すると、集計対象の数値の桁数を聞いてくるため、適当なものを選択してださい。CotEditorのScriptingの要注意点で、オブジェクト階層を素直に書いて、当該階層のオブジェクトの属性値を取りたいような場合に、そのまま属性を書いても取得できないケースが見られます。it」を書いています。Xcodeが同じような挙動を行うため、注意が必要です。本Scriptについていえば、正規表現でテキストから情報を抽出したりと、一応最低限のレベルはクリアしているものの、いまひとつ満足できません。数字が連続して登場している箇所を抽出し、どれを集計対象にするのかといった分析を冒頭で行ってユーザーに問い合わせしたいところです。現段階では、「桁数を聞く」という頭の悪い実装になっていますが、そのうちどうにかしたいと考えるところです。color)で登場頻度の集計を行って、どの色が何回登場しているかを色プレビューしつつ表示するAppleScriptです。集計をRGB値で数値的に行うことは容易ですが、結局のところ色なんてRGB値で見せられてもわからず、実際に目で見える色で表示しないと判断できません。そのため、アラートダイアログを作成してその上にColorWellで表示しています。Mode)上記サンプル表は本Blog上での説明用のために簡略化した表ですが、実際には数十行の入り組んだNumbersの表を相手にしており、かつ、手作業で色付きセルだけを数えるなんて考えたくもないレベルで頻繁に確認しなくてはならなかったために、本Scriptを作ってみました。valueが返ります。Menuに入れて実行するとアラートダイアログが最前面に出てこないなど、Script書類(.scpt、.scptd)のままで実行すると問題が発生。Menuに入れる場合にはアプレット(.app)書き出しする必要があります。Debugger上でオープン中のAppleScript書類で、選択中の文字列の構文要素名を取得するAppleScriptです。Editorのほうが生産性が上がってしまった今日このごろ。Debuggerにもこれらのスクリプトメニュー・アシスタントで提供している強力な機能を移植可能になるかもしれません。本Scriptはそのための単なる下調べです(実用性は求めていません)。Editorの環境設定で、のように、構文要素をきちんとすべて「別々の色」に指定してあることが必要です。Editor上ではこの色情報をもとに選択範囲の構文要素情報を取得しています(15年以上昔から)。RGB値で1でも違えば別の色なので、何が何でも別の色に設定してください。Debugger上でAppleScript書類をオープンし、なにがしかの文字列を選択。Editorででも)実行すると構文要素名を返します。runsを取得できるわけではないので、選択中のテキストの色情報を取得できません。runs的な情報を強引に取得。Editorの構文要素色分けの情報を取得。Debugger上で選択中の構文要素の名称を取得します。いう強引な力技が日常的に登場しているのが2019年のAppleScript界隈であろうかと。List(配列)に入れた文字要素を文字種類で該当するものだけ抽出するAppleScriptです。文字種類でデータ抽出する、という用途はけっこう多いので、単体で使えるようにしておきました。英字:”A”半角記号:”$”ひらがな:”ひ”カタカナ:”カ”漢字:”漢”で文字種類を指定します。以前のバージョンではありもののルーチンを組み合わせただけなので、全体的に無駄があって処理速度についてはあまり感心できないレベルだったので、若干の高速化を図りました(繰り返し処理部分で無駄な演算を省略)。「ひらがな+カタカナは許容する」というふうに、複数の文字種を許可する例が多いので、これではまだ実用レベルには達していないと思います。Book)のメディアの種別(mediaKind)を集計するAppleScriptです。iTunesLibrary.framework経由でメデイアアイテムの情報にアクセスするため、iTunes.appが起動していてもいなくても関係ありません。2.66GHz)でiTunesに6,871曲の楽曲が存在している状態で、集計に0.01秒程度です。ITMediaItemのmediaKindを取得して種別情報を取り出しました。「楽曲のみ抽出」といった用途にバッチリ向いているようです。10.14でSecurityダイアログが表示されることもありません。Book)のメディアの種別(kind)を集計するAppleScriptです。iTunesLibrary.framework経由でメデイアアイテムの情報にアクセスするため、iTunes.appが起動していてもいなくても関係ありません。2.66GHz)でiTunesに6,871曲の楽曲が存在している状態で、集計に0.01秒程度です。ITMediaItemのkindを取得して種別情報を取り出してみたものの、この文字列情報がローカライズされているのと、あくまでファイル属性の情報を返すため、「楽曲のみ抽出」といった用途には向いていません。10.14でSecurityダイアログが表示されることもありません。Naganoyaスクリプトエディタの最前面のドキュメントを解釈して、CocoaのClass名とEnumを抽出してpropertyに展開して、新規書類に展開するAppleScriptです。いわゆる「AppleScriptの内容を解析して書き換える」AppleScriptです。Classのチェックのために、実際にNSClassFromStringでオブジェクトを作れるかどうかチェックしています。Enumについては、ヘッダーファイルを検索してチェックを行っています。そのため、本AppleScriptは実行環境にXcodeがインストールされていないとEnumチェックが行えません。前バージョンではXcodeのアプリケーションバンドル以下に存在しているヘッダーファイルのパスを計算するときにXcodeが起動されていましたが、本バージョンではXcodeが起動しないように修正しました。propertyを展開するときに、プロポーショナルフォントで画面描画した際の幅を実際に計算して、文字の描画幅のピクセル数順にソートしています。本AppleScriptはEnumの確認のために全ヘッダーファイルを走査しているため、この部分で少々処理時間がかかります。ClassとEnumの確認をキャッシュするようにして、二度目以降は同じ文字列の問い合わせを行わないようにしたいところです。me–置換してはいけないリスト。encoding系はenumの桁数が足りなくてpropertyに代入できない。NaganoyaFinder上で選択中のMarkdown書類を取得し、ファイル名で昇順ソート(A→Z)して、各Markdown書類中のタイトルのうち最もレベルの高い(重要な)ものを抽出し、まとめてテキストにしてクリップボードに転送するAppleScriptです。大量にあるMarkdown書類の本文中から一番重要なタイトルを抽出する作業を......さすがに手作業で行うわけには行かなかったので、AppleScriptを書いて処理してみました。新規に書いた処理はほとんどなく、既存のルーチンの寄せ合わせで構成しています。Finder上でMarkdown書類を選択した状態で本Scriptを実行すると(Markdown書類以外は除外して)、AppleScriptでMarkdown書類を読み込んで(Markdown書類がUTF-8固定なのでUTF-8を指定して読み込み)、正規表現で書類中のタイトルを抽出し、重要なタイトル(#の個数が少ない)をピックアップ。これをすべての書類について行います。処理結果をクリップボードに転送します。最終的には、(手作業で加工して)このようになります。