「キー」と「値」で世界を表現する - 文章作成にすぐに使える、ITの世界での「構造」の表現

「構造を表現するデータベース」の考え方(モデル)は、文章を書くときに有用です。

とりわけ、複雑な情報を整理して簡潔に伝わりやすい文章にするのに有用です。
この概念を理解することで、複雑なアイデアや情報も、読者にとって分かりやすい形で提示することが可能になります。

今回は、このテーマでお話をしたいと思います。


この考え方(モデル)は、特に、ビジネス文書の作成やプレゼンテーションスライド等の作成で有用です。


前回は、『「点」と「線」で世界を表現する - グラフ理論「入門」』ということで、数学的、あるいはIT技術的にモノとモノとの関係を表現する方法について扱いました。

「点」と「線」で世界を表現する - グラフ理論「入門」
https://forum.pc5bai.com/tips/longshot/2f8fd78c-f5c8-470e-9241-9372e51b3f85/


ざっくり言って、ITの世界でのデータの持ち方には、以下の3つがあります。

1. テーブルで表現するデータベース
2. 構造を表現するデータベース
3. エッジとノードで表現するデータベース


1つ目の「テーブルで表現するデータベース」とは、ざっくり言うと、エクセルでお馴染みの「四角い表」です。
3つ目の「エッジとノードで表現するデータベース」とは、前回紹介した「点」と「線」で表現した、グラフ理論に基づいて作られたデータベース。

今日は、2つ目の、「構造を表現するデータベース」を紹介します。


「データベース」とは、IT技術が提案する「世界の見かた」、「モデル」の一種です。

参考: 「モデル」って言葉をITの世界でよく見かけるけど、それって何?
https://forum.pc5bai.com/tips/longshot/90ba645d-a525-4ccf-be1a-91d8a7257be9/

参考: 日常見かける「モデル」とIT用語の「モデル」、そこに共通する世界観
https://forum.pc5bai.com/tips/longshot/f2126dae-2da7-491b-83d4-e111ffec1706/


「世界というものは、こういう切り口で見ることができるよ」
「そして、こういう切り口で見ることで、ほかの方法では見えづらい/扱いづらいものが、こんなに簡単に扱えるようになるよ」

と、「モデル」とは、そういう提案とも言えるでしょう。


「こんな情報の持ち方もできるんだな」と思って見ていただければと思います。

「構造を表現するデータベース」のルールは簡単です。
ざっくり言うと、以下の2つだけ。

- 入れ子構造を作る
- 値を取り出すときは、「キー」を指定する

例を見ていただけると早いかと思います。
以下は、 Google という会社について、「入れ子構造」で表現した例です。
google_data = {
    "名称": "Google",
    "所在地": {
        "国": "アメリカ合衆国",
        "州": "カリフォルニア",
        "市": "マウンテンビュー"
    },
    "商品": {
        "サービス": [
            {"タイプ": "検索エンジン", "名称": "グーグルサーチ"},
            {"タイプ": "メール", "名称": "ジーメール"},
            {"タイプ": "地図", "名称": "グーグルマップ"}
        ],
        "ハードウェア": [
            {"タイプ": "スマートフォン", "名称": "ピクセル"},
            {"タイプ": "ラップトップ", "名称": "ピクセルブック"},
            {"タイプ": "ホームデバイス", "名称": "グーグルホーム"}
        ]
    }
}

ここから会社名、住所のうち「city」を取り出す場合の例を紹介します。

エクセルVBAはこういうデータの扱いに不向きなので、今回は Python でのサンプルです。

"名称": "Google" といったものが、「キー」と「値」です。
以下のような直感的な記述で、すぐに値を取り出すことができます。

まず、会社名を取り出してみましょう。
# 会社名を取り出す
company_name = google_data["名称"]

print(company_name)

以下は、出力例:
Google


入れ子の奥にある情報へのアクセスも簡単です。
以下のように書けばOKです。
# 所在地の市を取り出す
city = google_data["所在地"]["市"]

print(city)

以下は、出力例:
マウンテンビュー


services をすべて取り出す場合の例を紹介します。
# 提供されているサービスを取り出す
services = google_data["商品"]["サービス"]
for service in services:
    servicetype = service["タイプ"]
    servicename = service["名称"]
    print(servicetype, servicename)

以下は、出力例:
検索エンジン グーグルサーチ
メール ジーメール
地図 グーグルマップ


上に示したとおり、そこそこプログラムを書ける人であれば、かなり直感的に値を取り出すことができます。


このような、「入れ子構造」があって、キーから値を取り出せるようなもののことを、IT用語で「辞書」と言います。


エクセルやCSVファイルでこういう情報をまとめようとすると、案外大変です。
会社名や所在地等の会社基本情報だけで1シート、製品用に別シートを作る必要があります。
値を取り出すときも、「VLookUp関数」で参照するような複雑な計算式を作らなくてはなりません。


「辞書」のような入れ子構造のメリットは、新しい項目を追加するときも、比較的用意だという点も挙げられます。

たとえば、さきほどの Google についての情報に「買収企業」というキーを追加して、情報を追加してみます。
google_data = {
    "名称": "Google",
    "所在地": {
        "国": "アメリカ合衆国",
        "州": "カリフォルニア",
        "市": "マウンテンビュー"
    },
    "買収企業": [
        {"名称": "ユーチューブ", "買収年": "2006"},
        {"名称": "アンドロイド", "買収年": "2005"},
        {"名称": "ダブルクリック", "買収年": "2007"}
    ],
    "商品": {
        "サービス": [
            {"タイプ": "検索エンジン", "名称": "グーグルサーチ"},
            {"タイプ": "メール", "名称": "ジーメール"},
            {"タイプ": "地図", "名称": "グーグルマップ"}
        ],
        "ハードウェア": [
            {"タイプ": "スマートフォン", "名称": "ピクセル"},
            {"タイプ": "ラップトップ", "名称": "ピクセルブック"},
            {"タイプ": "ホームデバイス", "名称": "グーグルホーム"}
        ]
    }
}

もしもエクセル同じようなことをしようとしたならば、さらに「買収企業」というシートを用意しなくてはならないでしょう。
そして、また、 VLookup関数です。

その点、「辞書」は、直感的に情報を追加でき、また値を取り出すことができます。


「構造を表現するデータベース」の考え方は、文章を書くときに有用です。
長くなってきたので、具体的な活用方法については、次回以降に書きたいと思います。
  • 1. テーブルで表現するデータベース
    2. 構造を表現するデータベース
    3. エッジとノードで表現するデータベース

    あなたの周囲で今目にとまるものについて表現するとしたら、どれが適切でしょうか。
    頭の中でだけでよいので、ざっくり表現してみてください。

    もしも「上記のどれを使っても表現できなそうだぞ」と思えるものがあったら、以下のコメント欄からお知らせください。
    いっしょに考えましょう (^^
    https://forum.pc5bai.com/tips/longshot/f5634e8c-5d52-4e4f-914c-af4db8dc72b1/
関連記事・関連コンテンツ
Python、楽しいですよ。より多次元的に、より深く世界の見えて、そして表現できるようになれます (^^

はじめてのPython - 環境編設定編
https://forum.pc5bai.com/lesson/course/98/

さらっと学ぶ、Python基礎文法 - section1
https://forum.pc5bai.com/lesson/course/100/

コメントをするにはログインしてください

パソコン仕事5倍速!通信は、エクセルのテクニックから、仕事術、心理学、キャリアアップのヒントまで、主に事務職のビジネスパーソンのためのパソコン仕事高速化ノウハウをお伝えるメールマガジンです。
登録は、以下のフォームから可能です。

メールマガジン登録はこちら