マイクロサービスベースのAbemaTV開発プロジェクトが切り開くスクラムとプロジェクト管理の“新境地”:特集:「差別化」をリードする、アジャイル時代のプロジェクト管理(4)
急成長を遂げるインターネットテレビ局「AbemaTV」の開発現場では、マイクロサービスをベースとするスクラム開発とプロジェクト管理の新たな取り組みが進んでいる。
約30人のエンジニアによるスクラム開発で支えられているAbemaTV
サイバーエージェントとテレビ朝日が共同で運営するインターネットテレビ局「AbemaTV」(アベマティーヴィー)は、2016年4月11日に放送を開始して以来、4カ月でスマホアプリのダウンロード数が700万に達した(2016年8月20日時点)。その間にさまざまなコンテンツやサービスの追加がなされ、チャンネルの数も当初の20程度から約30へと増加するなど、急成長を遂げているという。
「マスメディア」への成長を目指してサービスの拡充を図るAbemaTVのシステム開発現場では、マイクロサービスをベースとする最先端のスクラム開発とプロジェクト管理が試みられている。本稿では、その一端を伺えたので、紹介しよう。
AbemaTVの立ち上げに際し、ディレクターの1人としてアジャイル開発の体制整備を担った大崎浩崇氏によると、サイバーエージェントのプロジェクトの中で、最初にマイクロサービスベースのスクラム開発を採用したのは、2016年1月21日にサービスを開始した映像配信プラットフォーム「FRESH! by AbemaTV」(リリース当初は、「AmebaFRESH!」)であったという。
大崎氏は、この「FRESH! by AbemaTV」のプロジェクトでサーバサイドの開発責任者兼スクラムマスターを務めた経験を生かし、AbemaTVのプロジェクトでもスクラム開発の体制構築を担った。
AbemaTVは現在、約200人の体制で事業運営を行っている。そのうち情報システムの開発に携わっているのは、サイバーエージェントの開発局に所属する約30人のエンジニアである。AbemaTVは、iOSやAndroid、Webのアプリとして提供されており、プロジェクトは大きく、iOS、Android、フロントエンド(Web)、サーバサイドのチームに分け、各チームに配置したディレクターが、要件の取りまとめやスケジュール調整を担っている。なお、インフラ担当のエンジニアも他のプロジェクトと兼任で2人が参加している。
大崎氏は2016年6月に開発体制作りの仕事を終え、現在はエンジニアの1人として管理ツールの開発に携わっている。
開発作業を効率化するツール選定のポイント
AbemaTVのスクラム開発やプロジェクト管理は、どのように行われているのだろうか。
AbemaTVでは、スプリントの期間を2週間に設定し、計画ミーティング、開発、レビュー、振り返りのサイクルで開発作業を進めている。開発は基本的にマイクロサービス単位で行っており、コード管理に「GitHub」、課題管理に「JIRA Software」、ドキュメント管理に「esa」、仕様管理に「Confluence」を採用。また、コミュニケーションのためのチャットツールとして「Slack」を使用している。
開発の流れを具体的に見ると、まずエンジニアがコードを更新してGitHub上にプルリクエストを投げると、権限を持つエンジニアが承認して、変更をマスターにマージする。CI(継続的インテグレーション)ツールはCircleCIとJenkinsを使用しており、変更がマスターにマージされるとCI上でDockerのビルドが走り、Dev環境へ自動的にデプロイされる。Dev環境に変更が反映されると、エンジニアはタイミングを見てテストチームにテストを依頼し、問題がなければ、タグを付けて本番環境にデプロイする(図参照)。
AbemaTVの開発プロジェクトでは、これらのツールをどのような理由で選定したのだろうか。大崎氏によると、サイバーエージェントでは開発作業にどのようなツールを選択するかは、基本的に開発現場に任せられている。特にAbemaTVは子会社であり、ライセンス料も別途発生することになるため、さらに裁量の度合いは高くなる。
AbemaTVの開発に使用されているツールと使われ方
- チャットツール:Slack
- コード管理:GitHub
- ドキュメント管理:esa
- 仕様管理:Confluence
- 課題管理:JIRA Software
- CI(継続的インテグレーション):Jenkins、CircleCI
コード管理はサイバーエージェント社内でも一般的に使用されているGitHubを、ドキュメント管理についてもエンジニアの多くがMarkdownに慣れ親しんでいることからesaを採用したという。仕様管理ついては、当初はesaを活用していたが、画面仕様などに画像や図を使用するためにリッチなエディタを必要としたことや、履歴を管理する必要があったことなどから、Confluenceを使うようになった。
課題管理に関しては、従来の開発スタイルではGitHub Issueによるチケット管理で十分に対応できたが、開発者の数が40人とプロジェクトの規模が大きくなったこと、またマイクロサービスベースの開発に移行したことで、リポジトリの数が増加するなど、全体の管理が難しくなり、より高度なチケット管理が必要になったことから、JIRA Softwareを使用することになった。
CIについては、自前でサーバを立てて運用するツールでは、どうしても設定などが属人的になりがちなため、基本的には全体で運用を共通化できるサービスベースのCircleCIを使用している。ただし、パフォーマンスを必要とするアプリのビルドには、自前のサーバで稼働するJenkinsを使っているという。
チャットツールに関しては、2015年夏、サイバーエージェントがアメーバ事業本部全体でSlackを使用すると決定したことを受けて、AbemaTVでもそれに倣う形とした。SlackはChatOpsを実現でき、他ツールと連携しやすいことが採用の決め手となったという。
スクラム開発を教科書通りに進める必要はない――「分報」も行う
AbemaTVでは、スクラム開発を効率化するためにどのような取り組みを行っているのだろうか。
これまで4年以上にわたってスクラムマスターを務めてきた大崎氏は、「スクラムの教科書通りに進める必要はない」と強調する。つまり、2週間のスプリント期間の区切りで、「何をやるのか」「何が起きたか」という認識をきちんとチーム全体で共有することさえできれば、スプリント開発のプロセスは、チームごとに柔軟に変更して構わないとしている。
実際に、AbemaTVのほとんどのチームは、一般的なスクラム開発のプロセスのうち、「計画ミーティング」「レビュー」「振り返り」しか行わない。「ベロシティー(作業量)算出」「朝会(デイリースクラム)」などはできるだけ省略し、スリム化を図っているという。「これらを実践しても、かえって時間とコストの浪費にしかならない」と考えるチームもあったからだ。
チームによっては、朝会などの代わりに、Slackを活用した「分報」と呼ばれる方法でエンジニア同士がつぶやき合うことにより、さらにきめ細かなコミュニケーションをとっている。デザイナーとエンジニアがSlackを使って仕様の内容を日々詰めていき、最終的に仕様が固まった段階でConfluenceでまとめているチームもある。
SlackやConfluenceなどを駆使して日々のコミュニケーションを深めることができれば、仕様の改善を2週間単位ではなく日々効率的に行うことができ、「究極的には、計画ミーティングの必要もなくなる可能性もある」と、大崎氏は指摘する。
このようにAbemaTVでは、スクラム開発をスリム化することによって開発の効率化を進めてきた。しかし、大崎氏は「スリム化を実現できた要因としては、AbemaTVならではの特別な理由がある」と注意を促す。
実のところ、AbemaTVにはプロジェクトの最初の段階から精鋭のエンジニア部隊が投入されており、1人1人の開発技量が高かった。そのため、そもそも認識を共有するためのプロセスを設けなくても、自分たち自身の判断で、適切な情報を適切な人に適切なタイミングで迅速に受け渡すことができたという。だからこそ、スクラム開発のスリム化を実現できたともいえるのだ。
スクラムの起源の1つである「リーン」の哲学を用いた「リーン開発」の提唱者、ポッペンディーク夫妻は、リーン開発の適用については「あるチームには薬でも、それが別のチームにとっては毒となる」ことを指摘し、どのツールからどのようなプラクティスを導き出し、どの程度実践するかは「状況に応じて行われるべきだ」としている(参考:書籍でたどる「リーン」の本質)。スクラムを含むアジャイル開発が、本などに書かれているままの手法を適用してもうまくいかず、特に大規模開発では一層難しくなるといわれる現在、AbemaTVにおける“スクラム開発のスリム化”は、現場が醸成した「アジャイル開発の現実解の1つ」といえるだろう。
横軸のチームを新設し、さらなる効率化を目指す
今後、AbemaTVの開発・運用が軌道に乗り、開発組織の規模が大きくなってくれば、精鋭のエンジニア部隊だけではなく、新卒を含む多様なエンジニアの参加が進むことになる。そうなれば、チーム全体での計画や課題の認識の共有化が必要になって、あらためてベロシティー算出や朝会が必要になってくるかもしれない。
「いずれにせよ、開発効率化のためには、チームごとの状況を十分に考慮し、開発プロセスの変更に柔軟に対応する必要がある」
前述したように、AbemaTVでは、iOS、Android、フロントエンド、サーバサイドといったプロジェクトチームを編成し、開発プロジェクトを管理している。大崎氏によると、AbemaTVでは現在、iOS、Android、Webの「各プラットフォームに共通する機能」を開発するプロジェクト横断型のチームを新たに組織し、開発プロジェクトのさらなる効率化に取り組みつつあるという。共通する機能とは、例えば、「今日の見どころ」や「ランキング」など、“プラットフォームを問わずエンドユーザーの需要が大きいサービス”のことだ。
これまでは、iOS、Android、フロントエンド、それぞれのチームが調整し合いながら開発を進めていたが、仕様の内容をめぐってチーム間で意見の対立が生まれたり、情報の伝達に時間がかかったりする問題があった。新チームでは、既存チームからそれぞれ1〜2人のエンジニアを参加させて構成する。これにより、共通機能の開発や仕様の取りまとめを一元化することで、開発プロジェクト全体の効率化を狙う。
加えて、AbemaTVのチャンネル数増加やサービス拡充に対応する上で、制作・編成チームがコンテンツ管理をより効率化できるよう、コンテンツ管理ツールの改善などにも取り組んでいくという。
AbemaTVは今後も、「インターネットからのマスメディア」を目指して進化を続けていくことになりそうだ。
関連特集:「差別化」をリードする、アジャイル時代のプロジェクト管理
およそ全てのビジネスをITが支えている今、「ビジネス展開にリニアに連動した開発・運用」を実現できるか否かが、「差別化」のカギを握っていると言ってもいいだろう。だが、「ビジネスと開発・運用が連動する」と言葉で言うのは簡単だが、現実はそれほど単純ではない。差別化のためにはスピーディな開発・リリースが大前提。しかしニーズにかなったものでなければ意味がない以上、要件変更にも柔軟に対応できることが求められる。
このためには関係者間の密接かつ正確なコミュニケーションが不可欠だが、立場や観点、使っている言葉の違いなどからすれ違いが生じ、プロジェクトはいつしか足並みが狂い始めるの通例だ。では一体どうすれば、「差別化」に役立つシステムをスピーディかつ柔軟に作れるのだろうか?――プラクティスやツールの効用を生かし切る、「アジャイル時代のプロジェクト管理」の要件を今明らかにする。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- アジャイルってなんなんだ!?
本企画はWeb開発企業『クレイ』におけるアジャイルソフトウェア開発の経験を漫画「ブラックジャックによろしく」の名シーンを挿絵に紹介するドキュメンタリーです。 - 「LEGOブロックで街づくり」 実体験型スクラム入門をのぞいてみた
LEGOブロックを使った街づくりでアジャイル開発の実践を学ぶ半日のコースを見学してみた。効果のほどは? - ガチで5分で分かるITS/BTS&使えるツール6選
課題管理/バグ管理とは、チケット駆動開発とは、概要やチケットの処理フロー、重要性、導入と運用の仕方、バージョン管理や継続的インテグレーションとの連携も含めて5分で解説します。おまけで使えるITS/BTSも6つ紹介。