Ariawase はフリーな VBA ライブラリです。貧弱な VBA をもうすこしまともに扱うために開発されました。足りない組み込みライブラリ、標準的な方法が存在しない抽象化機構、そして、やりづらいテストを補うべく機能を提供します。
Ariawase is free library for VBA cowboys.
ライブラリの全体像をまずは一覧表で。計11個のモジュールを、ライブラリの基盤となるものから順に4つの区分、Standard、Advance、Option、Other に分けて以下に示します。
- Standard
- Core.bas - 基本モジュール
- IO.bas - 入出力
- Advance
- Ext.bas - 拡張モジュール
- Assert.bas - ユニット テスト
- ArrayEx.cls - 自動拡張配列
- Tuple.cls - タプル
- Func.cls - 関数ポインタ
- Option
- WinInet.bas - ファイル ダウンロード
- CdoMail.cls - メール送信
- Resource.bas - リソース
- Other
- MonkeyTest.cls - Ariawase 自身のテスト
Ariawase は、すべてのモジュールをいつも使用する必要はありません。自分に必要なモジュールだけを取り出して利用するのでも構いません。その場合は、この区分に沿って取捨選択するとよいでしょう。
最小構成は Standard で、これは常に必要となります。より多くの機能を利用する場合は Standard に加えて Advance を使用します。Option の各モジュールは、それぞれ特定の機能を提供するものですので、必要なものがあれば適宜利用します。Other は、あなたのコードのためには必要とはならないでしょう。Ariawase の操作と動作を確認するために使用できますが、あなたのマクロをリリースするときには、最終的に消されるべきものです。
Standard
Ariawase のもっとも基盤となるモジュール群です。
特に Core.bas は必須のモジュールとして設計されており、多くの基本的な関数や、抽象機能を提供します。Core.bas は、他のモジュールへの依存を持たないモジュールとして設計されており、今後においてもこれは変わることのない仕様です。IO.bas はファイルの入出力機能を提供します。ファイルの入出力が必要なければ削除してもかまいませんが、VBA を書くにあたって Ariawase のようなライブラリを必要とする多くの場合、IO.bas は必要となるでしょう。
Advance
より高度な追加機能を提供します。もっとコード寄りの視点で言えば、Core.bas 以外のモジュールにも依存があるような標準モジュールと、その実現のために必要なクラス モジュールがこれに区分されます。
Ext.bas は、Core.bas よりも高度な機能を提供します。現在は、主に配列操作のための関数群を提供しており、いわゆる関数型言語に見るようなリスト処理(配列処理)を実現します。Assert.bas はユニット テストのためのモジュールです。簡単ながらも必要十分なテスト機能を実装します。
ArrayEx.cls は自動拡張する配列です。Tuple.cls はタプルと呼ばれる、不変な値の組を提供するものです。Func.cls は関数ポインタを扱います。これらクラス モジュールは Ext.bas や Assert.bas から使用されますが、もちろんあなたのマクロのために使用することもできます。
Option
特定機能のためのモジュール群です。その機能の必要に応じて利用します。
WinInet.bas は、インターネット上からファイルをダウンロードする機能を持ちます。CdoMail.cls は、電子メールを送信するだけの機能を持ちます。Resource.bas は、CdoMail.cls で使用する定数値を定義します。
これらモジュールは、Ariawase の将来のバージョンからは削除され、別途提供となるかもしれません。
Other
あなたのマクロのリリースのためには不必要なモジュール群です。
MonkeyTest.cls は、Ariawase 自体のテスト コードです。Ariawase のテストを確認したり、各関数の使用例の確認のために利用できますが、あなたのマクロのリリース時には削除されるべきものです。
バージョンについて
というか今後の展望についてですが。
v0.6.0 というバージョン番号からもお分かりの通り、Ariawase はまだベータ的な位置付けです。と言っても、バグがバンバン残っているというわけではありませんが、まだまだ洗練の余地が、API の破壊的変更の可能性がいくらか残されている状況とお考えください。
v1.0 が出せるまではがんばりたい気持ちもあるのですが、一方で、vbac は別として、Ariawase 本体を活用しているという話はあまり聞かないところでありまして、利用されていないものをメンテし続けるほどのモチベーションはないので、今後 Ariawase が活発に更新されるかどうかは普及する・しないによる、といったところです。
ただまあ普及って言っても僕の閾値は低くて、10人ぐらいの人から「使ってるよ!」って言われたら、その気になって開発し続けるとは思いますけど。そうでない場合も、細々とはメンテし続けようとは思っていますし、特にバグ修正に関しては、見つけ次第、ご報告いただき次第対処していきます。
という感じで。