Internet Computer 開発者としてのスタートを切る!

Yuta KW
DFINITY 公認翻訳|日本語版
16 min readOct 26, 2023

Internet ComputerでクールなDAppsを構築する、Web2およびWeb3開発者向けの新しいチュートリアルシリーズ Developper Journey!

著作者: Jessie

新しいプラットフォームでの開発や新しい言語の使用は、抵抗感や圧倒感を感じることがあります。そのために、Internet Computer Protocol(ICP)は、完全なウェブアプリケーションの作成と展開をシームレスで安全かつスケーラブルにするために設計されています。新しい開発者にとっては、Internet Computerのアーキテクチャ、機能、ツール、およびワークフローについての堅固な基本的理解が重要です。

時折、自分で始めるのに最適な場所を見つけることは難しいことがあります。そこで、私たちは開発者を導く、明確で包括的なチュートリアルシリーズを用意しました。これは、ICの基本的な概念から、アプリケーションに統合する最も高度な機能までを網羅しています。

Developer Journey (デベロッパージャーニー)のご紹介

新しいチュートリアルシリーズ、Internet Computer Developer Journeyの発表に大いに興奮しています! Developer Journeyには、ICPのアーキテクチャからローカルに独自のSNSを展開するまでをカバーする、計36のチュートリアルが含まれます。各チュートリアルには、ドキュメントチュートリアルに表示される内容と手順を紹介する対応するビデオがあります。レベル0以降、各チュートリアルには、チュートリアルで紹介された概念をデモンストレーションするキャニスターを記述して展開する手順が含まれます。

これらの36のチュートリアルをっとして、スキルレベルが増え、前のレベルでカバーされた情報に基づいて構築された、6つのレベルに分かれています。各レベルの名前は、プロセス中でのレベルを表すために宇宙飛行士のテーマを使用しています。学びの旅を楽しみましょう!

例えば、最初のレベルであるレベル0は「Pre-Flight Operations(飛行前訓練)レベル」と呼ばれ、開発者が始める前に知っておくべき前提条件の情報を扱います。これは、宇宙飛行士が宇宙に打ち上げられる前に行う事前の手順に似ています。最後のレベルであるレベル5は「Astronaut(宇宙飛行士)レベル」と呼び、これを完了すると、Developer Journeyシリーズを終え、ICの宇宙飛行士になるために必要なすべてのスキルを持っています。

現在、レベル0、1、および2のドキュメンテーションがICデベロッパードキュメントで利用可能であり、モジュール’0.1: Internet Computerの概要’に対応する最初のビデオはDFINITYのYoutubeチャンネルでご覧いただけます。

新しいビデオは毎週定期的にリリースされ、残りのドキュメンテーションは今後数ヶ月に公開されます。

それでは、各レベルと各レベルの構成について詳しく見ていきましょう。

Level 0: Pre-Flight Operations(飛行前訓練)

入門レベルでは、Developer JourneyはInternet Computerのアーキテクチャとその動作を調査し、IC上での開発の基盤となる重要な用語やツールを含めています。具体的には、ICの概要と関連する用語、開発環境のセットアップ、プログラミング言語、ツール、およびキャニスターの紹介から構成されています。

0.1 Overview of the Internet Computer(ICの概要): Developer Journeyの最初のレベルでは、読者はICの基本的な構成要素についての概要を通じてICに慣れ親しむことになります。以下はその要素です:

  • Internet Computer Protocolのスタックの概要、ピアツーピア層、コンセンサス層、メッセージルーティング層、および実行層を含む。
  • チェーンキー暗号の概要。
  • キャニスターとスマートコントラクトの概要。
  • トークンとサイクルの概要。
  • NNSおよびSNSを介したガバナンスの概要。
  • ICのInternet Identity認証サービスの概要。

0.2 Internet Computer terminology(ICの技術): このモジュールでは、開発者はICで最も一般的に使用される用語のいくつかに紹介されます:

  • 異なる概念を指す用語: アクター、エージェント、認定変数、プリンシパル、提案、およびレプリカなど
  • キャニスターに特有の用語: キャニスター開発キット、キャニスターステート、コントローラー、クエリ、ステートチェンジ、およびウォレットなど
  • 異なるツールと製品を説明する用語: dfx、ledger、およびMotokoなど

0.3 Developer environment setup(開発者環境のセットアップ): 次のモジュールでは、開発者はローカルの開発環境のセットアップの手順を説明されます。IC上での開発には、IC SDK、コードエディター、git、Node.js、およびコマンドラインインターフェースなどのツールが含まれます。

0.4 Introduction to canisters(キャニスターの紹介): キャニスターは、IC上でアプリケーションを開発するための中心的な要素です。このモジュールでは、キャニスターの概要、そのアーキテクチャについて紹介し、開発可能な異なる種類のキャニスターについて議論します。

0.5 Introduction to languages(言語の紹介): このページでは、DAppsを開発するために使用できる異なる言語について説明し、主にサポートされている2つの言語、MotokoとRustについて基本的な紹介を提供します。

0.6 Introduction to dfx(dfxの紹介): dfxは、IC SDK用のDFINITYコマンドライン実行環境です。これは、DAppsをInternet Computerに作成、管理、デプロイするために主に使用されるツールです。このモジュールでは、dfxの基本的な使用法と構文、最新バージョンへのアップグレード、およびdfxで作成された新しいプロジェクトが使用するデフォルトのプロジェクトテンプレートについて説明します。

Level 1: Space Cadet(宇宙カデット)

宇宙カデットの段階では、開発者はまず、MotokoプレイグラウンドにデプロイされたライブデモのDAppを見ることから始め、その後、Motokoに関する包括的な紹介が開発者を、キャニスターの記述、デプロイ、および管理を扱うレベルの残りに備えさせます。

1.1 Exploring a live demo(ライブデモ): DAppsの開発を始める前に、このモジュールでは、`dfx deploy — playground`コマンドを通じてMotokoプレイグラウンドを利用する、ライブでデプロイされたキャニスターを探求します。

1.2 Motoko level 1(Motko レベル1): このモジュールでは、Motokoの構文、基本的な概念や用語、アクターの宣言、値の印刷、およびテキスト引数の渡し方など、基本的な機能を取り上げてMotokoの紹介を提供します。

1.3 Developing your first dapp(初めての dapp を構築): このチュートリアルでは、開発者はInternet Computer上で最初のDAppを作成します。このDAppは、フロントエンドキャニスターとバックエンドキャニスターを備えたシンプルな投票アプリを提供します。

1.4 Acquiring and using cycles(サイクルの取得と運用): ICのメインネット上でDAppをデプロイするには、サイクルを取得する必要があります。サイクルは、IC上のキャニスターのリソースを支払うために使用されます。このモジュールでは、サイクルの取得と使用方法について説明します。

1.5 Deploying canisters(キャニスターを展開): このモジュールでは、DAppをICのメインネットにデプロイする手順について詳しく説明します。

1.6 Managing canisters(キャニスターの管理): このモジュールでは、キャニスターの管理に関するさまざまな機能がカバーされており、キャニスターに関する情報の取得方法、キャニスターのコントローラーのアイデンティティの管理、サイクルでキャニスターを補充する方法、キャニスターの削除などが説明されています。

Level 2: Space Explorer(宇宙探索家)

Developer Journeyのこの段階では、キャニスターのアップグレード、高度なキャニスターコール、およびサードパーティのキャニスターなど、より高度なキャニスターの概念やワークフローに焦点を当てることが重要です。このレベルでは、Candid(インターフェース記述言語)やユニットテストも紹介されます。

2.1 Canister upgrades, storage, and persistence(キャニスターのアップグレード、保管): キャニスターのコードに変更が必要な場合、キャニスターをアップグレードする必要があります。このチュートリアルでは、キャニスターアップグレードに加えて、ステーブルストレージやステーブル変数などのメモリタイプについても説明されています。

2.2 Advanced canister calls(高度なキャニスターのコール): このモジュールでは、クエリおよびアップデートコール、複合クエリ、およびキャニスター間のコールなど、高度なキャニスターコールに焦点を当てます。

2.3 Using third-party canisters(サードパーティのキャニスターの利用): 特定のワークフローでは、サードパーティのキャニスターを使用し、それらをDAppと統合することが重要であり、これにより認証などの機能を提供できます。このモジュールでは、サードパーティのキャニスターを利用するための`dfx pull`コマンドの使用方法について説明します。

2.4 Introduction to Candid(Candidの紹介): Candidは、ICの機能に対する独自のサポートを持つインターフェース記述言語です。このチュートリアルでは、Candidのタイプ、値、およびサービスの記述について議論されます。

2.5 Unit, integration, and end2end testing(ユニットテスト、結合テスト、およびエンドツーエンドテスト): プロダクションにコードを実際に展開する前のテストは、開発プロセスにおける重要なステップです。このチュートリアルでは、ユニットテスト、エンドツーエンドテスト、および結合テストについて取り上げています。

2.6 Motoko: level 2(Motoko レベル2) : デベロッパージャーニーの第2弾となるMotokoのチュートリアルでは、アクタータイプ、アクタークラス、共有関数、非同期データ、および複数のアクターの使用方法が教えられます。

Level 3: Space Engineer(スペースエンジニア)

デベロッパージャーニーの第4レベルでは、HTTPSアウトコール、パッケージマネージャー、認定データ、エージェント、およびアイデンティティなど、さまざまな開発ツールがカバーされています。

3.1 Motoko package managers(Motokoパッケージマネジャー): このチュートリアルでは、パッケージマネージャーであるMopsとVesselについて取り上げます。

3.2 Using HTTPS outcalls(HTTPSアウトコールの利用): HTTPSアウトコールは、`GET`および`POST`リクエストを使用して外部APIからデータを取得するために利用できます。このチュートリアルでは、両方のリクエストタイプの例を提供します。

3.3 Certified data(認定データ): このモジュールでは、認定データの概要、データの認定方法、および認定変数の使用方法について説明します。

3.4 Introduction to agents(エージェントの紹介): エージェントは、キャニスターのAPIとやり取りするために使用できます。このエージェントの導入では、エージェントの動作、エージェントの機能、およびJavaScriptエージェントの使用方法について説明します。

3.5 Identities and authentication(アイデンティティと承認): Internet Identityで開発する際には、開発者が使用して対話するさまざまなアイデンティティのタイプと認証方法があります。このガイドはInternet Identityに焦点を当て、Internet IdentityをサンプルのDAppに統合する方法の例を提供します。

3.6 Motoko level 3(Motoko レベル3): 第3弾のMotokoでは、プリンシパルと呼び出し元の識別、パターンマッチング、定期的なタイマー、およびアクセス制御について議論されます。

Level 4: Space Pilot(スペースパイロット)

スペースパイロットの段階では、開発者はInternet Computerの分散型ファイナンス(DeFi)機能について学び、これをDAppに統合する方法を知る時です。この段階ではまた、NNS(Internet Computerのガバナンス)についても取り上げられます。

4.1 Using the ICP ledger(ICPレジャーの利用): ICのDeFi機能について学び始めるには、まずICPレジャーとそのメインネットおよびローカルでの対話方法から始めます。

4.2 ICRC-1 tokens(ICRC-1トークン): このガイドでは、トークン標準ICRC-1、ICRC-1トークンの作成方法、およびXRCキャニスターの使用方法について説明します。

4.3 ckBTC and Bitcoin integration(ckBTCとビットコインの連携): ckBTCは、BTCのデジタルツイントークンであり、チェーンキー暗号を使用してIC上に作成されています。このガイドでは、そのトークンとckBTC DAppの作成方法について説明します。

4.4 NNS governance and staking(NNS ガバナンスとステーキング): ICは、Network Nervous System(NNS)として知られるDAOによって統治されています。このガイドでは、NNSを使用してどのようにガバナンスが実現されるか、および開発者がトークンをステーキングしてNNSに参加する方法について説明します。

4.5 Using Quill(Quillの利用): Quillは、ICPレジャーやNNS、DAppのSNSなどのガバナンス組織と対話するために使用できるミニマリストなCLIツールです。このガイドでは、Quillの基本的な使用方法について説明します。

4.6 Motoko: level 4(Motokoレベル4): Motokoガイドの最終回では、Motokoの可変状態、メッセージの検査、ローカルオブジェクト、およびエラーの機能について学びます。

Level 5: Internet Computer Astronaut(IC 宇宙飛行士)

デベロッパージャーニーの最終ステップでは、開発者はIC上で最も高度な開発ワークフローを紹介するDAppを探索し、作成します。これらの例は、その後に開発者が独自のカスタムDAppを構築するための堅固な基盤を提供します。

5.1 Encrypted notes dapp with vetKD(vetKDを使用した暗号化メモのDApp): このサンプルは、vetKeysの暗号機能を紹介しています。vetKeysを使用すると、IC上でDAppを構築する際に情報を暗号化、復号化、および署名することができます。

5.2 ICP ETH Integration dapp(ICP ETH 統合 DApp): Internet ComputerのETH統合を紹介するために、このガイドでは、統合の機能を表示するシンプルなDAppの構築方法を説明します。

5.3 Creating a decentralized exchange(分散型取引所の作成): 分散型取引所は、ICPなどのトークンを購入および転送するために使用されます。このチュートリアルでは、独自の分散型取引所を作成する方法を紹介します

5.4 Creating NFTs(NFTの作成): このモジュールでは、ICRC-7標準を使用してInternet Computer上でNFTを作成する方法について詳しく説明します。

5.5 Creating an SNS(SNSの作成): このシリーズの最終的なコードチュートリアルとして、このガイドでは開発者に対して、DAppをDAOによって統治するためにSNSを作成し、起動する方法を教えます。

5.6 Next steps(次なるステップ): デベロッパージャーニーを締めくくるために、このガイドはあなたがインターネットコンピュータのアストロノートになった今、次に取るべきステップについて案内します!これらの次のステップには、デベロッパーグラントを申請する方法やデベロッパーバウンティを見つける場所などが含まれます。また、ICデベロッパーコミュニティとの更なる対話方法についてのリソースも提供されます。

今日からコーディングを始めましょう!

デベロッパージャーニーチュートリアルシリーズを今日から始めるには、DFINITYのYouTubeチャンネルでシリーズの最初のビデオを視聴するか、Internet Computer Developer Documentationを参照するとができます。

デベロッパージャーニーに関するフィードバックや質問があれば、デベロッパーフォーラムでの会話に参加するか、コミュニティのDiscordサーバーでICPの開発者とチャットしてください。

Internet Computerの詳細はこちら: internetcomputer.org

Internet Computer の 公式 Twitter: @dfinity

Internet Computer の 公認 日本語翻訳 Twitter: @ICP_JPCM

--

--