みなさん、こんにちは。楽して働きたい人です。
流行ってますよね、RPA。そして、流行ってますよね。キーボードショートカット。
そんなの、昔から使ってるよ! なんていう人も多いと思います。まあ、筆者もその一人です。
一方で、windows10になってから、OS単位で追加された便利ショートカットも沢山あり、慢心せずに覚えて行かなきゃなぁとも思います。
ところで、いくら便利であっても、やっぱりショートカットキーにはそれなりに弱点があります。それは……
ショートカットキー仕事術の弱点とは?
押しづらいキーがあることです。また、量があまりに多くなれば(そして使うアプリケーションがふえれば)、いちいち覚えていられなくなってついついマウスに手が伸びる……ということも起こり得ます。みんながみんな、Excelだけ使うわけでもないですしね。
また、昨今人気のRPA。MicrosoftのPower Automate Desktop が無料で開放されたことで、その人気が留まる気配はありません。ショートカットキー仕事術の次は、Power Automate Desktop の書籍が人気になるんじゃないでしょうか?
そんな飛ぶ鳥を落とす勢いのRPAですが、人間がいなくても勝手に動く全自動RPAと、人間が任意のタイミングで起動する半自動RPAの二種類に大別することができます。半自動RPAについては、マウス操作の起動の他、ショートカットキーでも起動できる場合があります(ツールによります)。というか、それこそ効率性を追求するならショートカットキーですよね。
ただ、そのショートカットキーも覚えなければいけない……。自分で覚えるだけならともかく、同僚や部下、他部署の人間に覚えさせなければいけない場合も多々あります。
また、余りない事例だとは思いますが、キオスク端末にRPAを設置することで、簡易的な、来客対応端末を設置することも考えられます(コロナ禍で自動対応の需要は増えました)。そんなときに、マウスやキーボードショートカットを使わせるのはなかなか難しいです。
ショートカットキーを楽に使う その1
そんなショートカットキーを楽に使える、そういうモノも世の中には多数あります。
代表的なのが、ゲーミングデバイスの中でも、特に左手用キーボードなどと言われるようなものです。プログラマブルキーボードとも言います。
形は多種多様ですが、主として右手でマウス、左手でそのゲーミングデバイスを使用するのが一般的です。これは、通常のキーボードと異なり、自分で各キーに機能を自由に割り振ることができます。
Ctrl+CやCtrl+Vのようなショートカットキーはもちろん、一連のキー入力のような、本当に簡易的なRPA(マクロ)を備えている場合も多いです。また設定を自動/半自動で切り替えて用途にあわせて自由なショートカットキーの構成が作れます。自由に機能が割り振れるのでプログラマブルキーボードということですね。
これがあれば、アプリケーションごとに設定をすることで、新しく複雑なショートカットキー、押しにくいショートカットキーを覚えることなく仕事の効率をあげることができます。
が、欠点としてお値段がお高い。そして、見た目がゲーミングデバイスなので、職場で浮く。実際にはゲーミングデバイスではないプログラマブルキーボードもありますが、こちらは更にお値段がお高いです。
これがまだ、オフィスで目立つくらいであればいいですが、テレワーク用の道具として経費を申請したら、間違いなく疑いの目で見られることでしょう。
ショートカットキーを楽に使う その2
もう一つの方法は、AutoHotkey や KeyToKey (後日紹介予定)のようなマクロツールを使うことです。
特にAutoHotkeyはその名が示すように、ホットキー・ショートカットキーとして使われることが前提です。
そのため「テンキーの1を押したらコピー」のような、ショートカットキーを覚えたくないな……といった用途には絶大な効力を発揮します。
しかし、こういったマクロツール・ショートカットキー拡張ツールにも欠点が存在します。それは、物理的なキーが増えないことです。
ゲーミングデバイスでは、デバイスに専用の機能を割り当てることができました。しかし、マクロツールではもともとあるキーボードのキーを潰して(あるいは専用のショートカットキーを設定して)、他のショートカットキーを動かすことになります。
ファンクションキー(Fキー)を利用するなど、色々やり方はありますが、どうしても元々アプリで設定されていたショートカットキーとの競合が起きてしまう場合があります。
できれば、ゲーミングデバイスのように専用のキーで……、しかもオフィスに馴染んで、お財布が傷まない形でショートカットキーを拡張したいですよね。
LuaMacros を使う
そんなソフトが、実はあったんです。それがLuaMacros です。
LuaMacros の機能は簡単で、特定のキーが押されたときに、簡単なマクロを実行することだけです。総合的な機能面でいえば、申し訳ないですがAutoHotkeyの足下にも及びません。
ただ、圧倒的な強みとして、入力に使用されたキーボードごとにマクロを変えられるということだけです。これを利用することで、外付けテンキーをUSBで接続し、ショートカットキーを割り当てる……ということが可能になります。もちろん、メインのキーボードについているテンキーは、ちゃんとテンキーとして機能します。
後付けのテンキー単体であれば、物にもよりますが1,000円未満で買えるものもあります。
さらにスペースさえ気にしなければ、新PCについてきて、なんとなくオフィスに転がったままのキーボードを接続し、一つは完全にショートカットキー専用として運用することも出来てしまいます。
そんなことはなかなかない、と思いますが、実は映像制作などではもの凄い量のショートカットキーが求められる場合があります。もちろん、マウスで代用したり、ものすごく高価な専用デバイスが出ていたりもしますが、導入はなかなか難しいです。
一方で、SNSや動画サイトなどでのマーケティングが重要になり、一般企業でも社内で動画制作・編集を行っているところも増えています。そこで、低予算で作業効率を上げられたら嬉しいですよね?
そんな夢のようなツールがLuaMacros なのです。
実際に使ってみる
インストールと実行
インストールは非常に簡単で、 GitHub: LuaMacros の下の方から、Binary Download を探し、その下にあるzipファイルをダウンロードし、任意のフォルダに解凍するだけです。
それだけですが、一点アドバイスとしては、C:\LuaMacros のような、日本語やスペースの含まれない場所に解凍することをお勧めします。
解凍すると、LuaMacros.exeというファイルがあるので、それをダブルクリックすれば起動できます。
画面の説明
画面構成については以上のような形です。なんというか……恐ろしく潔いですね。
マクロ入力画面で入力して、実行ボタンを押して、期待通りの動きをしたら保存しておく。というのが基本の流れになります。
とはいえ、Lua言語というプログラム(スクリプト)言語なので、お気に入りのエディタがあればそれを使っても構いません。筆者はいつも大体Vimを使っています。
はじめてのLuaMacros
以下のマクロを、マクロ画面にコピーペーストなり、手で入力するなり行います。(Pythonとなっていますが、LUAです……)
「どんなものかな……」と思っていて、まだ余分なテンキーやキーボードを用意していない方も大丈夫。簡単な例を試すだけならキーボードひとつでも十分です。
lmc_assign_keyboard("MACROS")
lmc_set_handler("MACROS", function(btn, dir)
if(dir == 1) then
return
end
if(btn == 96) then
lmc_send_keys("{TAB}")
end
end
)
入力が終わったら、実行ボタンをクリックします。すると……、
こんな画面になるので、キーボードで何かキーを入力します。
すると、マクロの入力画面に戻りますが、これで、「何かを入力したキーボード」がLuaMacros専用のキーボードとなります。この状態で、テンキーの0を入力すると、タブキーが押されたことになります。そして、その他のキーを押しても、何も起こりません。何故なら、何も設定していないからです(ときどき、LuaMacrosで設定したキーと、本来のキーが両方入力されるパターンになりますが、これが仕様なのかバグなのかは不明です)。
さて、このままではキーボードが使えませんね? LuaMacrosを終了するか、もう一度実行ボタンをクリックして、今度は「Cancel」ボタンをクリックすると、キーボードの「専用状態」が解除されます。
マクロの解説
それでは、先ほどのMacroを1行ずつ解説していきます。
lmc_assign_keyboard("MACROS")
これが、「キー入力をしたキーボードを、専用のキーボード化する」ためのコマンドです(正確にはキー入力したキーボードにMACROSという名前を付けています)。
lmc_set_handler(“MACROS”, function(btn, dir)
この1行で、MACROSと名前がつけられたキーボードの入力を取得することになります。MACROSと名前を付けたのが最初の1行ですね。
function(btn, dir)はbtn(ボタン)dir(方向)を引数にとる無名関数です。難しいことを考えない場合は、”MACROS”の部分が、キーボードが増えて来たりすると色々な名前になる(変わる)ことを覚えておけば十分です。
if(dir == 1) then return end
dirが1の時というのは、「キーが押されている間ずっと繰り返される」ということを意味します。例えば、テンキーの入力を矢印キーに置き換えたいという場合などは、thenとendの間、returnの前に入力したいコマンド(以後解説)を書きます。
returnを記載しているのは、このif構造の後は、今度は「キーが離されたときのみ」実行したい内容なので、ここで実行を終えています。
if(btn == 106) then
btn(ボタン)が106の時、つまりテンキーの0が押された後、「離されたとき」に次のendまでの間を実行します。
何故離されたときになるかというと、dirが1の時が「押されたとき、押されている間」で、「dirが0の時」は離されたときということになるためです。
このdirの使いわけですが、「ショートカットキーを楽に入力したい!」「RPAの起動に使いたい!」という場合などは、dirが1でないときに実行した方がいいです。1回しか押してないつもりでも、2回、3回と入力されてしまうことがあります。
逆にdirが1の時というのは、例えば「Shiftキーの代わりに使いたい」「画像編集ソフト、映像編集ソフトなどで押しっぱなしの間だけ効果があるキーがある」などの場合に使います。一般的なオフィス業務ではあんまり使わないですね。もちろん、テンキーを完全に他のキーの代わりに使いたい(F1~F12キーがないキーボードで使いたいなど)ときにも使えます。
また、btn == 96の「96」ですが、これはキーコードというPC内部でキーを判別するためのものになります。
キーコードについては、以下のサイトが参考になります。
また、キーコードを直接入力する方法の他にも、
btn == string.byte('A')
のようにして、文字から入力されたキーを判別する方法もあります。ローマ字のキーなどは、この方法の方が楽ですね。
lmc_send_keys(“{TAB}”)
ここが、実際にキー入力を送信している部分になります。ここではタブキーを入力している(押して離している)だけです。
send_keysの名の通り、複数のキーを入力することができます。例えば、lmc_send_keys(“abc”)のようにすれば、abcと順に入力されます。タブキーと違い、{}がない点に気をつけてください。どちらかというとTABキーが特殊で、対応する半角1文字がない場合に、{}でくくって、キーの名前を記述します(後述)。
モディファイアキー(ctrl, shiftなどの修飾キー)も指定することが出来るので、
lmc_send_keys("^a^c")
のようにすると、Ctrl+A, Ctrl+Cと順に入力されます(普通、全て選択してからコピーされますね)。
もっと詳細にキー入力をコントロールしたい場合は、lmc_send_inputというコマンドもあります。
モディファイアキー
- + Shift
- ^ Ctrl
- % Alt
- # Win
- & Tab(使う…?)
- < 他のモディファイアと組み合わせて使う。左側のモディファイアキーの意味。+< で左Shift
- > 同じく右側のモディファイアキーの意味(bugで機能していなかったが修正された?)。
特殊記号
- {} 1文字で表現できないキー名を入力する。キー名一覧は公式wikiのList of Keysを参照。
- () モディファイアキーに対してグループ化する。+(abc)で、ABCと入力される(shift a, b, cとなる)。+abcだとAbc。
- ~ Enterキー
繰り返し
{TAB 5}のように、波括弧でくくって、キー名の後に半角スペースを入れ、数字を入力するとその回数だけ入力が繰り返される(この場合はTABが5回入力される)。
{1 5}のように、普通なら波括弧がいらないキーも繰り返しできますが、{a 5}のように、ローマ字の場合は大文字のAが入力されてしまうようです。
終わりに
今回の記事で、なんとなくLuaMacrosでどんなことができるかは分かっていただけたと思います。
正直なところ、とても取っつきやすいとは言えないツールですが、他にはない機能が魅力的です。特に、アプリケーションが高機能化し、デジタルトランスフォーメーションの推進やコロナ禍、テレワークなどで使用するアプリケーションが多くなっていくと、効率的に操作するための学習コストがどんどん増えて行きます。
生産性をあげるためとはいえ、そういう「本質的ではない」部分に大きなリソースを割くよりは、こういったツールを活用して仕事の環境をどんどんよくしていきたいですね。
楽して働きたい人でした。
1件のフィードバック