Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

通るURLだけ通す Monorepoで実現する型安全なリンク設計

Avatar for ya2s ya2s
November 22, 2025
68

通るURLだけ通す Monorepoで実現する型安全なリンク設計

Avatar for ya2s

ya2s

November 22, 2025
Tweet

Transcript

  1. © 2025 Reiwa Travel, Inc. 2 #BDLHSPVOE d-*/&Ϡϑʔגࣜձࣾ ɹɹɹɹ%FW0QTɺ10ɺ1BZ1BZϑϦϚͷϑϩϯτΤϯυ dגࣜձࣾྩ࿨τϥϕϧ

    ɹɹɹɹϑϩϯτΤϯυɺ&. /FYUKT3FBDU3FBDU/BUJWF&YQP5ZQFTDSJQU /PEFKT(SBQI2-/FPWJN 👶 ̎ࣇͷ෕ɹ🎲 ϘʔυήʔϜ 4/4 ྩ࿨τϥϕϧϑϩϯτΤϯυΤϯδχΞc&. ZBTTBO !ZBT@Y !ZBT
  2. © 2025 Reiwa Travel, Inc. Next.js TypedRoutes <Link href="..."> や

    router.push("...") など「存在しないパス」を渡した時に コンパイル時に TypeScript エラーで検出する 8
  3. © 2025 Reiwa Travel, Inc. Next.js TypedRoutesの限界 9 • Dynamic

    Routeに弱い(非リテラル化でstringに落ちがち) • Pathのみ。queryの型付けがない • Monorepo(MFE)横断では価値が薄い(アプリ内限定)
  4. © 2025 Reiwa Travel, Inc. ya2s / next-typed-url 10 Next.js

    の Pages/App Router からルート情報をスキャンし ルートパラメータやクエリ型まで含めた型安全なURLビルダーを自動生成するCLI/ライブラリ 単一のNext.js.プロジェクトでも Monorepo(micro frontend)でも使える
  5. © 2025 Reiwa Travel, Inc. <Link href={ urls.hotel.build({ route: “/tour/[tourId]",

    params: { tourId: “12345", }, searchParams: { country: "jpn", } }).href } ya2s / next-typed-url 12
  6. © 2025 Reiwa Travel, Inc. <Link href={ urls.hotel.build({ route: “/tour/[tourId]",

    params: { tourId: “12345", }, searchParams: { country: "jpn", } }).href } ya2s / next-typed-url 13 ルート情報から候補を補完
  7. © 2025 Reiwa Travel, Inc. <Link href={ urls.hotel.build({ route: “/tour/[tourId]",

    params: { tourId: “12345", }, searchParams: { country: "jpn", } }).href } ya2s / next-typed-url 14 動的なパラメータも補完・型安全
  8. © 2025 Reiwa Travel, Inc. <Link href={ urls.hotel.build({ route: “/tour/[tourId]",

    params: { tourId: “12345", }, searchParams: { country: "jpn", } }).href } ya2s / next-typed-url 15 クエリパラメータも補完・型安全
  9. © 2025 Reiwa Travel, Inc. ya2s / next-typed-url 16 Q.

    クエリパラメータはどこから取得しているの? A. page.tsxにtype Queryを定義する(コロケーション)
  10. © 2025 Reiwa Travel, Inc. <Link href={ urls.hotel.build({ route: “/tour/[tourId]",

    params: { tourId: “12345", }, searchParams: { country: "jpn", } }).href } Monorepoの場合は、アプリごとの名前空間を補完 ya2s / next-typed-url 17
  11. CONFIDENTIAL © 2025 Reiwa Travel, Inc. 18 ·ͱΊ 型安全なURLの生成のためのライブラリ(next-typed-url)を作成 存在しないURLをリンク先に指定することがなくなる

    - Dynamic Routeやクエリパラメータにも対応 - MonoreopもアプリごとにURLを生成 OSSへのContributeお待ちしています!