2015年3月11日水曜日

VBAに新時代が到来しました。

まえがき

朝、目が覚めると、元エクストリームVBA-er であらせられる@igeta氏が
とんでもないものをTwitterのタイムラインに投下されていました。

1990年代前半から時が止まってしまったかのようなVBAの開発環境 VBE(Visual Basic Editor)に、現代の統合開発環境(IDE)並の機能を追加するクレイジーなアドインが登場したようです。

現代に舞い降りたまさに狂気の権化、その名もRubberduck。
とのことなので、簡単にレポートを書いてみたいと思います。

レポート

インストールは至極単純です。RubberduckのgithubリポジトリのRelaseページにインストーラが配布されているのでダウンロードして実行しましょう。

なお、公式にうたわれている動作環境は
  • Windows Vista以降  (開発環境はWin7 and Win8.1)
  • .Net Framework 4.5必須
  • Microsoft Office 97以上
となっています。

が、手元の環境(Windows8.1 + Office2013(64bit))では、RubberduckをインストールしてもアドインがVBEから認識されませんでした。

ということで、以下では、公式サイトの解説からの引用でお茶を濁したいと思います。

Rubberduckの機能

正常にインストールされれば、以下のような機能が追加されるようです。

昨今のIDEでは当たり前の機能ですが、今までVBEにはなかっただけに、どれも便利に使えそうです。正常にインストールされれば。(大事なことなので2回言います)

コードエクスプローラ
現在開いているプロジェクトに含まれるクラス、メソッド、変数、Enumなどを一覧表示
※ スクリーンショットを見る限り、Option宣言も表示されるようですね。
TODOリスト
ソースコードのコメント中に"TODO:"で始まる記載をピックアップして一覧表示

コードインスペクション
別途設定したコーディング規約に反する箇所を一覧表示
コーディング規約の設定方法は、公式Wikiをどうぞ

テストエクスプローラ
テストしたいモジュール、メソッドの行頭に"'@TestModule"や"'@TestMethod"と記載することで、
モジュール、メソッドのテストを一括実行、結果を一覧表示

リファクタリング機能
メソッドへの括りだしや、変数などのリネームを支援
という感じです。

1990年代の遺物であるVBEが、2000年代の産業廃棄物並に進化する感じでしょうか。
節々にVBA/VBEの限界を感じさせられるような仕様が散見されるものの、とても良いですね!
開発者の方々の血の滲む(に違いない)努力には、脱帽です。

開発は恐ろしいほど急ピッチで進められており、次のバージョンではGithubとの連携機能もつくようです。色々ヤバイ。

誰かインストールを頼む

現エクストリームVBA-er(推定)の@thom氏もこう言っています。
Rubberduckが動かない報告を受けて、
ほんと、誰かこれ、動かしてください。

(.NET Frameworkを使っているので大丈夫とは思うのですが、もしかすると64bit環境がだめなのかも?)

余談

どうにも動かないので、ソースコードに添付のレジストリを登録してみたところ、VBEがメモリエラーで起動しなくなり、オプションのアドイン画面を開くとWindowsが固まる事態になりました。

原因を調べたところ、添付のレジストリ情報に、Rubberduck開発者の環境に依存したパスが含まれていたためでした。

手動でレジストリを掃除しなおしたところ元に戻ったのですが、かなり焦りますので、良い子は真似をされませんように。