Rust プログラムの最適化

Rust を WebAssembly にコンパイルするとファイルサイズが大幅に増加しがちです。DFINITY Rust CDK には ic-cdk-optimizer というヘルパーライブラリが含まれており、Rust ベースの Canister スマートコントラクトを Internet Computer メインネットにデプロイする前にサイズを小さくするのに使用できます。

はじめる前に

プログラムの最適化を始める前に、以下を確認してください:

  • インターネットに接続しており、ローカルの macOS または Linux コンピュータでターミナルにアクセスできること。

  • Rust のインストール方法 にあるように、Rust プログラミング言語と Cargo が OS にダウンロードされ、インストールされていること。

    curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh

    Rust のバージョンは 1.46.0 より新しい必要があります。

  • ダウンロードとインストールの説明に従って、DFINITY Canister Software Development Kit (SDK) パッケージのダウンロードとインストールが済んでいること。

  • cmake のインストールが済んでいること。例えば、macOS では Homebrew を使って以下のコマンドを実行します:

    brew install cmake

    Homebrew をインストールする方法については、Homebrew のドキュメントを参照してください。

  • Dapp を WebAssembly モジュール(WASM)にコンパイルし、ローカル Canister 実行環境 上にデプロイした経験があること。

最適化ツールのインストールと実行

Rust の Dapp をコンパイルしてできた Canister を、以下の手順で最適化します:

  1. 自分がプロジェクトのルートディレクトリにいることを確認します。

  2. 過去に ic-cdk-optimizer クレートをインストールしていなければ、以下のコマンドでインストールします:

    cargo install ic-cdk-optimizer

    このパッケージは、Rust コードを最適化して WebAssembly の出力サイズを小さくし、Dapp が Internet Computer メインネットに Canister としてアップロードできるようにします。

  3. 以下のコマンドを実行して、src ディレクトリ内に release ディレクトリを作成します。

    mkdir -p src/rust-canister/target/wasm32-unknown-unknown/release/
  4. 以下のコマンドを実行して、target ディレクトリ内のコードを最適化します。

    ic-cdk-optimizer target/wasm32-unknown-unknown/release/_rust_canister_.wasm -o target/wasm32-unknown-unknown/release/_rust_canister_-opt.wasm