🌐

もらったサイクルでIC上にサイトを上げてみる

2021/08/07に公開

はじめに

さて、せっかくサイクルを貰ったので、本物の Internet Computer上に、何かWebページを立ち上げてみたいと思う。

ところでキャニスターって何ですか

ICでわかりにくいものとして、キャニスターがある。これが walletだったりプログラムの展開先であったりするので、こんがらがってしまう。

色々試してみた結論から言うと、キャニスターというのはプログラムを入れるための箱のようなもので、キャニスターを作成する際にサイクルが割り当てられる。デフォルトでは4Tのようだ。

で、キャニスターはコントローラーという管理者みたいなものがいて、管理者がキャニスターを止めたり、別のプログラムで上書きするなどの操作をすることができる。

最もシンプルなWebページの作成

ということで、フォームすらない、最もシンプルなテキストだけのWebページをIC上に立ち上げてみたい。

Example プログラムのダウンロード

以下のサイトを参考に、Exampleプログラムをダウンロードする。
https://medium.com/dfinity/how-to-deploy-your-first-canister-using-the-nns-dapp-c8b75e01a05b

$ git clone https://github.com/krpeacock/ic-static-minimal.git
$ cd ic-static-minimal
$ ls -a
.  ..  .git  .gitignore  assets  canister_ids.json  dfx.json
$ ls -a assets/
.  ..  index.html

こういうのを求めていた。基礎から理解するにはできるだけシンプルな方がいい。

index.htmlの編集

デフォルトのままでもいいのだが、せっかくなので変更しよう。なんでもいいので、適当に編集する。

canister_ids.jsonの編集

このファイルにはプログラムをインストールするキャニスターを指定する。今回は以下を指定。
wd7ks-taaaa-aaaah-aamca-cai

プログラムのビルド

キャニスターはすでにあるので、いきなりビルドする。.dfx というディレクトリができ、ic の下にプログラムが作成される。

$ dfx build --network ic
Building canisters...

プログラムのインストール

最後にインストールする。

$ dfx canister --network ic install --all --mode='reinstall'
Reinstalling code for canister www, with canister_id wd7ks-taaaa-aaaah-aamca-cai
Authorizing our identity (default) to the asset canister...
Uploading assets to asset canister...
  /index.html 1/1 (294 bytes)
  /index.html (gzip) 1/1 (215 bytes)

動作確認

ブラウザで以下のURLにアクセスする。
https://wd7ks-taaaa-aaaah-aamca-cai.raw.ic0.app/

Webページが表示された。

キャニスターの停止

ためしに、キャニスターを止めてみる。

$ dfx canister --network ic stop wd7ks-taaaa-aaaah-aamca-cai
Stopping code for canister wd7ks-taaaa-aaaah-aamca-cai, with canister_id wd7ks-taaaa-aaaah-aamca-cai

すると、ブラウザでアクセスしても Internal Server Error となる。

再スタート

再度動かしてみる。

$ dfx canister --network ic start wd7ks-taaaa-aaaah-aamca-cai
Starting code for canister wd7ks-taaaa-aaaah-aamca-cai, with canister_id wd7ks-taaaa-aaaah-aamca-cai

するとまた、先程のWebページが表示される。

とりあえず以上。

Discussion