mnuFile
mnuFileExit
メニューの基本名を省略型にするときは、メニュー構造の上位についても同様に省略型にします。
mnuFl
mnuFlExit
プロシージャの基本名
プロシージャの基本名は、「オブジェクト+動作」で作成します。この形式を使うと、Visual BasicのIDEでプロシージャコンボボックスに表示するときに、関数やサブルーチンの名前をオブジェクトの種類ごとに並べて表示できます。
subFrmHide
subFrmCreate
subFrmShow
修飾子
修飾子は、オブジェクトの用途を表わすためにオブジェクト名につけ加える部分のことです。オブジェクトの細かい特性(変数の適用範囲など)を表わす接頭語とは異なり、修飾子は、オブジェクトが処理の流れの中でどのような働きをするかを表わします。
たとえば、配列の最初の項目、現在の項目、最後の項目を追跡する3つの変数を宣言する場合には、ゴシックの部分を修飾子とすることにより、各変数が同じ基本名をもちつつ、各変数を一意に表わし、用途を明確に示す名前を作成することができます。
intPartFirst
intPartCur
intPartLast
修飾子はできるだけ短くし、大文字・小文字を組み合わせて表記します。
接尾語
接尾語の役割は、オブジェクト名に一意性を与えることにあります。規則に従って名前を決めると、それがほかのオブジェクトの名前と重複してしまうような場合に、識別用の情報を追加し、両者が別のものとして扱われるようにします。通常は、配列化することにより回避できる名前の競合が発生した場合の別の解決方法として使用します。接尾語は、例外的な構文ですので、意識的にアンダスコアを使って、他の部分と区別します。
subFrmHide_OSK
subFrmHide_TYO
自由な開発と規約のある開発
〜コメントはなぜ必要か
|
|---|
命名規約が必要な理由でもありますが、チーム開発の基本は、「人は自分が作ったものでも忘れるものだ」ということを「忘れたら自分が作ったものでも他人が作ったものと同じようなものだ」ということに拡張したと考えることができます。
コメントはどこにつけるのか
Visual Basicでコメントをつける場所は、4つに大別されます。
(1)モジュールヘッダコメント(図3)
モジュールヘッダコメントは、フォームモジュールや標準モジュールなどのモジュールの先頭に記述するコメントです。この部分には、そのモジュールの目的を記述します。
標準モジュールならば、単に共通プロシージャを集めたモジュールなのか、それともある特定の目的のためのプロシージャを集めたものなのかがわかるように記述します。
フォームモジュールならば、その画面の使用目的を記述します。もし、画面をロードしたりアンロードしたりするときに前処理や後処理を外部から指定するとき(図4)は、そのことも記述します。
図3:モジュールヘッダコメント

図4:フォーム前処理と後処理

(2)プロシージャヘッダコメント(図5)
プロシージャヘッダコメントは、イベントに対応したプロシージャ、自分でつくったサブルーチンや関数の先頭に記述するコメントです。この部分には、そのプロシージャ全体の機能を記述します。もし、このコメントが記述しにくいと感じたら、それはモジュールの分割単位が間違っているのかもしれません。なぜなら、モジュール分割は機能単位で行なうのが基本なのです。自分でこのようなチェックを行なえるのも、コメントをつける効用になります。
図5:プロシージャヘッダコメント

(3)変数コメント(図6)
変数コメントは、変数の使用目的を記述します。位置としては、変数宣言行の後半になりますので、結果的に1変数宣言行で1変数を宣言することを促します。このことが促進されることは、宣言忘れにより予期せずバリアント型に宣言してしまった変数に悩まされることの防止にも有効です。
図6:変数コメント

(4)実行ブロックコメント(図7)
実行文のすべての行にコメントを記述するのは、現実的ではありません。遵守が不可能な規約は開発の足を引っ張るばかりです。ある程度の固まりや複雑な部分にコメントをつけるようにするといいでしょう。
ある程度の固まりは、コーディングしているときに、行と行のあいだを空けたいと感じたところになります。これは、コーディングしていると無意識のうちに機能ごとに処理を分けようという心理が働くからです(これが働かないときには、Visual Basicだけではなく、あらゆる言語で、きちんとプログラミングする技術が未熟だということです)。ですから、単に1行、空けるところに、そのあとに続く行の説明をコメントすればよいわけです。そして、コメントには、処理ではなく機能を記述します。それは、処理は効率化やチューニングなどにより記載が変わりますが、機能については、仕様が変更されなければ変わることはないからです。
図7:実行ブロックコメント

規約を決めただけではチーム開発はおぼつきません。というのは規約は守られてこそ価値があるからです。そのためには、徹底したレビューしかありません。最初のうちは、規約を選定した人が、規約に完全に一致するまで、何回もレビューする必要があります。このとき、間違いを指摘するだけではなく、なぜ規約がそのように決定されているかを説明することが重要です。Windowsでのチーム開発における規約は、なるべく少ないほうがよいわけですから、規約に載っていないことは、それぞれが担当部分に最適な方式を模索しなければいけないのです。その模索結果が全体と整合性が取れているかを担当者が自己判断できるようになるためには、「なぜ、規約と比べてまずいのか」を理解してもらう必要があるのです。
自由な開発と規約のある開発
〜Code Reviewerの利用
|
|---|
いくら慎重に行なったとしてもレビューで不適合ポイントを見逃してしまうことがあります。また、レビューイ(レビューをする人)の時間的・精神的負担も大きいでしょう。その負担を軽減するためのツールにNuMega社のCodeReviewerがあります。実際に私も開発で使っているツールですが、うるさいくらい細かなチェックをしてくれます(図8)。チェック項目としては、命名規約(図9)、GUI(図10)、Visual Basic側の障害(図11)などがあります。もちろん、開発チームの規約にあわせてカスタマイズも可能です。
図8:CodeReviewer結果画面

図9:CodeReviewer(命名規約違反)

図10:CodeReviewer(GUI不適切)

図11:CodeReviewer(VB障害情報)

いままでのドキュメントの考え方
いままでの開発では、ドキュメントの量がソフトウェアの価格に比例すると考えられていました。顧客も、何冊にもファイルされたドキュメントが手元に届くとなんとなくきちんと買い物をしたという気分になるようです。そして、開発工程は徐々に増殖するものですから、これら膨大なドキュメントは全体の整合性がきちんと取れていないこともあります。そのため、最もプログラムを稼働させていたほうがよい納品直前に全員でドキュメントの内容を更新するような無駄な作業が発生します。なぜ、無駄かといえば、プログラムの詳細仕様やインターフェイス仕様がドキュメントとして存在していたとしても、システムの使い方をマスターするための役には立たないからです。
これからのドキュメント
いままでの開発スタイルでは、チーム開発において必要ではなくなったドキュメントも数多くあります。たとえば、ワープロソフトで入力された画面仕様書や帳票仕様書などです。これらは、Visual Basicで作成するときには、フォームオブジェクトのハードコピーやソースコードのコメントを参照すればよく、紙で管理する必要は全然ありません。これらのドキュメントは、確かに納品物として必要かもしれませんが、その納品物の形態は、設計書ではなく操作手引書にしたほうが実用的です。つまり、結果的に画面仕様書や帳票設計書は必要ないのです。
では、何が必要かといえば、
- 規約集
- 標準UIデザイン指針
- ビジネスモデル図
- データベース設計書
- 操作手引書
などです。これらのドキュメントは、納品したシステムが正しいか否かを、顧客が判断する材料になります。このドキュメントに書かれたことが実現できることを顧客が確認して、初めてシステムが完成したことになります。この5つのドキュメントは、プログラムの固有のバージョンに依存する内容になっていますから、版数管理を行なって、どの版がプログラムのどのバージョンに対応してるかをきちんと管理する必要があります。このような管理を構成管理、ドキュメントの版数を管理することを文書管理といいます。文書管理では、「いつ、どこを、どのように」直したかを追跡できるようにしておく必要があります。
また、顧客がすべてのテストケースを網羅することは現実的ではないので(なかなか発生しない例外的な処理など)、
などのドキュメントも保管しておく必要があります。この3つのドキュメントは、あとから変更を加える必要のない品質記録ですから、その時々において適宜記載保管すれば、苦労せずに蓄積されます。実は、これらの品質記録をきちんと管理していると、どの担当者がどのような間違いを犯しやすいかなどの特性を定量的に測定するデータにもなりますので、次回開発時には、担当ごとのフォローポイントが明確になるという副次的効果もあります。
チーム開発に必要なドキュメント
〜ドキュメント生成ツールの利用
|
|---|
先ほど、プログラムの詳細仕様やインターフェイス仕様がドキュメントとして存在していたとしても、システムの使い方をマスターするための役には立たないと記載しました。しかし、これらのドキュメントは次期開発を行なう上では必要なドキュメントです。そこで、開発完了間近にソースコードから仕様書をワープロ入力するのではなく、自動的にドキュメントを出力するようにして、正確なドキュメントを作成するのがよいでしょう。本誌の広告ページにはドキュメント生成用のツールが各社からアナウンスされています。生成先の形態(Word、Excel、印刷のみなど)を考慮にいれて、自分にあったツールを探してみてください。ただし、モジュール仕様書などの一部出力帳表では、事前にヘッダコメントに記入できる形式が指定されています。納品を意識した時点で購入するのではなく、開発に先立ちツールを購入して、コメント規約にツールが前提としているコメント形式を追加してください。
Visual Basicで一番簡単にチーム開発をはじめるとすれば、EXE単位(VBプロジェクト単位)に分担する方法です。EXE単位ならば、メニュープログラムを用意して、分担したEXEを起動するようにすれば、システムが完成します(図12)。
図12:メニュー画面からの呼び出し

共通ロジックをどう扱うか
EXE単位に分担したときに、共通なロジックをどうするのかという問題があります。たとえばINIファイルと入出力するWindows APIを利用するプロシージャをそれぞれのEXEで独自にコーディングしていては、効率面や品質面が向上しません。このような共通ロジックは、標準モジュール(.BAS)にまとめてしまい、そのBASファイルをすべてのVBプロジェクトに追加すればよいわけです(図13)。もちろん、ログオン画面などの共通画面も同じように考えることができます。この共通ロジックをソースレベルで共有した方式(ソース共有方式)だと、共通モジュールに変更が生じたときは、全VBプロジェクトの再コンパイルが必要ですが、管理の手間はかなり省けます。
ソース共有方式をスムーズに実施するためには、命名規約、とくにパブリックレベルのオブジェクト名の命名規約が浸透していることが必要です。命名規約が浸透していれば、変数名がダブルこともありませんし、それぞれのVBプロジェクトでもあたかも自分が作成したモジュールのように整合性が取れるはずです。
なお、同時に複数から共通モジュールが更新されないようにするには、Visual Basic 5.0のEnterprise版に添付されているVisual Source Safeを使うのがよいでしょう。Visual Source Safeを使えば、誰かが「チェックアウト」して更新してくるときには、ほかの人は更新不可属性となり、同時更新の抑止が簡単に行なえます。
図13:EXE単位に分割

ActiveX DLLを使う
共通ロジックをソースレベルで共有したときは、再コンパイルの問題もありますが、ひとつひとつのEXEの中に同じロジックが実行形式で含まれていることによるサイズの増加が問題になることもあるかもしれません。その解決方法のひとつが共通ロジックをActiveX DLL化してしまうことです。また、機能は提供したいけれど、処理内容は隠蔽したいときなどにもActiveX DLLは有効です。
EXE単位に分割して、メニューから起動したり、ActiveX DLLで機能をDLL化すると機能間をわたり歩くときに起動時間によるタイムラグが発生します。業務によっては、このタイムラグが問題になることもあるかもしれません。もし、タイムラグが問題になり、インストール先のPCに十分なメモリがあれば、分担して開発し、最終的にひとつのEXEにしてしまう回避方法があります。
分担の方法
分担の方法は、EXE単位で分割したときと同じ方法をとります。ここでのポイントは1EXE化したときの呼び出し元のモジュールをVBプロジェクトに追加して、担当モジュールの呼び出しを実際と同じ方式でチェックすることです(図14)。
EXE化の方法
必要なモジュールをすべて追加したVBプロジェクトを作成して、コンパイルします(図15)。命名規約さえ守られていれば、時間がかかる以外に何も問題なくコンパイルは完了します。
図14:モジュール単位テスト方法

図15:複数機能1EXE化

Visual Basicでチーム開発を行なうときの注目点をいろいろとご紹介してきました。もしかしたら、当たり前のことばかりなので拍子抜けした方もいるかもしれません。しかし、チーム開発の成否は、その当たり前のことを当たり前のように実施できるかどうかにかかっているのです。そして、理想的なチーム開発の状態とは、規約集を見なくても、規約に沿った開発が行なわれている状態といえます。つまり、開発担当者全員がひとつの思考にシンクロしている状態が最も効率よくチームが活動している状態になります。
チーム開発だということで、あまり身構えずに、まずは自分が半年前に作ったVBプロジェクトファイルを開いて、そのプログラムが行なっていることをすぐに思い出すためにはどうしたらよいかを考えてみましょう。キーは、「いつも使っている名前でいつものように書かれていれば」です。
VB Magazine ライブラリ | Visual Basic WorkGroup
int21 ホームページ | PCDN ホームページ
Copyright (c) 1998 int21 Corporation All Rights Reserved.
For questions or comments, please send mail to: pcdn@int21.co.jp