見出し画像

プロセカで新機能開発してみた!

初めましてからまるです!

先月の1ヶ月間(2020/11)、サイバーエージェントの就業型インターン「CATechJOB」に参加して参りました。

自分自身の備忘録・アウトプットも兼ねて、このインターンで得た経験・学びを書こうと思います!これから参加を考えている学生さんにも参考にしていただけると幸いです☺️

インターンとは思えない程大きなタスクを任せて頂いたりリリース直後の熱気を感じることが出来たりでとても有意義な、目まぐるしく開発・成長出来たインターンでした🔥

画像1

# 自己紹介

手短にですmm

・上智大学法学部3年
・サーバーサイド志望
RubyGoとReact(Native)に触れたことがある(指先)
ボカロが大好き!(書いてる今もSweetDevilを聞いてる。レンくん推し)

画像2

# 参加経緯・目標

JOBへの参加理由・意気込みは大きく2つあります。

まず1つ目は、本場のゲーム開発を体験してみたかったからです。

僕はゲームのバックエンドに強い興味があります
ざっくりとした理由は以下の3点です。

シンプルにゲームが好き
... ぷよぷよやスマブラが一番ですが、スマホゲームもします🎮
ユーザーとの距離が近い
... 『運営』として開発者が呼称されるのはゲーム特有ですよね。作ったものを喜んでもらえるのをすぐ実感できるのは幸せな事です😁(悪いfeedbackも素早いらしいですが...><)
技術的なやりがいがあるから
... ゲームのバックエンドはチートを弾いたり、問い合わせ対応のためにロギングを考慮したり、膨大なアクセス数を捌いたりと、ゲーム上の財産(アイテム・平等な環境・楽しく遊ぶ時間)を守る為に気に掛けることが多岐に渡ります。縁の下の力持ちみたいでかっこいいですよね💪

ゲームAPIを模擬的に改良したり、ゲームハッカソンに出たりしたことはありましたが、本場のゲーム会社で開発したことは無かったため応募しました。

画像3

JOBに参加した2つ目の理由は、将来像への道筋を明確化したかったからです。

過去に参加したCATechDojo(体験記)でゲームバックエンドエンジニアに興味を持ってから、「20代のうちに新規ゲームのリードエンジニアになる」という目標を仮決めしていました。しかし、そこに至るために今足りないスキルや、どういったステップで実現させるのかが明確ではありませんでした。
よって、実際にテッククリードをしている人に取材して、将来像に必要なスキルや経験、勉強法などを聞くチャンスだと考え応募しました。

画像4

# ColorfulPaletteについて

何回かの面接を経た後に、「株式会社ColorfulPalette」が配属先だと告げられました。

ColorfulPalette初音ミクを中心としたスマホゲーム『プロジェクトセカイ』を今年の9/30にリリースした、SGEの中で一番新しく、今最も活気ある企業です🔥

画像5

冒頭の自己紹介でもある通り僕はボカロが大好きなので、「インターンに行くならColorfulPaletteがいい!」とずっと思っていましたし、面接でもその意はオタク特有の(?)早口で熱弁した記憶があります。実って良かった☺️

ColorfulPaletteはサービスにも表れている通り「オタク文化」を大切にする企業で、社員さんのデスクに初音ミクや巡音ルカのフィギュアや声優のポスターが多くあったのが印象的です☺️

本当は伸ばしたい技術とかで配属先を決めるんでしょうけれど、リリース直後の熱量ある環境で開発する事は中々出来ない経験ですし、通常インターンではあり得ない裁量のタスクを任せて頂けたので、結果として一番成長出来た良い選択だったと思っています。

画像6

# プロジェクトセカイについて

正式名称は『プロジェクトセカイ カラフルステージ! feat. 初音ミク』で、リズムゲームを主体の機能として備えています。

画像7

しかし、このアプリは単なるリズムゲームではなく、独立した6つのユニットストーリーを購読することが出来たり、座席移動式のバーチャルライブを楽しむことが出来たりする最強のアプリです。

画像8

初音ミクをはじめとするピアプロキャラクターは各ユニットの登場人物の想いから生まれる『セカイ』にそれぞれ登場するのですが、この辺りの皆の心の中にいるそれぞれの初音ミク像を汚さない配慮は流石だなと感動した記憶があります。

画像9

リリースして間もないのにも関わらず、現在(2020/12/4)のユーザー数は300万に迫る勢いで、GooglePlayのユーザー投票部門では最優秀賞を獲得するほど人気のアプリなんです👀

今回のインターンでは、このアプリのAPIを開発しました🎉
以下、具体的にやった事を記述します。

画像10

# やった事

主にやった事は以下の2つです。

①デバッグコマンド作成
②新機能API開発

⓪事前準備

配属してからは入社手続き・権限周り調整・環境構築を行いました。
権限周りで時間が取られてなんだかんだ2日間この準備に費やしましたね💦

①デバッグコマンド作成

環境が整った後は、開発に慣れる為にデバッグコマンドの作成に取り掛かりました。「dev環境でレベルを100にする!」みたいな奴です。

Java(SpringBoot)やAWScodeシリーズの使用は初めてだったので、ここで言語記法や開発フローに慣れていきました。

配属当初は管理画面の整備をメインでするものだと思っていたので、必要そうな機能をCS・QAの方に聞いたりしていましたね👀

画像11

②新機能API開発

2,3個デバッグコマンドを作り終えた頃、上長の方が「これ俺が作ったぜ!って言える機能作ってみたいでしょ?」という粋なはからいで、新機能APIを1から作らせて頂く事になりました。(内容は内緒ですが...🤫)

若いうちから裁量ってこれか。。って大きなタスクをやれることに感動して、好きなサービスの新機能を開発できる事に興奮しました。と同時に「これミスったり遅れたりしたらやばくね?」って焦りがだいぶ序盤からありました💦
そんな興奮と不安をMonsterでかき消して、設計・開発に移ったのが2週目です。

画像13

開発内容としてはマスタデータに修正が必要だった為DBテーブルを作成してデータを追加し、API処理を記述して、既存コードと共通化できるところは共通化して、テストを描く!みたいな感じで割と沢山コードを書いた気がします🔥

基礎情報となるマスタデータを一括でクライアントに返し、ゲーム中はそれを参照するというゲーム特有の構造には初め驚きましたし、そもそものアーキテクチャを理解するのに多少時間が掛かりましたが、優しい先輩方に質問しながらなんとか書き終えました✏️

また、開発タスク以外にもプランナーへの仕様確認クライアント繋ぎ込み企画へのデータオリエンなど、多くの人と話す機会があったことが印象的でした。
最初は思考を共有するのに苦労しましたが、後半はホワイトボードへの図示やスクショ、例示を事前に準備してから望む事で上手くコミュニケーションを取れるようになったと思います!
エンジニアにもコミュニケーションスキルがいるとつくづく実感した経験です。

自分が作った機能をリリースまで面倒見きれなかったのが唯一の悔やみですが、偉大なるカラパレの先輩方に想いを託して、新機能のリリースを心から待っています!!!!

スクリーンショット 2020-12-10 1.38.29

# 学び・成長

大きく以下3つが大きな学びでした。

①ゲームのバックエンドって楽しい!
②エンジニアとしての責任感・覚悟がうまれた
③情報共有が上手くなった
④将来像への道筋が明確になった

①ゲームのバックエンドって楽しい!

ゲームのバックエンドは仕様の再考やマスタデータの設計など、想像以上にゲーム全体としてのものづくりの面白さがある仕事だとわかりました。
僕もいつかプロセカみたいな何百万のユーザーから愛用されるゲームを支えて行けるようなエンジニアになりたい!と、よりゲームのバックエンドに対して興味を惹かれた経験でした。

②エンジニアとしての責任感・覚悟がうまれた

サーバーサイドとはサービスの源であり、司令塔とも言えます。APIが完成しなければクライアントは繋ぎ込みを開始できないし、企画はデータ入力出来ません。
よって、サーバーサイドエンジニアは仕様を都度確認・調整し、クライアントのUIから機能用件を逆算し、早く・正確に実装する事が求められます。(+テストも)

今回、エンジニアを超えた「チーム開発」を通じて、サーバーサイドがサービスの基盤になっていること、それを担うためには大きな責任とそれ相応の努力が必要だということを再認識しました。

だから今後は、上長である先輩の「これで食ってく、って決めた瞬間からお前は立派なプロだよ」という言葉を胸に、プロ級の覚悟を持って学習を続けたいと強く思います🔥
(面接もして頂いたこの上長の方、めっちゃいい人でした...😭エンジニアとして・人として尊敬できる人が近くに居る環境も恵まれてるなと感じました。)

画像16

③情報共有が上手くなった

本インターンではクライアントにAPIの概要を伝える際や企画にデータの構成を伝える際など、多くの人とコミュニケーションする機会がありました。
当初は前提が揃わなかったり、焦って思考が散らかったりで上手く仕様を伝えられなかった事がありましたが、後半はホワイトボードへの図示やスクショ、例示を事前に準備してから望むことで、どんな人でもスムーズに情報共有する事が出来ました😁

④将来像への道筋が明確になった

ランチタイムで多くのエンジニアと話す機会を設け、将来像である「20代のうちに新規ゲームをテックリードする」への道筋を明確化させる事が出来ました。取材の成果をまとめると以下です。

・CAでは(頑張れば)5年前後でリーダーになれる環境はある
・3つ以上のタイトルを経験した人がなるケースが多い?
保守/新規/運用の3フェーズを経験すべし
・学生のうちに多くを学ぶには、個人開発で開発上の不便をなくすために技術を取り入れるのが近道。

よって、学生のうちは個人開発のアプリをアップデートする/友達とゲーム開発する過程で技術を学習する。入社後は「運用タイトル->新規タイトルの立ち上げ・運用」を経て、リーダーになり得るスキル・信頼を身に付けていきたいと思います!

画像17

# まとめ

まず、とても忙しい時期に受け入れてくれて、大事な機能も任せてくれて、いつでも優しくお話してくださったColorfulPalleteの皆様、1ヶ月間ありがとうございました!

中でも、サーバーサイドの皆様には、他のタスクもある中PRや質問に対応していただいたり、毎回ご飯やカフェに連れて行ってくれたり、様々な面でお世話になりました。
特にアップデート前という忙しい時期に新機能開発をやらせて頂いた事、不手際でご迷惑もかけた事も多々あったと思いますが、おかげで会社というチーム全体でコミュニケーションを取りながらゲーム開発をする非常に貴重な経験ができ、好きなIPに関わりながら開発に熱中する充実した1ヶ月にする事が出来ました。ありがとうございましたmm

そして、なんと最終日には寄せ書きまで書いて頂き、本当にカラパレは温かい所だなぁとしみじみ思いました☺️

リリース直後という熱量高いカラパレでのインターンを通じて、単なる技術的な成長だけでなく、1エンジニアとして大きな刺激を頂きました。ここで得た知見・刺激・将来像を活かして、必ず卒業までの1年猛勉強して「プロの」エンジニアになりたいと思います🔥

1ヶ月間、お世話になりました!!!!!!!

画像18


この記事が気に入ったらサポートをしてみませんか?