Internet Computer インターフェイス仕様の紹介(日本語訳)

tokuryoo
DfinityJP
Published in
7 min readDec 31, 2021

Medium の DFINITY 公式の記事 Introducing the Internet Computer Interface Specification(2021/3/19) の日本語訳です。

Internet Computer を通じて、サービスとユーザーがどのように通信するかを詳細に説明し、コミュニティが新しい開発ツールを作り出すことを可能にします。

本日、Internet Computer の Genesis への道を間近に控えた重要なマイルストーンを踏み出しました。DFINITY Foundation は、これまで発表した技術ドキュメントの中で最大級の1つ Internet Computer インターフェイス仕様 を発表できることに興奮しています。Internet Computer ブロックチェーンの高度な技術的特性を詳述することは、12月に発表したジェネシスの要件の一つです。このドキュメントのリリースは、ネットワークの先進的な分散化における大きな一歩を示しており、さらに多くのことが待ち受けています。

インターフェース仕様は、キャニスターのスマートコントラクトだけでなく、外部のサービスとユーザーも Internet Computer を通じてどのように通信するかを説明し、開発者コミュニティに、ネットワーク上のアクションとインタラクションの異なるサブセットを対象とした新しい開発者ツールを作成する能力を、提供します。これは非常に技術的な文書であり、気の弱い人には向いていませんが、この文書を通じて作業する人は、Internet Computer の内外で互換性のあるソフトウェアを書くだけでなく、他の人がそのソフトウェアを書けるようにするためのライブラリも書くことができます。

すぐに始めたいですか?Internet Computer インターフェイス仕様 はこちらです。また、開発者フォーラムに参加して、DFINITYチームメンバーやより広いコミュニティとこのドキュメントについて議論できます。以下では、インターフェース仕様とは何か、開発者がどのように活用できるかを詳しく説明していきます。

Internet Computer インターフェイス仕様 とは何ですか?

インターフェイス仕様 は、Internet Computer の 下位の外部インターフェースの概要を説明する、深い技術的なドキュメントです。HTTPSエンドポイントは受信したリクエストを処理するために公開されていることについて詳しく説明し、WebAssembly(または WebAssembly にコンパイルできる言語)で記述したキャニスターコード間のバインディングがシステムとどのように相互作用するかについて説明されています。また、Internet Computer とこれらのトランザクションを作ることで期待される動作も記述されています。DFINITYチームは、このドキュメントを定期的に内部で利用しており、進化に応じて更新版をリリースする予定です。

アプリケーション開発者として、またはエンドユーザとしてキャニスタと対話する場合、通常、基礎となる HTTPS ハンドラーインターフェイスおよびシステムアプリケーションプログラミングインタフェースと対話することにな ります。DFINITY Canister SDK または Rust Canister Development Kit のような既存のツールを使用してキャニスターを操作する場合、ツールがこれらの低レベルのインターフェイスとやり取りするので、これらの詳細について知る必要はありません。しかし、キャニスターを操作する独自のツールを作成する場合は、キャニスターの形式、キャニスターと対話するためのHTTPSインターフェイスの使用方法、システムAPIがサポートする操作について詳しく知っておく必要があります。そこで登場するのが、インターフェイス仕様 です。

DFINITY Developer Experience(DX)チームは、Internet Computer の外部からキャニスターと対話できるように、RustやJavaScript用のエージェントと呼ばれるライブラリを作成しました。Internet Computer が提供する外部インターフェイスと、これらのインターフェイスを使用する際に期待される動作を記述することで、インターフェイス仕様 は、知識のある開発者が、キャニスターの開発をサポートしたり、他の様々な言語で書かれた既存のサービスが Internet Computer に接続できるようにするための特別なエージェントも作成できるようにしています。他のコミュニティメンバーがソフトウェアをビルドするために使用できる、より優れた開発者ツールを作成することは、非中央集権のコアとなる考え方です。これらの新しいエージェントやツールのうち最良のものは、やがて事実上、コミュニティの標準となり台頭するでしょう。

開発者は、システムのAPIをより理解するために インターフェイス仕様 を参照し、ネイティブなキャニスターだけでなく、Internet Computer 上の他のサービスやキャニスターとズームアウトして相互作用する、より統合されたシステムを構築することも可能です。

技術コミュニティの皆様には、このドキュメントをよくお読みいただき、開発者フォーラムでフィードバックやコメントを提供することをお勧めします。このドキュメントでは、Internet Computer の開発ツールのエコシステムを成長させるために、コミュニティのメンバーが以下のことを行えるように門戸を開いています。

  • どんな言語でも書けるDFINITYのフロントエンド・エージェントを構築すること。Python、Golang、C、Java、Haskell など、人気のあるプログラミング言語用のエージェントが登場することを期待しています。
  • バックエンドのCanister Development Kits (CDK)の構築。WebAssemblyのバイトコードにコンパイルできるあらゆる言語は、CDKの候補となります。CDKの数が増えれば増えるほど、Internet Computer がネイティブにサポートできるプログラミング言語が増えることになります。
  • コマンドラインインターフェース または Internet Computer エミュレータ、デバッガー のようなローカル開発ツールの構築。

目的と興味に応じて、下記が必要であれば インターフェイス仕様 の情報も参考にしてください。

  • 仕様で記述されているが、既存のツールではまだ実装されていない機能を実装する — 例えば、Internet Computer プロジェクト に取り組む開発者として。
  • Internet Computer の複雑な挙動を詳細に分析する — 例えば、セキュリティレビューや監査の一環として。

Internet Computer インターフェイス仕様 ではないもの

Internet Computer は、さまざまな可動コンポーネントからなる巨大プロジェクトです。情報過多を避けるため、インターフェース仕様 には以下の詳細な情報は含まれていません。

  • ICPトークンの詳細
  • ガバナンスとNetwork Nervous Systemについての詳細
  • ネットワークコンセンサス、ネットワーキング、その他 Internet Computer の実装内部に関する詳細

これらのトピックの詳細については、近日中にご紹介できるよう準備を進めていますので、ご期待ください。

--

--