前のセクションでは、新しいパッケージを作成し、Move パッケージの作成、ビルド、テストの基本的なフローを説明しました。このセクションでは、ストレージ モデルを使用し、操作できるシンプルなアプリケーションを作成します。そのために、シンプルな ToDoリストアプリケーションを作成します。

新しいパッケージを作成する

Hello, World!と同じフローに従って、todo_list という新しいパッケージを作成します 。

$ sui move new todo_list

コードを追加する

アプリケーションロジックに集中し、開発を迅速に進めるために、ToDoリストアプリケーションのコードを提供します。sources/todo_list.moveファイルの内容を以下のコードに置き換えてください:

注: 最初は内容が多すぎるように思えるかもしれませんが、次のセクションで詳しく説明します。今取り組んでいることに集中するようにしてください。

/// モジュール: todo_list
module todo_list::todo_list {
    use std::string::String;

    /// Todoのリスト。所有者が管理でき、他の人と共有できます。
    public struct TodoList has key, store {
        id: UID,
        items: vector<String>
    }

    /// 新しいTodoリストを作成します。
    public fun new(ctx: &mut TxContext): TodoList {
        let list = TodoList {
            id: object::new(ctx),
            items: vector[]
        };

        (list)
    }

    /// リストに新しいTodoアイテムを追加します。
    public fun add(list: &mut TodoList, item: String) {
        list.items.push_back(item);
    }

    /// インデックスを指定してリストからTodoアイテムを削除します。
    public fun remove(list: &mut TodoList, index: u64): String {
        list.items.remove(index)
    }

    /// リストとそれを管理する能力を削除します。
    public fun delete(list: TodoList) {
        let TodoList { id, items: _ } = list;
        id.delete();
    }

    /// リスト内のアイテム数を取得します。
    public fun length(list: &TodoList): u64 {
        list.items.length()
    }
}

パッケージをビルドする

すべてが正しく実行されたことを確認するために、sui move buildコマンドを実行してパッケージをビルドしてみましょう 。すべてが正しければ、次のような出力が表示されます。

$ sui move build
UPDATING GIT DEPENDENCY <https://github.com/MystenLabs/sui.git>
INCLUDING DEPENDENCY Sui
INCLUDING DEPENDENCY MoveStdlib
BUILDING todo_list

この出力の後にエラーがない場合は、パッケージは正常にビルドされています。エラーがある場合は、次の点を確認してください。

この段階でコードが失敗する理由は他にあまりありません。しかし、それでも問題が解決しない場合は、この場所でパッケージの構造を調べてみてください。

アカウントを設定する

パッケージを公開して操作するには、アカウントを設定する必要があります。簡潔さとデモンストレーションの目的で、sui devnet環境を使用します。

すでにアカウントが設定されている場合は、この手順をスキップできます。

初めて行う場合は、新しいアカウントを作成する必要があります。これを行うには、sui clientコマンドを実行します。その後、CLIから複数の質問が表示されます。回答は以下で > マークで示されています:

$ sui client
Config file ["/path/to/home/.sui/sui_config/client.yaml"] doesn't exist, do you want to connect to a Sui Full node server [y/N]?
> y
Sui Full node server URL (Defaults to Sui Testnet if not specified) :
>
Select key scheme to generate keypair (0 for ed25519, 1 for secp256k1, 2: for secp256r1):
> 0

質問に答えると、CLIは新しいキー ペアを生成し、それを構成ファイルに保存します。これで、このアカウントを使用してネットワークとやり取りできるようになります。

アカウントが正しく設定されていることを確認するには、次のsui client active-addressコマンドを実行します。