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、言語切り替え、設定
なぜひとつにまとめたか
理由は単純です。メニューや広告枠、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個でした。
次にやること
限界がひとつあります。この図は site30cut をビルドするときに作られるため、ほかのサイトの import だけが変わっても site30cut は再デプロイされません。図は次の site30cut のデプロイで更新されるので、「ビルド基準日」を一緒に載せています。ほかのサイトのコミットごとに再デプロイを走らせると、手間のほうが大きいと判断しました。
もうひとつは共通パッケージのバージョン管理です。今はすべてのサイトが常に最新を見ていますが、サイトが増えれば1つだけ古い版に留めたい場面が出るかもしれません。その方法は、実際に必要になったときに改めて書きます。サイトの作り方は制作の流れでも紹介しています。