CotEditor向けの機能強化Script群「CotEditor PowerPack」は、自分たちが便利そうだと思った機能をびっしりと敷き詰めて実装してみました(基礎的なScriptingについては、同梱の基礎的なサンプルスクリプト集「BasicPack」にまとめています)。PowerPackを実際に作ってみたら、メニューで項目が増えたときに絵文字によるラベリングが割と有効だという発見ももたらしました。
ただ、PowerPackがPowerPack単体で存在するはずもなく、Piyomaru Softwareが作成している各種プログラムとも密接な関係にあります。歴史的な経緯の中で先行ソフトウェアの影響も受けていますし、さまざまなプロジェクトの成果物や技術の実証の場として利用しているからです。
Tanzakuの部品を利用
具体例を言うと、Tanzaku用に開発した コマンド解析用 簡易日本語形態素解析エンジン「easyJParse」。これはAppleScriptだけで記述した80行ほどの規模の形態素解析プログラムです。これをコマンド解析用以外の、伏せ字処理のプログラムに使っています。
「航空機の部品を炊飯器に転用する」ような違和感はありますが、想定外の用途に部品を使いまわすと意外な発見があります。easyJParseはコマンド解釈用の日本語Parseプログラムであり、長大な文章を解釈するようには実装していません。そこに実際に数十〜数百KBのサイズの日本語テキストを与えてParseするとどうなるかという実験が行えました。実際、ループで文章単位のテキストを与えているため、クラッシュしたり迷走したりすることなく処理できました(それなりに時間はかかりましたが)。データの持ち方をより大規模なデータを与えても大丈夫なように備えていれば、ある程度の大規模データにも備えることができるでしょう。
コマンド構造は日本語音声認識コマンダーの影響
多くのコマンドから全体を構成するノウハウは、2003〜2004年ごろに作っていた日本語音声認識コマンダー(いまのAIスピーカーみたいなもの)「符令韻投句」(ぷれいんとーく)で培ったものです。各コマンドの粒度については小さいほうがいいのか大きいものがあるべきかなどまだ実験中ですが、PowerPackの場合には「細かいコマンドを寄せ集めるとどうなるか」という実験を行なってみています。
Piyomaru Script Assistantに影響
スクリプトエディタの編集エリア上でコンテクストメニューを表示させて呼び出すScript Assistantは、Apple純正のものがOSにデフォルトで入っていますが、網羅性がいまひとつで実用性もさっぱりです。
そこで、Mac OS X 10.3から4の時代にこれを自分に合わせてすべて書き直し、さらに書籍のオマケに出すために網羅性を高めたものが現在配付中のPiyomaru Script Assistantです。
Piyomaru Script AssistantのScriptのうちmacOS 10.13で動かなくなってしまったものがいくつかあり、また、内容についても更新の必要を(さすがに2006年ごろに作ったものなので)感じたため、こちらも強化を行なっています。
さらに、PowerPackで積み重ねた実験結果をPiyomaru Script Assistantにフィードバック。CotEditorのPowerPackで培ったメニューにおける絵文字の活用ノウハウが生かされており、また、初心者に違和感なくCocoa Scriptingの部品を使ってもらえるような配慮を行っています(Cocoaの機能をまったく使わないVanilla Scriptの中にCocoa ScriptingのScriptingモジュールを埋め込む格好)。
そもそも、本Blogがスタートした経緯そのものが、すべてAppleScriptで記述した人工知能インタフェース「Newt On」(文字版のSiri)の内部ルーチン(部品)のメンテナンスとか共有が目的だったので、Piyomaru SoftwareのプログラムはおしなべてNewt Onの影響を受けていたり、そのものの部品を使っていたりもします。
これらの技術や経験もすべてTanzakuに向けて蓄積されているところです。