昨日pgAdminのショートカットキーを一通り調べたら、押しやすいCtrl+Rがクエリツールの中で未使用でした。そこで、Windows限定になりますがAutoHotkeyを使ってRと連携させる一例。先週書いた「クエリツールにないショートカットキーをAutoHotkeyで足す」(2015/05/04)の延長とも言えます。実行環境はWindows 7 32bit + AutHotkey Unicode 32bit 1.1.20 + pgAdmin Portable 1.20.0 + R Portable 3.1.2。

前提:クエリツールの自分なりの使い方
PostgreSQLのデータをRで使う場合、それ用のビューをよく作ります。必要な列だけに絞ったり、ORDER句で行の並び順を一定にしたり。その際、ビュー作成クエリをテキストファイル等に控えますが、ついでに複数行コメントとして、Rで読み込むテンプレート的なスクリプトを付けておくと後々便利です。例えば ↓ のように。
-- R で読み込むビューを作成
CREATE VIEW hogehoge AS
SELECT foo, bar, ...
FROM ...
WEHRE ...;

-- 続けてRスクリプトを、複数行コメント内に書いておく
/*
library(RPostgreSQL)
con = dbConnect(PostgreSQL(), host=..., port=..., dbname=...)
dat = dbGetQuery(con, 'SELECT * FROM hogehoge')
dbDisconnect(con)
attach(dat)
lm = lm(bar ~ foo)
plot(foo, bar)
abline(lm)...
*/

Rスクリプト部分を実行するには、今までは手動でRコンソールに貼り付けるという原始的なやり方でした。これを「pgAdmin上で文字列選択→Ctrl+R打鍵」だけでできるよう、AutoHotkeyスクリプトを作りました。

デモ動画
PCのスクリーンだけで、キー入力の様子が映ってないので伝わりにくいと思いますが…。動画が出ない場合はブラウザが未対応なので、動画下のリンクからダウンロードして下さい。(526日追記:Chromeで正常再生できる動画に差し替えました)

動画では、最初にAutoHotkeyスクリプトを起動してショートカットを有効化した後、左側にRコンソール、右側にクエリツールを並べ、右側で適当にRのコマンドを実行しています。Rのヘルプコマンド(先頭に???)もそのままコンソールに打ち込まれ、デフォルトブラウザで関数のリファレンスが開かれます(動画の後半)。
≫ Link : demo_pgadmin_query_to_R1.webm

動画では省略しましたが、たまにAutoHotkeyが期待どおり動かず ↓ のような場合あり。本来はCtrl-Vでクエリツールからコピーした文字列を貼り付けるはずが、なぜかCtrlだけ抜けてしまうという…。対策がわかったらスクリプトを改修します。

実行環境とスクリプト
AutoHotkeyhttp://ahkscript.org/download/から、Unicode 32bitZIPをダウンロードし、本体のプログラムだけ適当なフォルダに解凍します。同じ場所に起動用バッチファイルとスクリプト(画像の下)を置いて準備終わり。必要な時にバッチをダブルクリックすれば、pgAdminクエリツール上でCtrl+RRコンソールに貼り付けできます。
loading from Bitbucket...
loading from Bitbucket...
AutoHotkeyでウィンドウ(開いているアプリケーション)を特定する方法はいくつかありますが、今回は単純にウィンドウタイトルの前方一致です。Rコンソールが複数起動している場合、どれにコマンドが送られるかは分かりません。あとR Consoleというウィンドウタイトルをスクリプト中に何度も直書きしているのは、変数に入れてのウィンドウ操作がうまくいかないためで、良い方法を模索中。

昨日からソースコードを別のリポジトリで管理できるようになり、今日もそうしました。今後スクリプトを直したらこの記事にも自動的に反映され、修正があった印が先頭タイトル部分に出ると思います。