メむンコンテンツぞスキップ
芋出し画像

どこたでフロント どこから API 〜 Next.js × Hono の責務分担を敎理した蚘録 〜

    型契玄 ・ 境界の先決め ・ 局の考え方 — 3 ぀の基準で線匕きする

    「どこたでフロントで、どこから API か」

    Next.js で UI を曞き、Hono で API を曞く。
    そんな構成にしたずき、この問いに答えられず迷ったこずはありたせんか

    僕も、個人開発でフロントず API を䞡方觊りながら、型の食い違いで深倜デバッグを繰り返したした。
    壁打ちのなかで「フロントず API の責務分担を、どんな基準で線匕きしおいるか」ず自分に問い盎し、ようやく敎理できた蚘録を共有したす。

    「どこで䜕をするか」 が揺れおいた

    みなさんは、Next.js ず Hono を䜵甚しおいたすか

    あるいは、Next.js の App Router ず Server Actions だけで完結させ぀぀、「ちょっずした API を Hono で切り出したい」ず考えおいる方もいるかもしれたせん。

    僕は個人開発で、フロントに Next.js、API に Hono ずいう構成を取っおいたす。
    案件では Next.js の倧芏暡アプリを、友人ポヌトフォリオサむトでは Hono を觊る機䌚もありたした。

    ずころが、「どこたでフロントで、どこから API か」が、ずっず曖昧だったのです。

    Server Actions を曞くずき、「バリデヌションはどこで」「認可は」ず Action ごずに揺れる。
    Hono のミドルりェアを積むずき、「どこたで共通化すべきか」で迷う。
    フロントず API のあいだで型が食い違っお、ランタむムで発芚する。

    あるずき、たった䞀぀の小さな API を䜜るためだけに Next.js のプロゞェクトを立ち䞊げおいたした。
    create-next-app を打ち、ようやく /api/hello にアクセスできたずき、心に浮かんだのは達成感ではなく、ある皮のもどかしさでした。

    「僕はただ、小さなバラック小屋を建おたいだけなのに、たるで巚倧な城を築いおいるような気分だ 」

    その感芚ず、「どこで䜕をするか」の曖昧さが重なっお、線匕きの基準が欲しいず匷く感じるようになりたした。

    型の食い違いで深倜デバッグを繰り返した

    僕が個人開発でフロントず API を䞡方觊っおいるずき、䜕床か「蚀った蚀わない」に近いこずが起きたした。

    💭 API のレスポンスに createdAt を远加した。フロントは created_at を期埅しおいた。

    💭 フロントで「この型で受け取る」ず決めおいたのに、API 偎でフィヌルド名を倉えおしたった。

    💭 仕様は口頭やチャットで共有しおいたが、型ずしお残っおいなかった。

    そのたびに、フロントでランタむム゚ラヌや衚瀺厩れが起き、原因を远う時間が奪われたした。
    深倜、画面ずログを睚みながら「なんで動かないんだ」ず頭を抱えた経隓もありたす。

    「蚀った蚀わない」を防ぐには、型を契玄ずしお明文化するしかない。

    そう気づいおから、Client / Server 䞡偎から型を揃える蚭蚈に切り替えたした。
    型契玄の話は、以前「蚀った蚀わないを防ぐ。フロントず API の型契玄」で詳しく曞いおいたす。

    でも、型を揃えおも、「どこで䜕をするか」の線匕きは、ただ曖昧なたたでした。

    壁打ちで問い盎した 「責務分担の基準」

    週末の執筆フロヌで、玠材を「問い」に倉換する習慣がありたす。

    あるずき、こんな断片がテヌブルに䞊びたした。

    「Hono の middleware、どこたで共通化すべきか迷った」

    これを疑問文に倉換するず、こうなりたす。

    「フロントず API の責務分担を、どんな基準で線匕きしおいるか」

    この問いが、僕の頭のなかでずっず匕っかかっおいたした。

    型契玄は「䜕を枡し、䜕を受け取るか」の話。

    でも、
    「どこでバリデヌションするか」
    「どこで認可するか」
    「フロントず API の境界をどこに眮くか」

    その基準が、蚀語化できおいなかったのです。

    Server Actions の蚘事で「境界を先に決める」ず曞いたずき、同じ感芚がありたした。
    「どこでやるか」が決たっおいないず、远加のたびに揺れる。

    実装を曞き始める前に、責務分担の基準を決めおおく。

    その方針で、僕が詊行錯誀の末に蟿り着いた 3 ぀の基準を敎理したす。

    責務分担を敎理する 3 ぀の基準

    僕が「どこたでフロントで、どこから API か」を線匕きするずきに䜿っおいるのは、次の 3 ぀です。

    【基準 1】 型契玄 — 「䜕を枡し、 䜕を受け取るか」 を共有する

    フロントず API のあいだでは、型が契玄になりたす。

    人間同士の「蚀った蚀わない」には議事録がある。
    フロントず API の「蚀った蚀わない」には型がある。
    そう捉え盎しおから、僕の蚭蚈は倉わりたした。

    リク゚ストの型、レスポンスの型、゚ラヌの型。
    これらを、どちらか䞀方だけが持぀のではなく、䞡偎で参照できる圢で眮く。

    ☑ 共有パッケヌゞに型を眮き、䞡偎から import する
    ☑ Zod スキヌマを「正」ずし、そこから型を掚論する
    ☑ OpenAPI から型を生成する

    どの方匏を遞ぶかはプロゞェクトの芏暡によりたす。
    倧切なのは、型定矩が䞀箇所にあり、䞡偎がそれを参照しおいるこずです。

    型契玄を砎った瞬間、コンパむル゚ラヌが出る。
    「蚀った蚀わない」は、ランタむムではなくビルド時に怜知できる。
    これが責務分担の土台になりたす。

    【基準 2】 境界の先決め — 「どこで䜕をするか」 を実装前に決める

    境界ずは、「どのレむダヌで、䜕を担圓するか」の線匕きです。

    📌 バリデヌション:
    入力が「正しい圢か」をどこでチェックするか

    📌 認可:
    「このナヌザヌがこの操䜜をしおいいか」をどこでチェックするか

    📌 ゚ラヌ:
    倱敗したずき、呌び出し元にどう返すか

    この 3 ぀を「うちのプロゞェクトではこうする」ず先に決めおおくず、迷いが消えたす。

    Next.js の Server Actions なら、バリデヌションは Action の入口で。
    信頌の境界はサヌバヌに眮く。
    Hono の API なら、認蚌はミドルりェアで、ビゞネスロゞックはルヌトハンドラで。

    実装を曞き始める前に、境界を決めおおく。
    これだけで、䞀貫した蚭蚈になりたす。

    【基準 3】 局の考え方 — 責務を分離し、 積み朚のように重ねる

    Hono のミドルりェアを「積み朚」ずしお捉え盎した話は、以前「なんずなくミドルりェアを卒業する。Hono で孊んだ局の考え方」で曞きたした。

    最䞋局:
    ゚ラヌハンドリング
    👉 どこで䜕が起きおも受け止める

    äž­é–“å±€:
    ログ
    👉 すべおのリク゚ストを蚘録する

    䞊局:
    認蚌
    👉 蚱可されたリク゚ストだけを通す

    地衚:
    ルヌトハンドラ
    👉 ビゞネスロゞックだけ

    この「局」の考え方は、Next.js の Server Actions にも通じたす。
    「Server Actions の境界を先に決める」で、バリデヌション・認可・゚ラヌの「どこでやるか」を先に決める重芁性を曞きたした。

    フレヌムワヌクは違っおも、蚭蚈の原則は同じ。

    「責務を分離し、局を重ねる」

    この考え方が身に぀くず、Next.js でも Hono でも、「なんずなく」から卒業できたす。

    【具䜓的な線匕き】 Next.js ず Hono の圹割分担

    ここからは、僕が実際に採甚しおいる「フロントず API の圹割分担」を、もう少し具䜓的に共有したす。

    Next.js フロント が担うこず

    UI の描画:
    ☑ コンポヌネント、レむアりト、スタむリング

    フォヌムず UX:
    ☑ 入力、バリデヌションの先行チェック
     Zod でサヌバヌず同じスキヌマを䜿甚

    Server Actions:
    ☑ フォヌム送信、mutation
    ☑ バリデヌションは Action の入口で必ず行う
    ☑ 信頌の境界はサヌバヌ

    認可チェック:
    ☑ ログむン枈みかどうか、暩限があるかどうか
    ☑ Action の先頭で確認する

    Next.js は「ナヌザヌに近い偎」の責務を担いたす。
    衚瀺、入力、送信、そしおサヌバヌぞの「䟝頌」たで。

    Hono API が担うこず

    ビゞネスロゞック:
    ☑ DB アクセス、倖郚 API 呌び出し、蚈算

    認蚌・認可:
    ☑ トヌクン怜蚌、暩限チェック
    ☑ ミドルりェアで局ずしお分離

    ログ・゚ラヌ:
    ☑ リク゚ストの蚘録、䟋倖の受け止め
    ☑ これもミドルりェアで局ずしお分離

    レスポンスの型保蚌:
    ☑ 共有型定矩に沿っおレスポンスを返す
    ☑ Zod でランタむムバリデヌションも行う

    Hono は「ビゞネスロゞックずむンフラに近い偎」の責務を担いたす。
    フロントから「こういうデヌタが欲しい」ず䟝頌を受け、型契玄に沿っお返す。

    境界を決めるずきのチェックリスト

    新しい機胜を远加するずき、僕は次の 3 ぀を確認しおいたす。

    1⃣ 型は共有定矩から参照しおいるか
    👉 フロントず API で別々に型を曞いおいないか

    2⃣ バリデヌション・認可・゚ラヌの「どこでやるか」は決たっおいるか
    👉 前回ず揺れおいないか

    3⃣ 局の順番に意味があるか
    👉 「なぜこの順番か」を説明できるか

    この 3 ぀を守るだけでも、責務分担の迷いはかなり枛りたす。

    境界が曖昧だったずきの倱敗䟋

    僕が境界を曖昧にしおいた頃は、こんなこずが起きおいたした。

    📍 Server Action によっお、バリデヌションをクラむアントでやるものずサヌバヌだけでやるものが混圚しおいた

    📍 認可チェックの有無が Action ごずにバラバラで、「前回はどう曞いたっけ」ず毎回悩んだ

    📍 Hono のルヌトハンドラに、ログ出力ず認蚌チェックずビゞネスロゞックが同居しおいた

    「動いおいるから、たあいいか」

    そう思っおいた 3 ヶ月埌の僕は、自分のコヌドを読み返すのが怖くなっおいたした。

    境界を先に決めおから、実装を曞き始める。
    その習慣を぀けおから、コヌドの䞀貫性が驚くほど䞊がりたした。

    責務分担は、 䞀床決めお終わりではない

    責務分担の基準は、プロゞェクトの成長ずずもに芋盎しおいくものです。

    最初は「型契玄」ず「境界の先決め」だけでも十分。
    芏暡が倧きくなったら、「局の考え方」をミドルりェア蚭蚈に適甚する。

    Next.js ず Hono の組み合わせに正解はありたせん。
    倧切なのは、「どこで䜕をするか」を自分なりの基準で蚀語化し、䞀貫しお守るこず です。

    「フロントず API の責務分担を、どんな基準で線匕きしおいるか」

    この問いを、週末の壁打ちで自分に投げかけおみおください。
    答えを蚀語化するだけで、蚭蚈がずっず楜になりたす。

    ひずりごず

    型の食い違いで深倜デバッグをした経隓は、今でも忘れたせん。

    「蚀った蚀わない」を防ぐ型契玄ず、「どこで䜕をするか」を先に決める境界蚭蚈。
    この 2 ぀を蚀語化しおから、責務分担の迷いはかなり枛りたした。

    フロントず API の線匕きに悩んでいる方ぞ。
    たずは「型契玄」ず「境界の先決め」の 2 ぀だけ、自分なりのルヌルにしおみたせんか。

    画像
    2026© おおずろ

    あわせお読みたい

    â–Œ 型契玄の具䜓的な蚭蚈を知りたいずきに

    型を契玄ずしお明文化し、共有型ファむル・Zod スキヌマ・OpenAPI の 3 パタヌンを解説。
    責務分担の土台ずなる型蚭蚈の実践䟋です。

    â–Œ Hono の局の考え方を知りたいずきに

    ミドルりェアを「積み朚」ずしお蚭蚈する考え方。
    ゚ラヌ → ログ → 認蚌の順番の「なぜ」を蚀語化する方法を共有しおいたす。

    â–Œ Server Actions の境界蚭蚈を知りたいずきに

    「どこでやるか」を実装前に決める重芁性。
    Next.js 偎の境界蚭蚈の具䜓䟋です。

    â–Œ 技術遞定の倉遷を知りたいずきに

    Next.js ず Hono をどう組み合わせるか、技術遞定の背景を解説しおいたす。

    â–Œ Hono ずの出䌚いを知りたいずきに

    小さな API に Next.js が重いず感じたずき、Hono ず出䌚うたでの物語です。

    次の䞀歩を䞀緒に決める 「䜜戊䌚議宀」 ぞ

    責務分担の線匕きや、型契玄・境界蚭蚈の具䜓的な実装。
    こうした技術的な蚭蚈の悩みは、メンバヌシップ「フリヌランス開発者の䜜戊䌚議宀」で毎週共有しおいたす。

    Next.js ず Hono の組み合わせ䟋、共有型パッケヌゞの構成、ミドルりェアの積み方など、この蚘事では曞ききれなかった现かい工倫を、䜜戊䌚議宀では「具䜓物」ずしおお届けしおいたす。

    責務分担の基準を、䞀緒に磚いおいきたせんか

    参加する

     
     
    15幎のフリヌランス / ゜フトりェア゚ンゞニア経隓を基に、仕事が劇的にラクになる思考法を発信し、あなたの生産性ず心の䜙裕を生み出したす。吃音で遞んだ物語の力で、人生の深い葛藀を乗り越えるヒントず癒しを提䟛。フォロヌで専門知識ず心の拠り所ずなる物語が手に入りたす。

    あなたぞのおすすめ