時々、PCを使っているときに、「このアプリ、この画面が一発で出ればもっと便利なのになぁ」なんてことありませんか。また、使い勝手が悪かったとしても、そのアプリを使い続けなければならない場合もあります。そんなときのために、PCを自動化する便利ツールもいろいろあります。今回は、なでしこを使って、アプリ自動化の手法を見てみましょう。

  • なでしこで電卓を操作し、計算結果を取得したところ

    なでしこで電卓を操作し、計算結果を取得したところ

なでしこで最も人気のある命令『キー送信』について

なでしこユーザーが最も使う命令が『キー送信』です。この命令は、任意のキーを送信して、アプリの操作を自動化するためのものです。どうして、それが分かったのかというと、なでしこのマニュアルは完全にWEBにあるので、どの命令がよく見られているのか確認できるのです。もともと、なでしこは、日常業務の自動化に使うようにと開発されたものですが、やはり、ちょっとした用途で活躍している様子が分かります。

なお、Windows版のなでしこv1の『キー送信』命令は、VBやExcelVBAで使えるSendKeysメソッド互換となっています。そして、今回、なでしこv3.0.51にも、VB互換の『キー送信』が命令が実装されました。なでしこv3では、Windows/macOS/Linuxでだいたい同じように動かすことができます。

ただし、Webブラウザ上ではセキュリティ的に使えないため、なでしこv3のPC版をインストールする必要があります。公式ページを参考に、ダウンロードしてご利用ください。その際、Windows版では、OS標準のZIP解凍ツールでうまく解凍できない問題があるので、LhaForgeなどの解凍ツールを利用してZIPを解凍してください。

簡単な使い方をマスターしよう

今回は、各OSごとに画面や操作方法が異なるため、基本的に、Windowsで操作する方法を紹介します。基本的には、macOSでも同じなのですが、最初からインストールされているアプリが異なります。

以下のプログラムは、Windowsのものですが、電卓を起動して、2×3×4×5を計算させるプログラムです。勝手に電卓が起動して、キーが押される様は面白いので、実行してみてください。

# Windowsで電卓を起動
「calc」を起動。
1秒待つ。

# 電卓を最前面にする
「電卓」を窓アクティブ。

# 適当な計算式とEnterキーを送信
『2*3*4*5{ENTER}』のキー送信。

Windowsでは、ZIPファイルを解凍した際に出てくる「nakopad.vbs」をクリックすると、なでしこエディタが起動します。それで、上記のプログラムをエディタに貼り付けて、画面上部の実行ボタン(あるいは、メニューから[実行 > 実行])をクリックします。

  • なでしこで電卓を操作しているところ

    なでしこで電卓を操作しているところ

プログラムを確認してみましょう。まず、「起動」命令を使うと、任意のアプリを起動できます。Windows標準の電卓は『「calc」を起動』と書くことで起動できます。そして、「窓アクティブ」命令を使うと、任意のアプリのウィンドウを最前面(アクティブな状態)にできます。その後、「キー送信」命令を使って任意のキーを送信することで、電卓アプリを操作できます。

なお、キー送信では、「1」と書けば、1のキーを送信します。Enterキーのような特殊なキーは『{Enter}』のように波カッコで囲って記述します。

ここで、一つ注意点があるのですが、「キー送信」命令を使う時には、二重カギカッコ『...』を使う必要があります。と言うのも、なでしこには、カギカッコの中に波カッコを書くと、それを変数と見なして展開するという機能があるので、正しく特殊キーを指定するには、二重カギ括弧で送信するキーを指定してください。

もしも、うまくキーが送信できないという場合は、電卓を起動した後の『1秒待つ』という部分を『3秒待つ』など、電卓の起動時間を考慮して、待機時間を長くしてみてください。また、プログラムを実行した後、他のウィンドウに切り替えたり、別のキーを押したりすると、正しく動きません。

クリップボードと組み合わせてみよう

多くのアプリでは、実行結果をクリップボードにコピーできます。簡単な利用例として、電卓の計算結果をクリップボードにコピーして、実行結果をファイルに保存する方法を紹介します。

電卓では、計算結果を[Ctrl]+[C]キーを押すことで、クリップボードにコピーできます。これは、Windows標準のクリップボードコピーのショートカットキーなので分かりやすいです。それで、[Ctrl]+[C]のキーを送信するところで、クリップボードに結果をコピーできます。

「キー送信」命令で、[Ctrl]+[C]のキーを送信するには、『^c』と記述します。同時送信する組み合わせキーには、以下のようなものがあります。

キー 記述方法
^ Ctrlキー
+ Shiftキー
% Altキー
& Commandキー(mac)

それでは、電卓で計算を行い、計算結果をクリップボードにコピーし、ファイルに保存してみましょう。なでしこエディタに以下のプログラムを記述して実行してみてください。

# Windowsで電卓を起動 --- (*1)
「calc」を起動して1秒待つ。
「電卓」を窓アクティブ。

# 適当な計算式とEnterキーを送信 --- (*2)
『1{+}2*3{ENTER}』のキー送信。

# クリップボードを得る --- (*3)
『^c』のキー送信。

# 計算結果をデスクトップに保存 --- (*4)
S=「計算結果は、{クリップボード}でした!」
「{デスクトップ}\結果.txt」にSを保存。

実行すると、電卓アプリが起動し、計算が行われ、結果がデスクトップ上の「結果.txt」という名前のファイルに保存されます。

  • 電卓の実行結果をクリップボードコピーしファイルに保存したところ

    電卓の実行結果をクリップボードコピーしファイルに保存したところ

プログラムを確認してみましょう。(*1)の部分では、電卓を起動し、アプリが起動するのを待って、ウィンドウをアクティブにします。(*2)の部分では「キー送信」命令を使って、計算を行います。ここで『+』キーを送るのに、『{+}』と波カッコで囲っている点に注目してください。『+』キーは、Shiftを送信する組み合わせキーの一つなので、波カッコの中に書く必要があります。(*3)の部分では、『^c』で[Ctrl]+[C]を送信し、(*4)の部分でクリップボードの内容を得て、ファイル「結果.txt」に保存します。

(参考)macOSでキー操作を自動化する方法

macOSの場合は、ターミナルで「npm run nako3edit」のコマンドを実行すると、『なでしこ3(Node版)』が起動します。そこで、以下のプログラムを入力して実行ボタンを押します。すると、同じように、OS標準の電卓を起動して操作できます。

# 電卓.appを起動
「open /Applications/Calculator.app」を起動。
1秒待つ。

# 電卓を最前面にする
「Calculator」を窓アクティブ。
# 適当な計算式とEnterキーを送信
『2*3*4*5{ENTER}』のキー送信。

実行ボタンを押すと、以下のように実行されます。

  • macOS上にて、なでしこで電卓を操作しているところ

    macOS上にて、なでしこで電卓を操作しているところ

なお、なでしこ3は、シェルの中で実行されるので、ここで書いているように、macOSの標準アプリを起動するには、アプリの前に「open 」を付ける必要があります。その他は、それほど、Windows版と変わらないことでしょう。

また、macOS標準のクリップボードにコピーするのは、[command]+[c]なので『&c』をキー送信することでコピーできます。

まとめ

以上、今回は、アプリの操作を自動化する方法として、『キー送信』命令を紹介しました。多くのアプリでは、ショートカットキーが設定されているので、キー操作でだけで、アプリを利用できるようになっています。そのため、『キー送信』命令を使うことで、アプリを自由に操作できる場合が多くあるのです。『キー送信』命令をうまく使って業務の効率化に役立ててみてください。

自由型プログラマー。くじらはんどにて、プログラミングの楽しさを伝える活動をしている。代表作に、日本語プログラミング言語「なでしこ」 、テキスト音楽「サクラ」など。2001年オンラインソフト大賞入賞、2005年IPAスーパークリエイター認定、2010年 OSS貢献者章受賞。技術書も多く執筆している。