はじめに
株式会社GENDAでインターンをしている中村です。現在東京大学教養学部の2年です。
この記事では、私が参加しているインターンでの開発経験と、その中でも特に印象に残っているパスキーログイン機能の実装、そしてそこで活用したAIツールについてまとめます。
株式会社GENDAとは
GENDAは「世界中の人々の人生をより楽しく」というAspirationを掲げ、グローバルなエンターテイメントのネットワークを構築し、世の中に流通する「楽しさの総量」を増やすことを目指している会社です。アミューズメントやカラオケなど様々なエンターテイメント事業を展開しています。
インターン参加の理由
私は小さい頃からロボットが好きで、中学・高校ではロボット競技会に参加していました。大学に入ってからも、サークルで人型に近いロボットの開発に取り組んでいます。
ただ、これまでの開発はほぼ一人でコードを書くスタイルが中心で、コードが複数ファイルにまたがるような大規模なプロジェクト経験が少ないことや、チームで開発する際の役割分担やコミュニケーションの取り方が分からないといった課題に直面しました。特に、今後チームで大型ロボットの開発を進めていく上で、自分の開発力や協働スキルの不足を強く感じるようになりました。
そこで、一般的なエンジニアとしてのスキルを磨き、チーム開発の経験を積みたい という思いから、このインターンに参加しました。
なぜGENDAでWebエンジニアなのか
このインターンを選んだ理由は大きく2つあります。
1つ目は、私自身がゲーム好きで、特に音楽ゲームをよくプレイするため、ゲームセンターに足を運ぶ機会が多く、エンターテイメント事業に強い関心があった ことです。
2つ目は、Web開発におけるフロントエンド・バックエンドの構造や、コードによって画面上の要素や挙動を制御する点が、ロボット開発におけるハードウェア・ソフトウェアの関係や、コードで機体を動かす感覚と近いと感じたからです。
参加プロジェクトについて
私が参加しているのは GENDA ID というプロジェクトです。これは、GiGOやカラオケBanBanなど、GENDAのグループ企業のサービスに対して、共通のIDでログインできる仕組み を提供するものです。
技術的には、複数サービス間でID情報を連携するための規格である OpenID Connect のプロバイダーを実装しています。
私はこのプロジェクトで、フロントエンド・バックエンド両方の開発メンバー として、ページデザインの適用や既存機能の改修、新機能の実装などを担当しました。
開発では、プロジェクトメンバー、メンター、チームマネージャーの方々と密にコミュニケーションを取りながら、最初は比較的簡単なタスクから、徐々に難易度の高いタスクへと挑戦していきました。
パスキーログイン実装タスクについて
私はこのインターンを今年の2月から継続しており、長期休みや授業の合間を使って、デザインの部分的な修正や既存機能と似た構成の新機能追加といったタスクを進めてきました。
そして8月から、パスキーログイン機能の実装 というタスクを担当することになりました。
タスクの概要
従来のGENDA IDでは、メールアドレス及びパスワードによる認証が必要でした。
今回のタスクでは、これを パスキーのみでログインできるようにする ことが目的です。
難しかった点
このタスクが難しかった理由は主に以下の点です。
- プロジェクト内に参考にできる同様の実装が存在しなかった
- 実装工程が多く、全体像を把握するのが難しかった
- そもそも「どうやって実装すればいいのか」が分からない状態からのスタートだった
これまでのタスクは、既存実装を少し変更すれば対応できるものが多かったのですが、今回はパスキーの仕組みを理解し、Web上の実装例や仕様を調べる調査フェーズから始める必要がありました。
AIツール(Claude Code)の活用
ちょうどこの頃から Claude Code というAIツールを使い始めましたが、これがパスキー実装において非常に大きな助けとなりました。
Claude Codeはターミナル上で動作し、プロジェクト内のファイルを直接読み込み必要な箇所を編集、エラーログを参照して原因を特定といったことを自律的に行ってくれます。
従来のAI活用との違い
これまで生成AIを使う場合は、関連するコードを手作業でコピー&ペーストし、出力されたコードを再度コピー&ペーストして反映するという手順が必要でした。
一方でClaude Codeでは、指示を入力するだけで必要なファイルを探索し、内容を理解した上で修正まで実行してくれるため、作業負担が大幅に減りました。
パスキー実装での効果
パスキーのように工程が多い機能でも、要件をできるだけ具体的に書いたり参考となる実装例を与えたりすることで、機能全体の枠組みを短時間で作成 できました。
その結果、何もない白紙の状態から、実際に動作するものを作り上げることができ、開発効率はそれまでと比べて桁違いに向上したと感じています。
インターンを通して学んだこと
このインターンを通じて、以下のような学びがありました。
- チーム開発では「動く」だけでなく、可読性・保守性・合理性 が重要であること
- 他のメンバーと円滑に進めるための コミュニケーションの取り方
- AIツールの活用によって、開発プロセスそのものが変わりつつあること
これらの経験を通じて、今後は他のプロジェクトでも自信を持って、周囲と協力しながら開発に取り組めると感じています。
また、今後は自分だけでなく他のメンバーもAIツールを使う機会が増えていくと思うので、AIにどのように要件を伝えるべきかについてや、AIが生成したコードをどのようにチームで共有・レビューしやすくするかといった点についても、引き続き学んでいきたいです。