チームを越えた課題解決に向け、アプリの全社横断的組織を立ち上げ
多くの開発型企業にとって、企業の成長にともなう組織内のタテ割り化と、その弊害をいかに克服するかは、最も重要な課題のひとつだ。ヤフー株式会社では、その克服のために「アプリの全社横断組織」という新たな試みにチャレンジしたと鎌倉氏は語る。
「Yahoo! JAPANでは数多くのサービスアプリを提供しており、現在の提供サービスは100本以上。AndroidとiOSのネイティブアプリも、公開中のもので50本以上に上ります。これらの開発チームはサービスごとに独立していて、運用なども含めた多くの権限までが移譲されています。そのためどんなアプリを開発するか、どんな機能を実装するか、開発手法や品質保証についても各自で自由に決められるようになっています」
変化の激しいWebサービスにとって、こうした自律的に動ける組織は、柔軟かつ状況に応じた判断の下でスピーディーな開発を可能にしてくれる。鎌倉氏自ら、「当社風に言うと『爆速開発』ができる」と話す、まさにヤフーにふさわしい、アジャイルな組織形態だ。
だが、一方ではデメリットもある。せっかくのノウハウが、各サービスのチーム内に閉じてしまい、あちこちで同じような課題に突き当たってしまうといったケースが発生する。ビジネスレベルでは事業部同士の連携があっても、肝心の開発現場では他のサービス担当チームがどのように開発しているのかが見えにくい。この結果、せっかくの貴重なノウハウが共有されにくく、それぞれのチームで同じ課題に悩む非効率な状況が生まれていた。
「当社には優れたエンジニアが多く在籍しているのに、このままではもったいないと感じていました。そこでアプリの全社横断的組織を立ち上げて、問題の解決に当たることになり、アプリ統括部という組織ができました」
各チームと兼務のメンバー同士で、現場感あふれる課題解決が可能に
新設されたアプリ統括部は各サービスとは別の独立組織で、業務の課題を解決する「アプリワーキンググループ」と、実際の開発がメインの「SDKコア」の2つのグループで構成されている。前者は、社内からのさまざまなアプリに関する相談を取りまとめる。後者はそれらの課題を解決する、いわば「実装部隊」だ。
またアプリ統括部は、各サービスのチームから1人ずつ選出された人物で構成されている。つまり、メンバーは専任者の鎌倉氏を除くと、全員開発者との兼務なのだ。メンバーがそれぞれに自分たちの現場での課題を出し合い、ヤフーのアプリ全体の問題として、協力しながら解決していく仕組みとしては必然でありベストと言える。
現在、兼務で参加しているメンバーの所属サービスは、Yahoo!ショッピングやヤフオク!、Yahoo!路線情報、Yahoo!地図、GYAO!など。さらにIDチームや広告チームなど、プラットフォームの担当者も加わっている。
さらに、社内で「黒帯」と呼ばれるエキスパートも参加している。ヤフーには「黒帯制度」と呼ばれるものがある。「該当分野について突出した知識とスキルを持っている第一人者」と認められた人が「黒帯」の称号を与えられるのだ。
「黒帯の方が加わってくれることで、アプリ開発で悩んだときにもトップレベルの人にすぐに聞けるので、スピーディーに開発が進められます。また全社横断組織で何かプロダクトを作るときなども、一定以上の品質水準を保持できるのは大きなメリットです」
ここまで見てわかるように、アプリ統括部のユニークな点は、独立した組織でありながら、主務のメンバーだけでなく現場の課題感を熟知している兼務者で構成されていること。その結果、いわゆるトップダウンではなく、会社全体で一丸となって課題解決を図れることにある。
ペアプログラミングがもたらした、ノウハウの共有や開発効率アップ
アプリ統括部における実際の開発作業は、基本的に2人1組のいわゆるペアプログラミングで行われる。「ペアプロエリア」という専用の場所に、ペアで作業しやすいよう、スタンディングデスクやディスプレイ、キーボードなど専用の機器が2台ずつ用意されている。ヤフーには開発拠点が大阪や名古屋などにもあり、リモートでペア作業を行うこともあるという。
「2人1組で作業するので、スキルの底上げや属人化を防げるメリットがあります。単一のサービス内だけで開発していると気が付けないことも、アプリ統括部で一緒に作業することで、いろいろなノウハウや気づきを得られる点も見逃せません。作業によっては黒帯の人とも組めるので、非常に効率よくスキルアップできます」
予想以上に、このペアプログラミングによる開発の効果は大きい。2人1組で同じ作業をするので一見効率が悪そうに見えるが、心配無用だと鎌倉氏は言う。
「たしかにテスト駆動で開発するので、テストを書く時間の分、実装時間は長くなります。しかし結合テストの時間が短くなるので、結果的にスケジュール通りに進むようになっています。また複数名で並列で開発するのではなく、1つずつタスクを消化するので、コンフリクトも起きにくくなります」
あるプロジェクトを例に見てみると、ペアプログラミングに移行してから、リリース数が過去と比較して約2倍に増加。一方、残業時間は約20%減少している。
また兼務なので、メンバーはアプリ統括部での活動は、別途時間を確保して行うことになる。ここでは「週2回はまとまった時間を取って、全社のために活動する」というルールを設けている。具体的には「2時間×週2回」として、1週間の約10%をあてている。
「問い合わせページ」の立ち上げや、アプリ提供で活性化をすすめる
アプリ統括部に参加している兼務のメンバーは、各自のサービス開発で出てきた課題を持ち寄り、ここで話し合って解決する。これは「主務だけでなく、兼務でやっているからこそ得られるメリット」だと鎌倉氏は強調する。
場合によっては部内だけで解決できない難題もある。その場合は、詳しい人を探す必要があるが、会社組織が巨大なので、誰に聞けばいいのかわからないことも珍しくない。
「そこで、社内ネット―ワーク内にアプリワーキンググループへの問い合わせ専用ページを設けました。困ったときはとりあえずここに聞けば、手がかりが得られるという環境を提供するのがねらいです」
社内のSlackなどで尋ねることもできるが、チャンネルの参加人数が多く、しかも1000~2000人単位のチャンネルに、いかにも初心者の質問等は気後れする。その点、この問い合わせページなら気楽に聞けるのがいい。問い合わせ内容はJIRAで管理しているので、流れてしまっても後から探すことができる。また相談内容は、技術に関することだけでなく、ビジネス系の話題でもアプリに関することなら何でも受け付けている。
また最近では、アプリの課題のフィードバックを活性化するために、数行の実装でアプリ内からフィードバックを投稿できる「AppFeedback SDK」を、アプリ統括部の兼務の時間で開発した。
「もともと社内で使われていた機能をベースにしたもので、アプリを使っていて気が付いた点を送ることや、バグを見つけてスクリーンショットを撮影し、Slackにアップロードすることが簡単にできます。リリース後はエンジニア以外の人たちからも、いろいろなフィードバックがもらえるようになりました」
まとめとして鎌倉氏は、今回の取り組みで得られた以下の3つのメリットを挙げる。
- 新しい知識を会社全体で共有しやすくなった。
- 調査コストを減らし、横連携によって新しい機能を実装可能になった。
- サービスが忙しくても、全社横断組織で助け合いながら開発できる企業組織になった。
最後に鎌倉氏は、トップダウンだけではなく横断的組織で一緒に開発・成長していくのが非常に重要である点を示唆。「もし今回の発表で参考になることがあれば、ぜひ皆さんの組織でも一度トライしてみてはいかがでしょう」と力強く呼びかけ、セッションを締めくくった。
お問い合わせ
Yahoo! JAPAN