【開発記録】Cursorを制御してApple SSOの「暗号化の壁」を突破した話

アプリのリリース直前、急遽実装が決まった「Apple IDでサインイン(SSO)」。 一見シンプルに見えるこの機能ですが、実は裏側で「nonce(ナンス)」の生成と、それをSHA-256でハッシュ化するという、セキュリティ上の厳格なプロセスが求められます。

この「暗号化の壁」を、AIエディタ「Cursor」をどうコントロールして突破したのか。その実戦記録です。

1. 立ちふさがる「SHA-256」の仕様

Apple SSOの実装では、セキュリティを担保するために以下の手順が必須となります。

  • ランダムな文字列(nonce)を作成する。
  • その文字列を、そのままではなく「SHA-256」という方式でハッシュ化(暗号化)して送る。

自力でライブラリを探して型定義を合わせるだけでも一苦労する部分ですが、今回はここをCursorの「Composer」に任せつつ、私が「指揮者」として手綱を握るスタイルで進めました。

2. AIへの「情報の与え方」で精度が変わる

単に「SSOを作って」と指示を出すだけでは、AIは一般的なコードしか書けません。そこで今回は、以下の情報をCursorに集中的に読み込ませました。

  • ライブラリの指定: expo-apple-authenticationexpo-crypto を使うことを明示。
  • コンテキストの絞り込み: 認証ロジックに関係するファイルだけをComposerに参照させ、ノイズをカット。

これにより、AIが「今、どのライブラリを使って、どのハッシュ化関数を呼ぶべきか」を正確に理解できる状態を作りました。

3. 「制御」がバグを防ぐ

実装中、AIが少し複雑なコードを提案してきた場面がありました。そこで私は「もっと簡潔に、Cryptoライブラリの digestStringAsync を使って」と具体的に制御をかけました。

AIに丸投げするのではなく、要所で「この関数を使って」「この型で定義して」と指示を出すことで、暗号化周りのデリケートなバグを未然に防ぐことができました。

4. わずか数十分での実装完了

結果として、本来なら数時間はかかるはずの「暗号化ロジックの構築からUIへの反映」までを、わずか数十分で完遂。シミュレータでApple IDの認証画面がスッと立ち上がり、バックエンド(Supabase)との連携が確認できた瞬間は、まさに「AIとの共作」が成功した手応えを感じました。

まとめ:AIを「最強の右腕」にするために

今回の開発を通じて感じたのは、AIは単なる自動生成ツールではなく、「適切な指示と制御によって、難解な技術仕様を突破させてくれるパートナー」だということです。

特にセキュリティが絡む暗号化の実装において、仕様を理解した人間が「手綱」を握り、AIが「実務」をこなすこのスタイルは、今後の開発において不可欠なスキルになると確信しました。

著者プロフィール

日笠泰彰
ITエンジニアとして活動し、RailsやNext.jsを中心としたモダンなWeb開発を得意とする。