# DIDってなんだ！ #2 - DIDを見てみましょう

By [Kouki Minamoto](https://paragraph.com/@kouki-minamoto) · 2022-04-03

---

皆さんこんにちは〜C-Voxelというプロダクトを開発しております、みなもとです。 C-VoxelはDIDと紐づけてオンチェーン上に職務経歴書をつくれる画期的な技術なのでぜひチェックお願いします！！！↓

[https://testnet.cvoxel.xyz/](https://testnet.cvoxel.xyz/)

前回に引き続き、DIDの勉強をしていきます！今回は、DIDにもURLみたいなものがあって、それでいろんな情報のやりとりをしているよ〜ってことを説明します！

とりあえず例を見てみましょう。
===============

実際のDIDはこんな形になっています。

![](https://storage.googleapis.com/papyrus_images/d70095f80e2be4123ee9ec208c0e67ab2adaf9861009742982cfe9cc19975261.png)

こんな形になっているんですね。「なんだかWebページのURLみたいだなあ。」と思った方。その通りです。URLの `http:` みたいなところが、`did:` にあたります。

DIDは見ての通り3つのパートに分かれています。

1.  `did:`　URIスキームのID (http:みたいなやつの仲間)
    
2.  `DID Method` これはDIDを運用する仕組みの種類
    
3.  `DID Method-Specific Identifier` これはDID Methodの中の特定のID
    

です。なんだか難しいですが、要するに上の例で言えば、

`example` という種類のDIDの仕組み中の `123456789abcd…` さんの `DID` にアクセスしてねっていう意味です。

DID mehodはちょっと難しいと思いますが、追々詳しく説明するの一旦ふわっといきましょう！！

DIDから DID document が得られる？！
==========================

ほんとに申し訳ないんですけど、これから DID document みたいな DID ~ っていう形の用語が死ぬほど出てきます。W3Cが悪いです。

`DID document` とは DIDに関連づけられた諸情報です。とりあえずまず見ていただきましょう。

![](https://storage.googleapis.com/papyrus_images/05e2df35b33a77c4875e714670a640c4c9894e188352148910ca1c54c8b2f4c7.png)

何かしらの要求を投げるとこんな感じのJSON形式のデータが得られます。ユーザーの個人情報が欲しい時はこういう形でその**ユーザーが許可すれば返ってくる**ということですね。これについても、回が進んでいくごとに詳しく解説しますので、今はへぇ〜ってくらいで大丈夫です。

DIDの仕組みの全体像
-----------

DIDやDID documentといった用語が出てき始めたところで、まずは全体像を把握しながらDIDを語っていく上での登場人物とその意味について解説します。

全体像はこんな感じです。

![](https://storage.googleapis.com/papyrus_images/908c6dbbb136b7d69475ee518a23faa5295c913b270c68c5ff51d4d2b2f186f6.png)

この図を参考に、この図にある登場人物について一つづつ解説していきます。

🟥 は重要なやつ、🟡 はそんなに重要じゃないやつです。

### 🟥 DID and DID URLs

DIDは先述の通り、3つのパートに分かれたURIです。このDIDには DID document には関連づけられています。このDIDを元にDID documentを参照することを 「**DID documentへ解決する**」と表現します。そしてDIDは、WebページのURLと同じく、 `/` や `?` を用いて、DIDが保管されている場所やクエリを送信することができます。

### 🟥 DID subjects : DIDを持っている人とか組織とか

これは定義によると「DIDによって識別された実体」です。実体とは人や組織、モノなど実際にそのDIDを持っている存在のことです。つまりこの世に存在する全てのものがDID subjectとなり得ます。

### 🟥 DID controllers : DID documentの内容を編集する権利を持った人

これは、DID documentの変更や消去などの編集を行う権限を持った実体 (人や組織、モノなど)を指します。この権限は通常、暗号鍵の仕組みによって付与されます。つまり、DIDは一つ以上の DID controller か、DID controllerになりうる DID subjectを持っていることになります。

### 🟥 DID documents : DID から返ってきた情報

DID documentはDIDに関連づけられた情報を持っている。第三者に最終的に見せる情報 DID documentの形式になる。

### 🟡 DID methods : DID document が得られる仕組み全体

DID methodsは、あるDIDに対して、それに紐づいたDID documentが生成、解決、更新、ディアクティベートされる仕組み全体のこと。

### 🟡 Verifiable Data Registries : DIDに関するデータを保存しておく場所

DID から DID document を生成するために、DIDごとの情報を保管しておくストレージみたいなもの。特定の技術を使わなくても、DID documentを生成するためのデータの参照/記録ができる仕組みを Verifiable Data Registry という。例) 分散型台帳、分散型ストレージ、P2Pネットワークなど

### 🟡 DID resolvers and DID resolution : DID documentに解決するシステム

DID resolverは**DIDを入力**として受け取り、適合するDID documentを出力するシステムコンポーネント。そしてこの解決の過程を DID resolution と言う。この特定のDIDの種類を解決するためのステップはDID methodの仕様によって変わる。

### 🟡 DID URL dereferencers and DID URL dereferencing

DID URL dereferencerは**DID URLを入力**として受け取り、リソースを出力するシステムコンポーネント。この過程をDID URL dereferencingと言います。DID resolverとの違いは、DID を入力として受け取るか、DID URLを入力として受け取るかの違い。

と、結構事務的なことをたくさん書きましたが、大事なのは、\*\*DID subject が持つDIDをから DID document が得られ、DID document を編集したりできるのは DID controllerだけ！\*\*ってことです。

まとめ
===

*   DIDは `did:[DID method]:[DID method-specific identifier]` の形で成り立っている
    
*   DID から得たい情報は DID document というJSON形式のデータで得られる。(ユーザーが承認すれば)
    
*   DID controller のみが DID document の編集が可能

---

*Originally published on [Kouki Minamoto](https://paragraph.com/@kouki-minamoto/did-2-did)*
