概要
Railwayが新たなビルダー Railpack をリリース。 Nixpacksの課題を解決し、 より高速・柔軟なビルド を実現。 イメージサイズ削減 やキャッシュ最適化によりデプロイ効率向上。 主要言語・フレームワークを幅広くサポート。 Railpackはオープンソース で、今すぐ利用可能。
Railpackリリース概要
- Railwayが新ビルダー Railpack を発表
- 14M以上のアプリ開発経験を活かした設計
- Nixpacksの課題を踏まえ、 ゼロから再構築
- Beta版 として本日より利用可能
- railway.comやCentral Stationで既に運用中
Nixpacksの課題
- バージョン管理の柔軟性不足
- Nixは コミットベースのバージョン管理 のみ対応
- パッチバージョンごとの指定や管理が困難
- 例:NodeやPythonは最新メジャーのみ対応
- イメージサイズの肥大化
- 依存パッケージ全てを1レイヤーで管理
- 分割不可 なため、サイズ削減困難
- キャッシュ制御の難しさ
- レイヤーキャッシュの 無効化が頻発
- 環境変数の注入でキャッシュヒット率低下
- ユーザー体験の不統一
- デフォルトバージョン更新時に ビルド失敗リスク
- Nix独自仕様の理解が必要
Railpackの主な特徴
- パッケージの細かなバージョン指定
- major.minor.patch 単位で管理
- イメージサイズの大幅削減
- Nodeで 38%減、Pythonで 77%減
- BuildKitによる高度なキャッシュ制御
- 環境横断のキャッシュ共有 に対応
- 依存関係のロック
- デフォルトバージョン更新時も 既存ビルドの安定性維持
- シークレット管理の強化
- BuildKitシークレットで 環境変数の漏洩防止
- Go言語ベースの新アーキテクチャ
- BuildKitとの親和性向上
- Miseによるバージョン解決・パッケージインストール
- 他ソースにも将来的に対応予定
Railpackの動作フロー
- Analyze
- コード解析で必要パッケージ・コマンド・起動コマンドを特定
- Plan
- JSON形式でビルドプランを生成
- 各ステップに必要な入力・出力を明確化
- Generate
- BuildKit用の LLBグラフ を生成
- コマンドごとにマルチステージでビルド
- キャッシュヒット最適化 のため、環境変数等の変更時はハッシュで管理
Railpackで実現できること
- Vite, Astro, CRA, Angular 等の静的サイトを ゼロ設定でビルド・デプロイ
- Railway UIとの 統合
- 言語最新版対応 (Railpack自体の更新不要)
- 環境横断でのレイヤーキャッシュ最適化
対応言語・フレームワーク
- Node, Python, Go, Php, Static HTML
- Vite, Astro, CRA, Angular等の主要フレームワーク
- フロントエンド・バックエンド両対応
利用方法・今後の展望
- Beta版として今すぐ利用可能
- サービス設定から Railpackを有効化
- オープンソース (railpack.comにドキュメントあり)
- 今後も 対応言語・フレームワークを拡充予定
- コアAPIや抽象化の安定を優先
- 要望はHelp Stationで受付
まとめ
- RailpackはNixpacksの課題を解決し、より柔軟・高速なビルド基盤を提供
- イメージサイズ削減・キャッシュ最適化・バージョン管理強化 により、開発者体験を大幅向上
- 今すぐBeta版を試用可能、オープンソースとして継続的に進化