Igor Proにシェルを導入して作業効率を大幅にアップする

はじめに

Igor Pro上で動くシェルのようなコントロールパネルを作成しました.名前はシンプルにCommandPanelです.

背景

Igor Proはマウスを用いたグラフィカルユーザーインターフェース(GUI)と,コマンド入力によるキャラクターユーザーインターフェース(CUI)の両方を備えた強力なグラフ作成ソフトです.

マウスによる直感的な操作が可能な一方で,シンプルな内部プログラミング言語*1CUIの組み合わせにより,定型処理の自動化を容易に行うことができます.

しかしながら,Igor Proの標準のコマンドラインインターフェースはそれほど便利なものではありません.

f:id:ryotako:20160830212449p:plain

具体的な不満点としては次のようなものがあります.

  • Duplicate, AppendToGraphのような長いコマンドを入力するための入力補助機能(短い別名の設定や入力補完)がない.
  • せっかくコマンドの実行履歴を記録しているのに,それを検索する機能が乏しい.
  • GUI操作の結果もコマンド履歴と同じウィンドウに書き出されるため,コマンド履歴が混沌としやすい.
  • まとめて何かを実行したい場合は.関数を書く必要がある.(V_で始まる名前の変数を一括削除せよ,といった指示はコマンドラインからは出せない.)

Igor ProのGUIは非常に洗練されたものであるだけに,コマンドウィンドウの機能が申し訳ばかりのものであるのは非常に残念です.

解決

CUIでパソコンを操作するための,シェルと呼ばれるソフトがあります.

Windowsでは普段意識することはありませんが,他のOSではbashと呼ばれるシェルがもっともポピュラーなものです. コマンドに短い別名をつけたり,コマンドの入力補完を行ったり,コマンドの実行履歴の検索ができたり,コマンドを展開して複数の処理を一気に行ったり...といった機能により快適なCUI操作を実現しています.

Igor Proでもbashのようなシェルが使えればきっと便利だろう...と思ったので,Igor Pro上にそれっぽいものを作りました.

github.com

使い方

上記のサイトからCommandPanel.ipfをダウンロードして,Igor Proに読み込んでください.

(Igor ProceduresフォルダにダウンロードしてIgor Proを再起動するか,User ProceduresフォルダにダウンロードしてIgor上のプロシージャウィンドウに#include "CommandPanel"と書いてください.)

詳しい使い方は日本語のWiki に記載しているのでそちらをご覧ください.

ここでは,詳しい説明のかわりにCommandPanelを使った便利な操作の例をいくつか紹介します.

コマンドやパス名を補完する f:id:ryotako:20160901012929g:plain 

コマンドやパス名を展開する f:id:ryotako:20160901015356g:plain

コマンド履歴をキーワードで絞り込む f:id:ryotako:20160901015627g:plain

おわりに

Igor Proにシェルのようなものを作りたい,というアイデアは以前からあって*2試行錯誤の末このような形にまとまりました. 現在では,これなしのIgorには戻れない,というレベルで依存しまくっています.

ただしこのプロシージャ,Igor Pro7では動きません.これが原因で,Igor Pro6からIgor Pro7に移行できずにいたりするのですが...

*1:実はこのIgor Pro内部プログラミング言語の名前がわからないので.もし知っている方がいれば教えて欲しいです.GitHubではIGOR Proという項目に分類されていますが...

*2:実際はunite.vimやpecoのような絞り込み可能なインターフェースがIgorにも欲しい! という欲求が同時にあって,今のような形に.