
AHKをインストールしてオリジナルショートカットキーを開発できる環境を整えます
AHKプログラミング入門儀式。
Hello Worldを表示します。
AHK実行時にWindowsの裏側ではどのような処理が行われているかを理解しましょう
AHKプログラミングでは何ができるのかを解説します。
Visual Studio CODE のインストール手順を解説します
AHKを開発するためのVS Code拡張機能をインストールします
VS CodeであらためてHello World。
AHKプログラミング開始時の作法も解説します。
AHKをプログラミングするときに推奨されている設定を行います。
あなたの指示をパソコンに実行させるための方法を解説します
命令文を書くときのルールを解説します
プログラム内に人間用のメモを書く方法を学びましょう
四則演算の方法を学びましょう
基礎的な同時押しのためのキー(修飾キー = Ctrl, Shift, Alt, Win)とそれ以外の同時押しキーの設定方法を学びましょう
基礎的な修飾キー以外は「~」をつけたほうが良い場合があります。
なぜなのか? を解説します。
変換/無変換キーに IME 切替を割り当てている場合、前レクチャーで解説した「~」をつけると必ず IME切替 が発動してしまい使いにくい画面があります。
変換/無変換キーに「~」をつけずにIME切替を有効にする方法が分かりましたので解説します。
コマンド入力時の補完機能の使い方を解説します。
一行で実行できるコードをワンライナーと言います。
1行と侮ってはいけませんとても便利な機能を実装できます。
ワンライナーレシピで対応するSendコマンドについてもう一度復習しておきましょう
シフトと右クリックを押した時には拡張メニューが表示されます。
それを左手だけで呼び出せる便利なショートカットキーを作ります。
Alt+Tabでウィンドウを切り替えられますが、右手で使いたいと思ったことはありませんか?
それを実装してみましょう。
ウィンドウを閉じるにはAlt+F4を押さないといけません。ちょっと指の移動距離が長い、と思ったことはありませんか?
もっとサクサクをする指にウィンドウを閉じるショートカットキーを実装しましょう。
なかにはAHKで作ったウィンドウを閉じるショートカットキーが効かないアプリ(?)が存在します。
どのようなものか効かないかの一例を紹介します。
ウィンドウを閉じるのではなく、最小化して見えなくするというのも便利なものです。
仕事中に少し息抜きして無関係なWebページを見ている時にささっとを隠すことができますよ。
WinMinimizeコマンドの色素の使い方詳しく解説します
カーソルが行の途中にある時に下に1行追加する時はどうやっていますか?
一般的にはEndキーを押してEnterを押すことが多いと思います。が、ちょっと押しにくくありませんか?
もっと簡単に下に行を追加できるようになるコマンドを実装します。
DeleteキーもBackspaceキーも右上にあってちょっと押しにくい。
だけど多用するキーです。
ならばもっと押しやすい場所に配置してしまいましょう。
Windows 10から使えるようになったクリップボード履歴。便利ですがこれもちょっと押しにくい。
もっと押しやすいキーに割り当てましょう。
1行まるごと削除するには Home → Shift+下キー → Delete (Backspace) と押す必要があります。
これもちょっと押しにくい。
かなり重宝しますよ。
さらに便利な機能を実装するためにプログラミングの基礎的な知識を学びましょう。
変数・関数・条件分岐に加え、AHK特有の文法をこれから解説していきます。
複雑なものも分解すると単純な部品の集合でできています。
ここからは「選択した文字でWeb検索する」という機能の実装に向け単純な部品をそれぞれ作っていきます。
まずは「ブラウザでGoogleを開く」から作っていきましょう。
Runコマンドはブラウザを開くだけが能ではありません。
他にもいろいろなものを実行(Run)できます。
一例としてExcelを開いてみます。
より柔軟な、汎用性が高いプログラムを作るためには「変数」が欠かせません。
まずは変数とは何か? をざっくり理解しておきましょう。
変数には名前をつけますが、つけられない名前、つけないほうがいい名前があります。
どういうものがつけられない名前なのか? を解説します。
変数がプログラムの中でどのように流れていくのか? を解説します。
この流れを理解することが変数をうまく使うための第一歩です。
AHKでは変数を使うとき大きく分けて2種類の文法があります。
まずは「式タイプ」というものを解説します。
変数利用時は式タイプを使ったほうがいいのですが、Web検索するとレガシータイプで解説されているページがあります。
そんなページに出くわしても混乱しないよう「レガシータイプ」を解説します。
プログラムを一行ずつ実行する方法を解説します。
これは複数行になるコードを実装するときに欠かせないものです。
一行ずつ実行すればコードがどのように動いているのか? どこでどんなエラーが出ているのか? がわかるようになります。
「選択した文字でGoogle検索」のための部品である「文字列結合」を解説します。
文字列結合はプログラミングの基本中の基本です。様々なことに応用が効くようになりますので確実にマスターしましょう。
「変数」 「文字列」などいろいろな用語が出てきました。ここからさき他にもいろいろな用語が出てきます。
混乱しないようそもそも「文字列」とは何か? を確認しておきましょう。
AHKではコードが複数行になるときは作法・書き方があります。
ちゃんと欠かないと意図したプログラムになりませんのでしっかり理解しておきましょう。
作法① は最後にReturnを書きましょう、というものです。その理由を解説します。
作法② はインデントです。
インデントとは、字下げのことです。
インデントすることでコードが読みやすくなるので必須と言えます。
VS Codeで自動インデントする方法もお伝えします。
「選択した文字列でWeb検索」はOSのクリップボード機能にアクセスします。
どのような流れでコードに組み込んでいくのか解説します。
クリップボードから値を取り出す方法を解説します。
Google検索用URLと選択したクリップボードに入っている文字列を結合させ、実際にブラウザで検索してみましょう。
「選択した文字列でGoogle検索」 を流用して「選択した文字列でAmazon検索」 を実装してみましょう。
ここからは、「選択した文字でGoogle/Amazon検索」を一行で実装していきます。
その前に、そもそも関数とはなんぞや? を解説します。
AHKにもともと組み込まれている関数について解説します。
欲しい機能が組み込み関数にない場合は自分で関数を作る必要があります。
そのときどのように書けばよいのか? を解説します。
「選択した文字列を返す」 関数を作り、「選択した文字列でGoogle/Amazon検索」を一行で実行できるように実装します。
ここからは英和/和英翻訳を実装していきます。
それを実装するためには条件分岐(IF文)を理解する必要があります。
条件分岐を書くときのルールを、AHK(プログラミング言語)を日本語に翻訳しながら解説します。
実際にコードを書きながらIF文の動きを確認しましょう。
条件分岐をさらに柔軟にするための「論理演算子」というものを解説します。
これを理解できると、「より大きい(より小さい)」 「以上(以下)」「等しい(くない)」「〇〇かつ(もしくは)◎◎」をプログラミングで表現できます。
プログラムの幅が飛躍的に広がるので絶対に理解しておきましょう。
今まで学んだ知識と条件分岐をどのように組み合わせて翻訳機能を実装するか全体の流れを解説します。
Google翻訳でURL がどのように生成されるのか確認し、それをコードに落とし込んでいきます。
選択した文字にアルファベットが含まれているか判定します。
含まれている場合は英和。そうでない場合は和英。
これをAHKに落とし込みます。
前回までで翻訳機能は完成したのでこの機能を関数に切り出してすっきり整理します。
「選択した文字で検索系」の URL 部分をグローバル変数にして整理します。
コードが読みやすくなりますよ。
URL エンコードをしないとどのような不具合が起きるのか確認します
実際に分割されてしまう文字列をダウンロードして確認してみてください
StrReplaceを使い 空白文字を URL に適した文字列に変換します (URL エンコード)
改行文字を URL エンコードしてみましょう
ここまで学んできたことを生かせばあなたご自身で好きなショートカットキーを開発できます。
しかし開発にエラーはつきものです。
エラーが発生したときにどう対処すれば良いのか? よくあるエラーにはどんなものがあるのか? を解説します
ここまでで「選択した文字列を翻訳する関数」が二種類できました。
よく見るとこの二つの関数よく似ています。
違う部分はベースとなる URL と英和/和英のパラメーター部分です。
どうやらひとつの関数に統一できそうです。
GetKeyState関数で任意のキーが押されているかを判定し、三つ同時押しショートカットキーを実装します
GetKeyState 関数で判定しなくても、三つ同時押しショートカットキーを作れるパターンを解説します。
このコースはショートカットキーヘビーユーザー・マニアを対象にAHK(Auto Hot Key)プログラミングの基礎を学べるコースです。
「使える」ショートカットキーを求めてよくググる
このショートカットキーちょっと押しにくい。なんとかならんか?
ショートカットキーでこんなこと実現できないかな?
マウスに手を移動させるのが超面倒くさい
一打でも打鍵数を減らしたい
どれかにピンときたらこのコースで解決できます。
なぜなら、AHKはショートカットキーに特化したプログラミング言語なので、あなたの指定したキーに
既存の機能を割り当てられます
あらたに機能を実装して割り当てられます
このコースではそのための基礎知識とその知識を応用した実装例を解説いたします。
例えばこのコースでは例として以下の機能を実装します。
どれも基本機能の組み合わせ・応用ですので、コース修了後はあなたのニーズによる機能を実装できるでしょう。
Web検索系
「無変換 + s」で選択した文字列でGoogle検索
「無変換 + t」で選択した文字列でGoogle翻訳/DeepL翻訳 (英和/和英自動判別)
文字列操作系
「無変換 + 記号キー(2,8,[など)」で選択した文字列を記号で囲う
「無変換 + d」でDelete
「無変換 + a」でBackspace
ウィンドウ操作系
「無変換 + e」でウィンドウを画面中央に移動
「無変換 + 1」でウィンドウを最小化
「無変換 + 4」でウィンドウを閉じる
「無変換 + w」でアプリに応じたウィンドウサイズに変更
「無変換 + 矢印キー」でウィンドウ移動
マウスポインター操作系
「Alt + 矢印キー」でマウスポインター移動
「変換 + j」でマウスホイールを下に回転
「変換 + k」でマウスホイールを上に回転
その他
「変換 + r」で拡張右クリックメニュー
などを解説します。私は「無変換/変換キーと別のキー」に割り当てていますが、どのキーにも割り当てられます。
その方法もしっかり解説いたします。
プログラミングしたことがない方でもわかりやすい講義を心がけました。
文字列とは何か?
変数とは何か?
条件分岐とは何か?
関数とは何か?
引数とは何か?
戻り値とは何か?
といったプログラミングの基礎も解説していますので、これを機会にプログラミングを身に着けていただければと思います。
ぜひ私と一緒に異次元のショートカットキーの世界に旅立ちましょう!