msawady’s tech-note

フルスタックエンジニアの学んだことや考えていること

考えるときに使うデータ構造の一覧

ここに書くのは何?

  • 考えるとき、議論するとき、ドキュメンテーションする時、によく使うデータ構造をまとめます。
  • エンジニア視点でまとめましたが、大抵の人も同じように考えていると思います。

データ構造一覧

箇条書きする

順序つきリスト

  • 同じ粒度のものを順序つきで並べる
  • 利用例: ランキング、工程表

順序なしリスト

  • 同じ粒度のものを順序なしで並べる
    • 重複しないものを扱うことが多い
  • 利用例: チェックリスト、アイデア

一覧データをつくる

テーブル(マップ)

  • データの一覧
    • 列とカラムに対してデータがある
  • キーを適切に設計すると検索が O(1)
  • 利用例: 家計簿、名簿

マトリクス

  • ”で、どうなる?"の一覧
  • ロジックの平面化
    • テーブルはあくまでデータの一覧で判断を含まない
    • マトリクスはロジックに基づいた判断の一覧
  • 利用例: 携帯電話の料金プラン

関係性を表す

ツリー

  • 事象を構成する要素を分解してぶら下げていく
  • 利用例: ロジックツリー

ベン図

  • 包含関係を整理する

ピラミッド

リンク

  • つながりを表す
    • 「どういうつながりか」は含意しない
      • 例えば、ツリーなら「大項目 - 小項目」「事象 - 因子」のような関係性を含意する
      • 分類が難しい「つながり」も多いので、「つながっている」ことだけわかりたい
  • 利用例: マインドマップScrapbox

データのまとまり

グラフ

グリッド

  • 横方向と縦方向の2軸をそれぞれ垂直に区切ってデータを分類する
  • 境界を超えると性質が変わるように境界をつくる
  • いわゆる XY 平面はそれぞれを 0 で区切った 2 * 2 のグリッド
    • 座標を分類する
  • カンバンは 1 * N のグリッド
    • タスクの状態を分類している

伝えたかったことはなにか

「ちゃんと目的に応じて使い分けてますか?」ということです。

  • イデア出しには、ツリーよりも順序なしリストの方が良くないですか?
  • テーブルと睨めっこするより、傾向を見たいならグラフにしたらどうでしょう?
  • タスク管理はテーブル(Excel)よりもグリッドの方がステータスが分かりやすくないですか?

「やりたいこと」に対して、使うべき「データ構造」は何が最適なのか?を考えると、実りのあるインプット/アウトプットが出来ると思います。