Windowsで作るRuby on Rails開発環境[Vol.1 OSセットアップ] (最終更新 : 2025/01/08)

## この記事について…

昨年SNS上で「Webエンジニアなら○△のOSを絶対に使いましょう！」のような投稿を見かけました。各々好きなOSはあるかと思いますが、昨今は「どんなOSでも大体何とかなるんじゃね？」というように感じています。(色々なOSを扱えると知見も深まりますし。)

自身はメインOSとして「Windows 11 Pro(+ WSL2上のUbuntu 24.04 LTS)」、サブOSとして「macOS」を使用していますが、今回は「Windows」で作るRuby on Rails開発環境について紹介しようと思います！

本記事ではVol.1として「OSセットアップ」に焦点を当てたいと思います。

## 更新履歴

- 2025/01/01 : 新規投稿
- 2025/01/08 : 開発ツールのセットアップ手順を改善、文章校正

## 想定する環境

- ホストOS : Windows 11 Pro 24H2
  * Windowsの標準的なセットアップ手順については割愛します
- 仮想環境 : Windows Subsystem for Linux 2(以下WSL2)
  * UEFI(BIOS)にて仮想化支援技術を有効化する必要がある場合もあります
    手順についてはご自身のPC型番等でお調べください
- ゲストOS : Ubuntu 24.04.1 LTS(WSL2上で動作)
- コードエディタ : Visual Studio Code
  * Vol.2では、Visual Studio Codeの拡張機能をご紹介できればと思っています(執筆時期未定…。)
- データベース : PostgreSQL / Redis
  * MySQLやその他のデータベースを使用することも多いですね

:::note info
WSL2はWindows 11 Homeでも使用可能である為、Pro版ではなくHome版でも本記事は有効かと思います。が、手元にHome版がない為未検証です。ご了承ください。
:::

## WSLを使用してUbuntuをインストール

https://learn.microsoft.com/ja-jp/windows/wsl/install

今回、「Windows」上に仮想でUbuntu OSをインストールします。
これを実現するのはWSLです。昨今、WSLのインストールはワンライナー(1行でサクッと作ったコマンド)でできてしまいます。
管理者権限でPowerShellを開いて、下記を実行してください。

```powershell
wsl --install
```

この時にエラーが発生するような場合は、UEFI(BIOS)の仮想化支援技術が有効化されていない等、事前準備に漏れが予想されます。エラー内容を確認して足りない設定を行ってから再度実行しましょう。
処理が正常に終了したら、変更を有効にする為一旦Windowsを再起動します。

```powershell
shutdown /r /t 0
```

以前は上記の後に `wsl --set-default-version 2` と実行してWSL**2**を使用するように既定のバージョン変更を行っていたのですが、これも昨今はデフォルトでWSL2が既定として選択されていると思います。

次にUbuntuのインストール！…と言いたいところですが、実は既にこちらもインストールされています。(というか、上記再起動後に勝手にUbuntuが起動してくる気すらします。)
WSLでは標準でUbuntu OSを採用しているのです。もちろん、別のディストリビューションを任意に選択することも可能です。
Windowsのすべてのアプリを参照すると、「Ubuntu」というアプリが既に存在するのではないでしょうか？これを起動すると、次のUbuntuの設定に進むことができます。

## Ubuntuの初期設定

「Ubuntu」アプリを起動すると、「username」と「password」の入力を求められます。
今後、これらのユーザ情報を多用しますので、覚えておいてください。
「username」についてはWindowsとは別の名称も指定できます。が、同じ名称にしておいた方が開発上分かりやすいかもしれません。

次に、aptパッケージを更新する際に日本国内のリポジトリを参照するよう設定変更します。これは必ずしも対応しなくとも大丈夫ですが、海外のリポジトリを参照する場合は少なからず遅延が発生するので、対応しておいて損はないかと思います。
こちらは、`sed`コマンドを使用してワンライナーで対応しましょう。

```bash
sudo sed -i.bak -e "s/http:\/\/archive\.ubuntu\.com/http:\/\/jp\.archive\.ubuntu\.com/g" /etc/apt/sources.list.d/ubuntu.sources
```

Ubuntu 24.04以降、aptパッケージの参照先リポジトリ変更方法が以前と異なります。注意しましょう。

次に、タイムゾーンとロケールを日本仕様に変更します。(タイムゾーンは最初から変更されているかも。)

```bash
# タイムゾーンの設定
sudo timedatectl set-timezone Asia/Tokyo
# 日本語化
sudo apt update
sudo apt install -y language-pack-ja
sudo update-locale LANG=ja_JP.UTF-8
```

上記実行後、`exit`コマンドを実行して一旦Ubuntuを閉じましょう。
改めて「Ubuntu」アプリを起動して、`locale`コマンドを実行してロケールが正しく変更されたか確認してください。
`date`コマンドも合わせて実行して、タイムゾーンも確認しても良いですね！

:::note info
`sudo apt install -y manpages-ja manpages-ja-dev`コマンドでmanコマンドの日本語マニュアルをインストールするのも良いですね。但し、日本語マニュアルは英語マニュアルに比べて情報更新されていないケースもある為気を付けましょう。
:::

続いて、systemdへの対応状況を確認します。`sudo vim /etc/wsl.conf`コマンドを実行して、`/etc/wsl.conf`の中身を確認すると…

```conf:/etc/wsl.conf
[boot]
systemd=true
```

最初から上記のように設定されていると思います。`systemd=true`なので、systemdへの対応状況もOKです。
以前はWSL2ではsystemdが使用できないという制限がありましたが、昨今では通常開発の範囲では全く問題なく使用することが可能です。

次にこれは好みですが、私は`PATH`環境変数にWindowsの`PATH`を含めないよう下記の設定を追加しています。
`sudo vim /etc/wsl.conf`コマンドを実行して追記してください。

```conf:/etc/wsl.conf
[boot]
systemd=true
# 以下を追記
[interop]
appendWindowsPath=false
```

このように設定すると、Ubuntu上の`PATH`環境変数にWindowsの`PATH`が含まれなくなります。Tabキー押下時の予測変換が遅い場合、本設定を行うと改善します。が、当たり前ですがWindowsの`PATH`が含まれなくなりますので`notepad.exe`等とコマンド実行してもエラーとなるようになります。(`/mnt/c/Windows/notepad.exe`とフルパス指定することは可能。)

最後に、一旦aptパッケージやLinuxカーネル等を全て最新に更新しておきましょう。
私は、開発環境の場合は下記のワンライナーでサクッと更新することが多いです。

```bash
sudo apt update && sudo apt upgrade -y && sudo apt full-upgrade -y && sudo apt autoremove -y && sudo apt autoclean -y
```

中には重要な脆弱性対応が配信される場合もあります。開発環境であっても定期的に更新作業を行いましょう。別途、自動更新設定を行っても良いですね。

以上でUbuntuの初期設定は完了です。次に、各種開発ツールをセットアップしていきましょう！

:::note info
Ubuntu 24.04 LTSでは`apt`コマンドに`-U`オプションを付与すると、自動的に`sudo apt update`を実行してくれるようになりました。この為、上記のワンライナーは

```bash
sudo apt upgrade -yU && sudo apt full-upgrade -y && sudo apt autoremove -y && sudo apt autoclean -y
```

でもOKです。ちょっと短くなって良きですね。
未だUbuntu 22.04 LTSを操作する機会もあるかと思いますが、そちらではエラーとなることご注意ください。
:::

## Ubuntuに開発ツールをセットアップ

本項では、Ubuntu上にRuby on Rails開発で使用する(と思われる)開発ツールを順次セットアップしていきます。
この辺りから技術者の好みも入ってくる為、「自分好みの開発ツール」を見つけられるよう日々色々なツールを使ってみましょう。

:::note info
[dotfiles](https://github.com/hideki0145/dotfiles)という名称のリポジトリをGitHub等に登録して、ワンライナーで開発ツールセットアップができるようにしている方も多くいます。
Windowsの話ではなく恐縮ですが、Ubuntu Desktop環境に対してワンライナーで開発環境をセットアップする[Omakub](https://omakub.org/)は、Ruby on Rails開発者の[DHH](https://dhh.dk/)が公開している、DHHの魂が感じられる物凄く素敵なリポジトリです。
:::

### Git : 分散型バージョン管理システム

https://git-scm.com/downloads/linux

言わずと知れたGitですが、最初からインストールされていると思います。
万が一インストールされていない場合、又は最新の`git`コマンドを使用したいという場合は、次のコマンドを実行してください。

```bash
sudo add-apt-repository -y ppa:git-core/ppa
sudo apt update
sudo apt install -y git
```

### Vim : 高機能なテキストエディタ

https://www.vim.org/download.php

テキストエディタはお好みですが、私はVimを使用しています。こちらも確か最初からインストールされていると思いますが、万が一インストールされていない場合は`sudo apt install -y vim`コマンドを実行してください。

:::note info
`.vimrc`ファイルを使用することでVimを自分好みにカスタマイズすることが可能です。また、Vimには色々なPluginも存在します。
デフォルトでも十分使用可能ですが、慣れてきたらカスタマイズも楽しんでみましょう。
:::

### Z Shell(Zsh) : コマンドシェル

https://www.zsh.org/

上司の影響で私はZshを使用しています。また、[Prezto](https://github.com/sorin-ionescu/prezto)というフレームワークを導入してPlugin管理やテーマ管理等を行っています。
デフォルトのBashでも十分かと思いますので、この辺りもお好みでどうぞ。(尚、シェルはZsh使いですがシェルスクリプトを書くときはBash互換を重視しています。)

```bash
sudo apt install -y zsh
# コマンドシェルをBashからZshに変更
chsh -s "$(which zsh)"
```

:::note info
通常、`chsh -s`コマンドでコマンドシェルを変更する場合はパスワードを求められます。
もし処理自動化の最中にパスワードを求められるのが煩わしいという場合は下記のような方法でパスワード入力をスキップすることが可能です。

```bash
  sudo sed -i.bak -e "/auth.*required.*pam_shells.so/s/required/sufficient/g" /etc/pam.d/chsh
  chsh -s "$(which zsh)"
  sudo sed -i.bak -e "/auth.*sufficient.*pam_shells.so/s/sufficient/required/g" /etc/pam.d/chsh
```

`/etc/pam.d/chsh`ファイルを一時的に書き換えしているのですが、必ず上記のように元の記述に戻すよう注意してください。
:::

### Tig : 軽量なGitクライアント

https://jonas.github.io/tig/INSTALL.html

Gitのコミットログをコマンドシェル上でササっと確認する際に便利、それがTigです。
コードエディタに備え付けのGitクライアントでもいいのですが、ササっとコミットログを見たいとき等に便利なのです。

```bash
sudo apt install -y tig
```

### rustup : Rustの公式バージョン管理ツール

https://www.rust-lang.org/tools/install

軽快動作するCUIアプリ等、Rust製のアプリを採用する機会が増えてきました。(後述するmiseもRust製)
また、RubyにYJITを含める場合にもRustが必要となります。
Rust自体はaptパッケージでインストールしてもいい(し、後の手順でインストールしている)のですが、今回は公式のバージョン管理ツールであるrustupを導入します。

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

上記実行後インストールオプションを指定するよう表示されますが、デフォルトの`1) Proceed with standard installation (default - just press enter)`を指定して支障ないかと思います。自動的に`.bashrc`ファイル等も更新してくれます。
上記実行後、`exit`コマンドを実行して一旦Ubuntuを閉じましょう。
改めて「Ubuntu」アプリを起動して、`rustc --version`コマンドを実行してRustも合わせてインストールされたか確認してください。

:::note info
rustupインストール時に非対話型で処理したい かつ `PATH`環境変数への処理を勝手に`.bashrc`ファイル等に追記してほしくない場合は下記のようにも実行できます。

```bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path
```

`... | sh -s -- -y --no-modify-path`の`--`の部分が肝です。省略できません。
:::

### mise : 高機能な開発環境セットアップツール

https://mise.jdx.dev/installing-mise.html

今まで[rbenv](https://github.com/rbenv/rbenv)に始まり[nodenv](https://github.com/nodenv/nodenv)、[anyenv](https://github.com/anyenv/anyenv)、[asdf](https://asdf-vm.com/)と渡り歩いてきましたが、最近かなり話題のmiseに今ハマっています。本当に何でもセットアップできてしまうので、miseに依存しすぎないように注意しないと…と思っている今日この頃です。
Ruby on Rails開発において、miseを使用してRubyとNode.jsをバージョン管理しています。また、開発環境固有の環境変数をmiseで自動登録して開発時の手間を減らしています。

```bash
curl https://mise.run | sh
# お使いのコマンドシェルに合わせて下記を実行
echo 'eval "$(~/.local/bin/mise activate bash)"' >>~/.bashrc
echo 'eval "$(~/.local/bin/mise activate zsh)"' >>~/.zshrc
```

上記実行後、`exit`コマンドを実行して一旦Ubuntuを閉じましょう。(`PATH`環境変数に手を加えそうな雰囲気の場合は一旦閉じるのが有効ですね。)
改めて「Ubuntu」アプリを起動して、`mise doctor`コマンドを実行してmiseが動作するか確認してください。

次に、miseを使用してRubyとNode.jsをインストールします。取り急ぎ、latestなものをインストールしておきます。

```bash
# Rubyはruby-buildを使用してインストールされる為、事前に[依存関係](https://github.com/rbenv/ruby-build/wiki#suggested-build-environment)を確認して処理する
sudo apt install -y autoconf patch build-essential rustc libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libgmp-dev libncurses5-dev libffi-dev libgdbm6 libgdbm-dev libdb-dev uuid-dev
mise use ruby@latest
# Node.jsは特に依存関係なし
mise use node@latest
```

その他、Ruby on Rails開発には関係ないですが、私はmiseでPythonもインストールしています。簡単なスクリプトを書くときに便利ですよね。(生成AIも活き活きとコード生成してくれますし…)
Pythonもpython-buildを使用してインストールされる為、事前に[依存関係](https://github.com/pyenv/pyenv/wiki#suggested-build-environment)を確認してくださいね。

### Yarn : Node.jsのパッケージマネージャ

https://yarnpkg.com/getting-started/install

Node.jsのパッケージマネージャとしてYarnをインストールします。やることはNode.jsのCorepackを有効化するだけ…ですが、CorepackはNode.jsから削除されることが決定しているので今後インストール手順が変更となる可能性大です。

```bash
corepack enable
```

尚、asdfの時に必要だった`asdf reshim nodejs`のようなコマンドはmiseでは不要です。(何度実行し忘れてなんだか動かない状況になったか…)

### Google Chrome : Googleのウェブブラウザ

https://support.google.com/chrome/answer/95346#zippy=%2Clinux

RSpecでシステムテストを実行する際に使用します。基本Headlessモードでしか使用しませんが、日本語フォントを別途ダウンロードするとWSL2上のGoogle ChromeをWindows上で使用したりもできます。

```bash
# debパッケージをダウンロード
curl -LsS "https://dl.google.com/linux/direct/google-chrome-stable_current_$(dpkg --print-architecture).deb" -o "./google-chrome-stable_current_$(dpkg --print-architecture).deb"
# `apt`コマンドでインストール
sudo apt install -y "./google-chrome-stable_current_$(dpkg --print-architecture).deb"
# 使用済みのdebパッケージ削除
rm "./google-chrome-stable_current_$(dpkg --print-architecture).deb"
```

上記が一番手っ取り早いと思っているのですがどうなんでしょうか…。

### PostgreSQL : 高機能なオープンソースのRDBMS

https://www.postgresql.org/download/linux/ubuntu/

本記事ではデータベースにPostgreSQLを使用します。要件に合わせてMySQLやその他データベースも使用することがあります。
今回、PostgreSQLと後述するRedisはDockerコンテナ上で動作させます。最初は普通にインストールしていたのですが、macOS上に普通にインストールした場合と文字コード関連の設定がどうしても共通化できず、「Dockerコンテナで動かせば環境依存しなくていいじゃん」との結論に至りました。(PostgreSQLの勉強不足感が否めない…。)

ということで、下記ではDockerコンテナ上のPostgreSQLに接続する為のClientツールと開発者向けライブラリのみインストールしています。

```bash
sudo apt install -y curl ca-certificates
sudo install -d /usr/share/postgresql-common/pgdg
sudo curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc
sudo sh -c 'echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
sudo apt update
sudo apt install -y postgresql-client libpq-dev
```

ちょこちょこインストール方法が更新されている為、定期的に[インストール方法](https://www.postgresql.org/download/linux/ubuntu/)を確認すると良いです。

### SQLite3 : 軽量で小規模なオープンソースのRDBMS

Ruby on Rails 8から本番環境でもどんどん利用してくれとDHHも言っているSQLite3です。小規模なWebシステムならPostgreSQLもRedisもいらない時代がやってきた感が凄い…。
下記では開発者向けライブラリも同時にインストールしています。

```bash
sudo apt install -y sqlite3 libsqlite3-dev
```

### Redis : メモリ上で動作するインメモリデータベース

https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-on-linux/

本記事ではインメモリデータベースにRedisを使用します。
RedisもDockerコンテナ上で動作させる為、Clientツールのみインストールします。

```bash
sudo apt install -y lsb-release curl gpg
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
sudo chmod 644 /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
sudo apt update
sudo apt install -y redis-tools
```

余談ですが、macOSで開発ツールをセットアップする場合は大体Homebrewで何とかなってしまいます。
HomebrewにはLinux版も存在する為、UbuntuでもmacOS同様Homebrewでほぼ完結させることができそうですが、なんとなく使い慣れたaptコマンドでセットアップしてしまいますね…。

### Graphviz : DOT言語からグラフを描画する為のオープンソースツール

https://graphviz.org/download/

[Rails ERD](https://voormedia.github.io/rails-erd/)を使用するとRailsプロジェクトのモデル情報を基にしてER図を自動生成してくれる便利なGemなのですが、Graphvizが依存関係となっています。

```bash
sudo apt install -y graphviz
```

### GitHub CLI : コマンドラインからGitHubを操作できるGitHub公式CLIツール

https://github.com/cli/cli/blob/trunk/docs/install_linux.md

ソースコードをGitGubリポジトリで管理することが圧倒的に多いかと思いますが、CLIでGitHub Actionsを起動したり、GitHub REST APIを利用したりする際に大変便利なのがGitHub CLIです。

```bash
(type -p wget >/dev/null || (sudo apt update && sudo apt-get install wget -y)) \
	&& sudo mkdir -p -m 755 /etc/apt/keyrings \
        && out=$(mktemp) && wget -nv -O$out https://cli.github.com/packages/githubcli-archive-keyring.gpg \
        && cat $out | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \
	&& sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
	&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
	&& sudo apt update \
	&& sudo apt install gh -y
```

FlakyなTestを修正する際にGitHub Actionsを手動実行しまくったことがありますが、GitHub CLI経由で操作すると大変楽でした。管理するRailsプロジェクトが多岐に渡ると、`gh browse`でGitHubリポジトリのページを既定のブラウザで開くことができるのもとっても便利です。

### Lazygit : シンプルなターミナルベースのGitクライアント

https://github.com/jesseduffield/lazygit?tab=readme-ov-file#ubuntu

Lazygitはシンプルなキーボード操作でGitリポジトリを色々できるターミナルベースのGitクライアントです。
追々Tigから完全移行しようと画策中。

```bash
LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | \grep -Po '"tag_name": *"v\K[^"]*')
curl -Lo lazygit.tar.gz "https://github.com/jesseduffield/lazygit/releases/download/v${LAZYGIT_VERSION}/lazygit_${LAZYGIT_VERSION}_Linux_x86_64.tar.gz"
tar xf lazygit.tar.gz lazygit
sudo install lazygit -D -t /usr/local/bin/
rm lazygit.tar.gz lazygit
```

### Lazydocker : シンプルなターミナルベースのDocker管理ツール

https://github.com/jesseduffield/lazydocker?tab=readme-ov-file#binary-release-linuxosxwindows

Lazygit同様、シンプルなキーボード操作でDockerやDocker Composeを色々できるターミナルベースの管理ツールです。Lazygitと操作感が似ている為、使いこなせるように学習中。

```bash
curl https://raw.githubusercontent.com/jesseduffield/lazydocker/master/scripts/install_update_linux.sh | bash
```

### Docker : コンテナ技術を利用して仮想環境を簡単に構築・配布・実行する為のプラットフォーム

https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository

本記事ではPostgreSQLとRedisはDockerコンテナ上で動作させますので、Dockerもセットアップします。
Dev Containerで開発環境をまるごとコンテナ構築するプロジェクトを使用している場合もDockerのお世話になりますね。
自身の場合はまるごとコンテナ構築～とまではしなくて、周辺ツールのみコンテナ動作させる程度に留めているケースが圧倒的に多いです。規模の大きなプロジェクトでは開発環境まるごとコンテナ構築も必須なのだろうと思います。(この辺りもう少し詰めないと…。)

```bash
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo usermod -aG docker $USER
```

上記実行後、`exit`コマンドを実行して一旦Ubuntuを閉じましょう。
改めて「Ubuntu」アプリを起動して、`docker --version`コマンドと`docker compose version`コマンドを実行してDockerとDocker Composeが動作するか確認してください。

次に、PostgreSQLとRedisをDockerコンテナ上で動作させます。Docker Composeを使用して動作させる例です。
自身の場合はdotfilesに`compose.yaml`も含めている為、「dotfiles」という名前でDocker Composeを管理しています。

```yaml:compose.yaml
name: dotfiles

services:
  postgres:
    build:
      context: .
      dockerfile: postgres/Dockerfile
    restart: always
    ports:
      - "${IP:-127.0.0.1}:5432:5432"
    volumes:
      - postgres-data:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      LC_ALL: ja_JP.UTF-8

  redis:
    image: redis
    restart: always
    ports:
      - "${IP:-127.0.0.1}:6379:6379"
    volumes:
      - redis-data:/data

volumes:
  postgres-data:
  redis-data:
```

```Dockerfile:postgres/Dockerfile
FROM postgres
RUN localedef -i ja_JP -c -f UTF-8 -A /usr/share/locale/locale.alias ja_JP.UTF-8
```

PostgreSQLについては、LOCALEをja_JP.UTF-8にしたいが為に色々やっています。[こちらのブログ](https://yamap55.hatenablog.com/entry/2021/03/14/225241)が当時大変参考になりました。

上記準備できたら`compose.yaml`の存在するディレクトリにて`docker compose up -d`を実行すれば、コンテナが起動します。`restart: always`として`compose.yaml`に記述している為、WSL2再起動時にも自動で起動してくれます。

## これでRuby on Railsの開発を開始可能！

ここまでセットアップが完了すれば、Ruby on Railsの開発を開始可能なはずです！
もし既存のプロジェクトが存在すれば、`git clone`又は`gh repo clone`でリポジトリをcloneして、試しにRails Serverを起動してみましょう。
もしプロジェクトに`mise.toml`が含まれるのなら、`mise install`を実行すれば自動で必要なものをmiseがインストールしてくれるはずです。
後は`config/database.yml`の内容に注意しながら`bin/setup`でも実行すれば、(プロジェクトのメンテナンス具合にも因りますが)Rails Serverを起動することができるはずです。

但し、現時点ではターミナル上でVimを使用してソースコードの修正を行うこととなります。それでももちろんいいのですが、次回Vol.2ではVisual Studio CodeでWSL2に接続して開発する方法と、Ruby on Railsの開発に有用な拡張機能の紹介をしたいと思います！(※但し執筆時期未定…。)

是非皆さんの開発環境構築の参考となれば幸いです。