EasyとSimpleを叶えた技術選定とVC Knotsの設計思想
──今回のテーマである「Verifiable Credentials(VC)」について解説をお願いします。
竹村:インターネット上のアカウント管理モデルは大きく変化しています。2000年代初頭はサイトごとにID・パスワードを設定していましたが、2010年代にはID連携が登場し、Googleなどのアカウントで外部サイトにログインできるようになりました。
しかし、ID連携はGoogleアカウントが無効化されると、付随するサービスが使えなくなるという依存性の問題や、ユーザーの行動がプラットフォーマーに把握されるプライバシーの問題を抱えています。
こうした課題を解決する新しいモデルとして登場したのが「Verifiable Credentials(VC)」です。最近標準化が進んでいる黎明期の技術ですが、急速に普及が始まっています。VCは「検証可能なデジタル証明書」であり、発行者(Issuer)、保有者(Holder)、検証者(Verifier)の3者が登場します。例えば、CTCが社員証を発行する場合は、CTCが発行者、社員が保有者、社員割引を提供する店舗などが検証者となります。
重要なのは、VCを検証者に提示した際に、その事実が発行者に伝わらない仕組みである点です。また、社員番号を隠して年齢だけを開示する「部分開示」も可能です。さらに、発行者が倒産しても証明書は手元に残るため、転職時に過去の在籍を自律的に証明できます。このように、VCはプライバシーと依存性の課題を同時に解決できる技術となっています。
──今回OSSとして公開された「VC Knots」とは、どのようなものでしょうか。
萱間:VC Knotsは、VCを扱うすべての方に向けたライブラリ群です。発行者、保有者、検証者のそれぞれがVCを活用したサービスを開発したいと考えた際、迅速かつ容易に実装できる環境の提供を目的としています。
日本でVCに取り組む開発者はまだ多くありません。そのため、日本語のドキュメントが完備され、GitHub上で日本語のサポートを受けられる環境は、現時点では非常に貴重だといえます。
また、VC Knotsは「簡単に作れる」ことを重視し、デザイン思想としても「Easy(簡単)」であることを徹底しています。PoC(概念検証)での利用を想定し、導入時の障壁を最小限に抑えました。
竹村:ウォレット側の開発にはGo言語を採用しました。ウォレットは、保有者が使う証明書管理アプリケーションなので、基本的にはスマートフォンで管理するシーンが多くなります。そのため、iOSやAndroidでの動作が必要となります。一方で、クラウド上で管理する「ホステッドウォレット」の需要もあります。こうした多様な実行環境に対応できる言語を選ぶ必要がありました。
また、モバイルアプリから呼び出したり、多言語のアプリと共通利用したりすることを考慮し、FFI(Foreign Function Interface)による外部連携のしやすさも重視しました。
最終的に、GoとRustが候補に残りましたが、より多くの開発者にとって学習コストが低く、親しみやすいGoを選定しました。
萱間:Go言語には「Make zero value useful(ゼロ値を有用にする)」という思想があります。特別な設定をしなくても、デフォルト状態で適切に動作するという考え方です。VC Knotsも、起動すればすべてのデータがインメモリ上で動作するように設計されています。本番運用には調整が必要ですが、まずは「動かせること」を最優先しました。
ただし、簡便なだけでは実運用に耐えられません。そこで重要なのが「Simple(単純さ)」です。例えば、Google Cloudに載せる場合はFirestoreを使い、AWSならDynamoDBに切り替えるというように、クラウド固有のサービスを簡単に切り替えられる仕組みが必要です。一つ一つがシンプルであればあるほど切り替えやすくなります。
「外側はEasyだが、内部はSimple」。この二段構えの構造により、初心者から熟練のエンジニアまで幅広くサポートできるライブラリを目指しています。
──VC Knotsをどういった開発者に使ってほしいと考えていますか。
萱間:技術に興味を持った方に、ぜひ自分事として触れていただきたいです。VCは医療や工業など多岐にわたる分野に応用可能です。「自分の専門領域ならこう使えるかもしれない」という発想を、VC Knotsですぐに形にしてほしいと考えています。
竹村:証明書の発行から検証までを一貫して試せるツールはまだ少ないのが現状です。「それなら自分たちで作ろう」という想いがVC Knotsの開発の原動力になっています。ですので、どんな開発者でも気軽に試してほしいです。
──CTCとしては、なぜOSSとして公開するのでしょうか。
萱間:インターネットの信頼は、一社では構築できません。だからこそ、広く仲間を募ることが重要です。まずはVCという技術を知り、触れられる状態にあることに気づいてもらいたい。
普及が進み、多くの人が「インターネットの信頼」の重要性に気づけば、結果としてCTCのビジネス機会も増えると考えています。まずは技術の良さを広めるため、オープンソース化を選択しました。

