🌐

YESOD ディレクトリーサービスのデータ構造について

はじめに

YESOD のディレクトリーサービスとは、正社員・契約社員・アルバイト・パートナーなど、雇用形態にかかわらずグループ内のすべての従業員を対象に、次の情報を一元的に管理し、会社間・管理部門全体でシームレスに共有するためのサービスです。
  • いつ(過去・現在・未来を含む時系列)
  • 誰が(個人)
  • どこに所属しているか(会社・組織・事業所など)
  • 何ができるか/何を持っているか(役職・識別子・関連属性など)
このページでは、YESOD の API ドキュメントを読み進めるうえで前提となる、ディレクトリーサービスの 基本概念データ構造の考え方 を説明します。

ディレクトリーサービスのコア概念

メンバー(Member)

メンバーは、YESOD 上で管理される「人」の単位です。雇用形態に依らず、個人を一意に表現します。
メンバーは大きく分けて、次の2種類の属性を持ちます。

メンバー項目(個人属性)

メンバーそのものに紐づく属性です。
  • 例:氏名、生年月日、個人メールアドレス など

グループ関連項目(関係属性)

メンバー × グループ」の関係ごとに持つ属性です。同じ個人であっても、所属するグループが異なれば値が変わり得ます。
  • 例:会社ごとの社員番号、組織ごとの役職、事業所ごとの座席番号 など

グループ(Group)

グループは、メンバーを束ねる「まとまり」の総称です。代表的には次のような種別があります。
  • 会社(法人単位)
  • 組織(部門・チームなど。階層構造を持つことがあります)
  • 事業所(オフィス・拠点などの物理的な場所)
  • プロジェクト
1人のメンバーは、複数のグループに同時に所属できます。
  • 例:A社の正社員であり、営業本部/第1営業部に所属し、新宿オフィスに常駐している

グループごとの関連項目(属性)

YESOD では、「メンバー」と「グループ」の組み合わせごとに、固有の関連項目(属性)を持たせられます。

具体例

  • 会社ごとの社員番号
    • 同じ個人が複数のグループ会社に在籍している場合でも、会社ごとに異なる社員番号を持てます。
    • 例:会社Aでは「社員番号 123」、会社Bでは「社員番号 456」
  • 組織ごとの役職
    • 本務組織と兼務組織など、所属単位ごとに役職を持てます。
    • 例:本社組織では「組織長」、兼務組織では「組織長代理」
  • 事業所ごとの座席番号
    • 拠点ごとに座席番号や内線などを持てます。
    • 例:本社オフィスでは「1-23」、サテライトオフィスでは「2-45」

ポイント

  • 1人のメンバーが、所属するグループごとに異なる値を持てることが前提です。
  • 関連項目は「メンバー × グループ」の単位で管理されます(同じメンバーでも、グループが変われば値も変わり得ます)。

すべての項目が「時系列」で管理される

YESOD のディレクトリーサービスでは、メンバー/グループ/それらの関係(所属)や関連項目は、「いつからいつまで有効か」という時系列情報とセットで管理されます。

特徴

  • 各レコードは、有効期間(いつから有効か/いつまで有効か)や 変更日(有効開始日) を持ちます。
  • API では、特定の日付時点を指定して、次のような情報を取得できる設計になっています。
    • その時点で有効なメンバー情報
    • 過去時点の組織構造
    • 未来日時点(予定)の配属情報

利用イメージ

  • 「2026-01-01 時点で在籍していたメンバー一覧を取得したい」
  • 「2026-01-01 時点で在籍していて、雇用形態が正社員のメンバー一覧を取得したい」
  • 「2026-01-01〜2026-03-01 の間に入社したメンバー一覧を取得したい」
  • 「2026-01-01〜2026-03-01 の間に退社したメンバー一覧を取得したい」
  • 「来月の組織改編後の組織図を API で確認したい」

入社・退社の定義とライフサイクル

YESOD では「在籍しているかどうか」を単なるフラグではなく、**会社グループとの関係(有効期間)**で表現します。

入社

あるメンバーが、特定の「会社」グループと関係を持ち始めた日を 入社 とみなします。
その日以降、その会社に対して「在籍中」として扱われます。

退社

会社との関係が終了した日以降は、そのメンバーはその会社に対して「退社扱い」となります。
データ構造上は、会社グループとの関係の有効期間が終了した状態として表現されます。

ポイント

  • 入社・退社は、「メンバー × 会社グループ」の関係の 開始日/終了日 として扱われます。
  • 日付を指定して、在籍メンバー/過去在籍メンバーなどを取得できます。
  • 将来日付の入社情報を登録しておくことで、未来日入社も同じ枠組みで管理できます。

データ構造のイメージ(概念レベル)

本ページでは実際のテーブル名やエンティティ名は抽象化していますが、概念的には次のような構造を想定しています。
  • メンバー(Member)
    • 個人を一意に表すエンティティ。氏名、連絡先、識別子などの基本情報を持つ。
  • グループ(Group)
    • 会社・組織・事業所などを含む、メンバーを束ねるエンティティ。種別や階層構造(親子関係)を持つ。

API ドキュメントとの関係

各 API エンドポイントは、上記のようなエンティティおよびそれらの関連を操作する形で設計されています。
例えばメンバーインポート API では、以下をまとめて扱うことを想定しています。
  • メンバーそのものの作成・更新
  • メンバーと各種グループとの関係(所属)の登録
  • 関連項目および有効期間(いつから有効か)の登録

まとめ

YESOD のディレクトリーサービスは、
  • メンバー
  • グループ(会社・組織・事業所など)
  • メンバー × グループの関連項目(関係属性)
を、時系列情報とセットで管理するディレクトリーサービスです。
このデータ構造により、
  • 特定の日付時点の状態を再現すること
  • 過去・現在・未来をまたいだメンバー/組織のライフサイクルを一貫して扱うこと
が可能になります。続く API ドキュメントでは、この前提のもとで各エンドポイントの仕様やリクエスト/レスポンス形式を説明します。