開発環境構築 - ytak-sagit/hands-on-rust-for-backend GitHub Wiki

下記の開発環境構築手順を記す

  • Windows 11 Home 23H2
  • WSL2 + Ubuntu v22.04
  • devcontainer
  • Rust 最新版

参考

手順

WSL2 + Ubuntu 等の前準備は、こちらを参照(#1-#4まで同じ)

以降の手順

  1. devcontainer.json 作成
  2. settings.json 作成
  3. Git 向け SSH 鍵の設定
  4. 開発用コンテナの作成・起動
  5. Rust の動作確認
  6. GitHub への SSH 導通確認

1. devcontainer.json 作成

参考ページ記載のものをコピペ。ただし、

  • nameの内容を変更
  • 「Git Graph」拡張機能を追加
  • GitHub Actions 向け拡張機能を追加
// .devcontainer/devcontainer.json
{
    "name": "Rust for a backend engineer",
    "image": "mcr.microsoft.com/devcontainers/rust:latest",
    "customizations": {
        "vscode": {
            "extensions": [
                "vadimcn.vscode-lldb", // コンパイル言語のデバッグ用
                "tamasfe.even-better-toml", // *.toml 用
                "fill-labs.dependi", // crate 管理用
                "Swellaby.vscode-rust-test-adapter", // Rust 用テストエクスプローラー
                "JScearcy.rust-doc-viewer", // ローカルで生成された Rust ドキュメント用ビューワ
                "rust-lang.rust-analyzer", // Rust の入力補完や文法ミスチェック等
                "github.vscode-github-actions", // GitHub Actions
                "mhutchie.git-graph" // Git Graph
            ]
        }
    }
}

2. settings.json 作成

formatter と linter の設定を追加。ただし、

  • ファイルの自動保存設定をOFFへ変更(能動的にファイルを保存 -> format&lintがかかる、という形としたいため)
// .vscode/settings.json
{
    "[rust]": {
        "editor.defaultFormatter": "rust-lang.rust-analyzer",
        "editor.formatOnSave": true,
        "files.autoSave": "off",
    },
    "rust-analyzer.checkOnSave": true,
    "rust-analyzer.check.command": "clippy", // linter
}

3. Git 向け SSH 鍵の設定

  • ホスト(WSL2)側のユーザと開発用コンテナ側のユーザが異なる場合、リモートリポジトリ向けの Git 操作が行えない
  • ~/.bashrc に以下を追記する
    if [ -z "$SSH_AUTH_SOCK" ] ; then
      eval $(ssh-agent)          # ssh-agent の起動
      ssh-add ~/path/to/ssh-key  # ssh-agent に SSH 鍵を登録
    fi
    
  • VSCode を再起動し、SSH 鍵が登録されているかチェック
    ssh-add -L
    #> ~/path/to/ssh-key の内容が表示されていれば OK
    

4. 開発用コンテナの作成・起動

VSCode 上で Ctrl + Shift + P を押下し、「Devcontainers: Reopen in Container」を選択

  • 開発コンテナが作成され、VSCode 上で起動した状態となる
  • Docker Compose を使う場合と起動手順は変わらない
📝devcoitainer.json の "image" を指定した場合でも、特に問題なくコンテナ起動できた
  -> 細かい設定をしなくて良い場合はこの方が簡単でラク
  -> 🌸`git` コマンドも image にインストール済なので Git 操作できるのがよき
  -> 💀Docker image が「2.52GB」もあるのがちょっとネック

5. Rust の動作確認

Rust コンパイラ rustc のバージョンチェック

rustc --version
#> rustc 1.81.0 (eeb90cda1 2024-09-04)

ビルドシステム兼パッケージマネージャ cargo のバージョンチェック

cargo --version
#> cargo 1.81.0 (2dbb1af80 2024-08-20)

6. GitHub への SSH 導通確認

手順3.で登録した SSH 鍵により、GitHub への SSH 接続ができるか動作確認

ssh -T [email protected]
#> Hi <git の user.name>! You've successfully authenticated, but GitHub does not provide shell access.