【デブサミ2015】19-A-4 レポート
JavaエンジニアのScalaへの挑戦 ~高速開発を実現した開発プロセスと、Scala最大の難関「モナド」の攻略法
Javaの後継を担うものとして、注目を集めている「Scala」。サイバーエージェントのアドテクスタジオでは数々の新しいプロダクトを短期開発し続けており、中でもアドテクスタジオ設立当初より注力している「Scala」を採用した開発に積極的に取り組んでいる。新しい技術をどのように採用し、メンバーで取り組んできたのか。また戸惑いやトラブルはなかったのか。「Developers Summit 2015 Growth!」では、同社で「LODEO」開発責任者を務めるサーバサイドエンジニアの新田智啓氏がこの導入と活用の経緯について紹介し、続いて後半では、同社Dynalystサーバサイドエンジニアの韓翔元氏が「Scala」を始める際にハードルとされる「モナド」について具体的な技術解説を行った。
約3カ月でScala率9割の動画広告配信プロダクト「LODEO」を開発
2014年の動画広告市場は前年比約2倍の300億円規模といわれ、その成長は破竹の勢いともいえる。サイバーエージェントでは「アドテクノロジーの開発」をキーワードに約200名のエンジニアを集め、2013年10月に「アドテクスタジオ」を設立。2014年10月よりアドテクスタジオにて動画広告配信プロダクト「LODEO」の開発を手がけ、2015年1月にリリースした。
その背景には、動画広告自体のニーズはもちろんのこと、スマートフォンの動画広告という新しい表現と、PCを使わない新たなユーザへリーチすることが可能なプロダクトが求められているという現状がある。「LODEO」の特徴は、1日に数十億リクエスト以上さばくという高いパフォーマンスに加え、個々のユーザに配信可能な配信ロジックを搭載し、データ分析や予測も行えるというもの。さらに、動画配信のネックとなりがちな異なる環境にも柔軟に対応する。
実質3か月という短期間に、配信サーバや計測サーバ、集計バッチ、スマートフォン用動画プレーヤーモジュール、インフラまで、あらゆるものを準備する必要があり、スタート時3名、完了時12名の少人数での開発はかなりハイスピードといえるだろう。その迅速な開発を実現した際の立役者が「Scala」というわけだ。
しかし、新田氏によれば「開発メンバーのうち未経験者が半数以上、経験者も実務はせいぜい半年、または本を読んだだけ」という状況。そうしたメンバーがScala率91.3%という「LODEO」を開発したのだという。ちなみに他には、JavaScriptやCoffeeScriptなどが使われている。
新田氏は開発プロセスについて、開発期前半は、「KPT(Keep、Problem、Try)を週1で行い、毎日のように作っては反映しを繰り返した。はじめは人数が少なかったが、後に増えることが決まっていたので、GitHubを使った情報共有を徹底した」と語る。また、開発中盤から後半期には、Huboardによるチケット管理をGitHubと連携させるなど、コミュニケーション環境の充実を図り、品質を高めるためにコードベースレビューのマージを頻繁に行ったという。
プロジェクト開始から終了まで、一貫して意識したことについて新田氏は次のような項目をポイントとして上げる。
1)再利用回数を考え、「見える化・集約・蓄積」を行なう。
二度と使わないドキュメントは意味が無い。コミュニケーションコストと開発における必要性を鑑みながら、情報共有を行なった。また、その際にはGitHubへの集約を図り、コラボレーションツールを適宜活用した。
2)開発サイクルの最大化
デプロイなどの自動化や朝会での流動的な優先度変更、KPIで上がったTODOの実行を柔軟に行い、フィードバッグのキャッチアップと動き出しを早くすることを心がけた。この際、「何を作るかでなく何をしたいか」を伝えることが肝心。一人で抱え込むのではなく、チーム全体で改善案を考えて共有し、実行することが大切。
3)個人に焦点を当てる
今までの経験値を最大限に活かす方法を「個人」にフォーカスして考えた。プロジェクトを通じてどんなナレッジがたまるのか、期待と結果を検証することといった視点も踏まえ、個々が「ビジネス」の価値を理解するエンジニアであろうと意識した。
こうした開発手法について、新田氏は「アジャイルという言い方はしたくない。あくまで型にとらわれることなく、有効と思われる手法を目的に合わせて活用することが大切」と語る。
この記事は参考になりましたか?
- 【デブサミ2015】セッションレポート連載記事一覧
-
- 【デブサミ2015】20-A-7 レポート 現場を良くしたい、チームを成功させるには? ア...
- 【デブサミ2015】19-A-4 レポート JavaエンジニアのScalaへの挑戦 ~高速...
- 【デブサミ2015】20-E-3 レポート クラウドガバナンス入門 ~失敗から学ぶ、組織で...
- この記事の著者
-
CodeZine編集部(コードジンヘンシュウブ)
CodeZineは、株式会社翔泳社が運営する開発者のための情報メディアです。日々の開発に取り組むエンジニアやテクノロジーを学びたい方に向けて、プログラミングやAI活用、開発ツール、エンジニアの学びとキャリアに関する記事をお届けしています。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社
この記事は参考になりましたか?
この記事をシェア
