今回はVBAで業務自動化を目指す非エンジニア会社員向けに、VBAで開発をする際に用意しておきたいチェックリストについて解説します。
目次
チェックリストがリリース前のテストを有意義にする
VBAで自動化ツールを開発をしていると、いつかエクセルマクロブックを人に渡すときが来ます。リリースの瞬間です。このリリースのきっかけを曖昧にしていませんか?プログラミングが完了したら渡すだけになっていませんか。
リリースをきっちり行わないと、「こんな筈じゃなかった」とか「いまいち信用できなくて使っていない」とか「前に一度使ったときエラーになったから今では使っていない」という悲しい事になる可能性が非常に高くなります。
安心して継続的に使ってもらえるツールを開発する為に、きっちりリリースをするのに有効なチェックリストをこの機会に自分の物にしてしまいましょう。
チェックリストとはリリース時のテストに使うToDoリスト
チェックリストはリリース時のテストに使うチェック項目を網羅した物です。つまり、チェックリストを作成すると言う事はどんなテストを行うかを決める事です。リリースする、つまり人に使ってもらえるようにする瞬間を迎えるためのテストとその項目について見て行きましょう。
テストとチェクリストの目的
ここで、テストとチェックリストの目的を明確にしておきます。
- テスト
合格すればリリースできる最後の儀式。目的はリリース前の最終確認です。テストは、エラーが出て直して品質を高める行為ではありません。それはバグ出しといって、プログラミングの過程です。テストは儀式なので、受かって当然になるように開発を進めるようにします。テストとバグ出しを混同しないようにしましょう。
- チェックリスト
テストというリリース前の儀式で行う項目を網羅した物です。目的は、必要な機能が要求通り実装されているかをもれなくテストする事です。
「これが受かったら合格です」という基準を予め設定しておくことで、リリースの基準を明確にする事ができます。このため、開発の段階で目指すべきところが明確になる為、開発効率が向上します。また、ユーザー側も予め設定したチェック項目が網羅されたテストを経ることで、安心して利用する事ができます。
リリース前のテストはユーザー側と合意しておく
前項でチェックリストの目的として、もれなくテストする事と説明しました。これを行う事によってユーザーがリリース後に安心して開発した自動化ツールを利用することができるようになります。この安心して利用してもらえるというメリットを産むために必要な事は、ユーザーと一緒にチェックリストを作ると言う事です。
チェックリストはユーザーと一緒に作る
チェックリストは必ずユーザーと一緒に作るようにします。つまりテストの内容はユーザーと合意した内容にしておくと言うことです。どのような機能を実装するのか、それをどうやってテストするのかを一緒に作る事によって安心して使えるツールとなります。
私の悲しい経験:チェックリストや要求仕様書を作らなかった末路
私の悲しい経験をお話しします。昔、私が要求仕様書やリリース前のテスト、チェックリストと言った開発ドキュメントの知識がなかった頃の話です。
私はユーザーから実現したい機能を口頭で聞いていました。メモなどは何もありません。渡されたのは、入力と期待する出力のサンプルデータのみです。口頭で聞いた内容を実装し、ツールを渡しました。エラーが出るというので見てみると、初めにもらったデータとは違うデータ構造でした。
聞いてみると、こういう場合はこういうこともある、というような説明が続きました。そして、後から次々に○○の場合は××というような、条件に応じた処理の分岐を付け加えていきました。
一ヶ月ほど、手作業とツールで作業した結果が一致したので、そろそろツールでの作業に一本化すると言うことで私はリリースをしました。
つまり、テストなしです。開発しながらエラーが出なくなったから終わり、と言うようにしたのです。
そして数ヶ月後、「その後ツールは快適に使えていますか?」と聞いてみると「いまいち信頼できなくて使っていない」とのこと。悲しかったです。
これは私が書いたプログラムや私の能力を信頼していないのではありません。後から次々に条件や機能を思いつきで追加していったので、本当に必要な条件や機能が網羅できているのかがユーザー自身が分からなくなってしまったのです。
このようなことにならないためにも、チェックリストはユーザーと一緒に作り込むようにしましょう。
まとめ
- チェックリストはテストの内容を網羅したリスト
- チェックリストはユーザーと一緒に作る
- チェックリストによってツールが安心して継続して使えるようになる
皆さんもリリース前テストを設定して、テストのためにチェックリストを用意するようにしましょう!
<関連記事>