コロプラ・ベアーズ 面白いものを作りたい仲間が集まるベアーズ

コロプラ流開発マインドが試される!?新卒2020研修リポート【サーバーサイドエンジニア編】
COMPANY

コロプラ流開発マインドが試される!?新卒2020研修リポート【サーバーサイドエンジニア編】

2020年新卒入社

サイカワ

エンジニア

こんにちは! 2020年新卒サーバーサイドエンジニアのサイカワです。
大学時代はサークルでゲーム開発をしたり、スマホゲーム会社でエンジニアとしてアルバイトをしたりしていました。

今回は3ヶ月間に渡り実施された『サーバーサイドエンジニア向け新卒研修』についてリポートします。
Be-ars_co_shinsotsu_kenshu_vol3_1_n1_2020_800_533.jpg

研修の全体像

職種ごとの研修は、新卒全員が受講する「ビジネス研修」を終えた4月下旬にスタートしました。

サーバーサイドエンジニア向けの研修は「座学研修」と「システム開発研修」の二部構成になっています。座学研修ではサーバーサイドエンジニアとしての基礎知識やコロプラで働く上で知っておくべきマインド・サービス全体のレイヤー構成などを学び、システム開発研修ではプロダクトの企画立案・開発を通じて実務的な内容を学びました。

サーバーサイドエンジニア向けの研修カリキュラムは以下の通りです。

座学研修

● 先輩講話
● コロプラ流開発マインド
● サービス全体のレイヤー説明
● Webアプリケーションの構成とMVC
● オブジェクト指向におけるデザインパターン
● DBについて(MySQL/Spanner)
● リーダブルコード
● Unity研修

システム開発研修

● テーマに沿ったシステムの企画立案
● 本開発
● 先輩社員、部長によるレビュー
● 社内リリースに向けた準備

こうして並べると座学の方が多いように見えますが、実際には座学の研修は全体で1週間ほどしかなく、残りの2ヶ月以上はすべてシステム開発研修の期間でした(!)。

また、以前の記事でもお伝えした通り、今年はコロプラ初の試み(!!)として全行程がオンラインで実施されました。

このような状況下でも手厚い新卒研修や入社後のサポートをしてくださったことに心から感謝をしつつ、早速サーバーサイド研修の詳細について紹介させていただきたいと思います!

まずは座学研修

まずは座学研修です!
この研修では、コロプラでサーバーサイドエンジニアとして働いていく上で必要になる知識を、実際に現場で働いている先輩社員の皆さんに講義形式で教えてもらいました。

技術的な話でいえば、「Webアプリケーションについての技術」や「デザインパターン」、さらには実際にコロプラ内で使われているサーバーの構成であったりDBの技術紹介などをしていただきました。

それ以外にも、「コロプラ流開発マインド」ということで、『コロプラでサーバーサイドエンジニアとして働くにあたり意識するべき考え方』を紹介していただきました。

コロプラには、コロプラで働く3つのキーワード「素直さ・我ごと感・ユーザー思考」があるのですが、それをサーバーサイドエンジニアとして実践するとどのような業務体系になるのか、ということを分かりやすく説明していただきました。

さらに面白かったのが「先輩講話」です。こちらは日替わりで毎朝30分、様々なキャリアを歩んでいる先輩方からLT形式で『これまでのキャリアや仕事に対する姿勢・考え方』を講話していただくという内容です。先輩方がどんな成り行きで今の職に就いたのか、多種多様なモデルケースを紹介していただくことで自分たちの今後のキャリアを考える良いきっかけとなりました。

ブラザーとの出会い

また座学研修中の話題として欠かせないのは、新卒社員とブラザーのマッチングについてです。

コロプラには「ブラザー制度」という、入社1年目の新卒社員に専属のメンター(ブラザー)が一人つくというサポート制度があります。

今年は研修がオンラインでの開催ということもあり、ブラザー候補となる先輩社員と日替わりでビデオ通話を通じて顔合わせを行い、マッチ度の高い先輩を希望させていただきました。

希望の際、シンプルに対人関係の相性がいいか(リラックスして会話できるか)も大切ですが、僕の場合は『一緒に過ごすことで自分の成長につながるかどうか』という点も重視させてもらいました。たとえば、僕はよく会話の中で曖昧な物言いをしてしまうきらいがあると自覚しているので、そういったときにしっかりと論理的・具体的なアドバイスをしてくれる先輩社員にブラザーになってもらいたい、と思って希望を出しました。

その結果、非常に頼れる先輩がブラザーになってくださり、次に紹介するシステム開発研修ではとても手厚くサポートしていただきました!

システム開発研修がスタート!

次はいよいよシステム開発研修についてです!
この研修では、1人1人が「在宅勤務の業務サポート」をテーマにWebアプリの企画・実装を行いました。

技術的な条件としてはPHPのWebフレームワークであるLaravelの使用や、DBとしてMySQLを使うことなどが提示されていましたが、それ以外の条件は特になし!とにかく自分の技術で実現し得る最高のWebアプリを作ることが今回の研修の最終ゴールでした。

さらにはなんと、優秀なWebアプリは実際に社内リリースを行い、現在950名を超える社員がいるコロプラで使ってもらえるという特典付き!

自分で作ったモノを色んな人に見て触ってもらえる貴重なチャンスということもあり、俄然やる気が湧いてきました!

さて、それではさっそく研修の中身について触れていきたいと思います。
今回のシステム開発研修は大きく分けて「企画」と「実装」の2つのフェーズに分かれて進行し、それぞれ数回のレビューを受けて合格した人から次の段階へ進めるという方式でした。

それぞれ明確な締め切りは設けられておらず、自身でスケジュールを管理して取り組む必要があったため、ここからの期間はいわゆる『工数管理』に新卒メンバー全員が四苦八苦することになります......(笑)。

1.企画フェーズ

まずは自分の作りたいWebアプリの企画フェーズです。
ここでは作りたいWebアプリの企画・提案資料を作成し、以下の観点にもとづいて「実装フェーズに進める状態か」をレビューしてもらいます。

● 必要性:本質的な課題か
● 妥当性:課題に対して最適な解決策(アプリ)か
● ユーザー思考:ユーザーが使いたいと思えるか

この企画レビューがとにかく大変でした......!

僕は最初、在宅勤務者のコミュニケーションレス問題を解決するというテーマで『社内間つぶやき投稿アプリ』の企画を提出しました。
自分ではわりと良い感じの企画を出せたと思っていたのですが、いざ資料をレビューに出すと「どのように業務効率化につながるのか分からない」「そのアプリによって本当にコミュニケーションレスの本質的な問題を解決できるのか?」と酷評の嵐......。

正直、最初は「ちょっとレビュー厳しすぎない?」と思ってしまいましたが、それと同時に座学研修で学んだ『ユーザーファースト』という言葉を思い出しました。

ユーザー思考でモノづくりをするとは、つまり「作る側の都合」ではなく「使う側の都合」を考えてアプリを作るということです。
その考え方に則って改めて自分の企画資料を見返すと、確かに社内間つぶやき投稿アプリを使えばコミュニケーションが活性化しそうな気はしますが、以下のような『ユーザー目線の考え方』が抜け落ちていることに気がつきました。

● 社内の人たちはわざわざこのアプリを使ってくれるのか?
● そもそもコミュニケーションレスだと何が問題となるのか?

これに気づいてからは先輩方に直接聞き込みをするなどして、問題の本質は「コミュニケーションレスにより問題解決のスピードが下がること」「チャットでのコミュニケーションは会話よりも心理的ハードルが高いこと」であることに思い至りました。

最終的に、僕は「Botによるコミュニケーション仲立ちツール」を企画・立案し、無事レビューを通過することができました!

まさに座学で学んだ「コロプラ流開発マインド」が活きた研修だったと思います。

2.実装フェーズ

企画のレビューが通過したことにより、いよいよシステム開発研修の本番である実装フェーズが始まります。
実装フェーズでは企画フェーズと異なり、研修メンターの方々による1次レビューを合格した後、サーバーサイドエンジニアが所属する部署の部長による最終レビューが待ち構えており、その2段階のレビューを突破することが研修合格の最終条件となります。

実装に関しては前述の通り、弊社の主要言語の一つであるPHPのWebフレームワーク「Laravel」を使うことが前提条件として指定されていたのですが、僕はそもそもLaravelはおろかPHPさえ触ったことがなかったため、まずはPHPの作法から勉強しなくてはならず大変でした。

慣れないPHPでの作業や環境構築にかなり苦戦を強いられましたが、ここで何よりも頼りになったのがブラザーの存在でした。
オンラインでの研修ということもあり、新卒の同期同士ですらコミュニケーションがままならない状況下でしたが、ブラザーには毎日『夕会』という形で30分程度のビデオ通話の時間をいただいていました。

この夕会の中で、研修中に感じた悩みや実装中に生じた疑問点などをざっくばらんに相談させてもらうことができました。また「一定以上の品質でプログラムを書けているか」「DBのテーブル設計に問題はないか」といった現場観点でのアドバイスもたくさんいただき、システム開発中の心強い支えとなりました。

と、ここまで主にサーバーサイドエンジニア的な話を続けてきましたが、実は僕が本当に苦労したのは何よりもフロントエンドの実装でした。

実装のレビューにおいては、ユーザー目線から考えて「ユーザーが操作しやすいUI」「ユーザーが使いたいと思えるUX」が実装できているか、というのが評価に大きく影響するのですが、これを作るのがまた一苦労!

実装が進むにつれて、段々と「何が良いUIなのか」というのが分からなくなっていき、初の実装レビューでは「もっとユーザーが見て分かりやすいUIを作ってください」とバッサリ一刀両断されてしまいました......。

正直フロントエンドの実装が得意ではない僕は、ここで「ユーザーにとって分かりやすいUIを作るには、他の人に見てもらうしかない!」と奮起し、新卒の同期やブラザー、その他の先輩社員など様々な方に開発したアプリへのフィードバックをもらう、という作業を始めました。

その過程で「UIが往年のHTMLって感じ」「一画面の機能が多すぎてよくわからない」など散々な苦言をいただき、ちょっと心が折れかけたりもしましたが、ブラザーに「UI作りはそんなものだよ」と温かい励ましの言葉(?)をかけてもらったりしながらUI改修を続けること1ヶ月、5回ものレビューを経て遂に1次レビューに合格!

5回もの念入りな1次レビューを潜り抜けた甲斐もあってか、2次レビューではなんと1発合格!

1次レビューの時に様々なご指摘を受け、徹底的にブラッシュアップを続けた「画面のシンプルさ・使いやすさ」が評価に繋がったようで、苦労した甲斐があった......!と喜びもひとしおでした。

そして現在......

実は僕の作ったWebアプリ、社内リリースされています!
Be-ars_co_shinsotsu_kenshu_vol3_1_n2_2020_800_533.jpg
Be-ars_co_shinsotsu_kenshu_vol3_1_n3_2020_800_533.jpg
部長のGoサインが出たのち、DB構築やローカル環境からGoogle App Engineへのデプロイ、デバッグを経て、全社に公開という運びになりました。

リリース後はさっそく先輩方からバグ報告や要望をいただき、「ありがたい!」と思う反面「リリースしてからこんなに問題点や改善点が出てくるとは......」とあたふたしながらリリース後の対応をする、という貴重な体験をさせていただきました。

研修自体はWebアプリをリリースして終了しましたが、思わぬ形で実際の業務のような体験をさせてもらえたのは嬉しい誤算でした。
そんなリリース後の対応も終え、現在は無事にサーバーサイドエンジニアとして現場に配属されています。

今はチームのサーバーサイドのコードに慣れることを目的に、主にゲームの管理ツールの機能追加やバグ修正といった比較的易しめなタスクを担当させてもらっています。易しめとはいいつつも、常に誰かとコミュニケーションを取りながら作業を進める必要があり、業務ならではの難しさをひしひしと感じています。

また、現場で動くシステムのコードとなると(当たり前ではありますが)研修よりもさらにレビューが厳しい......!

『ユーザーファースト』の観点からどのようなコードが最適であるかを学ばせてもらいつつ、現在もレビューで指摘された部分のコード修正に勤しむ日々を送っています。

研修を終えて

長期に渡り続いた研修ではありましたが、同時に学生時代には得られなかった多くの経験や学びのある研修でもありました。特にWebアプリを実際にリリースする中で『ユーザー目線でのモノづくり』を実務に先んじて体験できたことは良い経験になったと思います。

まだまだ配属されたばかりではありますが、この研修で学んだことを活かして頑張っていきたいと思います!