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

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 ・・・新着記事一覧を見る

カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
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)


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

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




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


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



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