AutoHotKeyを正しく理解するために


翻訳者の間でAutoHotKey(AHK)が人気になっていますが、どうもAHKがどういったものかが正しく認識されていない気がします。このブログもそうですが、「こんなことができるよ」といった実例やコード例はあっても、表面上だけで、正しく理解するのは難しいのでないかと危惧しています。この9月には勉強会が開かれる予定で、そこではきちんと説明されより詳しく紹介されると思います。以前にもこのブログでAHKを紹介していますが、その前に私なりに「AHKとは何か」をもう一度整理してみたいと思います。

まず、AHKはツールではありません。インストールしたからといって、それ自体では何もしてくれません。作成したスクリプト(プログラム)を実行するためのエンジンがAHKの本体です。ツールと言うよりは、プログラム言語の一種と考えた方が正しいと思います。AutoHotKeyのサイトには次のように書かれています。

AutoHotkey (AHK) is a free, open-source macro-creation and automation software for Windows that allows users to automate repetitive tasks. It is driven by a scripting language that was initially aimed at providing keyboard shortcuts, otherwise known as hotkeys, that over time evolved into a full-fledged scripting language.
AutoHotkeyの公式ページより (下線は筆者)

要するに、「繰り返し行われるような作業を自動化することができるソフトウェアであり、元々はショートカットキー(ホットキー*)の機能を提供するものであったが、今では本格的なスクリプト言語に進化した」ということです。

*ホットキーは、ショートカットキーのことです。通常は、修飾キー(Shift、Ctrl、Altなど)と他のキーとの組み合わせ。

AHKを使用するためにはスクリプトを作成しなければなりません。一般的なスクリプトはネット上で簡単に手に入りますので、それを使用している限りプログラミングの知識はあまり必要ありません。ただ、AHKがPC上でどのように動作しているのかは理解した方がよいと思います。次の図を見てください。

図1

通常、キーボードやマウスからの「入力」は「PC」を通して「OS」(またはアプリケーション)に渡されます。

AHKは実行するとメモリ上に常駐します。

図2

このように、AHKはPCとOSの間でそのやり取りを監視します。プログラムされたキーイベントが発生すると、AHKがそのやり取りをOSに渡す前に処理します。(本当はもっと複雑ですが)

たとえば、キーボードの「a」を押すと、AHKはそのキーイベントに割りてられたプログラムを実行します(「aaa」に変換するなど)。

AHKはOSに「a」を渡さずに(渡すことも可能)処理された「aaa」を渡します。

このように、キーボードやマウスによる入力イベントがOSに渡される前に捕捉して、そのイベントの代わりにプログラムされた処理をOSやアプリケーションに渡すのがAHKです。Wordマクロや秀丸マクロとは異なり、アプリケーションには依存しません。

AHKのスクリプトは大まかに次の要素で成り立ちます。

  • 捕捉するキーボードやマウスの入力(入力イベント)
  • 代わりにアプリケーションやOSに渡す(実行する)入力や処理

これを理解しておけば、スクリプトを作成しやすくなると思います。

不足している部分、曖昧な部分、間違っている部分はあると思いますが、以上が私のAHKについての現時点での理解です。(話を簡単にするために端折っている部分はありますが)

 

では、AHKを使って何ができるのでしょうか。

以下はAHKの公式サイトでは次のように説明されています(抄訳)。

  • キー入力やマウスのクリックによる自動化。手動またはマクロレコーダーを使ってマウスやキーボードのマクロを作成できます。
  • キーボード、マウス、ジョイスティックのキーやボタンのリマップ(再配置)。
  • キーボード、マウス、ジョイスティックのホットキーの作成。基本的に、ほぼすべてのキー、ボタン、その組み合わせをホットキーにできます。
  • 入力した略語の展開(btw→by the wayなど)
  • 入力時のオートコレクト(スペルミスの自動修正)
  • クリップボードの内容の取得/変更
  • AHKスクリプトを実行ファイル(exe)に変換。AHKがインストールされていないPCでも実行できます。
  • プログラム内では正規表現も使用可

さらに、プログラミングに詳しい方には、以下のような高度なこともできます。

  • データ入力フォーム、ユーザーインターフェイス、メニューバーの作成
  • さまざまな形式のファイルからのデータ読み込みによるデータ入力の自動化
  • Component Object Model(COM)の使用
  • 配列/連想配列/OOP(オブジェクト)の使用
  • DLLコールやWindowsメッセージの使用
  • Perl Compatible Regular Expressions(PCRE)の使用
  • インタラクティブなデバッグ機能の使用

もちろん、万能というわけではありません。PCの環境によって動作しない、不安定になることもあります。他のアプリケーションと干渉することもあり得ます。ある翻訳支援ツールのようにそのアプリケーションの操作に問題がある場合や複数のアプリケーション間でやり取りする場合などは非常に有益ですが、秀丸マクロやWordマクロ、その他のツールで対応できるものも少なくありません。

また、基本的にサポートはありません。情報を交換し合うことが重要になります。また、自分用にカスタマイズして使いやすくするためには、最低限のプログラミングの知識は必要だと思います。幸いなことに、AHKのプログラムは初心者にとってもそれ程難しくはありません

入力や処理の効率化にAHKは極めて有効です。勉強会やネット上の情報をしっかりと活用して、自分にとって最適な作業環境を構築してください。このブログでも、AHKに限らず、いろいろな形で最大限のバックアップをしていきたいと思います。

みんなで快適な作業環境を構築しよう!

では、また。

コメントしてみる