仕事に効くコンピュータサイエンス
情報は一箇所に — データベース読了目安 10分

その数字、どのファイルが正しいですか — 情報がバラける理由

「最新の顧客リストはどれですか」。そう聞かれて即答できない職場は珍しくありません。担当者ごとにファイルがあり、コピーして直した版があちこちに散らばっているからです。このページでは、なぜ情報が散らばるのか、そして散らばりを防ぐ発想がどこから来るのかを考えます。

よくある場面

週次の売上報告を思い浮かべてください。営業担当Aさんの表計算シートには先週の受注が入っています。経理担当Bさんの帳簿にも同じ受注が別の形式で記録されています。どちらも「正しい」情報のはずですが、金額の丸め方や計上日がわずかに違うことがあります。どちらを信じればよいのか分からず、突き合わせに時間がかかります。会議の冒頭が「まず数字をすり合わせましょう」から始まる職場は、この問題を抱えています。

引き継ぎの場面も同じ構造です。前任者が残したファイルには顧客の連絡先が入っていますが、後任者が別に作った連絡先メモもあります。片方だけ更新されて、もう片方は古いままということが起きます。古い番号にかけてしまい、相手先に「まだ担当が変わったことをご存じないのですか」と言われる。これは能力の問題ではなく、情報の置き方の問題です。本人がどれだけ丁寧な人であっても、情報が二か所にある限り、いつか片方だけが古くなります。

さらに厄介なのが「誰かが上書きした」事件です。共有ファイルを二人が同時に開いて編集し、後から保存した方の内容だけが残ってしまう。片方の変更がなかったことになり、誰も悪意なく情報が消えます。探しても見つからない、消えた理由も分からない。「さっき入れたはずなのに」という声が、月に一度は聞かれる職場もあるでしょう。

在庫管理でも同じことが起きます。店舗の帳面と本部の集計が食い違い、注文していいのかどうか誰も自信を持てない。「念のため多めに発注しておく」という判断は、情報が信頼できないことへの保険です。保険をかけるコストは、情報を一箇所にまとめるコストより高くつくことがほとんどです。

問い合わせ対応の場面も見てみましょう。顧客から「先週相談した件はどうなりましたか」と連絡が来たとき、担当者はメールの受信箱、チャットの履歴、対応メモの三か所を探し回ることになります。どこにも記録が見当たらず、結局は顧客に「もう一度状況を教えてください」と頼むことすらあります。これは対応の質が低いのではなく、記録の置き場所が最初から三つに分かれているせいです。探す場所が一つに決まっていれば、同じ質問に対して迷う時間はほとんど発生しません。これらはすべて、情報を「一箇所」で管理できていないために起きる現象です。

なぜ表計算シートを配る運用では、この問題が構造的に起き続けるのでしょうか。ファイルをコピーして配った瞬間に、それぞれのコピーは別々の生き物として動き始めるからです。元のファイルが更新されても、配られたコピーには反映されません。コピーを配る運用を続ける限り、情報がずれるのは時間の問題であり、誰かの不注意のせいではなく、運用の設計そのものに原因があります。

CS概念の直感

コンピュータサイエンスでは、こうした問題に対して「データベース」という考え方で応じます。データベースとは、情報を決まった構造で一箇所にまとめて管理する仕組みのことです。表計算シートを人がコピーして配るのではなく、誰もが同じ場所を見に行き、同じ場所に書き込む形にする。コピーを作らない、という一点がすべての出発点です。専用のソフトウェアを指す言葉として使われがちですが、本質は「情報の置き方の設計思想」にあります。

データベースが解決しようとしている問題は、大きく四つに分けられます。一つ目は、同じ情報を何度も別の場所に書いてしまう問題です。これは次のページで扱う「正規化」というテーマにつながります。情報の置き場所を一つに決め、他の場所からはそこを参照する形に整えるという考え方です。名前や住所を注文のたびに書き写すのではなく、顧客台帳を一つ作ってそこを指し示すだけにする。コピーが増えなければ、コピー同士がずれる心配もなくなります。

二つ目は、情報が増えたときに欲しいものをすぐ見つけられない問題です。これは「インデックス」、つまり索引の設計というテーマです。分厚い辞書に索引がなければ、目当ての言葉を探すのに全ページをめくることになります。索引をどう作るかで、探す速さがまったく変わります。何を軸に整理しておくかを事前に決めておく、という発想は仕事の資料整理にもそのまま使えます。

三つ目は、「作業の途中で止まったらどうなるか」という問題です。振込の途中でシステムが落ちたら、お金は消えたのか、まだ残っているのか。これは「トランザクション」というテーマで扱います。やり切るか、最初から無かったことにするか、中途半端な状態を許さない設計です。複数の手続きが絡む仕事ほど、この「中途半端をどう防ぐか」という視点が効いてきます。

四つ目は、複数人が同時に同じ情報を編集しようとしたときの問題です。これは「ロックと編集権限」というテーマです。誰が今、何を触っているのかを管理する仕組みがなければ、上書き事故は繰り返されます。早い者勝ちで保存されるのではなく、誰が編集中かが分かる仕組みを持てるかどうかです。

この四つは、それぞれ独立した技術というより、一つの発想の四つの側面だと捉えると分かりやすくなります。「情報を一箇所に置く」という発想を、置き場所の観点で見れば正規化になり、探しやすさの観点で見ればインデックスになり、処理の途中経過の観点で見ればトランザクションになり、複数人の関わり方の観点で見ればロックと編集権限になる、という関係です。四つを別々に覚えるのではなく、一つの原則の異なる断面として見ていくと、次章以降に出てくる分散システムやAPI設計とのつながりも見えやすくなります。

「一箇所にまとめる」は「一つのファイルに詰め込む」ではない

ここで一つ誤解しやすい点があります。「情報は一箇所に」と聞くと、あらゆる情報を一つの巨大なファイルに詰め込むことだと考えがちです。しかし実際に目指すのは、事実ごとに「正しい置き場所」を一つずつ決めることです。顧客の住所は顧客台帳に、注文の履歴は注文記録に、対応履歴は対応記録に、それぞれ別の場所にあってかまいません。大事なのは、住所という事実についてはどこか一箇所だけが正解であり、注文履歴という事実についても別のどこか一箇所だけが正解である、という状態を作ることです。一つのファイルにまとめることと、事実の置き場所を一つに決めることは、まったく別の話です。この違いは次のページの正規化で、もう少し具体的に見ていきます。

仕事の言葉に翻訳すると

データベースという言葉を聞くと、専用のソフトウェアや専門職の仕事だと思うかもしれません。ですが、ここで扱いたいのは道具の使い方ではなく、情報の扱い方の設計思想です。「マスタはどこか一箇所に置き、他はそこを見に行く」という発想。「探す前に、探しやすくしておく」という発想。「途中でやめるくらいなら、最初からやらなかったことにする」という発想。「今誰が触っているかを、触る前に確認できるようにする」という発想。これらは特別なシステムがなくても、日々の業務の設計に持ち込める考え方です。

例えば、共有フォルダの中に「顧客リスト_最新版」というファイルを一つだけ置き、誰もがそこを見に行き、そこにだけ書き込むと決める。これだけでも、正規化の発想を業務に持ち込んだことになります。専用のデータベースソフトを導入するかどうかは、その先の話です。まず必要なのは「情報は一箇所に」という原則を意識することであり、道具は原則を実現するための手段の一つに過ぎません。

プロジェクトの進捗管理でも同じ発想が使えます。案件ごとの状況をメールのやり取りだけで把握しようとすると、最新の状況を知るために過去のメールを何通もさかのぼる必要が出てきます。代わりに、案件ごとの状況を一枚の進捗表にまとめ、そこだけを見れば分かる状態にしておく。更新はその一枚に対して行い、メールはあくまで一時的な連絡手段として使う。これも「事実の置き場所を一つに決める」という、データベースの発想そのものです。会議の議事録についても同じで、決定事項が議事録という一箇所に集約されていれば、「あの件、結局どうなりましたか」という確認のやり取りは大きく減ります。

この章で見ていくこと

次のページから、正規化・インデックス・トランザクション・ロックと編集権限の四つを、それぞれ具体的な仕事の場面に当てはめて見ていきます。どれも「情報がバラける」「探すのに時間がかかる」「途中で分からなくなる」「誰かとぶつかる」という、誰もが経験する困りごとに対応しています。専門用語を覚えることが目的ではなく、情報を扱う自分なりの型を持つことがこの章の狙いです。読み終えたとき、共有フォルダの中身が少し違って見えるようになっていれば十分です。

これらの四つのテーマは、規模の大小を問わず効いてきます。数人の小さなチームであっても、顧客リストが二つに割れていれば同じ混乱は起きますし、数百人の組織であればその混乱は倍以上の速さで広がります。「うちは小さいから大丈夫」という前提は、情報の扱い方については当てはまりません。むしろ小さいうちに置き場所のルールを決めておいた方が、後から直す手間は小さく済みます。逆に、すでに情報が散らばってしまっている職場であっても、一度にすべてを直そうとする必要はありません。まずは一つのマスタから一元化を試すだけでも、次のページで見ていく効果は実感できます。情報の置き方を変えるのに、大きな予算も特別な許可もいらないことがほとんどです。必要なのは「これからはここだけを正解にする」という、小さな取り決め一つです。次のページでは、その取り決めをどう具体化するかを、正規化という切り口から見ていきます。まずは身近な一つの重複から、確認していきましょう。小さな一箇所を直すだけでも、次に同じ確認作業が発生したときの手間は確実に減ります。

持ち帰り

  • 情報の散らばりは能力の問題ではなく、置き場所の設計の問題である
  • データベースの発想は「一元化・索引・やり切る単位・編集の管理」の四つに整理できる
  • 専用ソフトがなくても、共有フォルダの運用にこの発想は持ち込める

やってみる

今使っている共有ファイルの中から、内容が重複しているものを一つ見つけてください。どちらが「正しい方」なのかを決め、もう一方には「こちらは使わない」と一言書き添えるだけで構いません。