完全紹介制サービス案内ページの Next ルート化(public/index.html/service

done

セッション開始:2026/06/09 15:17

planning developing done

目的 / なぜ必要か

スマピタが「完全紹介制のサービス」であることを伝える案内ページを、 静的ファイル apps/www/public/index.html として置いていたものを、 Next.js のルート apps/www/app/service/page.tsx へ移設する。 公開サイトapps/www)の他ページと同じ App Router 上で管理し、 メタデータ・画像配信・アイコンの扱いをアプリの作法(generateMetadata() / 環境変数経由の CloudFront)に揃える。

確定した仕様(インタビューで合意)

  • 独立した案内ページ/service はコーポレートLP(/=section1〜9)とは 別物の単独ページ。`/` は従来どおり残し、/service へのリダイレクトや相互導線は設けない。
  • public/index.html はレガシーapp/page.tsx/ を占有するため、 旧静的ファイルは / では配信され得ず(せいぜい /index.html)、実質的に半ば死んだページだった。削除する。
  • 検索インデックスは許可(現状維持)robots 指定は付けない。 コーポレートLP(/index:false)とは方針が異なるが、旧静的ページの踏襲として意図的にこの判断とした。

実装内容(影響範囲)

新規

apps/www/app/service/page.tsx

旧 index.html の <body> を JSX 化。generateMetadata() で title「スマピタ|完全紹介制サービス」/description/OG/icons を付与。アイコンは ${getAwsCloudfrontEndpoint()}/icon.png(環境変数経由)。force-dynamic。 ロゴは next/image<Image> で CloudFront から表示。

新規

apps/www/app/service/styles.css

旧 index.html の <style> をそのまま分離(プレーンCSS)。page.tsx から import "./styles.css"

削除

apps/www/public/index.html / apps/www/public/icon.png

レガシーの静的ページとアイコンを削除。public/icon.png は app/lib のコードから参照されておらず (旧 index.html も CloudFront URL を参照)、削除は安全と確認。

レビューでの指摘・確認

🟡 仕様確認(robots): /servicerobots 指定が無く検索インデックスされ得る。 公開サイトの /index:false のため不整合に見えるが、 「インデックス許可のまま現状維持」で合意(旧静的ページの踏襲)。

✅ 確認(画像): next.config.jsimages.remotePatterns*.cloudfront.net を許可済みのため、<Image> の CloudFront 画像は解決できる。

🔵 前提(環境変数): AWS_CLOUDFRONT_ENDPOINT の配信ルートに icon.png が存在することが前提 (旧ハードコード https://dn02r2vz60l0t.cloudfront.net/icon.png と同一を想定)。

🔵 軽微: styles.css はプレーンCSSで body / * / h1 / a 等のグローバルセレクタを含む。 単独フルページのため実害は低いが、将来クライアント遷移で他ルートと併存する場合はスコープ汚染に留意。

検証

apps/wwwtsc --noEmit を実行し、型エラー無し(EXIT=0)を確認。 /serviceicon.png の参照箇所を grep で洗い出し、外部からの参照が無い(=導線・依存が無い独立ページ)ことを確認した。