◉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-07-03中級

Rork Max アプリから予定をカレンダーに登録する — EventKit の権限3段階と書き込み専用アクセスの設計

iOS 17 以降の EventKit は許可不要UI・書き込み専用・フルアクセスの3段階になりました。Rork Max アプリで許可率を落とさずカレンダー・リマインダー連携を実装する手順と審査対策をまとめます。

Rork Max236EventKitカレンダー連携iOS 17権限設計4リマインダー3

✦ プレミアム記事

「すべてのカレンダーへのアクセス」という一文の重さ

習慣づけ系のアプリに「予定をカレンダーにも入れる」ボタンを試作したときのことです。実装そのものは半日で動いたのですが、TestFlight で配った知人数十人の反応が想像以上に渋いものでした。理由を聞いてまわると、ほぼ全員が同じ箇所を挙げます。フルアクセスの許可ダイアログに表示される「すべてのカレンダーの予定への アクセスを許可しますか」という一文です。仕事の予定も家庭の予定も見られるように読めるこの文言は、予定を1件書き込みたいだけの機能には明らかに過剰でした。手元の集計では、この時点の許可率は5割を切っていました。

転機は iOS 17 の EventKit 刷新を調べ直したことでした。書き込み専用アクセスに切り替え、さらに一部の導線を許可不要のシステム UI に寄せたところ、同じテスト群で「カレンダーに入れる」機能の利用完了率は8割台まで戻りました。個人開発では権限ダイアログの1枚が機能の生死を分けます。ここでは Rork Max で生成したネイティブ Swift アプリを前提に、EventKit の3段階のアクセスレベルをどう使い分けるか、動くコードと審査対策まで含めて実装します。

なお、アプリ内に自前のカレンダー画面を作る話とはレイヤーが異なります。自前カレンダー UI の構築は Rork でカレンダー・スケジュール管理アプリを作る初心者向けチュートリアル が扱っているので、本稿は「ユーザーが普段使っている標準カレンダー・リマインダーに書き込む」連携に絞ります。

iOS 17 で EventKit は3段階になりました

iOS 16 までのカレンダー権限は NSCalendarsUsageDescription 1本の全か無かでした。iOS 17 SDK でビルドするアプリからは、これが3段階に分かれています。

アクセスレベルできること必要な Info.plist キー許可ダイアログ
許可不要(EventKitUI)システム標準の編集画面経由で予定を追加。アプリはカレンダーデータに一切触れない不要表示されない
書き込み専用コードから予定を直接保存。既存予定の読み取りは不可NSCalendarsWriteOnlyAccessUsageDescription「予定の追加のみ」と明示される軽い文言
フルアクセス予定の読み取り・検索・編集・削除まで全てNSCalendarsFullAccessUsageDescription「すべてのカレンダーの予定」に触れる重い文言

最初に踏む落とし穴がひとつあります。iOS 17 SDK でビルドしたバイナリでは、旧来の NSCalendarsUsageDescription を書いていても新 API の要求時に参照されず、キー欠落として実行時クラッシュします。Rork Max に「カレンダー連携を追加して」とだけ頼むと、学習データの都合か旧キーで Info.plist を生成してくることがあり、私自身もシミュレータで This app has crashed because it attempted to access privacy-sensitive data without a usage description に一度ぶつかりました。生成後に新キーへ置き換わっているかを必ず確認してください。

リマインダー側も同様に NSRemindersFullAccessUsageDescription へ移行しています。ただし後述のとおり、リマインダーには書き込み専用の段階が存在しません。この非対称が設計判断に効いてきます。

✦

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

この記事の続きを読む

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

この記事で得られること
✦権限ダイアログで離脱されていたカレンダー連携を、許可なしで予定を登録できる導線に設計し直せる
✦iOS 17 で3段階になった EventKit のアクセスレベルを使い分け、権限文言が原因の審査リジェクトを避けられる
✦予定の重複チェックからリマインダー登録まで、動く Swift コードを自分のアプリに今日組み込める
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

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

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

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

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

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

関連記事

⬡ 開発ツール2026-04-27
Rork Max × Apple TipKit 実装ガイド — オンボーディング離脱を減らすアプリ内ガイダンス設計
Rork Maxのネイティブモジュール経由でiOS 17以降のTipKitを組み込み、オンボーディング離脱を減らすアプリ内ガイダンスを設計します。Eligibilityルールによるタイミング制御、SwiftUI連携、4言語運用のローカライゼーション、CloudKit同期まで実装します。
◇ アプリ開発2026-10-15
購読が切れても広告が戻りませんでした。「いま ad-free でなければ false」と書いていた、判定の向きを直した記録
購読が失効しても広告非表示のままになる不具合の原因は、判定の向きの逆転でした。二系統の購入確認を待って合成し、失敗した回は前回を保つ部品を、手元で動かして確かめた記録です。
◇ アプリ開発2026-10-15
adjustsFontSizeToFit で特定の1行だけ極小になるとき、疑うのは文字列ではなく枠の高さです
一覧の10行目だけ文字が4ptまで縮む。データも文字列も正常なのに起きる iOS の症状を、Yoga の丸めと縮小判定のソースで確かめ、Node で再現率を数えた記録です。