2017年02月05日

AutoHotKeyを使って生産性を上げる

fc0827f351a1f069a316268a7650fc19_sAutoHotKey」はキーボードやマウスの入力を自動化するためのツールで、簡単なプログラミング言語のようなスクリプトを書くことで、自由に動作をカスタマイズできます。GUIも作成できたり、モニタ上の部分イメージにマッチする座標を取得したりとかなり高機能です。

私は会社でも自宅でもこのAutoHotKeyを愛用していて、特に仕事ではAutoHotKeyがなければ生産性が半減すると言っても過言ではありません。

そこで今回は私のAutoHotKeyの使い方をスクリプトのサンプルとともに紹介したいと思います。

では始めます。皆様の生産性の向上を祈って・・・

1.準備(AutoHotKeyのインストール)

※すでにAutoHotKeyを使っている人、インストールはしたけど使っていない人は次の「2.スクリプトの作成」から読んで下さい。

実は、AutoHotKeyはインストールしなくても使えます。その方法はいくつかありますがそれは別の機会に書くとして、ここでは普通の使い方になると思われるAutoHotKeyをPCインストールする方法を書こうと思います。

  1. まず以下のサイトの右側にある「Download」というボタンを押して、「Installer」という方をダウンロードします。
    http://ahkscript.org/
    2017-02-04_05h41_11
  2. ダウンロードしたインストーラを実行してウィザード通りインストールします。
  3. 最後に以下の画面が出るので、とりあえず「Exit」で閉じます。
    2017-02-04_05h46_41

2.スクリプトの作成

AutoHotKeyはスクリプト言語の処理系だと考えて下さい。なので基本的に自分でスクリプトを用意しないと何もできません。

  1. まずはスクリプトを保存するフォルダを決めます。どこでも好きな場所で大丈夫です。私はだいたい「C:\Users\<ユーザー>\AutoHotKey」あたりにしています。
  2. スクリプト保存フォルダに移動したら、右クリックの新規作成から、「AutoHotKey Script」を選択します。
    2017-02-04_05h55_56
  3. 作成されたファイルに適当な名前を付け、テキストエディタで開きます。メモ帳でもOKです。開くと先頭に色々書いてありますが、そのままにして最後の行に自分のスクリプトを追加していきます。
  4. ここここにスクリプトの仕様が載っていますので、分かる人はどんどん作成できると思います。
  5. スクリプトを作成したら、2で作成したスクリプトファイルをスタートアップに入れておけば、Windowsが起動すると自動的にロードされます。

以上でが使い方ですが、注意点としてはスクリプトを更新したら、タスクトレイにあるAutoHotKeyのアイコンを右クリックして「Reload This Script」を実行する必要があることです。これをしないと、変更したスクリプトが反映されません。

2017-02-04_07h16_34

 

3.私のスクリプト事例

ここでは実際に私が生産性向上のために作成して使っているスクリプトをご紹介したいと思います。

日本語入力のOn/Off

Macの日本語キーボードには、「かな」キーと「英数」キーがスペースキーの右と左に独立して存在しています。これにより脊髄反射的にかなか英数かを指定することができるのですが、Windowsの日本語キーボードでは「半角/全角」キーが1つだけで、かなと英数の切り替えはトグル式になっています。これでは常に現在のIMEの状態を把握していないと正確な切り替えができないことになります。英数入力をしたいのに全角で入力してしまったり、その逆の体験をして苦労されていると思います。

私は以下のスクリプトで、スペースキーの右にある「変換」キーを「かな」に、左にある「無変換」キーを「英数」にして、MacのようにWindowsを使っています。2017-02-04_06h55_51

#Include, IME.ahk

;IMEのON/OFF
vk1Csc079::
    IME_SET(1)
return
vk1Dsc07B::
    IME_SET(0)
return

実は、IME.ahkというIMEを制御するありがたい外部スクリプトを使っています。以下のサイトからIME.ahkをダウンロードして、自分のスクリプトと同じフォルダに入れてください。

https://www6.atwiki.jp/eamat/pages/17.html

 

引用貼り付け

メールを書いていて、相手のメールの一部分を引用して、その下に自分のコメントを書くというのは仕事の現場で頻出します。

↓こういうやつ

> あれはどうなりましたか?
今日やります。

メーラーによっては、返信ボタンを押すと自動的に相手のメッセージに引用符「>」を付けてくれるので、それをコピーして自分のコメントの場所に貼り付ければ良いのですが、例えばOutlookのWebメールなどは返信ボタンを押しても相手のメッセージが引用符もつかずそのまま表示されます。

私は以下のスクリプトで、相手のメッセージをコピーして貼り付ける際に「Ctrl+V」の代わりに「Shift+Ctrl+V」を押すことで、自動的に行の先頭に引用符をつけています。

;Shift+Ctrl+v
^+v::
    StrRefMsg := "> " + RegExReplace(Clipboard, "\n", "`n> ")
    Clipboard = %StrRefMsg%
    Send, ^v
return

 

数字の桁区切りカンマ

Excelなどでは数字の桁区切りカンマは自動的につけてくれますが、メールなどで金額を書くときには自分でカンマを入力しなければいけません。

しかし、「,」というのはテンキーにないのです!!これは生産性が大きく低下します。

私は以下のスクリプトで、「Ctrl+テンキーのピリオド」で「,」を入力できるようにしています。

^NumpadDot:: Send `,

 

日時の入力

PCを使った仕事をしていると、ファイル名に日付をつけることがよくあります。例えば、「20170205_見積書.xlsx」などのようにyyyymmddの数字8桁をファイル名につけたりします。

私は以下のスクリプトで、「Shift+Ctrl+t」でその日のyyyymmddが入力できるようにしています。

$+^t::
    TimeString = A_Now
    ;FormatTime, TimeString, yyyy MM dd hh:mm R
    FormatTime, TimeString, TimeString, yyyyMMdd

    ime_mode := IME_GET()
    IME_SET(0)
    Send,%TimeString%
    IME_SET(ime_mode)
return

上記のスクリプトでは、通常Shift+Ctrl+tを表すなら「+^t」で良いところを、「$+^t」のように先頭に$を付けています。これは、他のAutoHotKeyスクリプトの中で「Shift+Ctrl+t」のキーコードを送った際に、この日付入力のスクリプトが実行されないようにするためのものです。例えば、他のアプリでもともとShift+Ctrl+tに何か機能が割当たっていた場合、Shift+Ctrl+tを押すとその機能は実行されず、日付が入力されてしまいます。その機能のショートカットをAutoHotKeyで実現したいとすると以下のように書くわけですが、この「$」が付いているお陰で、アプリケーションに本来のShift+Ctrl+tを送信できるというわけです。

^d::
    send,^+t
return

 

スクリプトのリロード

これまでのスクリプトを一つずつ自分のスクリプトファイルに追記しては「Reload This Script」を実行されている方は、非常に面倒に感じていると思います。AutoHotKeyは使い込んでいくとどんどんスクリプトを追加したくなりますので、リロードのストレスは下げておかないと行けません。

私は以下のスクリプトで、「Shift+Ctrl+F5」でスクリプトをリロードできるようにしています。

;Shift+Ctrl+F5
^+F5::
    Reload
return

ここまではシステム全体に効くスクリプト(つまりWindowsのどこでも、どんなアプリでも有効なスクリプト)でしたが、次からは特定のアプリケーションや画面だけで動作するスクリプトになります。

 

自動ログイン

最近の社内システムはほぼ例外なくWebベースだと思います。そしてほぼ例外なくIDとパスワードの入力を求めてきます。

私はパスワードは「KeePass」で管理しているので、AutoHotKeyを使う必要はないのですが、自分のPCではない環境や、検証環境などには以下のAutoHotKeyスクリプトを入れてログインを自動化しています。KeePassなどのパスワード管理ソフトを使うほどアカウントがないという人はAutoHotKeyでも十分だと思います。ただしスクリプトにパスワードを平文で記載することになるので、セキュリティには十分ご注意ください。

;Google Chrome 、IE上の設定
#IfWinActive ahk_class Chrome_WidgetWin_1  ahk_class IEFrame
    ;パスワード自動入力
    ^e::
        send,○○○○○
        sleep,200
        send,{tab}
        sleep,200
        send,************
        sleep,200
        send,{enter}
    return

#IfWinActive

○○○○○の部分はユーザーIDで、************の部分はパスワードを記載して下さい。

このスクリプトは「Ctrl+E」で発動するようになっていますが、ChromeとIEの画面内でのみ有効になります。AutoHotKeyの文法の説明はこのエントリーの趣旨と外れるので省略しますが、ここまで読んでAutoHotKeyを使おうという方なら問題ないでしょう。

 

入力フォーム内の数字操作

これは私の会社のシステムがイケてないだけなので、限られた方にしか役に立たないかもしれませんが、何かの参考になるのではないかと思い載せることにしました。

私の会社では見積もりを作成するのもWebシステム上で行います。そして1万円以下の端数は切り上げるというルールがあるのですが、その切り上げ処理はシステムがやってくれません。したがって、入力フォームに自動計算されて入っている金額を自分で編集して切り上げた金額を再度入力し直すという作業が必要になります。

そこで私は以下のスクリプトで入力フォームにカーソルがある状態で「Shift+Ctrl+r」を押すと自動的に1万円以下の端数を切り上げた数字で上書きするようにしています。

このスクリプトは前述のChromeとIEだけで動作するスコープ(#IfWinActive )の中に入れています。

+^r::
    send,^a
    Send,^c
    If Clipboard Is Integer
    Clipboard := (Floor(Clipboard / 10000) + 1) * 10000
    Send, ^v
return

さらに、私の会社では交通費もWeb申請なのですが、経路探索で入力した交通費は片道料金しか入らないため、往復の料金は自分で2倍した値を入力し直さなければなりません。

そこで私は以下のスクリプトで「Shift+Ctrl+d」で自動的に2倍の数字を入力するようにしています。往復料金を設定するたびに爽快です。

+^d::
    send,^a
    Send,^c
    If Clipboard Is Integer
    Clipboard := Clipboard * 2
    Send, ^v
return

 

4.最後に

私はこのようなスクリプトを他にも大量に書いて、日々の業務の生産性向上を図っています。ほとんどは個人的に便利な機能で万人受けするものではないのですが、その中でも一般的に受け入れられそうなものをピックアップして紹介してみました。

何か使えるものがあればそのままコピペするもよし、自分のスクリプトのアイデアにするもよし、少しでも皆さんの生産性向上に役立てば幸いです。

posted by Mr.M at 22:52| 東京 ☀| Comment(0) | TrackBack(0) | PC | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/446695960

この記事へのトラックバック