モノレポひとつでサイト6つ — 共通パッケージの地図

公開 · 更新

  • 制作日誌
  • モノレポ
  • Astro
  • 共通パッケージ
@site30cut/adsexport 35個
ナビ・アイコン3/7
広告3/4
検索・共有3/4
PWA・演出2/2
フォーム・計算7/9
共通画面5/9
ナビ・アイコン3/7
広告3/4
検索・共有2/4
PWA・演出2/2
フォーム・計算4/9
共通画面5/9
ナビ・アイコン4/7
広告3/4
検索・共有3/4
PWA・演出2/2
フォーム・計算3/9
共通画面5/9
ナビ・アイコン4/7
広告2/4
検索・共有3/4
PWA・演出2/2
共通画面6/9
ナビ・アイコン3/7
広告2/4
検索・共有3/4
PWA・演出2/2
共通画面5/9
ナビ・アイコン4/7
広告2/4
検索・共有3/4
PWA・演出2/2
共通画面5/9
共通パッケージ1つを6サイトで共有する構成 サイトをタップすると、そのサイトが使うまとまり(使用数/全体)が開きます。 2026-10-28 ビルド時点
一覧で見る
  1. @site30cut/ads — export 35個
    1. Calcmoa (ツール型, 23個使用)
      1. ナビ・アイコン 3/7
      2. 広告 3/4
      3. 検索・共有 3/4
      4. PWA・演出 2/2
      5. フォーム・計算 7/9
      6. 共通画面 5/9
    2. 文字数カウント (ツール型, 19個使用)
      1. ナビ・アイコン 3/7
      2. 広告 3/4
      3. 検索・共有 2/4
      4. PWA・演出 2/2
      5. フォーム・計算 4/9
      6. 共通画面 5/9
    3. 韓国の祝日 (ツール型, 20個使用)
      1. ナビ・アイコン 4/7
      2. 広告 3/4
      3. 検索・共有 3/4
      4. PWA・演出 2/2
      5. フォーム・計算 3/9
      6. 共通画面 5/9
    4. site30cut (紹介型, 17個使用)
      1. ナビ・アイコン 4/7
      2. 広告 2/4
      3. 検索・共有 3/4
      4. PWA・演出 2/2
      5. 共通画面 6/9
    5. カフェのお客様 (紹介型, 15個使用)
      1. ナビ・アイコン 3/7
      2. 広告 2/4
      3. 検索・共有 3/4
      4. PWA・演出 2/2
      5. 共通画面 5/9
    6. 出張洗車のお客様 (紹介型, 16個使用)
      1. ナビ・アイコン 4/7
      2. 広告 2/4
      3. 検索・共有 3/4
      4. PWA・演出 2/2
      5. 共通画面 5/9

1本目の日誌では、サイト6つを一晩でまとめて手直しした話を書きました。それができたのは、サイトたちが同じリポジトリ(モノレポ)の中で共通パッケージをひとつ分け合っているからです。今回はその構造を地図にしてみた記録です。上の図でサイトのノードをタップすると、そのサイトが使う束が開きます。「リストで見る」を開けば、同じ内容を文字でも読めます。

何でできているか

リポジトリには共通パッケージ @site30cut/ads が1つと、サイトが6つあります。自分で運営しているのは計算モア、文字数、休日モア、site30cut(このサイト)の4つで、残り2つはカフェのお客様サイトと出張光沢のお客様サイトです。6サイトが workspace で依存しているパッケージはこの1つだけで、ほかのサイトのコードを持ってくることもありません。

パッケージは export を33個公開していて、性格ごとに6つの束に分けました。

  • メニュー7個: 上部メニュー、ドロワーメニュー、アイコン
  • 広告4個: 広告枠、アドセンスのメタ情報、クーパンリンク
  • 検索・共有4個: OG画像、RSS、アクセス解析、共有ボタン
  • PWA・演出2個: インストール用マニフェストの接続、季節の演出
  • フォーム・計算9個: 入力チェック、計算の状態、比較、グラフ
  • 共通画面7個: お問い合わせ、プライバシー、404、言語切り替え、設定
共通パッケージ: export 33個、6つの束@site30cut/ads メニュー (7個) 広告 (4個) 検索・共有 (4個) PWA・演出 (2個) フォーム・計算 (9個) 共通画面 (7個)@site30cut/adsメニュー7個広告4個検索・共有4個PWA・演出2個フォーム・計算9個共通画面7個
共通パッケージ: export 33個、6つの束 — 6サイトすべてが同じパッケージ1つを使います

なぜひとつにまとめたか

理由は単純です。メニューや広告枠、PWAの設定をサイトごとに作ると、直すたびに同じ作業を6回やることになり、1〜2サイトは必ず抜けます。共通パッケージなら1回直せば6サイトが一緒に変わるので、一晩で6サイトを手直しできました。その代わり、1か所のミスが6サイトに広がる危険もあります。だから共通パッケージを変えるときは、6サイトすべてをビルドして確かめるのを基本にしています。

結果 — 2026-10-19 のビルド基準

scripts/arch-tree.mjs がパッケージの export と各サイトの import を読んで作った値です。図と下の数字は同じデータから出ています。

  • 共通パッケージの export: 33個
  • 6サイトすべてが使う export: 12個
  • サイトは直接使わず、パッケージ内部でだけ使う export: 7個
  • サイトごとの使用数: 計算モア22個、文字数18個、休日モア19個、site30cut 16個、カフェのお客様サイト15個、出張光沢のお客様サイト16個
  • フォーム・計算キットを使うサイト: 計算モア・文字数・休日モアの、ツール型3つだけ

共通パッケージ(packages/site-ads)のコミット数は、2026-10-19 に git log --oneline -- packages/site-ads で数えたところ29個でした。

サイトごとの export 使用数計算モア: 22個; 文字数: 18個; 休日モア: 19個; site30cut: 16個; カフェ: 15個; 出張光沢: 16個05101520計算モア22個文字数18個休日モア19個site30cut16個カフェ15個出張光沢16個
サイトごとの export 使用数

次にやること

限界がひとつあります。この図は site30cut をビルドするときに作られるため、ほかのサイトの import だけが変わっても site30cut は再デプロイされません。図は次の site30cut のデプロイで更新されるので、「ビルド基準日」を一緒に載せています。ほかのサイトのコミットごとに再デプロイを走らせると、手間のほうが大きいと判断しました。

もうひとつは共通パッケージのバージョン管理です。今はすべてのサイトが常に最新を見ていますが、サイトが増えれば1つだけ古い版に留めたい場面が出るかもしれません。その方法は、実際に必要になったときに改めて書きます。サイトの作り方は制作の流れでも紹介しています。

サイトを作ってみませんか?

無料で相談する