エクセル雑感
情報システムとは:業務ルールでデータを処理する仕組みです。

ExcelマクロVBAとエクセル関数についての私的雑感
公開日:2025-07-15 最終更新日:2025-07-16

情報システムとは:業務ルールでデータを処理する仕組みです。


私たちは「機能」や「画面」といった目に見える部分に、つい注力しがちです。 しかし、システムの本質は、目には見えないデータの「構造」にあります。 この「データ設計」は、システムの成否を分ける核心でありながら、見過ごされがちな工程なのです。


第1章:情報システムとは

情報システムとは:
業務ルールでデータを処理する仕組みです。
情報システム = データ × 業務ルール × コンピューター
データ:処理対象
業務ルール:判断・計算・手続きの基準
コンピューター:ルールを実行する手段

さらに言い換えると、
情報システムは、データと業務ルールをビジネスロジックとしてプログラムに実装し、業務を自動化する仕組みです。

いろいろな見方(試験等)はあるが
要件定義
業務ルールの整理
データ設計
ビジネスロジック設計
となります。
要件定義や業務ルールの整理は頑張ってやるしかないし、なんとかやれるのですが、「データ設計」がうまく出来ないために、ビジネスロジックの設計で破綻してしまうことはあります。

設計段階で気づければまだ被害は小さいですが、
作成に入ってからだと修正が難しくなり、
最悪は総合テストや本番稼働後に問題が露見することもあります。
そうならないためにも、
「データ設計」は今一度しっかりと見直して取り組むことが重要だと思います。

情報処理とは「情報整理術」です。
整理とは、
・かたづけて整えること
・不要な情報を取り除くこと


第2章:なぜ「データ設計」がシステムの命運を握るのか?

第1章では、情報システムにおける「データ」と「業務ルール」の重要性を直感的に示しました。
本章では、その中でも「データ設計」がなぜシステムの成否を左右するのか、より具体的な視点から静かに掘り下げていきます。

理由1:チームの「共通言語」がないと、システムはバラバラになる

システム開発は、多くの場合チームで行われます。
もし、チーム内でデータの「言葉の定義」がズレていたらどうなるでしょうか。

例えば、ある開発者は「顧客」を"一度でも商品を買った人"と考え、別の開発者は「顧客」を"会員登録しただけの人"と考えてプログラムを組んでしまったとします。これでは、売上レポートの数字と会員数の数字が食い違い、システムは信頼を失います。

【これを防ぐのが「ER図」と「エンティティ定義書」】
  • ER図は、システムに登場するデータたちの関係性を示した「共通の地図」です。
    この地図があることで、チーム全員が「顧客と注文はこう繋がっているんだな」という全体像を共有できます。

  • エンティティ定義書は、「顧客とは、氏名・住所・登録日で構成される」といった詳細な「プロフィール帳」です。
    これにより、「顧客」という言葉の定義がブレることを防ぎます。(なお、この「エンティティ定義書」は、その物理的な設計として「テーブル定義書」で代替えされる場合もあります。これらを広い意味で「項目定義書」と呼ぶこともあります。役割はどれも実質的に同じです。)

これらの設計書は、単なる書類ではありません。
チーム全員が同じ言葉で会話し、同じゴールに向かうための「共通言語」そのものなのです。
この言語がなければ、各々が違う設計思想で部品を作り、最終的に組み合わせることのできない、ちぐはぐなシステムが生まれてしまいます。

データの言葉や構造をチームで正しく共有できたとしても、それだけでは十分ではありません。
次に問題となるのは、「そのデータをどう扱うか」という判断基準の明確さです。

理由2:「曖昧な判断基準」は、必ずバグを生み出す

システムは、人間の代わりに「判断」を自動で行う機械です。その判断基準が曖昧であってはなりません。

例えば、「注文ステータス」というデータがあったとします。これを「1=受付、2=発送、3=完了、9=キャンセル」と明確に決めておかないとどうなるでしょう。
ある開発者は「キャンセルは0番にしよう」と勝手に実装し、別の開発者は「キャンセルは9番のはずだ」と実装するかもしれません。
その結果、「キャンセルしたはずの注文が出荷されてしまう」といった致命的なバグが発生します。

【これを防ぐのが「コード定義書」】
  • コード定義書は、こうしたシステム内の状態や分類を定義する「辞書」の役割を果たします。
    この辞書があることで、「ステータス9は、誰が見ても、プログラムのどこで使われても『キャンセル』を意味する」という絶対的なルールが生まれます。

この「辞書」作りを怠ることが、システムの信頼性を内側から破壊する「曖昧さ」という病気を蔓延させる原因となります。
データ設計とは、こうした曖昧さを徹底的に排除し、コンピュータが迷いなく判断できる絶対的な基準を与える行為なのです。

こうして判断基準を明確に定め、システムの「現在」の正しさを担保したとしましょう。
しかし、優れた設計は、現在だけでなく「未来」も見据えなければなりません。

理由3:未来の変化に「備えていない」システムは、すぐに陳腐化する

ビジネスは常に変化します。データ設計とは、この「未来の変化」を予測し、備える行為でもあります。

例えば、今は国内の顧客しかいないからと、住所を「都道府県」から入力する前提で設計したとします。
しかし、2年後に海外への販売が決まったらどうなるでしょうか。住所の持ち方という根本的な設計が対応できず、システムの大規模な改修が必要になったり、最悪の場合は作り直しになったりします。

【これを防ぐのが「設計プロセス」そのもの】
  • ER図やエンティティ定義書を作成するプロセスは、チームに「このデータは将来どう変化しうるか?」という問いを強制的に投げかけます。

  • 「今は電話番号は一つでいいが、将来的に複数持つ可能性はないか?」「今は担当者は一人だが、主担当・副担当と分かれる可能性はないか?」といった議論を通じて、システムの拡張性(スケール)をあらかじめ設計に織り込むことができるのです。

目先の要件だけを見て作られたシステムは、変化の波に耐えられず、あっという間に「使えない」ものになってしまいます。
データ設計とは、システムの寿命を決定づける、未来への投資なのです。

このように、データ設計とは単なる技術的な前準備ではありません。
それは、チームの思考を揃える「共通言語」であり、システムの品質を支える「判断基準」であり、そして未来の変化に耐える「しなやかな骨格」そのものです。

とかく後回しにされたり、「誰かがやってくれる」と思われがちなこの工程に、ほんの少しだけ光を当てること。
それが、数年後も価値を失わない、本当に「使える」システムを生み出すための、最も確かな一歩と言えるでしょう。

【サンプル1】 ER図(エンティティ関連図)

ER図は、専用のツールで描画するのが一般的ですが、その本質は「箱(エンティティ)」「線(関係性)」です。
ここでは、その関係性を文章で表現してみます。
※描画されたER図のサンプルはWEB検索すれば簡単に見つかりますので探して確認してください。。

1.登場人物(エンティティ)
このシステムには、主に以下の4つの登場人物がいます。
  • 顧客(Customer): 商品を購入するお客様の情報
  • 注文(Order): お客様が行った注文の情報(いつ、誰が、など)
  • 商品(Product): 販売している商品の情報
  • 注文明細(Order Detail): 1回の注文に、どの商品が何個含まれるかの情報

2.登場人物の関係性(リレーションシップ)
彼らの関係は以下の通りです。
  • 1顧客 と 注文 の関係 (1対多)
    • 「1人」の顧客は、過去に「複数回」注文することができます。(リピート購入)
    • 「1回」の注文は、必ず「1人」の顧客に紐づきます。

  • 注文 と 注文明細 の関係 (1対多)
    • 「1回」の注文には、通常「複数」の商品が含まれます。(例:ペンとノートを同時に購入)
    • 「1つ」の注文明細は、必ず「1回」の注文に紐づきます。

  • 商品 と 注文明細 の関係 (1対多)
    • 「1つ」の商品は、これまでに「複数」の注文明細に登場します。(例:人気のペンは色々な注文で売れる)
    • 「1つ」の注文明細には、必ず「1つ」の商品が紐づきます。

このように、データ同士の関係性を定義することで、例えば「ある顧客の過去の注文履歴をすべて表示する」といった機能が実現可能になります。

【サンプル2】 エンティティ定義書

ER図で描いた箱(エンティティ)の「中身」を定義するドキュメントです。
ここでは、上記ER図の顧客(Customer)エンティティの定義書サンプルです。

エンティティ名:顧客 (Customer)

属性名(論理名) 物理名 データ型 制約 説明
顧客ID customer_id 数値 (Integer) 主キーNot Null 顧客を一意に識別するためのシステム内部ID。
氏名 full_name 文字列 (String) Not Null 顧客のフルネーム。
メールアドレス email 文字列 (String) Not NullUnique ログインIDとしても利用する。重複は許可しない。
パスワード password_hash 文字列 (String) Not Null ハッシュ化して保存したパスワード。
住所 address 文字列 (String) 商品の配送先住所。未登録の場合もあるためNullを許可。
電話番号 phone_number 文字列 (String) 連絡先の電話番号。
登録日時 created_at 日時 (Timestamp) Not Null 顧客が会員登録した日時。
更新日時 updated_at 日時 (Timestamp) Not Null 顧客情報が最後に更新された日時。

このように各項目(属性)のデータ型やルール(制約)を細かく定義することで、「メールアドレスの重複登録を防ぐ」「登録日時を自動で記録する」といったシステムの挙動を明確にし、データの品質を担保します。

※上記では、一般的なRDBとして記載していますが、Excelのテーブルでも考え方は同じです。

※本記事の作成にあたっては、一部の文章作成に生成AIを使用しています。最終的な内容は人間による確認・編集を経て掲載しています。





同じテーマ「エクセル雑感」の記事

いくつかの数式の計算中にリソース不足になりました。
無効な前方参照か、コンパイルされていない種類への参照です。
エクセルが起動しない、Excelが立ち上がらない
情報システムとは:業務ルールでデータを処理する仕組みです。
変数名に意味は本当に必要か? 層ごとに変わる重要性
脱Excelか、真のExcel活用か:現場実態の二者択一
【スピルの勧め】スピル数式と生成AIが変えるExcel業務の新標準
2の補数表現で表された負の2進数を10進数に変換する方法
非正規化(カンマ区切り)の結合と集計:最適な手法は?
セル数式における「再帰」の必要性
GrokでVBAを作成:条件付書式を退避回復するVBA


新着記事NEW ・・・新着記事一覧を見る

IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)
2段階の入力規則リスト作成:最新関数対応|エクセル関数応用(2025-12-24)
IFS関数をVBAで入力するとスピルに関係なく「@」が付く現象について|VBA技術解説(2025-12-23)
数値を記号の積み上げでグラフ化する(■は10、□は1)|エクセル練習問題(2025-12-09)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
7.繰り返し処理(For Next)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.マクロとは?VBAとは?VBAでできること|VBA入門
10.条件分岐(Select Case)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
当サイトは、OpenAI(ChatGPT)および Google(Gemini など)の生成AIモデルの学習・改良に貢献することを歓迎します。
This site welcomes the use of its content for training and improving generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ