目次
Accessツール開発に先立ちテーブル、クエリ、アクションマクロ、フォーム、レポートの名称付与基準、VBAコーディング基準等のローカルルールを共有しよう
この記事では、チームでAccessを使ってツール開発する際の以下のローカルルールをご紹介しています。
- テーブル、クエリ、アクションマクロ、フォーム、レポートの名称付与基準
- アクションマクロ記述についてのローカルルール
- VBAコーディング作法についてのローカルルール
- アプリケーションタイトル表示とフォーム起動ルール
- フォーム内コントロールオブジェクトの名称についてのローカルルール
- フォルダ定義
これらのローカルルールを遵守することで、チーム内のツール開発者は一貫性、保守性、可読性、品質向上、チームの効率性など、さまざまな利点を得ることが出来ます。
チーム内で適切なローカルルールを定義し、効果的で高品質なツールを開発し続けましょう。
なぜローカルルールを遵守することが重要なのか
ツール開発者がこうしたローカルルールを遵守することは、以下のような重要な理由があります。
項番 | ポイント | 説明 |
---|---|---|
1 |
一貫性と統一性の確保 | ローカルルールに従ってテーブル、クエリ、マクロ、フォーム、レポートなどの要素を命名することで、一貫性と統一性が確保されます。同じ種類の要素を一貫した方法で命名することで、開発者や他のチームメンバーがコードやオブジェクトを理解しやすくなります。 |
2 | メンテナンスの容易さ | ローカルルールによって命名された要素は、後続のメンテナンスや修正作業が容易になります。適切な命名規則に従うことで、コードやオブジェクトの目的や機能を把握しやすくなります。これにより、将来の変更や修正がスムーズに行えます。 |
3 | チームの効率性向上 | ローカルルールによって統一された命名基準やコーディング作法を使用することで、複数の開発者が同じプロジェクトで作業する際のコンフリクトや混乱を軽減します。統一されたスタイルと命名規則により、コードの可読性が向上し、コードの理解やコラボレーションが円滑に行えます。 |
4 | 可読性と保守性の向上 | 適切な命名規則やコーディング作法に従うことで、コードやオブジェクトの可読性が向上し、保守性が向上します。他の開発者や将来の自分自身がコードを理解しやすくなり、バグ修正や機能拡張などの保守作業がスムーズに行えます。 |
5 | ベストプラクティスの適用 | ローカルルールは、ツール開発におけるベストプラクティスの一環です。これらのルールに従うことで、品質の高いコードや効率的な開発プロセスを実現することができます。ベストプラクティスを適用することで、バグの発生や将来の問題を予防することができます。 |
具体的なローカルルールの紹介
テーブル、クエリ、アクションマクロ、フォーム、レポートの名称付与基準
- マスタテーブル名は Sxxxx_テーブルの内容を分かりやすく記述
- トランザクションテーブル名は Txxxx_テーブルの内容を分かりやすく記述
- クエリ名は Qxxxx_処理内容_対象テーブルの内容に紐づけた内容を分かりやすく記述。処理内容はクエリの4つの基本操作に合わせ、[作成|削除|追加|修正]から選択
- アクションマクロ名は Mxxxx_処理内容、本記事内では VBAで記載された関数を呼ぶマクロのみなので、Call_関数名 処理を処理内容として記述
- フォーム名は Fxxxx_機能名としてフォームの機能を分かりやすく記述
- レポート名は Rxxxx_帳票名として出力されるレポートが特定できるよう分かりやすく記述
- xxxx は処理の順番を表すような行番号を10番飛ばしで記載。10番飛ばしにする理由は、後で、間に処理を追加する場合に、順番性を変えずに行番号を挿入できる余裕を確保するため
テーブル種別 | 特徴・用途 |
---|---|
マスタテーブル | マスタテーブルは、データベース内の基本的な情報を格納するために使用されるテーブルです。マスタテーブルには、顧客情報、製品情報、従業員情報などが含まれます。マスタテーブルはデータの永続性を持ち、他の関連するテーブルとリレーションを持ち、データベース内の他のテーブルと結合して情報を参照したり、データの整合性を確保するためのキーとして使用されたりします。 |
トランザクションテーブル | トランザクションテーブルは、データベース内の特定のアクションやイベントの詳細な履歴を追跡するために使用されるテーブルです。例えば、注文の取り引きや銀行取引など、特定のトランザクションが発生した際にその詳細を記録します。トランザクションテーブルは、データの作成、更新、削除の変更を保持し、データの変更履歴を追跡するために使用されます。通常、タイムスタンプやトランザクションIDなどの識別子が含まれます。 |
アクションマクロ記述についてのローカルルール
- autoexec は「メッセージの設定」で始め、「Access の終了」で終わる。
但し参照記事にあるGetObjFmAccdb等を利用する際には該当マクロの意図しない自動起動を避けるため autoexec は使用せず、以下に記載の /x main を利用する。 - autoexec 中では極力 If ステートメントを使わない。使うときは独立した処理をまとめたマクロ内で記載する。理由は autoexec 内で if ステートメントを多用すると、必要以上にネストが深くなり、autoexec の可読性、保守性が悪化するため
- initialize にツール実行に先立つ共通テーブルの自動作成等の処理を記述する
- cleanup にSubversion、Git等によってコミットする前に変動するテーブルをクリアする処理を記述する
- main をVBAの main() 関数の呼び出し専用マクロと定義する。このマクロは autoexec マクロの代替として、バッチファイルからマクロ指定起動スイッチ /x main で直接起動する際に使用する。
- exit には「Access の終了」のみを含め、データベースの最適化、修復スイッチ/compact とマクロ指定起動スイッチ /x exit の併用による利便性を確保します。
- 論理的に独立性した処理をまとめてマクロ定義を作る
- VBAで記載された関数をクエリと同じレベルで呼び出すため、マクロ名に Mxxxx_Call_関数名を付与し、この中で関数を呼び出す
SQL Serverをバックエンド、Accesをフロントエンドとしたシステム構築する際のローカルルール
- SQLサーバ側のテーブル名、フィールド名は英数字を使用する。
- SQLサーバ側に各テーブルの和名テーブル名、和名フィールドを使ったテーブルビュー(元テーブルに対する別名を含むSELECT文のSQL)を作成し、マスターテーブルのビューにはSVxxx_和名、トランザクションテーブルのビューにはTVxxx_和名といった名称を付与する。
- AccessからSQLサーバへの接続の際、参照系はODBC接続(Access側にSQL Server上のテーブルビューへのリンクを作成し)、このリンク経由で、アクションクエリ、フォーム内コンボボックス、リストのDataSouce設定、連結型の単票フォーム作成をする。
- AccessからSQLサーバへの接続の際、生成、更新、削除系はADO接続とし、AccessからSQLサーバへ目的となるSQLを直接発行する。
- SQLサーバ側とAccess側のテーブル、フィールド、データ属性の明確化を目的として、必ず以下のようなテーブル定義書を作成する。
VBAコーディング作法についてのローカルルール
- 外部参照される関数、変数の名称は英大文字で始め、アッパーキャメルケース記法とする(例UpperCamelCase )
- 内部参照のみのサブルーチン、変数は英小文字で始める
- 関数名は GetCSVFIle といった形式でコーディングし、名称は「動詞」+「対象」を基本とする
- 関数の入力パラメータに対する変数名は 小文字で各単語を1個のアンダースコア(_)で区切るスネークケース記法とする( 例. snake_case )
- グローバル定数は全て大文字英文字で単語を単語を1個のアンダースコア(_)で区切る.
- 変数名はその名所を見ただけでその内容が自明となるように記載し、i,j, といった省略形の変数名は極力使用しない。
- 再利用性を高めるためコーディングの中に個別の環境条件に依存する情報をハードコーディングせず共通化を図る。
フォーム内コントロールオブジェクトの名称付与基準
フォーム内で利用するコントロールオブジェクトの名称にはそれを容易に連想可能なプリフィックス(前置語)を付加します。
利用頻度の高い代表的なコントロールオブジェクトのプリフィックス例を以下に示します。
Object | Object (和名) | プリフィックス例 | 名称例 |
---|---|---|---|
Combo Box | コンボボックス | cmb | cmb区分 |
Command Button | コマンドボタン | cmd | cmd新規作成 |
Label | ラベル | lbl | lbl名前 |
List Box | リストボックス | lst | lst一覧 |
Text | テキスト | txt | txt社員番号 |
フォルダ定義
こうした業務改善ツールを忙しい業務の合間を見つけてコツコツと作っていくためにはツールを細かく部品に分けて少しづつ作っていくことが重要です。少しづつ部品を作っていくことにより
- 少しづつ業務が改善し自分の仕事が楽になる
- ツール開発に向けたモチベーションが維持できる
- 必要に応じて出来上がった部品を交換することができる
- 他のツールの部品として再利用することができる
といったことが期待できます。
こうしたツールの作り方をする場合、ツールそのもの、そしてツール間の受け渡しをするデータの置き場所を明確に決めてから作業しましょう。そうしないとツール同士が連携して動作したり、ツール同士がデータをやりとりできないからです。
もちろんドライブ名、フォルダ名は自分が使用している Windows 10 搭載 PC の環境に合わせて頂いて結構です。
具体的には以下の記事をご覧ください。
まとめ
この記事では、チームでAccessを使ってツール開発する際の以下のローカルルールをご紹介しました。
- テーブル、クエリ、マクロ、フォーム、レポートの名称付与基準
- マクロ記述についてのローカルルール
- VBAコーディング作法についてのローカルルール
- アプリケーションタイトル表示とフォーム起動ルール
- フォーム内コントロールオブジェクトの名称についてのローカルルール
- フォルダ定義
これらのローカルルールを遵守することで、チーム内のツール開発者は一貫性、保守性、可読性、品質向上、チームの効率性など、さまざまな利点を得ることが出来ます。
チーム内で適切なローカルルールを定義し、効果的で高品質なツールを開発し続けましょう。
この記事が読者の方のツール開発の効率性や保守性の向上に少しでもお役にたてれば幸いです。
それではしらかば堂が採用している具体的なローカルルールを以下にご紹介します。