Ubuntu 26.04 へベースボックス更新とセットアップスクリプトの改良

rails/rails-dev-box

この PR は開発環境のベースイメージを Ubuntu 26.04 に切り替え、ChromeDriver の導入、Yarn リポジトリ鍵の signed‑by 形式への移行、VirtualBox Guest Additions 更新後の自動再起動設定を追加します。これらの変更により、環境構築時の手順が簡略化され、最新ツールチェーンが利用可能になります。

背景

ベースボックスを bento/ubuntu-24.04 から bento/ubuntu-26.04 へ変更することで、開発者は最新の Ubuntu イメージ上でテストを実行できます。加えて、システムテストで必要な ChromeDriver が自動的にインストールされるようにした点が主な目的です。さらに、apt-key の非推奨に伴い Yarn のリポジトリ鍵取得方法をモダンな signed‑by 方式へ置き換えました。最後に、VirtualBox Guest Additions の更新後にプロビジョニングがハングするケースを防止するため、vagrant-vbguest の自動再起動フラグを有効化しています。

技術的な変更

Vagrantfile の変更点はベースボックスの参照先とコメントの更新、そして Guest Additions 更新後の自動再起動ロジックの追加です。条件付きでプラグインが存在する場合に config.vbguest.auto_reboot = true を設定することで、再起動が必要なタイミングを自動化しています。

@@
-  config.vm.box      = 'bento/ubuntu-24.04' # 24.04 LTS
+  config.vm.box      = 'bento/ubuntu-26.04' # 26.04 LTS
@@
   config.vm.provider "virtualbox" do |v|
@@
   end
+
+  # Reboot after updating VirtualBox Guest Additions to avoid hanging during provision.
+  if Vagrant.has_plugin?("vagrant-vbguest")
+    config.vbguest.auto_reboot = true
+  end
 end

README.md では VM に接続した際のウェルカムメッセージを新しい Ubuntu バージョンに合わせて修正し、JavaScript 依存パッケージのインストール手順を明示しました。これにより、利用者が正しい手順で環境を立ち上げられるようになります。

@@
-    Welcome to Ubuntu 24.04.2 LTS (GNU/Linux 6.8.0-86-generic x86_64)
+    Welcome to Ubuntu 26.04 LTS (GNU/Linux 7.0.0-22-generic x86_64)
@@
- Some Rails components (e.g. Action Cable) include JavaScript packages. Install their dependencies before running tests:
-
-    vagrant@rails-dev-box:/vagrant/rails$ cd actioncable && yarn install
+ Some Rails components (e.g. Action Cable) include JavaScript packages. Install their dependencies before running tests:
+
+    vagrant@rails-dev-box:/vagrant/rails$ cd actioncable && yarn install

bootstrap.sh では 4 か所を改修しています。まず Yarn の GPG 鍵取得を apt-key から signed‑by 形式へ置き換え、鍵リングファイルを /usr/share/keyrings/yarn-archive-keyring.gpg に保存しました。次に mise のインストールを一時スクリプトで行い、ダウンロードファイルを削除して残存物を防止しています。MySQL テスト用環境変数に MYSQL_CODESPACES=1 を追記し、Nokogiri の依存パッケージを軽量化しました。最後に Google Chrome のリポジトリ設定も signed‑by 方式に統一し、ChromeDriver が利用できる基盤を整えました。

@@
-curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo -E apt-key add -
-echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
+curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor -o /usr/share/keyrings/yarn-archive-keyring.gpg
+echo "deb [signed-by=/usr/share/keyrings/yarn-archive-keyring.gpg] https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
@@
-curl -fsSL https://mise.run | HOME=/home/vagrant sudo -u vagrant bash
+curl -fsSL --retry 5 --retry-delay 3 --retry-connrefused -o /tmp/mise-install.sh https://mise.run
+HOME=/home/vagrant sudo -u vagrant bash /tmp/mise-install.sh
+rm -f /tmp/mise-install.sh
@@
-# /etc/environment is parsed by PAM for login sessions to expose these variables broadly.
+# /etc/environment is parsed by PAM for all sessions to expose these variables broadly.
+# MYSQL_CODESPACES=1 tells railties tests to use 'root' as the MySQL root password.
 cat >> /etc/environment <<'ENV'
@@
-install 'Nokogiri dependencies' libxml2 libxml2-dev libxslt1-dev
+install 'Nokogiri dependencies' libxml2-dev libxslt1-dev
@@
-echo installing Google Chrome
 curl -fsSL https://dl.google.com/linux/linux_signing_key.pub | gpg --dearmor -o /usr/share/keyrings/googlechrome-linux-keyring.gpg
 echo "deb [arch=amd64 signed-by=/usr/share/keyrings/googlechrome-linux-keyring.gpg] http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list
 apt-get -y update >/dev/null 2>&1
 install 'Google Chrome' google-chrome-stable

設計判断

ベースボックスのバージョン変更は、ファイル名やコメントを更新するだけのシンプルな置換で実装されています。これにより既存の Vagrant 設定ロジックはそのまま維持され、互換性が保たれます。vagrant-vbguest の自動再起動は、プラグインがインストールされている場合に限定した条件分岐で実装され、不要な再起動を防ぎつつ更新後の安定性を確保しています。

apt-key から signed‑by への移行は、鍵取得とリポジトリ登録を 1 行のコマンドに統合し、スクリプトの冪等性と保守性を向上させています。mise のインストールを一時ファイル経由にした点は、ダウンロードのリトライロジックを追加しつつ、実行後に残存ファイルを削除することでクリーンなプロビジョニングを実現しています。これらの判断は、最小変更で安全性・可搬性を高めるという設計方針に沿ったものです。

まとめ

PR はベースボックスを Ubuntu 26.04 に更新し、ChromeDriver の導入、Yarn 鍵の signed‑by 方式化、VirtualBox Guest Additions 更新後の自動再起動設定を追加しました。スクリプトの改良によりパッケージ取得の安全性とプロビジョニングの冪等性が向上し、開発者は最新環境を手間なく利用できるようになります。

記事メタデータ

Generated by:
gpt-oss-120b for DiffDaily
LLM Trace:
76264d58

この記事はAIによって自動生成されています。内容の正確性については、必ずソースコードやPRを確認してください。

品質レビュー結果

Review Status:
リトライ後承認
Review Count:
2回 (改善を経て承認)
Reviewed by:
gpt-oss-120b for DiffDaily

Review Criteria:

記事構成 ✓ PASS

Title, Context, Technical Detailの存在と明確さ

リード文、背景、技術的変更、設計判断(任意)、まとめの3部構成が明確に示されており、各セクションが総論→各論→結論の流れになっている。

カスタムMarkdown構文 ⚠ WARNING

シンタックスハイライト・GitHubリンク記法の正確性

コードブロックは正しい `言語:ファイル名` 形式で記述されているが、PRリンクが `[PR #218](URL)` と記載されており、要求された `[ #218 ](URL)` の形式とずれている。GitHubリンク記法の統一が必要。

対象読者への適合性 ✓ PASS

エンジニア向けの適切な技術レベルと表現

対象は開発者向けで、専門用語や実装詳細に焦点を当てており、初心者向けの過度な説明はない。

パラグラフ・ライティング ✓ PASS

トピックセンテンス・1段落1トピック・段落長

各セクションの冒頭が要点を示すトピックセンテンスで始まり、段落は1トピックに絞られ、長さは6文未満で空行で区切られている。

Diff内容との照合 ✓ PASS

コードブロックとDiff内容の一致

記事内のコードブロックは提供されたDiffと一致しており、ファイル名・変更内容・削除行・追加行すべてが正確に反映されている。

技術用語の正確性 ✓ PASS

技術用語の正確な使用

`signed-by`、`vagrant-vbguest.auto_reboot`、`ChromeDriver` などの用語は正確に使用され、PRでの記述と整合している。

説明の技術的正確性 ✓ PASS

技術的主張の正確性と論理性

技術的説明はDiffやPR説明に根拠があり、因果関係も妥当で誤りは見受けられない。

事実の突合 ✓ PASS

PR情報による主張の裏付け(ハルシネーション検出)

すべての主張はPRタイトル・説明またはDiffで裏付けられており、推測や外部知識の付加はない。

数値・固有名詞の確認 ✓ PASS

PR番号・コミットID・バージョン等の正確性

PR番号 #218 のみが記載されているが正確。その他数値・定数の記載はなく、誤りはなし。

タイトル・説明との一致 ✓ PASS

記事タイトル・説明とPR内容の一致

記事タイトルは PR の内容「Use Ubuntu 26.04」を的確に表現している。

外部知識の正確性 ✓ PASS

PRに記載のない外部知識(LTS、サポート状況など)の不使用

LTSサポートやリリーススケジュール等、PRに記載されていない外部知識は一切含まれていない。

時間表現の正確性 ✓ PASS

時間表現がPR情報と一致しているか

時間表現の歪曲はなく、PRの記述と一致している。