AutoHotkey(オートホットキー)
〜超ウルトラスーパーキーボードランチャー?〜

Volume080:2006年7月13日(木)
なんと言っていいか、非常に紹介しづらいフリーソフトです(^^;
ツールインサイドでは、結構マニアックなソフトも紹介してきましたが、その中でも1、2位を争うマニアックなソフトかもしれません。
一応、「キーボードカスタマイズ+キーボードランチャー+スクリプトプログラミング環境」的なソフトウェアです。
ですが、なにしろその機能規模が大きすぎてとても紹介しきれるものではありません。
ですので、詳しい使い方は、
AutoHotkeyを流行らせるページ→http://lukewarm.s101.xrea.com/
あたりを参考にしていただきたいのですが、AutoHotkeyの存在意義がよく分からない方も多いのではないでしょうか?
何を隠そう、筆者もその一人だったのですが(^^;
単純に、「キーボードカスタマイズ+キーボードランチャー+スクリプトプログラミング環境」であれば、それぞれの単機能のソフトを組み合わせることで、AutoHotkeyとだいたい同じことができるように思えます。
つまり、おおざっぱに表にすると以下のようになるわけです。
機能要件 ソフト名
キーボードのキー割り当てを変更する AutoHotkey Chgkey
猫まねき
altIME
キーボードランチャー機能 ShortcutExecutor
猫まねき
ご注文はお決まりですか?
Moonlight
スクリプトによるOS/アプリケーションのコントロール UWSC
ロケットマウス
WSH(Windows標準)


【AutoHotkeyのメリット】

ところが、実際にAutoHotkeyを使ってみると、AutoHotkeyがオールインワンであることは、実はあまり重要なことではないことがわかります。
筆者の勝手な想像ですが、AutoHotkeyは機能を追加することによってオールインワンになったのではなく、キーボードをフッキングする(キーボードの入力を乗っ取る)際の高い柔軟性/汎用性を追求した結果、オールインワンになってしまった、という気がします。
ここがAutoHotkeyの一番凄いところだと思います。
例えば、キーボードランチャーは、キーの組み合わせを特定の動作に結びつけることはできますが、「一連の操作」を結びつけることはできません。
「一連の操作」というのは、例えば、
・ある特定のキーが連打されたとき
・ある特定の並び順にキーボードが押されたとき(ホットストリング機能)
などです。
AutoHotkeyはこのような特殊な条件でもスクリプトを発動できます。スクリプトを呼び出した後の処理はスクリプト次第なので、それを考えればもっと複雑な条件を記述することもできるわけです。
例えば、
・ある組み合わせのキーが入力された時にメニューを表示し、ユーザの入力に従って処理を分岐させる
ということも簡単にできるわけで、スクリプト次第で可能性は無限大に広がります。

ところで、AutoHotkeyは、スクリプトで複雑な処理が記述ができるのは当たり前ですが、逆に単純な処理も記述できるのが案外素晴らしい。
例えばキーコードを変換するだけとか。
これはつまり、実質的にキーボードのキー割り当てを変更したことになるわけです。
ですので、AutoHotkeyはキー割り当ての変更機能とキーボードランチャー機能は本質的に同じ機能。スクリプト部分に何を書くかの違いだけです。この辺、完全に使用者の意向に委ねられており、それだけにちょっと敷居が高いのは致し方ないところですが、逆にプログラミングの知識がある方にとっては、この汎用性がたまらない(?)。


【AutoHotkeyの実際】

筆者は、それまで使っていたShotcutExecutorからAutoHotkeyに移行しました。
移行したものの、筆者の使い方は基本的に「ShortcutExcutorの代替」のレベルを脱しておらず、AutoHotkeyの力のほんの一部しか利用してないと思います。
そんな筆者が言うのもなんですが、やっぱりAutoHotkeyは使い方が難しいことは否定できない事実です。
AutoHotkeyは英語圏のソフトなので、スクリプト中で日本語文字列を扱うといろいろ不都合や不便なことがあったりします(これは有志が作成したDLLで回避できるようですが→http://www.tierra.ne.jp/~aki/diary/?date=20060111)。
また、スクリプトの文法がかなり独特です。一応、C言語っぽい文法ではあるのですが、パラメータの渡し方が独特で、かつ、パラメータにあまり一貫性がないので、始めは慣れが必要かもしれません。
まあそれでも、基本的にそんなに大規模なスクリプトを書く必要はないと思いますし、もし大規模になるのであれば、UWSCやロケットマウス等の利用を考えた方が無難だと思いますので、これで十分かとは思いますが。


●関連リンク●

AutoHotkeyを流行らせるページ↓
http://lukewarm.s101.xrea.com/
※AutoHotkeyの日本語の解説や、Command Referenceの日本語訳もあり。

AutoHotkey本家(英語)↓
http://www.autohotkey.com/