0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Super Commands

Last updated at Posted at 2024-11-18

Flow CLI スーパーコマンドは、あなたのdAppの開発中に使用できるコマンド群であり、ワークフローを大幅にシンプルにします。その結果、あなたはスマートコントラクトの作成に集中でき、コマンドが残りの処理を行ってくれます。

Init

新しいFlowプロジェクトを開始する為の一番最初のコマンドはflow initです。最初にプロジェクトの設定に関するいくつかの質問が表示されます。その後、必要なファイルとフォルダが作成され、設定ファイルが構成され、あなたにとって必要なコアコントラクト依存群がインストールされます。

初期化のプロセス中に、flow initはコア・スマートコントラクト(例えば、NonFungibleToken)をインストールしてあなたのプロジェクトに設定するかどうかを尋ねてきます。コアコントラクトをインストールするを選択した場合は、CLIは裏でDependency Managerを使用して、必要なスマートコントラクトの依存関係を自動的にインストールします。

注:もし、flow.jsonファイルを構成するだけでフォルダやファイルを作成したくない場合は、flow init --config-onlyを実行することでそう出来ます。

以下コマンドを実行します。

> flow init $PROJECT_NAME

これは以下のフォルダとファイルを作成します。

  • /contractsフォルダには、すべてのCadenceコントラクトを格納します。
  • /scriptsフォルダには、すべてのCadenceスクリプトを格納します。
  • /transactionsフォルダには、すべてのCadenceトランザクションファイルを格納します。
  • /testsフォルダには、すべてのCadenceテストファイルを格納します。
  • flow.jsonはプロジェクトの構成ファイルであり、自動的にメンテナンスされます。

Using Scaffolds

プロジェクトの目的に応じて、利用可能なスケルトン(scaffold)のリストから選択することができます。--scaffold フラグを指定するだけでできます。次のようにします。

> flow init $PROJECT_NAME --scaffold

インタラクティブなスケルトン(scaffold)選択モードをスキップしたい場合は、 --scaffold-idフラグを使用してIDを指定します。

> flow init $PROJECT_NAME --scaffold-id=1

スケルトン(scaffold)のリストは今後も増え続ける予定であり、皆様からの貢献を歓迎いたします。ご自身の足場(scaffold)リポジトリを作成することで、その後作成したリポジトリをこちらの指示に従ってスケルトン(scaffold)リストに追加することで貢献が可能です。

Testing

flow initコマンドは、/testsフォルダ内にサンプルのテストファイルも作成します。flow testコマンドを使用することでそのテストを実行できます。

Develop

flow initコマンドを使用してプロジェクトを作成した後、プロジェクト直下のディレクトリでflow emulatorコマンドを実行することでエミュレータを起動できます。エミュレータが起動したら、flowのエミュレータを使った開発用のコマンドを次のように実行します。

> flow dev

これは、あなたのプロジェクトのCadenceファイルを常に監視し、エミュレータ上にデプロイされたスマートコントラクトと同期を保ちます。

アウトプットは次のようになるでしょう。

[15:53:38] Syncing all the contracts...

😜 charlie
  |- MyContract contracts/charlie/MyContract.cdc

😏 emulator-account
  |- HelloWorld contracts/HelloWorld.cdc

コマンドが開始されると、Cadenceファイルへの変更を自動的に監視し、エミュレータのネットワーク上に継続的に変更箇所を同期します。エラーが発生した場合は、エラーも報告します。

IDEとしてVSCodeを使用し、IDEのターミナルウィンドウでコマンドを実行することをお勧めします。最新のVSCode拡張機能は、改善されたインポート構文の解決もサポートしています。詳しくは後述します。

⚠️ このコマンドはエミュレータネットワーク上でのみ動作しますのでご注意ください。これは開発専用であり、テストネットやメインネットネットワークとのやり取りは許可されていません。プロジェクトが完了したら、マイグレーションスーパーコマンドを使用してすぐにマイグレーションできます。また、このコマンドの実行には、エミュレータが起動していることが条件です。エミュレータを再起動した場合は、コマンドも再起動する必要があります。このコマンドは開発中に使用することを想定しており、スマートコントラクトの更新は、コントラクト削除と再デプロイをすることによって実行します。つまり、あなたが手動でコントラクトを操作した場合、アカウントストレージにリソースを保存している場合は、保存したアイテムがコントラクトが更新された後にもはや有効でなくなる可能性を持ちます。私たちのアドバイスは、まず開発に集中し自動テストを使用して正しい機能性を確認し、このサイクルが完了した後に、手動でコントラクトとやりとりすることです。また、これはまだ非常に実験的な機能であるため、私たちが使用状況から学習するにつれて、多くの変更や改善が行われる可能性があることにご注意おきください。

Deploying Contracts

スマートコントラクトを/contractsフォルダに追加すると、自動的にdefaultアカウントにデプロイされます。このアカウントも、flow devの実行時に作成されます。

スマートコントラクトを別のアカウントに追加したい場合は、/contractsフォルダ内にフォルダを作成し、そこにスマートコントラクトを追加するだけです。これにより、まずフォルダ名と同じ名前のアカウントが自動的に作成され、次にそのフォルダ内のすべてのスマートコントラクトが、新たに作成されたアカウントにデプロイされます。

例:A.cdcという名前のスマートコントラクトをdefaultのアカウントに、B.cdcという名前のスマートコントラクトをBobという名前のアカウントにデプロイしたい場合、contractsフォルダ内のフォルダ構造は次のようになります。

/contracts
    A.cdc
    bob/
        B.cdc

Import Schema

スマートコントラクトは名前で簡単にインポートできます。私達はスマートコントラクトのインポートに新しい方法を採用しました。これにより、ワークフローがシンプル化されます。

新しいインポートスキーマのフォーマットは次のようになります。

import "{name of the contract}"

例:

import "HelloWorld"

これはあなたのプロジェクト内で同名で作成したスマートコントラクトが自動的にインポートされて、その設定をflow.jsonに保存します。スマートコントラクトがdefault以外のアカウントにデプロイされている場合でも問題ありません。

Learn More

初期セットアップ後の次のステップについてさらに詳しく知りたい場合は、以下のリンクを参照してください。

  • Dependency Manager:CLIコマンドを使用してスマートコントラクト上の依存関係をインストールし管理します。
  • Manage Configuration:プロジェクト構成ファイルの管理方法について説明します。

Last updated on Nov 5, 2024 by Alex

翻訳元->https://developers.flow.com/tools/flow-cli/super-commands

Flow BlockchainのCadence version1.0ドキュメント (Super Commands)

Previous << Install Instructions

Next >> Get an Account

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?