Cadence チュートリアル(1)最初のステップ
こんにちは。エンジニアの荒川です。今回より、Flow 公式の Cadence 言語のチュートリアル(全8回)を日本語に翻訳して、順次 投稿していきます。最初は、“1. First Steps” と “2. Hello World” を同時にお届けします。前回の記事「Cadence 言語の紹介」をまだみていない方は、先にそちらをお読みいただくとより理解が深まります。
目次
- Cadence とは?
- Flow プレイグラウンドとは?
- アカウントとコントラクト
- リソース
- Hello, World を実行しよう!
このチュートリアルでは、スマートコントラクトの使い方、アカウントの切り替え、アカウントのステートをみる方法を学びます。
Cadence とは?
Cadence(ケイデンス)は、Flow ブロックチェーン上で使用するスマートコントラクトのための新しいプログラミング言語です。Cadence は、スマートコントラクトのプログラミングに新しい機能を導入しており、開発者がコードを安全、セキュア、明確、親しみやすくすることを支援します。これらの機能の一部を紹介します。
- 型安全および強力な静的型システム
- リソース指向プログラミング
線形型とオブジェクトを組み合わせた新しい概念。リソース(とその関連アセット)が一度に一箇所にしか存在できず、コピーできず、誤って紛失・削除されないことを保証することで、デジタル所有権の安全で宣言的な(訳注:いちいち細かく指定しなくてよい)モデルを作れる。 - 関数とトランザクションの事前条件・事後条件
- オブジェクトへのアクセスは、所有者とそのオブジェクトへの参照を持つ者のみに制限される(訳注:最小権限の原則 を参照)
Flow プレイグラウンドとは?
Flow プレイグラウンド には、Flow を使って実験するためのブラウザ・エディタとエミュレータが含まれています。Flow プレイグラウンドを使用して、Cadence のスマートコントラクトを作成し、ローカルの Flow エミュレータのブロックチェーンにデプロイし、トランザクションを送信することができます。
Flow プレイグラウンドは標準的な web ブラウザと互換性がありますが、Google Chrome の使用をお勧めします。
プレイグラウンドを知る
プレイグラウンドには、Cadence のスマートコントラクトの導入や、トランザクションやスクリプトの操作に慣れるために必要なものがすべて含まれています。
プレイグラウンドには、このドキュメントで説明する 5 つのチュートリアル(Hello World、Fungible Tokens、NFTs、Marketplace、Composable Resources)に対応するコントラクトとトランザクションのテンプレートがあらかじめ読み込まれています。特定のチュートリアルからコントラクトを読み込むには、プレイグラウンドの上部にある「Click here to start a tutorial」リンクをクリックします。これにより、各チュートリアルのメニューが表示されます。
これらのリンクをクリックすると、チュートリアルが新しいタブで開き、コントラクト、トランザクション、スクリプトがプレイグラウンドのテンプレートに読み込まれて使用できるようになります。
アカウントとコントラクト
画面左側の「Accounts」セクションには、アクティブなアカウントが一覧表示・選択されています。各アカウントのタブをクリックすると、右側のエディタでそのアカウントに関連付けられているコントラクトのコードを表示できます。
アカウントのエディタで .cdcファイル(Cadence 言語で書かれたファイル)を開いているとき、右下の「デプロイ」ボタンをクリックすると、現在選択しているアカウントにそのコントラクトをデプロイできます。
数秒後、下のコンソールにコントラクトがデプロイされた旨のメッセージが表示されるはずです。また、そのアカウントのタブには、コントラクトの名前が表示されます。
また、左の選択メニューからトランザクションとスクリプトを選択し、デプロイされたスマートコントラクトと対話するために実行できます。
これはプレイグラウンドでできることのほんの一部です。プレイグラウンドのさまざまな機能の詳細については、プレイグラウンドのマニュアルを参照してください。
リソース
各チュートリアルでは、複数のトランザクション / コントラクト / スクリプトのファイルを使用します。必要なコードはすべてチュートリアルのテキストに書かれているので、コピー&ペーストすることもできますし、プレイグラウンドで事前に生成されたチュートリアルの設定を使用することもできます。
Hello, World を実行しよう!
Flow プレイグラウンドを開いて、Flow のスマートコントラクトを作ってみましょう!