SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

【デブサミ2015】セッションレポート(AD)

【デブサミ2015】19-A-4 レポート
JavaエンジニアのScalaへの挑戦 ~高速開発を実現した開発プロセスと、Scala最大の難関「モナド」の攻略法

  • このエントリーをはてなブックマークに追加

 Javaの後継を担うものとして、注目を集めている「Scala」。サイバーエージェントのアドテクスタジオでは数々の新しいプロダクトを短期開発し続けており、中でもアドテクスタジオ設立当初より注力している「Scala」を採用した開発に積極的に取り組んでいる。新しい技術をどのように採用し、メンバーで取り組んできたのか。また戸惑いやトラブルはなかったのか。「Developers Summit 2015 Growth!」では、同社で「LODEO」開発責任者を務めるサーバサイドエンジニアの新田智啓氏がこの導入と活用の経緯について紹介し、続いて後半では、同社Dynalystサーバサイドエンジニアの韓翔元氏が「Scala」を始める際にハードルとされる「モナド」について具体的な技術解説を行った。

  • このエントリーをはてなブックマークに追加

株式会社サイバーエージェント アドテクスタジオ LODEO サーバサイドエンジニア 新田 智啓氏
株式会社サイバーエージェント アドテクスタジオ LODEO サーバサイドエンジニア 新田 智啓氏
株式会社サイバーエージェント アドテクスタジオ Dynalyst サーバサイドエンジニア 韓 翔元氏
株式会社サイバーエージェント アドテクスタジオ Dynalyst サーバサイドエンジニア 韓 翔元氏

約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と連携させるなど、コミュニケーション環境の充実を図り、品質を高めるためにコードベースレビューのマージを頻繁に行ったという。

Huboardによるチケット管理をGitHubと連携
Huboardによるチケット管理をGitHubと連携

 プロジェクト開始から終了まで、一貫して意識したことについて新田氏は次のような項目をポイントとして上げる。

1)再利用回数を考え、「見える化・集約・蓄積」を行なう。

 二度と使わないドキュメントは意味が無い。コミュニケーションコストと開発における必要性を鑑みながら、情報共有を行なった。また、その際にはGitHubへの集約を図り、コラボレーションツールを適宜活用した。

2)開発サイクルの最大化

 デプロイなどの自動化や朝会での流動的な優先度変更、KPIで上がったTODOの実行を柔軟に行い、フィードバッグのキャッチアップと動き出しを早くすることを心がけた。この際、「何を作るかでなく何をしたいか」を伝えることが肝心。一人で抱え込むのではなく、チーム全体で改善案を考えて共有し、実行することが大切。

3)個人に焦点を当てる

 今までの経験値を最大限に活かす方法を「個人」にフォーカスして考えた。プロジェクトを通じてどんなナレッジがたまるのか、期待と結果を検証することといった視点も踏まえ、個々が「ビジネス」の価値を理解するエンジニアであろうと意識した。

 こうした開発手法について、新田氏は「アジャイルという言い方はしたくない。あくまで型にとらわれることなく、有効と思われる手法を目的に合わせて活用することが大切」と語る。

次のページ
Javaの資産を活かし、移行が容易な「Scala」は、試す価値あり!

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
【デブサミ2015】セッションレポート連載記事一覧

もっと読む

この記事の著者

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8575 2015/04/23 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング