Backstage導入の第一歩: create-app vs Fork、あなたの選択は?

こんにちは!今日は、Backstageの導入を検討されている方が最初に直面する岐路、つまり「どのようにプロジェクトを開始するか?」について深く掘り下げていきます。🚀

Backstageは単にダウンロードしてインストールするソフトウェアではなく、皆さんの組織に合わせて構築するフレームワークです。この時、npx @backstage/create-appを使用する方法と、メインリポジトリをForkする方法のどちらを選択するかが、今後の運用を決定づけます。💡


🏗️ Backstageを始める:二つの道の正体

1. @backstage/create-app (推奨方式) ✨

この方式はReactのcreate-react-appに似ています。コマンドを実行すると、Backstageフレームワークを基盤とした新しい独立したインスタンスが生成されます。

2. BackstageリポジトリのFork (開発者方式) 🍴

GitHubの公式Backstageリポジトリを自分のアカウントに複製(Fork)し、その中で直接修正を行う方式です。


🌟 何が違うの?詳細比較分析

1. プロジェクトの目的と構造 📂

  • create-app: 皆さんは「ユーザー」になります。生成されたコードは最小限の設定ファイルとカスタマイズ可能な部分のみを含み、核となるロジックは@backstage/で始まるライブラリパッケージ形式で管理されます。
  • Fork: 皆さんはBackstageの「コントリビューター」のような環境に置かれます。数千のファイルを含む全体のソースコードをすべて持ち、フレームワーク自体を修正する目的が強いです。

2. アップデートとメンテナンス (最大の違い!) 🔄

  • create-app: `backstage-cli versions:bump`コマンド一つで最新バージョンへのアップデートが可能です。依存パッケージのバージョンを上げるだけで済むため、非常にクリーンです。
  • Fork: 公式リポジトリに数千のコミットが上がるたびに、皆さんのフォークされたコードとのMerge Conflict(衝突)を解決しなければなりません。アップデートが地獄になる可能性があります。🌋

3. ビルド速度と軽さ ⚡

  • create-app: 必要なパッケージのみを取り込むため、ビルドが速く、プロジェクトフォルダが比較的軽いです。
  • Fork: 全体のモノレポをビルドする必要があるため、初期設定とビルド時間がはるかに長くなります。

🤔 どのような状況で何を選択すべきか?

選択基準 @backstage/create-app 推奨 Fork 推奨
一般的な企業導入 ✅ 無条件に推奨 ❌ 非推奨
プラグイン追加および設定 ✅ 非常に簡単 ⚠️ 複雑
Backstageコアへの貢献 ❌ 不可 ✅ 必須
自分だけのフレームワーク開発 ❌ 不適切 ✅ 適切

💡 なぜほとんどの人がcreate-appを使うべきなのか?

ほとんどの企業は、Backstageという「ツール」を使って開発者ポータルを構築することが目的であり、Backstageという「製品」自体を根本的に変更することが目的ではないからです。create-appで始めても、必要なすべてのカスタマイズ(UI変更、プラグイン追加、API連携など)が完璧に可能です。🛠️


🛠️ create-appで始める短いガイド

この方式が勝者であることが分かったので、どのように始めるか少し見てみましょうか?

  1. コマンド実行: ターミナルで以下を入力します。
  2. Bash
  3. npx @backstage/create-app@latest
  4. 名前設定: アプリケーション名を決めます(例: my-portal)。
  5. データベース選択: SQLite(テスト用)またはPostgreSQL(運用用)を選択します。
  6. 実行: 生成されたフォルダに移動し、`yarn dev`と入力すれば完了です!🎊

🏁 結論:「ツールを使え、ツールと戦うな!」

BackstageをForkすることは、車を運転したいのに、自動車工場のすべての設計図と組み立てラインを丸ごとコピーしてくるようなものです。単に運転(開発者ポータルの運用)が目的なら、@backstage/create-appという鍵を受け取ってエンジンをかけるのが賢明です。🏎️

皆さんのエネルギーは、コードの衝突解決ではなく、開発者体験(DevEx)を改善するプラグイン開発に注ぎ込んでください!



Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です