効率的にプロジェクトを管理、またソフトウェアの開発を進めるため、サイバーエージェントではスクラム開発の導入を進めています。今回は、サイバーエージェント社内でアジャイル開発に率先して取り組む、アメーバ事業本部 メディアクリエイティブDiv スマートフォンコミュニティグループの寺本隆彦氏と、同スマートフォンコミュニティグループの渡辺雄作氏にお話を伺いました。
サイバーエージェントが抱えるプロジェクト管理の課題
現在サイバーエージェントが進めるプロジェクトの1つに、スマートフォン向けプラットフォーム事業である「デカグラフ」があります。これは多数の外部サービスのアカウントを利用できる「コネクト」、ユーザ同士がコミュニケーションするための場を多数提供する「コミュニティプラットフォーム」、そして外部のゲーム会社によるコンテンツ配信を可能にする「ゲームのオープン化」の3つのキーワードを軸に進められている事業戦略で、これに合わせて100個ものスマートフォンアプリを提供する予定となっています。
このデカグラフの枠組みの中で提供するスマートフォンアプリの開発を含め、サイバーエージェントでは現在数多くのプロジェクトが進められています。こうした中で課題として浮かび上がってきたのが「統一的なプロジェクト管理手法が存在しないこと」だと渡辺氏は説明します。
「これまではプロジェクト管理の手法やプロセスについて全社的に決まった方法はなく、チームごとにそれぞれのやり方で開発するという形になっていました。従来はそれでも特に問題はなかったのですが、積極的に採用を進め、エンジニアの人数が増えるにつれ、どのように開発を進めるべきか戸惑いを感じるメンバーも出てきたのです。またプロジェクトを進めていても、たとえばリリース日をいつにするのかといったことを考えるときの判断基準がないことも課題でした。以前であれば“ツーカー”で決めていたところがあったのですが、入社したばかりの人にとってはやはり難しい。そうした背景から、何らかのプロセスを導入すべきではないかということになったわけです」(渡辺氏)
さらに寺本氏は次のように話を続けました。
「運用フェーズに入っているプロジェクトであれば、機能を追加するといっても小規模な開発で済むため、仰々しいプロセスを持ち出さなくても特に問題はありませんでした。しかし、デカグラフという構想により、スマートフォン向けのアプリを新たに開発するプロジェクトが多数立ち上がることになりました。サービスの新規開発には10~20人前後と多くのメンバーが関わることになるほか、開発期間も4ヵ月、あるいは5ヵ月と長いスパンになります。さらに、メンバーの中には入社したばかりで、サイバーエージェント流のプロジェクトの進め方への理解が浅いメンバーもいます。こうした状況の中でプロジェクトを適切に進めていくために、共通の軸となるプロセスや開発手法を取り入れようという動きが広まっている状況です」(寺本氏)
100人以上が参加したスクラム開発の勉強会
そうした中、サイバーエージェント社内で注目されつつあるのが「アジャイルソフトウェア開発」です。2012年8月23日には渡辺氏と寺本氏が中心となって「アジャイルサムライ道場」と題した勉強会を実施、100名を超える人々が参加しました。
「手探りでプロジェクトを進めている現状を改善するうえで、その“よりどころ”となるものが欲しい、あるいは改善を進めるうえでの“ものさし”となるものが知りたいと考えている人は多かったんですね。そのよりどころやものさしとなるものとして、アジャイルの開発手法の1つである『スクラム開発』について勉強会を開こうということになりました」(渡辺氏)
スクラム開発はアジャイル開発手法の1つで、プロジェクトを管理するためのフレームワークです。実際に開発を行う「チーム」とチーム内外の調整役となる「スクラムマスター」、そしてプロジェクトの総責任者である「プロダクトオーナー」から構成される体制で、「スプリント」と呼ばれる開発期間を何度も繰り返して開発を行います。
従来一般的だったウォーターフォール型のソフトウェア開発との大きな違いとして、スプリントごとに実際に動作するソフトウェアを成果物として提出することが挙げられます。これにより、実際に動くソフトウェアを使ってプロジェクトの進捗を把握することが可能となるわけです。
このスクラム開発のメリットについて、渡辺氏と寺本氏は次のように話しました。
「個人的には、そのプロジェクトの状態が一発で見えることが一番のメリットだと思います。たとえば、スケジュールについてエンジニアに問い合わせたとき、『オンスケジュール(スケジュール通り)です』という答えが返ってきたとします。でも、オンスケジュールという言葉には人によって幅があり、実は結構厳しい状態かもしれないわけです。ただ、スクラム開発などのフレームワークでプロジェクトを管理していると、進捗状況が数値として見えるのでブレをなくせるんですね。そのため、メンバーもマネージャーもスケジュールの状況がすぐに把握できる。こういった点は大きなメリットだと感じています」(渡辺氏)
「スケジュールが可視化されるのは本当にいいところですね。たとえばスケジュールが遅延していても、早い段階でこのままではプロジェクトが期日どおりに終わらないことがわかれば、必要な対策を打つことで立て直せますよね。これまでは最後まで期日どおりにリリースできるかどうかがわからず、開発している側としても『何とかします』としか言えない状況に陥りがちでした。しかし、スクラム開発の手法なら、自分たちのチームで何度かスプリントを回してみて、その結果がベロシティとして現れるので嘘がつけない。それによって、スケジュールの見積りが自然と適正になっていくところが大きなポイントではないでしょうか」(寺本氏)
要件の修正に寛容なアジャイル開発
アジャイルソフトウェア開発、あるいはアジャイルな開発手法の1つであるスクラム開発にはさまざまな特長がありますが、その中でも特に大きいのが「適応型」と呼ばれる開発スタイルです。ウォーターフォール型のソフトウェア開発では、ソフトウェアが備えるべき機能や必要となる性能をプロジェクト開始時に事前に定義し(要件定義)、その内容に従って設計や実装へと進んでいきます。こうしたプロジェクト管理手法の問題は、プロジェクトがある程度進んだ時点で要件が変更されると、大きな手戻りが発生する可能性がある点です。特に長期間のプロジェクトとなった場合、環境の変化によって要件も変わるということは十分に考えられるでしょう。ウォーターフォール型のソフトウェア開発では、こうした変更に対応するのは容易ではありません。
これに対してアジャイルソフトウェア開発は「要件の正確な予測は不可能」という前提に立ち、そのときどきの状況変化に適切に対応するという考え方でプロジェクトを進めます。ウォーターフォールでの要件変更は、スムースなプロジェクト進行を阻害する要因ととらえられますが、アジャイルソフトウェア開発であればソフトウェアの完成度を高めるために必要なことだと変更を受け入れます。こうした特徴は、サイバーエージェントが提供しているようなサービスの開発にも向いていると寺本氏は説明します。
「これまで、開発の終盤に仕様が変わるというのはけっして珍しくありませんでした。たとえば、開発したサービスを実機で触ってみたら、いまいちおもしろくなかったといったケースです。また開発終盤で、テストのためにそれぞれが開発したモジュールを組み合わせてみたら、エンジニア同士の認識に齟齬(そご)があり、うまく動かないといったこともあります。こういったことが開発の終盤で起こると、当然ながら大きな手戻りが発生し、その結果プロジェクトが遅延する原因になってしまうわけです。しかし、アジャイルなスクラム開発では最も重要な部分、具体的にはおもしろさの肝となる機能や技術的にリスクの高いモジュールなど優先順位の高いところから開発します。このため、開発の終盤になって仕様が大きく変わったり、あるいは根幹的なバグが露呈するといったリスクを極力抑えられます。このメリットは非常に大きいですね」(寺本氏)
なお、渡辺氏と寺本氏は自身のチーム内ですでにスクラム開発を取り入れていると言い、これによってエンジニアとして気持ちよく働けるようになったと言います。開発手法を変えることで、なぜ気持ち良く働けるのでしょうか。
「今までと違うのは、毎日小さな達成感があるんですよね。3ヵ月間開発してリリースして始めて『やった!』ということではなく、スクラム開発のスプリントなら2週間に1度といった割合で達成感が得られるわけです。また、スクラム開発ではタスクが細分化されるので、具体的な進捗を可視化できる。こういった達成感が得られるところも、アジャイルのメリットではないでしょうか」(渡辺氏)
「長いプロジェクトでも、スプリントという単位で区切って働けるので、メリハリを付けて働けるのがスクラム開発のよいところだと思います。安心感も違いますね。一所懸命開発しているけれど、最後のテストで動かないんじゃないかっていう不安ってあると思うんですよ。多分大丈夫だと思いつつ、従来の開発手法ではその不安を完全に払拭できない。スクラム開発なら、実際に動いているソフトウェアが手元にあるわけです。その違いは大きいですよね」(寺本氏)
アジャイル開発を成功させるためのポイント
このようにメリットの多いアジャイル開発ですが、一方で実際にチャレンジしてみたが失敗したという話を聞くことも少なくありません。そこで、アジャイルでの開発を成功させるためのポイントを2人に聞いたところ、次のような答えが返ってきました。
「私が大切だと思うのは、やり続けるということですね。アジャイルも専門スキルなので、1回や2回やっただけでは身につかないと思うんです。たとえ失敗してもやり続けて、これは違うのか、あれは違うのかと経験を積み、工夫を重ねてやっと身につくものだと思います。まずは何度も繰り返しチャレンジすることが重要ではないでしょうか」(渡辺氏)
「まず1つはエンジニア以外の人たちの理解も必要だということです。チーム内外を含め、プロジェクトに関連する人たちに理解してもらわなければ、アジャイルのメリットを活かすことは難しいと思います。2つ目はチーム作りですね。アジャイルでうまく開発を進めていくためには、相互に助け合えるチームを作ることが重要ではないかと考えています。個人の生産性ではなく、チームの生産性が大切なんだという認識で、お互いに助け合って開発を進める。たとえば自分のところが終わっていて、別のエンジニアのタスクが終わっていないのであれば助けてあげる。そういった姿勢で臨むべきだと考えています。反対に絶対にやってはいけないのは、個人の生産性を競わせることですね。これをやると、チーム内で助け合うのではなく、自分のポイントを稼ぐことが目的になってしまうためです。自分たちのチームの中でも、その点はすごく気をつけています」(寺本氏)
なおサイバーエージェントでは、スクラム開発の導入が全社的な取り組みになりつつあるとのこと。同社におけるスクラム開発の伝道師として、渡辺氏と寺本氏が担う役割は大きくなりそうです。
- サイバーエージェント公式エンジニアブログ
- URL:http://ameblo.jp/principia-ca
エンジニアの生の声を週替わりでお届け中!