WindowsのRuby環境としてRubyInstallerがあります。新しいバージョンにも早く対応しているような感覚だったのですが、2022年12月25日にRuby 3.2が公開されたものの、12月28日時点でもRuby 3.2のWindowsバイナリは配布されていません。もしかして対応が遅くなるのかも? と思い、自前でビルドする方法を探ってみることにしました。 大前提として、Visual Studioをインストールしておく必要があります。以前は有償パッケージしかなかったのですが、今はVisual Studio Communityのように、オープンソース開発に使うのであれば無料だったりしますので、便利になりました。利用場面に応じて、適切なエディションをインストールしましょう。

1. vcpkgで依存ライブラリをインストールする

Rubyはいくつかのライブラリを使っているため、Rubyをビルドする前に用意しておく必要があります。Visual Studio用のバイナリが用意されていれば問題ないのですけれども、そんなものは無いので(知らないだけ?)自分でライブラリからビルドしなければなりません。 Microsoftがvcpkgというツールを作っており、これを使えば各種ライブラリを簡単にビルドすることができます。ツールをダウンロードするためにGitが必要なので、まだGitをインストールしていないのであれば、事前にGit for Windowsをインストールしておきます。
> cd c:\src
> git clone https://github.com/microsoft/vcpkg
> cd vcpkg
> .\bootstrap-vcpkg.bat
vcpkgはc:\srcにインストールしています。次に、インストールするパッケージを選びます。今回は自分しか利用しないので、x64用のライブラリをビルドします。
> .\vcpkg.exe install zlib openssl libffi libyaml readline --triplet=x64-windows
しばらく待つと、vcpkg\installedにバイナリやヘッダファイルが配置されます。

2. Rubyのダウンロード

Rubyの公式ホームページから、Ruby 3.2のソースコードをダウンロードします。 ダウンロードが終わったら、アーカイブファイルを適当なソフトウェア(私は7-zipを使っています。)で適当な場所に展開しておきます。

3. Rubyのビルド

スタートメニューの「Visual Studio 2022」に「x64 Native Tools Command Prompt for VS 2022」という項目があるので、これを選んでコマンドプロンプトを開きます。次に環境変数PATH、INCLUDE、LIBにvcpkgのディレクトリを追加していきます。
> set PATH=C:\src\vcpkg\installed\x64-windows\bin;%PATH%
> set INCLUDE=C:\src\vcpkg\installed\x64-windows\include;%INCLUDE%
> set LIB=C:\src\vcpkg\installed\x64-windows\lib;%LIB%
次はconfigureをしてビルドしていきます。configureするとき、インストール先のディレクトリを–prefixオプションで指定するようです。
> win32\configure.bat --prefix=c:\app\ruby-3.2.0
> nmake all install
これでインストールできる・・・はずなのですが、エラーが発生します。
Downloading bundled gem files...
`RubyGems' were not loaded.
`error_highlight' was not loaded.
`did_you_mean' was not loaded.
`syntax_suggest' was not loaded.
c:/src/ruby-3.2.0/tool/downloader.rb:4:in `require': cannot load such file -- fileutils (LoadError)
        from c:/src/ruby-3.2.0/tool/downloader.rb:4:in `<top (required)>'
        from -e:in `require'
NMAKE : fatal error U1077: 'c:\src\RUBY-3~1.0\ruby.exe' : リターン コード '0x1'
Stop.
おそらく、ruby.exeに正しいパスが渡っていないのだと思いますが、原因調査中です。

4. Rubyのビルド再び

nmakeに/Iオプションを指定してエラーを無視すると、インストールが完了するようになります。
> nmake /I install
これで一応、動作するRuby 3.2がc:\app\ruby-3.2.0にインストールされます。 いろいろ試してみたところ、psych.soのロードに失敗するため、gemが使えません。これは致命的! 極めて致命的なので、このままでは使いものになりません。psych(libyamlのラッパー)で失敗する原因は不明ですが、以前にmingw環境でビルドが失敗するというエラーレポートが上がっており、Visual Studio環境でのビルドまでは対応していないのではないか、と考えています。