今後SUIが普及することを期待して、そのベースにある move を勉強するための備忘録です。
2024/11/7時点で move に関する日本語の記事はほとんど見当たらなかったので、こういった形で誰かの参考になれば幸いです。
Move チュートリアル
Moveという言語に関しては The Move Book に大体情報がのっているので、直接読める方はそちらを参考にする方が早いかと思います。その中を少し見るとチュートリアルがあってインストールの手順から丁寧に書かれているかと思います。
以下ではチュートリアルにある「Step 0: Installation」に書いてあることをなぞっていきます。ここで大事なのが、私の場合手順通りにやるとうまくいかなかったことです。なので私の場合ではありますが、何が原因でどう改善すればよいかまとめていきます。
あまり関係ないかもしれないですが、一応参考のために導入したPCの環境を記載しておくと MacBook Air M2, 2022 で OS は Sequoia 15.1 です。
Move のインストール
それでは実際に「Step 0: Installation」をなぞっていきます。まずターミナルを開いて以下のコマンドを実行します。すると今いるディレクトリの下に move ディレクトリができます。
git clone https://github.com/move-language/move.git
その move ディレクトリに移動してdev_setup.shファイルを実行します。
cd move
./scripts/dev_setup.sh -ypt
これによりRustなどの環境も同時に導入されます。またルートフォルダに.profileというファイルもできるのでそれを実行します。
source ~/.profile
次に、Moveのコマンドラインをインストールします。
cargo install --path language/tools/move-cli
最後にmoveのコマンドが動けば無事moveが導入されたことになります。
move --help
以上の手続きが問題なく終われば以下の内容は関係ないので以上となります。
導入時の問題と改善方法
ここでは私が遭遇した問題と改善方法について書きます。
導入時の問題
私はチュートリアルにある
cargo install --path language/tools/move-cli
というコマンドでエラーが起きました。
そのエラーは以下のようなもの
error: failed to compile move-cli v0.1.0, intermediate artifacts can be found at /Users/(ユーザーネーム)/Desktop/move/target
Caused by:
package icu_locid_transform_data v1.5.0 cannot be built because it requires rustc 1.67 or newer, while the currently active rustc version is 1.65.0
Either upgrade to rustc 1.67 or newer, or use cargo update -p icu_locid_transform_data@1.5.0 --precise ver where ver is the latest version of icu_locid_transform_data supporting rustc 1.65.0
で要するに導入した rustc のバージョン(1.65.0)が古いため、move-cliをインストールできないというエラーでした。そこで素朴にアップデートを試みます。
rustup update stable
しかし、アップデートした後に
rustc --version
でバージョンを確認してもバージョンは古いままで全然更新されませんでした。
つまり、アップデートを試みても rustc のバージョンが古いままになっているせいで導入がうまくいかないということがわかりました。
改善方法
先ほど見た問題の解決は単純で
cd move
./scripts/dev_setup.sh -ypt
というコマンドを実行した時に導入される moveディレクトリの rust-toolchain というファイルを書き換えるだけです。このファイルは単に「1.65.0」と書かれているだけですが、これを例えば「1.82.0」とします。
1.82.0
これによって私の場合は無事インストールが完了しました。
このファイルのせいで rustc のバージョンが指定されてしまい、 rustup update を試みても更新できなかったということが起きていたようです。
結論
チュートリアル通りにやるとエラーが生じるわけですが、それはチュートリアルにあるコマンドを実行したときに導入される rust-toolchain というファイルが原因だということがわかりました。
それによって rustc のバージョンを更新できず、古いままになってしまうため、rust-toolchain というファイルの中身を「1.65.0」から「1.82.0」に書き換えることでチュートリアルを完了することができました。
Moveをこれから使っていこうと思っている人に少しでも役に立てば幸いです。