この記事は非エンジニアの会社員で現業を持ちながらVBAでたまに自動化ツールを作っているというような方を読者として想定しています。
目次
非エンジニアに必要な開発ドキュメント3つのうちの要求仕様書
会社員がVBAで自動化するのに必要な開発ドキュメント3点で解説した通り、非エンジニアがVBAで他人が使うことを全停止としたツールを開発をするには要求仕様書、仕様書、チェックリストの3つの開発ドキュメントを用意すべきです。
今回はそのうち、要求仕様書について解説します。
要求仕様書とは
要求仕様書とはユーザーがソフトに要求する機能を記した開発ドキュメントです。細かく言えば要求仕様書の中にも○○に関する要求仕様書とか△△に関する要求仕様書とか色々あるようですが、プロがゲーム作るのとは違うのでそこまでする必要はありません。
複数の機能をつけたい時などある程度規模の大きいツールを作るときやユーザーフォームを作る場合は、一つのドキュメント内で章を分ければ十分です。逆に、複数の要求仕様書を必要とするような規模であれば、それはVBAによるちょっとしたツールのレベルを超えているか、そもそも複数のツールに分割させるのが妥当である可能性が高いので、ツール可する開発の対象範囲を検討し直してみると良いでしょう。
VBA開発に詳細な要求仕様書はいらない
VBAで部内のエクセル業務を自動化する目的では、業務の目的や背景、後工程といった業務の位置づけと実現したい機能をシンプルに記述する事に主眼を置くことが重要です。作業そのものを逐次的に記述する必要はありません。むしろそこまで細かく記述すると、章ごとに粒度感を保つのが難しくなり、読むのも大変、作るのも大変になってしまいます。開発ドキュメントとツールの内容は整合を取っているため、少し改修するだけで要求仕様書も改訂する必要が出てきてしまいます。
要求仕様書の目的を意識する
要求仕様書の目的は下記の3点です。
- 「思っていたのと違う」を防ぐ
- 再現性を持たせる
- 開発の手戻りを防ぐ
この3点を守る範囲で簡潔に書けば良いのです。
要するに何が必要なのかを記述する
「思っていたのと違う」を防ぐ為には要するに何が必要なのかを記述すれば十分です。たとえば、売上単価と販売数量をかけ算して売上高を集計するのが目的であれば、下記の様に書くのが良いでしょう。
<良い例>
本節では売上高集計の機能について説明します。売上高は販売単価と販売数量のかけ算結果をそれぞれの行に表示します。これを全ての行に対して実行し、最終行の下の売上高の列に、全ての行の売上高の数値を合計した数値を表示します。集計する通貨が円の場合、売上高は整数で表示します。集計する通貨がUSドルの場合、小数2桁で表示します。以上が売上高集計機能です。
<悪い例>
本節では売上高集計の機能について説明します。まず、最終行の行番号を取得します。その後、繰り返し構文を使ってヘッダ部分を除く2ぎょうめから最終行まで、B列とC列の値を・・・(以下、略。)
悪い例では具体的な作業をひとつ1つ逐次的に記述しています。要するに何がしたいかが分かりません。B列とC列が何の値かも分からないので、集計するデータの仕様が変更になったときにメンテナンスができません。
要するに何をしたいのか、と言う事を押さえれば大丈夫です。
VBA開発における要求仕様書の作成手順
他の開発ドキュメントでも概ね手順は同じなので、大まかな手順をここで押させておきましょう。
- 要求仕様書の目的を思い出す →「思っていたのと違う」を防ぐ、など
- 章立てを考える → 第一章はツールが必要な背景、第二章はデータの取り込み方、など
- 章ごとに書く →章ごとに伝えたい内容が誤解なく漏れないように書く。枝葉末節にとらわれない
- 開発者とユーザーで読み合わせをして、必要に応じて修正する
この手順に沿って要求仕様書の作成を進めます。しかし、ユーザー側がこのように開発ドキュメントの作成出来ることは、私が知る限り非常に稀です。こういう手順で書いてみて下さい、とユーザーに伝えた上で、書きやすいように過去のドキュメントやテンプレートを渡すと良いでしょう。
テンプレートを渡しても、そのテンプレートが書きづらかったり合わなかったりすればこだわる必要はないことも伝えておきましょう。たまに、反発してくる人がいますが、そういう人には、必要性を伝えるようにします。それでも要求仕様が出てこない場合は、その人の案件は一旦保留です。やむなしですね。
要求仕様書なしで気を利かせて作ってあげたツールはきっと「こんな筈じゃなかった」生成ツールになってしまいます。気をつけましょう。
<関連記事>