Akatsuki Hackers Lab | 株式会社アカツキ(Akatsuki Inc.)

Akatsuki Hackers Labは株式会社アカツキが運営しています。

ドリコムさんと社会人交換留学をしました

こんにちは、初めまして。 最近ようやく花粉症も治まってきたエンジニアのシモムラです。 2016年3月にアカツキドリコムさんの間で社会人交換留学という取り組みを行いましたので、その内容を紹介します。

社会人交換留学について

社会人交換留学とは 、会社同士で社員を交換しあうという取り組みです。目的は会社同士の文化交流、そこから生まれる「気づき」をシェアすることにあります。 社員になると他社の開発現場を生で見る機会は殆どないので、参加者自身にとっても貴重な経験です。

ご存知の方もいると思いますが、社会人交換留学は去年ドリコムさんとピクシブさんの間で行われています。 その当時の記事については以下の通りです。これを読むと、大体の雰囲気はつかめるのではないでしょうか。

この時はサーバーサイドエンジニア(Ruby on Rails)でしたが、今回はクライアントサイドエンジニア(C++/Cocos2d-xとC#/Unity)で実施しました。使っている技術要素が違うため成果が残しづらいことも考えられましたが、それはお互いの文化を学ぶことや成長につなげることとは別であるとしてやってみることにしました。 アカツキから留学に行ったのが私、ドリコムから留学にいらっしゃったのがイシカワさんです。 イシカワさんはドリコム勤務6年ほどのベテランエンジニアで、物腰も柔らかなとても接しやすい方でした。

今回のきっかけ

交換留学のきっかけは2015年6月に行われたIVS CTO Nightで、ドリコム白石さんと弊社CTOの田中が知りあったのがきっかけでした。その後、去年の11月にドリコムのオフィスで「エンジニアリングあるある勉強会」という合同勉強会を開催したりして、お互いのエンジニアメンバーのつながりを強くしていきました。 そこからお互いのメンバー選定、協力会社への調整、NDA締結を行い、留学を実施することとなりました。

留学の準備

さて、留学期間はわずか5日間と非常に短期間です。無駄にできる時間はありません。 しかし、いきなり仕事に取り掛かれるとは限りません。ベテランエンジニア同士で実施した過去の交換留学でも、初日は環境構築に費やしてしまったそうです。 今回はその反省を踏まえ、本留学開始の前の週に準備日を設けました。準備日には顔合わせ・環境構築・その他留学中のメニューなどのすり合わせなどを行います。 こうした準備を経て、2月22日にアカツキからドリコムへ、3月14日にドリコムからアカツキへの留学を実施しました。

留学中にやったこと

留学中はチームメンバーとして実際の業務を行います。今回の留学ではBisqueチームと呼ばれる社内共通基盤の開発チームに参加させていただきました。Bisqueチームはドリコムでクライアントアプリケーションの開発に利用しているCocos2d-xの拡張や、それをベースとした内製フレームワークの開発を行っています。 今回私は持ち込みのネタも無かったため、ここBisqueチームから提案のあったデバッグ用の機能拡張を実装することにしました。

またBisqueチームではUpstream開発に取り組んでいます。Upstream開発というのは、オープンソースソフトウェアに対して企業が行ったソースコード修正を元のオープンソースプロジェクトに還流させるプロセスを言います。 メリットとしては還元されたコードのメンテナンスに手間がかからなくなること、また独自の派生を減らすことでバージョンアップが容易になることが挙げられます。 一方デメリットとしては要望が通るとは限らない、通るとしても時間がかかる、通るまでの"つなぎ"の管理の必要が生じるといったことが挙げられます。ここは基盤開発の経験を活かしてうまく解決しているそうです。 せっかくですので私の実装もUpstream開発の一環として本家へPullRequestを送りました。

PullRequestを出したのはCocos2d-xに搭載されたリモートコンソール機能の拡張です。このコンソールに、アプリケーションの状態をモニタリングして割り込み停止をかける"trap"というコマンドを追加しました。 trapコマンドはデバッガーの方がパフォーマンスのチェックをする際に利用することを想定しています。 ほんの些細な内容ではありますが、これマージされて誰かに利用してもらえたら嬉しいです。

また前回の交換留学では働く方々へのインタビューが有意義だったそうなので、今回もドリコムの各部署のメンバーを対象としたインタビューをさせていただきました。 あまり堅苦しい形にはしたくなかったのでインタビューの一部はランチと一緒に行うよう一工夫しました。実際カジュアルな雰囲気で情報交換ができたと思います。 加えて前回の反省を活かして事前にランチのアポを取っておいた事も功を奏し、多忙なリーダーの方々ともご一緒していただけました。

他にはドリコムの子会社であるグリモアさんを訪問させていただきました。 グリモアは少数精鋭でのゲーム制作を信条としています。ここで伺った話はとても興味深いものばかりでした。 そのひとつが、昨今のゲーム実況配信の盛況を踏まえ、自分たちで色々なゲームの実況配信を実際にやってみるという取り組みについてです。実況し易いゲームや実況を見て面白いゲームとはどんなものなのか研究し、その成果を実際のプロダクト開発に活かしているそうです。

アカツキでの受け入れについてはイシカワさんのエントリで詳しく紹介されています。後述の問題を除いては概ね予定通り進められました。 留学の日程がちょうど上場の記念日と被るなど、一つの会社の節目を体験していただけたと思います。

ドリコムスタイル

留学を無事終えて気づいたドリコムの文化が以下の2つです。

前提知識の均一化

ドリコムではアカツキと比べても非常に多くのクライアントサイドエンジニアが働いていますが、そのエンジニア間のコミュニケーションコストは非常に低く抑えられているようです。 これは前述のとおり基盤技術を全社的に統一している、つまり多くのプロジェクトが同じ内製フレームワークを利用していることによる恩恵です。あるプロジェクトで得たノウハウは、チームの壁を超え素早く共有することができます。 Bisqueチームが主催となっている、アップデートの告知や問題のヒアリングなど行う共有会もこれに貢献しているようです。 さらに、チーム間での人員交換にかかるコストが低いため、適切なタイミングで適切なリソースの再配分が可能になります。

資産を全社に還元するシステム

ドリコムで徹底的に共有がされているのは実際のコードについても同様です。RubyでいうGemのように、CocoaPodsを用いたクライアントコードのライブラリ化が非常に活発です。 この取り組みを支える柱となっているのがクライアントアーキテクトグループ(略称:クライアントアーキG)。クライアントアーキGは各プロダクトチームの成果を全社に還元する役目を担います。 クライアントアーキGはBisqueチームのように独立して開発を行うのではなく、メンバーが各プロジェクトの開発に実際に参加してライブラリ化のサポートを行います。 現場に密着した彼らの働きによって、便利なモジュールの共有と整備がなされています。特に実運用で使われているライブラリは信頼性も高く、再利用率が非常に高いそうです。

ここでいう共有・共通化は上からの押し付けではなく、個別のプロダクトチームの成果を現場から全体に還元するというのがポイントです。 アカツキでは「チームごとに最適な方法を探索」という考え方があり、プロジェクト単位で自由な技術採択を推進しています。そうすると、技術的なチャレンジがし易い反面、プロジェクトを超えてノウハウや資産を共有することが難しいとも感じています。 クライアントアーキGのように個別のプロダクトチームが主体となる資産化の試みは、今後アカツキでも試してみる価値があると思いました。

反省点

今回の交換留学での反省点も共有したいと思います。

イシカワさんを受け入れた際のアカツキの状況

今回の交換留学では、受け入れ先のチームと同じフロアで作業することが出来ないというトラブルが発生しました。 企画から留学開始まで3ヶ月ほど期間が空いたため、受け入れ予定チームの周りに新しい機密プロジェクトが配置されたことが原因です。このため当該フロアへの立ち入りを制限することとなり、やむをえずチームの島から離れた場所に席を構える事になりました。 防ぎようのない不測の事態だったのですが、次は企画からできるだけ早く留学を始めることでリスクを減らすことができるかもしれません。

クライアントサイドのエンジニアを交換する難しさ

当初の予想通りクライアントサイドの作業では短期間で成果を出すのが難しく、両者とも無難なデバッグ機能の実装でひとまず着地することになりました。クライアントアプリケーションではエンジニアだけで完結する作業が少ないことや、直接ユーザーの目に触れることから品質の担保が必要になることが理由として挙げられます。 他に出来る事があるとすればツール開発などによるワークフローの改善などが有効かもしれません。ヒアリングの過程でワークフローを把握できれば開発の文化にも触れられて一石二鳥です。 次回チャンスがあればそのあたりをチャレンジしてみるか、もう少し長い時間で取り組めるよう考えていきたいと思います。

最後に

社会人交換留学は前例のある取り組みではありますが、同業種の他社にインターンシップに行くような経験は当然なく当初は不安感もありました。加えて前例では優秀なエンジニアが留学を行っていたのも強いプレッシャーでした。 そのような気持ちで留学が始まったので、現場でイシカワさんをはじめドリコムの皆様に快く受け入れ・サポートをしていただけて本当に嬉しかったです。 またこの交換留学は現場で会った方々以外にも、様々な方々の尽力によって実施することができました。この企画に携わっていただいた全ての皆様に感謝いたします。ありがとうございました。