プレイドインターン体験記:AIが学習の壁を壊す、未経験エンジニアがモバイルSDK開発で即戦力になるまで

自己紹介

初めまして、プレイドでエンジニアインターンをしている小林雅史と申します。プレイド内ではあだ名であるmercy(マーシー)で呼ばれています。

立命館大学の修士2年生で、大学は情報理工学部、大学院は情報理工学研究科とコンピュータやプログラミングについて学び、研究しています。詳細な自己紹介については、過去に書いたブログを覗いてみてください。

プレイドでは2023年の4月からインターンとして勤務していて、最初は認証基盤の開発を行いました。その後Redisの監視を簡単にDatadogで行うための社内向けツールを開発し、2023年10月ごろからKARTE Messageというプロダクトの開発を行うチームに加わり開発を行ってきました。これまでは、インフラやバックエンドを中心に開発してきましたが、2024年10月からはKARTE for Appというプロダクトで初めてモバイルSDKエンジニアとして、働くこととなりました。

KARTE for Appについて

KARTEは企業などが蓄積したユーザーの行動データなどの1st Party Customer Dataを基に、リアルタイム解析やそれに応じたユーザー毎のパーソナライズ配信が可能なプロダクトです。KARTE for Appは、モバイルアプリ向けの機能をSDKを通じて提供しています。KARTE for Appについては、自分のMobile SDK Engineerとしてのメンターをしてくださった長さんのインタビュー記事も見ていただくと、より理解できると思います。

KARTE for App | モバイルアプリのエンゲージメントを次のレベルへ

取り組んだ内容

今回私が担当したのは、KARTE for Appが提供するSDKの中でも、設定値配信の新機能の社内検証前の初期実装になります。

設定値配信の新機能の概要

KARTEの管理画面から設定するだけで、モバイルアプリ内に画像を用いたカルーセルを表示できる機能を、KARTEにすでに存在する設定値配信の実装をベースに新しく作成しています。カルーセルの画像、サイズ、画像間のスペースなどを管理画面上で柔軟に変更でき、アプリのコードを直接変更することなく、見た目やコンテンツを更新できる点が特徴です。

※設定値配信自体については、KARTE for App 設定値配信機能| 管理画面からネイティブ要素の変更が可能に!開発工数も削減可能!を参照ください。

具体的なタスク

KARTEの管理画面で設定された通りの見た目(画像サイズ、スペースなど)で、Androidアプリ上にカルーセルが正確に表示されるようにSDKを実装・修正することでした。

AIの活用

私はこれまでバックエンドやインフラを中心に開発しており、Androidネイティブアプリ開発の経験はほとんどありませんでした。そこで、この未経験の分野に効率的にキャッチアップし、開発を進めるという目的で、積極的にAIツールを活用しました。
具体的には、開発の初期段階でDevinに大まかな実装方針を伝えてコード生成を依頼し、基本的な構造や必要なメソッドを把握しました。その後、Cursorを用いて、Devinが生成したコードや既存コードをベースに、細かいロジックの実装、エラーの修正、リファクタリングなどを、AIと対話しながら進めました。

活用したAIツール

弊社のMobile SDKはオープンソースであり、コード流出リスクがないためAIの導入ハードルが低いため、さまざまなAIツールを試験導入しています。今回の実装には、主に2つのAIツールを使用しました。自律的にタスクを遂行しPull Requestの作成までを行ってくれるDevin、そして、エディター上でAI Agentを使用することができるCursor Agentです。プレイドのインターンでは、インターン生にも大きな裁量や権限が与えられることもあり、AIに関しても社員と同じように導入、使用することができます。

AIの活用ポイント

ツールの棲み分けとして、初動でDevinでPRまで作り、その後の改善をCursor Agentで行う形をとることが多かったです。

1.まずDevinにPRを作ってもらう

DevinはSlackから命令するだけで、branchのcheckoutからPR作成までを自動で行ってくれるため、イシュー着手時の初動のコード作成に役立ちます。

具体的には、issueの実装方針を決め、それをそのままSlack経由でDevinに伝えるだけで、早ければ5分ほどでPRを仕上げてくれます。気持ち的には初めての部下を持った感覚でした。

今回の実装は、サーバーから受け取った値を動的に参照する点や、カルーセルという動きがあるUIの実装だった点より、コーナーケースや細かいスタイリングが求められました。結果として、Devinが初動で完璧な実装をしてくれることは少なかったです。

したがって、Devinに先にPRを作ってもらい、使うライブラリや実装戦略の当たりをつけつつ、ライブラリなどの情報をキャッチアップしながらその後の修正は後述のCursor Agentでのバイブコーディング、という流れを取ることがメインでした。

Frame3.png

2.Cursor Agentとの共同作業

Devinに初動のPRを作ってもらった以降は、主に素早くコード改善が可能なCursor Agentと一緒にVibe Codingをしながら開発を進めました。

Android開発の代名詞でもあるAndroid Studioは主にビルドに留め、基本的なコード修正はCursor上で用いました。Cursor Agentでは、Claude 3.5 Sonnetを最初は使っていましたが、最近では新しく登場した、Claude 3.7 SonnetやClaude 3.7 Sonnet thinkingを使用しています。

Devinは依頼を出してからPRへの反映まで、どんな軽微なものでも1分以上かかってしまいます。問題箇所がある程度特定できていたり、実装内容が明確な追加実装の場合は、Cursor Agentがローカルで生成するコードを確認しながら再度依頼を出したり、自分でコードを補完したりする方が効率的と感じました。

image.png

なお、Android開発における難しさとして、CursorはVSCodeベースのためAndroid Studioと同等の静的解析を適用するのが難しく、AI Agentの強みである静的解析を活用したコーディング支援を最大限に活かせないという点がありました。そのため、Android Studioで検出されたエラーをプロンプトとしてCursorに与えたり、「そのメソッドは存在しない」といった具体的なフィードバックを与えたりする必要がありました。このように、現状の私の開発環境では、Android開発においてAI Agentのポテンシャルを最大限に引き出すには課題がありました。これは、私の開発環境構築に改善の余地があることも一因と考えています。

image.png

感想と今後

Android開発経験の浅いバックエンドエンジニアでしたが、AIを活用することで、Android SDK開発タスクを遂行できました。自分としても、AIを活用することで自分の専門分野以外でもvalueを発揮できキャリアやエンジニアとしての幅を広げられるとても良い機会となりました。プレイドのインターンでは、このように自分の得意領域以外にも挑戦できる機会をいただけることがよくあります。今回は約3ヶ月ほどだけ、Mobile SDK Enginnerとして働きましたが、プレイドでは自分のようにさまざまな開発領域にチャレンジしたいインターン生も大歓迎しています!

【26卒/27卒】エンジニアサマーインターン / 株式会社プレイド
新卒採用 & インターン (Engineer) / 株式会社プレイド