AutoHotkey

AutoHotkeyとは、Microsoft Windows上で動作するユーティリティソフトウェア、スクリプト言語である。

概要 
AutoHotkey独自のプログラミング言語(マクロ言語)を用いてコンピュータを制御することができる。「AutoHotkey」という名称から想像できるように、当初はキーボードのホットキー(ショートカットキー)をカスタマイズすることを目的として開発されたが、ユーザーの要望を取り入れる形で開発が進むにつれスクリプト言語と分類されるほどに膨大な機能が実装され、コミュニティも大きなものとなっている。

GPLでライセンスされたオープンソースのフリーソフトウェアである。

AutoHotkey自体のソースコードはC++で書かれており、Microsoft Visual Studio Expressでコンパイルすることができる。

特徴
変数、関数、ポインタ、再帰、APIコール等一般的なプログラミング言語と同等の機能が用意されており、高度な制御が可能。

基本的な制御は次のようなものがある。

 プログラムの起動、終了
 ウィンドウ表示の制御
 ファイルの開閉
 キー入力の送信
 マウスのクリック、マウスカーソルの移動
 タイマーによる一定間隔での処理

これらを組み合わせて、次のような処理を行わせることができる。

キー配列を、QWERTY配列からDvorak配列などの配列に再割り当てする
よく使うファイル名などの文字列をショートカットキーで入力する
コンテストや無料サンプルの申し込みフォームに、名前や住所などを自動で記入する
キーボードやジョイスティックでマウスカーソルを操作する
簡単なキー入力でプログラム、文書、ウェブサイトを開く
 Windowsのコントロールキーを使ったデフォルトのコマンドをEmacs相当のものに上書きする
電子メールの本文やインターネットコミュニティの書き込みに署名を挿入する
非アクティブなウィンドウをショートカットキーで操作する
システムを監視し、不要なプログラムを自動的に終了させる
、システムスキャン、バックアップの自動実行をスケジュールする
オンラインゲームでの繰り返し操作を自動化する（オンラインゲームの利用規約に違反することもあるので注意)

GUIを自作しオリジナルのウィンドウを作ることも可能。

スタンドアロン実行 
通常、Autohotkey言語で書かれたスクリプトを実行するには、コンピュータにAutohotkeyがインストールされている必要がある。しかし、付属のコンバートソフトウェアでスクリプトを実行ファイル化することでスクリプトをスタンドアロンで実行することができる。

スクリプト例
以下のスクリプトでは、CtrlキーとAltキーが入れ替わる。

LCtrl::Alt
LAlt::Ctrl

以下のスクリプトでは、Googleで特定の語や文字列を検索することができる。任意のアプリケーションで文字列をクリップボードにコピーした後に  を押すと、指定されている既定のウェブブラウザが起動し、コピーした文字列で検索が行われる。この操作を行うキーは、スクリプトを変更すれば変更可能。

#g:: ; Win+g
   Run https://www.google.com/search?q=%clipboard%
Return

「afaik」と入力すると自動的に「as far as I know」に置き換わるホットストリングの作成に必要なスクリプトの例を以下に示す。

::afaik::as far as I know

AutoHotkeyの簡単な機能の例を以下に示す。あるURLがクリップボードにコピーされているときに  を押すと、URLにかっこが含まれているかを確認し、あれば代替文字に置き換え、その後クリップボードからURLを貼り付ける。

!x:: ; Alt+x
   URLReplace()
   Send ^v ; Ctrl+v
Return

URLReplace() {
   StringReplace, Clipboard, Clipboard, (, `%28, All
   StringReplace, Clipboard, Clipboard, ), `%29, All
}

以下の例では、（Firefoxで開いた）Wikipediaのサイトの任意の場所にあるユーザ名のリンクまたはIPアドレスのリンクの内容をクリップボードにコピーした後に  または   を押すことで、クリップボードの内容に対してCopyUser関数を実行し、押されたホットキーによって指定されている変数に関数の戻り値を格納する。を押すと、変数の値を合成してウィキペディアの記事の差し戻しの要約欄を生成する（ただし、2013年現在のフォーマットとは異なるためそのままでは使えない）。

^+w::last := CopyUser() ; Ctrl+Shift+w
^+e::edit := CopyUser() ; Ctrl+Shift+e

CopyUser() {
   Clipboard =
   StringReplace, Clipboard, Clipboard, http://en.wikipedia.org/
   StringReplace, Clipboard, Clipboard, wiki/
   StringReplace, Clipboard, Clipboard, w/index.php?title=
   StringReplace, Clipboard, Clipboard, Special:Contributions&target=
   StringReplace, Clipboard, Clipboard, User:
   StringReplace, Clipboard, Clipboard, &action=edit
   StringReplace, Clipboard, Clipboard, _, %A_Space%, All
   Return, Clipboard
}

; Ctrl+Shift+r
^+r::Send revert edits by [[Special:Contributions/%edit%|%edit%]] to last version by %last%

ほかにも、AutoHotkeyを使用して行える操作の例は、AutoHotkeyのオンラインフォーラムのScriptsで探すことができる。

コミュニティ
2012年1月現在、AutoHotkeyのオンラインコミュニティには約27,300ユーザーが登録されており、約482,000の書き込みが投稿されている。

AutoHotkey用のオンラインチャットルームはFreenode IRCに設置されており、2009年11月現在で平均40ユーザーが接続している。

ユーザ提供機能
他のプログラミング言語から、または他のプログラミング言語と一緒に使用する以下の拡張機能、相互運用できるプログラム、埋め込みスクリプトライブラリが使用可能であるか、開発中である。

.NET Framework – VB/C# (.NET)
LibLua – Lua
Lisp on win32 – LISP
Embeddable Common Lisp – 
Windows Scripting Host – VBScript/JScript
Embedded machine code – 機械語

他にも以下がある。

アスペクト指向プログラミング
Function Hooks
COM Wrappers – COM
Dynamic Code Generation
Human Interface Device(HID) Support – HID
Internet Explorer Automation
SmartGUI Creator
Sparrow AHK Web Server

Bit Wizardry
Windows Event Hooks

歴史

開発史 
AutoHotkeyの最初のベータ版は2003年11月10日に公開された。AutoHotkeyを開発する契機としては、開発者のChris Mallettが「ショートカットキー機能のサポートをAutoIt v2に組み込みたい」という提案をしたものの、AutoItのコミュニティで反応がなかったことがある。そのためChris Mallettは、AutoIt v2の構文を土台としつつもAutoIt v3から一部のコマンドを流用し、AutoIt v3でコンパイルした、独自のプログラムをいちから作成しはじめた。その後AutoIt v3は、「『AutoItのソースコードを繰り返し取得』し、『自分自身をAutoItの競合相手にしている』プロジェクトが他に存在する」という理由によりGNU General Public Licenseからプロプライエタリソフトウェアに移行した。

2010年10月10日、Chris Mallettは、AutoHotkey_LをAutoHotkeyとして継続して開発していくことにしたこと、公式ウェブサイトの「Download AutoHotkey」からダウンロードできるプログラムをAutoHotkey_Lに変更することを宣言した。

また、AutoHotkeyコミュニティ内のプログラマーたちも、以下のようなAutoHotkeyの派生版を開発し始めた。
Autohotkey_L, Basic, v2.0
2021年7月24日、AutoHotkey v2の最初のベータ版が公開された。
2022年11月20日にはrc版が公開され、今年後半にはv2.0.0としてリリースすることが計画された。

2022年12月20日、AutoHotkey v2.0.0が正式リリースされた。

その他の事件 
 2019年4月ごろ、AutoHotkeyを組み込んだマルウェアが発見された。 このウィルスは正規のAutoHotkeyスクリプトエンジンを含み、感染すると攻撃者が記述したAutoHotkeyのスクリプトをダウンロード、実行し、遠隔操作されてしまう。

脚注

関連項目 

 UWSC
 AutoIt
 Automator （Macintosh上で動作する操作自動化ソフトウェア）
 Vimperator

 iMacros

外部リンク
 
 AutoHotkeyを流行らせるページ 
 AutoHotkeyJp
 AutoHotkey Wiki

スクリプト言語
Windowsのソフトウェア