◉RORK LABEN
●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SDK 58 — Beta が 09/15 から。stable の案内はまだなく、Expo Go でのプロジェクト実行は 09/03 からログインが必要です●WIDGET — iOS のウィジェットが本番ビルドだけ真っ黒になる原因を追った報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SDK 58 — Beta が 09/15 から。stable の案内はまだなく、Expo Go でのプロジェクト実行は 09/03 からログインが必要です●WIDGET — iOS のウィジェットが本番ビルドだけ真っ黒になる原因を追った報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…
記事一覧/開発ツール
⬡ 開発ツール/2026-04-23上級

Rork × Notion API で CMS 駆動アプリを作る実装ガイド — 認証・ブロック描画・レート制限・画像URLの運用まで

Rork で作るアプリの裏側を Notion にする。認証方式の選び方、ブロック構造の安全な描画、1時間で切れる画像URL問題、API レート制限への向き合い方まで、本番運用に耐える設計をひとつずつ組み立てます。

Notion APIRork585CMSコンテンツ管理OAuthReact Native239キャッシュ3レート制限3

✦ プレミアム記事

Rork で作ったアプリに「記事」「レシピ」「学習コンテンツ」のような読み物を載せたくなったとき、最初に悩むのがバックエンドの置き場所ではないでしょうか。Firestore にゼロから作るのは重い、Supabase を立てるとサーバー管理が増える、Sanity や Contentful は使いこなすほどの分量が出ないかもしれない — そんな「ちょうどいい規模のアプリ」に、私はここ数年ずっと Notion を裏側に据えてきました。

Notion の良さは明快です。編集画面が誰にでも使えるうえに、タイトル・本文・タグ・公開フラグといった「記事らしいフィールド」がそのまま自然に組み立てられます。執筆は Notion アプリ、表示は Rork で生成したモバイルアプリ — この分業は、個人開発者が「書く・直す・出す」サイクルを自分ひとりで回すうえで驚くほどストレスが少ないのです。

ただし、Notion API には本番で使うときに気をつけたいクセが3つあります。画像 URL が1時間で失効する、リクエストレートに上限がある、ページの中身が「ブロックの配列」という独特の形で返ってくる、この3点です。これらを先回りして設計に組み込んでおかないと、リリース初日はうまく動いていたアプリが、数日後に読者から「画像が表示されません」と報告されて慌てる羽目になります。

ここからは、Rork で生成した React Native アプリから Notion を CMS として活用する実装を、個人開発 5 本分の経験から得た運用知識ごと書き留めます。中途半端なサンプルではなく、本番で回り続ける形を目指しましょう。

Notion をアプリの裏側に置く前に決めておきたい3つのこと

Notion を CMS に据える前に、自分のアプリの性質を次の3つの軸で整理しておくと、あとから設計が迷子になりません。

① 読み取り専用か、書き込みもあるか。 ブログ・ニュース・レシピなど「自分が書いて読者が読む」一方通行なら読み取りだけで十分です。一方、ユーザー投稿をためたい場合は Notion を選ぶべきではありません。Notion API は書き込みも可能ですが、ワークスペースに見知らぬユーザーの投稿が流れ込むのは運用上おすすめしません。そういう用途なら Supabase や Firestore のほうが素直です。

② 読者の言語が複数か。 多言語対応する場合、Notion のデータベースに locale プロパティを持たせて記事ごとに分ける方法と、プロパティとして title_ja / title_en を並べる方法があります。私は前者(1記事 = 1言語)を推しています。翻訳の進捗管理がやりやすく、「英語版だけまだ公開しない」といった操作が素直にできるからです。

③ 画像が多いか少ないか。 画像が多いアプリ(レシピ・旅行ガイド・作品ポートフォリオ)は、後述する「画像 URL 1時間問題」への備えを必ず入れてください。画像がほとんどなく文字中心のアプリなら、実装はずっと軽く済みます。

この3つが決まれば、あとは迷わずに手を動かせます。

認証は Internal Integration Token から始めて、必要になったら OAuth へ

Notion API への認証方法は大きく2つです。

  • Internal Integration Token(内部インテグレーション): 自分のワークスペースだけを読み書きする用途。トークンを発行して Authorization: Bearer で送るだけの最短ルートです。
  • Public OAuth: 他のユーザーのワークスペースにアプリとして接続する用途。多ワークスペース対応が必要な SaaS 型アプリで使います。

個人開発者が「自分が書いた記事を自分のアプリに配信する」だけなら、Internal Integration Token で始めるのが正解です。最初から OAuth を組むと、コールバック URL の処理、トークンの暗号化保存、リフレッシュの扱いまで考えることが増えて、記事1本を表示するのに1週間溶けます。

ただしここで重要なのが、トークンをクライアント(アプリ側)に絶対に埋め込まないことです。Rork が生成するコードに NOTION_TOKEN=secret_xxx を .env で書いてしまうと、ビルドに含まれて流出リスクが発生します。トークンは必ずサーバー(Cloudflare Workers や自前の軽量 BFF)に置き、アプリからはそのサーバー経由で Notion を叩くのが鉄則です。

バックエンドの軽量構成としては、既存記事の Rork × Hono で作る Cloudflare Workers REST API 実装ガイド で紹介している Hono ベースの構成が相性抜群です。エンドポイントは3つだけで足ります — 一覧取得、記事1件取得、画像プロキシ。

✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦Notion API で詰まっていた「画像 URL が1時間で切れる」問題に、署名付き URL の再発行と CDN キャッシュを組み合わせた運用パターンで決着をつけられる
✦Internal Integration Token と Public OAuth の境界線を見極め、個人アプリから多ワークスペース対応アプリまで一本の設計思想で拡張できる
✦ブロック構造を UI に落とし込むレンダラを型安全に実装し、Notion 側の小さな更新がアプリ全体を壊さない堅牢な記事配信基盤を手に入れられる
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Rork Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

⬡ 開発ツール2026-09-04
EAS の secret は「アプリに入れない」設定ではありません — 接頭辞と可視性を別々に決める
EXPO_PUBLIC_ の接頭辞は成果物に入るかを決め、EAS の可視性は誰が読めるかを決めます。二つを重ねたときに OTA 更新でだけ値が消える筋道と、出荷前に自分の手で確かめる手順をまとめました。
⬡ 開発ツール2026-08-22
一括置換は全ファイル成功しました。壊れたのは、消さなかった行のほうです
生成コードに一括置換をかけると、一致した行ではなく隣の行が壊れます。運用中のプロジェクトで実際に起きた破損と、置換の不変条件を検査する20行のガードスクリプトをまとめました。
⬡ 開発ツール2026-08-14
Expo SDK 57 に上げる前に、prebuild で消えるネイティブ変更を洗い出す
Expo SDK 57 では expo prebuild が既定で ios と android を消してから再生成します。手編集を上げる前に洗い出す方法、config plugin への移し替え、57.0.9 で解消したメモリ回帰までを実務の順序でまとめました。