[AHK基礎] AutoHotkeyはどんな言語か
2018/04/07
私が愛して止まないスクリプト言語「AutoHotkey」を紹介します!
AutoHotkeyとは
AutoHotkeyは、Windows専用のスクリプト言語です。(一応Windows以外で動かすプロジェクトもありますが、発展途上です。)
「AutoHotkey」という名前の通り、元々はキーボードのホットキー(キーボードの特定の入力を別の操作に割りあてる)を設定するために作られた言語でした。しかし拡張が繰り返されて、ホットキー以外にもファイル操作やウインドウ操作、文字列処理やGUI表示など、一般的なプログラミング言語が備えるべき各種機能が実装されています。
歴史的には、スクリプト言語「AutoIt」から分化して作られました。思想や拡張の方向が違ったために(だから分化した)、現在では結構毛色の違う言語になっています。
私はAutoHotkeyを使い始めて早7年です。今では手足のように使えるようになったので、とても快適です。
AutoHotkeyの特徴
AutoHotkeyの特徴は、以下の4点が挙げられるでしょう。
スクリプト言語 | 厳密な型変換や変数宣言を必要とせず、手軽に書けます。 AutoHotkeyをインストールしていれば、コンパイル不要で実行できます。 |
キーボード関連機能の充実 | キーリマップ(キーの置き換え)やホットキーなどが非常に容易に記述できます。 |
GUIを作成できる | 簡単なGUIが作成できます。 |
コンパイル可能で単独動作できる | コンパイルしてEXE形式にすれば、素の環境(Windowsのみ)で実行できます。 |
記述の容易さ
例えば、1から100までの整数を合計するなら、こんな風に書きます。
Loop, 100 sum += A_Index MsgBox, 合計は%sum%
これをテキストエディタで保存して、「Sample.ahk」にしてダブルクリックすれば、
とメッセージウィンドウが表示されます。
これが、例えばスクリプト言語でないC言語なら、
#include <stdio.h> main() { int i, sum=0; for(i=1; i<=100; i++){ sum += i; } printf("合計は%d\n", sum); }
こんな風に書いて、
gcc -o sample.exe sample.c
とかってコンパイルして、sample.exeを実行してやっと結果が得られます。しかも結果はコマンドライン。
基本ライブラリの導入,メイン関数,変数宣言,初期化などが不要なので、ちょっとしたプログラムならササッと書けてしまいます。
こういった記述の容易さは、AutoHotkeyに限らずスクリプト言語全般に言えることです。AutoHotkeyも簡単ですよということです。(メッセージボックスを表示するくらいならVBScriptあたりも簡単ですね。)
記述が簡単なことの欠点は、動作の厳密さが保証できないことと、多人数プログラミングが難しいことです。自分一人で便利ツールを作る分には十分です。
キーボード関連機能
AutoHotkeyはキーボード関係にめっぽう強いです。
キーの置き換え
LAlt::BS
と書いて実行すれば、左AltキーがたちまちBackspaceキーの役をこなしはじめます。
ホットストリング
::ahk::AutoHotkey
と書いて実行すると面白いことができます。「ahk」と打ってSpaceかEnterを押すと、「ahk」が削除されて代わりに「AutoHotkey」と入力されます。この間0.1秒。
キーバインド
無変換を押しながらNを押したらメモ帳を起動するなら、これだけ。
vk1Dsc07B & n::Run, notepad.exe
「vk1Dsc07B」が無変換キーを表し、「&」がながら押しを表しています。
GUI作成
GUI関連コマンドを使えばGUIの作成や制御も簡単に行えます。例えば、以下の記事で紹介したソフトもAutoHotkeyで書いています。
このソフトウェア、制御部分などすべて含めても120行程度です。GUI関連部分は40行くらいしか使っていません。
かつてはWebサイトすらAutoHotkeyで作ったGUIソフトで管理していました。
大変だったので今ではWordPressに乗り換えてしまいましたが、これくらいの規模のGUIが作れるということです。
コンパイルすれば配布できる
AutoHotkeyは基本的には「.ahk」を直接実行する言語(インタプリタ言語)ですが、コンパイルして実行ファイル形式にすることもできます。
実行ファイル形式になっていれば、AutoHotkeyをインストールしていない環境でも実行可能です。GUIもちゃんと表示されますし、適切にEXEに埋め込めば、画像やファイルなどを含めることもできます。
実行時に何にも依存しない
そして結構重要なのが、何にも依存しないということです。
Windows用にGUIプログラミングをするなら、Visual Studio系の言語、Visual BasicやVisual C#などが有名です。しかし、Visual系言語はEXEにコンパイルしてあっても、ランタイムライブラリ「.NET Framework」が無ければ基本的に実行できません。これが結構厄介です。Windowsには元々.NET Frameworkが導入されていますが、OSのバージョンごとに、.NET Frameworkのバージョンはバラバラです。
元々入っていたり、インストールできるが入ってはいなかったり。自分が使うだけならいいんですが、配布するなら他のOSでも実行できるようにしないといけません。PC初心者に渡すときや、初期化済みWindowsに入れるときに、.NET Frameworkの導入が伴うのは結構な手間です。
その点AutoHotkeyは完全に単独で実行できるので安心して渡せます。
調べてみると、こうやってランタイムライブラリに依存しない言語でまともなGUIを作れるものって意外と無いんですよね。Javaもインストールが必要ですし、RubyだとTcl/Tkを用意しないと開発できないとか、GUIのデザインが古くさいとか。
GUIをサクッと書いて多人数に配布する用途には持ってこいです。
ガッツリ複雑なGUIを書くならVisual C#などをお勧めしますが、私はあまりにAutoHotkeyが手に馴染みすぎて他の言語はほとんど使わなくなってしまいました。
まとめ
簡単なツールをサクッと作りたいならAutoHotkeyはとってもおすすめですよ!