2015年12月11日

チーム開発

Yahoo!ニュースでの複数プロジェクト間の技術分野の取りまとめ方

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

Yahoo! JAPAN Tech Advent Calendar 2015の11日目の記事です。一覧はこちら

ニュース事業本部 開発部の沼田です。

アドベントカレンダーの前日の記事は、Yahoo!ニュースのサービス面についての説明でした。今回は、そのYahoo!ニュースのサービスを作り上げるために、エンジニアがどのような体制で業務を行っているのかという視点で、簡単にYahoo!ニュースの中の人たちの体制を紹介させていただきます。

チーム開発を行っている方々にとってヒントとなることが、この記事の中に少しでもあればいいなと思います。ぜひとも参考にしていただけたらありがたいです。


Yahoo!ニュースエンジニアのおしごと

Yahoo!ニュースにて「開発」と名のつくチームに所属しているエンジニアは58名。プロブラミングやシステム運用を行う人がほとんどですが、中には他社でいうと「技術企画」「システム企画」に該当するようなプログラムを全く書かない人も少しいます。
 

Yahoo!ニュースのエンジニアが管理しているサービスは多岐に渡ります。

といった、さまざまな機能を複数プロジェクトで分担して開発しています。

ニュースをめぐる状況は日々変化するため、その時々の重要施策によって、エンジニアのリソース調整を柔軟に行う必要があります。プロジェクト間の人数調整は頻繁に行われ、施策の優先度により担当プロジェクトを大きく変えるエンジニアもいれば、同時に複数のプロジェクトに所属して両方の仕事をこなすエンジニアもいます。


1つの部署が多くのサービスを担当しているため、エンジニアが担当する業務の幅がとても広いのも特徴です。本人の希望もある程度優先され、得意分野があれば複数のプロジェクトを兼務して広範囲にその能力を発揮できます。

 

開発プロジェクトのなかみ(PMとTL)

ニュース事業本部のメンバーは、エンジニアもそれ以外の職種も、どこかしら(あるいは複数)のプロジェクトに所属しています。エンジニアが所属しているプロジェクトは全部で14あり、各プロジェクトの人数はそれぞれで異なります。

各プロジェクトには、PM(Project Manager)とTL(Technical Leader)が1人ずついます。PMがプロジェクトとしての意思決定を行い、TLが技術面の責任者としてシステムアーキテクチャの決定や各種技術選定などを行います。

PM(Project Manager)とは

PMはそのプロジェクトの意思決定責任者です。「PM」はYahoo! JAPANの全サービスにて使われている役職名ですので、全てのプロジェクトにPMがいます。(当たり前ですが。)プロジェクトの施策決定と、他プロジェクトや他サービスとの業務調整を行っています。

Yahoo!ニュースのプロジェクト運営にはビジネス面の判断が必要なので、PMは開発業務を行わず、主にビジネス面の調査などを行うことが多いです。とはいえ、プロジェクトによっては機械学習など技術的な判断が重要視されるケースもあります。そのプロジェクトのPMは経歴がさまざまです。前職が新聞記者でソースコードを一行も読んだことがない人もいれば、エンジニア出身でマネジメントを行いつつgithub上でコードレビューをしているPMもいたりします。

TL(Technical Leader)とは

TLはそのプロジェクトの技術責任者です。「TL」はYahoo!ニュースのみで置かれている役職なので、Yahoo!検索やヤフオク!などニュース以外のサービスには「TL」という名前の役職はありません。このように各サービスで臨機応変に役職を置いてもいいことになっているところが、Yahoo! JAPANの面白いところです。

多くのPMが開発業務から離れているため、開発面ではTLの決定が重要な意味を持ちます。「どんなアーキテクチャにするか」「どんな言語/フレームワークを使うか」「CI/CDをどう進めるか」「負荷検証はどのように行うか」……などなど、そのプロジェクト全体を左右する決定はTLが行います。

「どのエンジニアにどの開発業務をアサインするか」や「アジャイルを採用するかどうか」など、マネジメントと開発業務の両方の領域にまたがっている決定は、PMだったり、TLだったり、PMとTLが相談したり、そのプロジェクトによってさまざまです。Yahoo!ニュース全体としては堅苦しい業務ルールは設けておらず、各プロジェクトにて自由にやり方を決められるような体制になっています。

ラインのリーダー?

開発業務を遂行する「プロジェクト」と人材開発・人事評価を行う「ライン」とのマトリックス組織をYahoo!ニュースでは採用しています。TLはYahoo!ニュース独自で「プロジェクト」にて置いている役職です。人事上の「ライン」の制度ではありません。人事上の管理職にあたるのは「ラインのリーダー」と呼ばれる別の役職です。業務の遂行と人材開発を「プロジェクト」と「ライン」で分担して行い、多くの視点により強い組織を作ることがマトリックス組織の狙いです。

プロジェクトの技術的決定と人事評価を分担するメリットとしては、下記のようなものがあります。

  • リーダーがコーチングを行いメンバーを下支えし、TLがプレイヤーとしてメンバーを引っ張ることで、総合的にメンバーの能力が上がる。
  • メンバーが人事評価を気にすることなく、TLに対して自由にプロジェクトの技術ジャッジに意見することができる。
  • TLにもリーダーにも(場合によってはPMにも)エンジニアから相談ができるため、メンバーの不満点を素早くキャッチアップできる。

分担するデメリットは、TLとリーダーのそれぞれの方針が微妙に違ってしまうとメンバーがどちらを頼るべきか困ってしまうことです。それを防ぐためにTLとリーダーの認識合わせを密に行っているのはもちろんのこと、プロジェクトの人数によってはTLとリーダーを同じ人が兼務することもあります。

 

TL会(Technical Leader Meeting)

各プロジェクトの自由度が高いとはいえ、統一感を持たずにバラバラに業務を行ってしまうと、Yahoo!ニュースサービス全体で見たときに食い違いが起きてしまいます。Yahoo!ニュース全体で決めるべき事案については、PM的領域の場合は「PM会」、TL的領域の場合は「TL会」という週一回の会議にて決められます。今回はTechBlogですのでTL会のみについて説明します。

TL会のやりかた

TL会の参加者は全プロジェクトTLと、開発部長(ラインリーダーの1つ上の役職でニュース内に2人)です。

議題によっては参加者が増えることもあります。各TLが話し合いたいことを自由に議題として挙げることができます。議題が1つも挙がらないときには休会となります。議題がある場合は、90分を最長時間とし結論が出るまで話し合いを行います。

TLが必要だと思えばどのような議題でも挙げられるため、さまざまな技術的な話題についてTL会で議論されます。
「Yahoo! JAPANの開発全体方針についてYahoo!ニュースとしてどのように進めていくべきか」「Twitterの仕様変更について対応をどうするか」「脆弱性についての対応が漏れているプロジェクトはないか」などなど。議論を目的としないものでも、全プロジェクトのエンジニアに知っておいてほしいこと(技術的Tipsなど)についてのシェアなどが行われることもあります。

TL会終了後、議事録はYahoo!ニュースエンジニア全体に共有されます。そのため、TL以外のエンジニアもTL会の内容を把握できます。各プロジェクトの朝会や定例ミーティングの時に、TLからプロジェクトメンバーにTL会の詳細について説明するプロジェクトもあります。議事録に書ききれなかった詳細な話などについてもプロジェクトメンバーに共有されるように各TLが気をつけています。 

TL会でやっていること

自由発議による議題以外でも、時期によってはTL会の中で毎週行っていた試みもあります。

  • 自己紹介コーナー
    各TLが当番制で1人ずつ今まで経験した開発業務について語り、成功例と反省点などを全TLにシェアするコーナー。
    小学生の学級会みたいですが、こういう当たり前のことをするのが大事。プロジェクトを超えてそれぞれのパーソナリティや得意分野のアピールを行うことによって、プロジェクト間のいざこざが起きそうな時にも、TLたち全員がまるで1チームのように相互ヘルプできる雰囲気を作れています。
  • 各プロジェクトシステム確認会
    各TLが当番制で1人ずつ自分が担当しているシステムの細部について説明することで、他プロジェクトの状況を学ぶコーナー。
  • 次世代システムの検討会
    Yahoo!ニュースのシステムの中で特にレガシーになってしまったシステムについて、どのように作り変えていけばいいかを検討する会。
    「なぜレガシーになってしまったのか」「技術選定で気をつけるべきポイントはどこか」などの派生議題について、毎週1つずつ議論。

大きな話から小さな話まで、さまざまな議題について顔を合わせて話し合うことによって、各プロジェクトの開発状況を全体に共有することが可能となり、Yahoo!ニュース全体にとって最適な開発を行うことにつながっています。

TLじゃないエンジニアのつながり

TLじゃないエンジニアをつなぐ試みもいくつかあります。

社内チャットツール「Yahoo!ニュースエンジニアの部屋」

社内チャットツール上には「Yahoo!ニュースエンジニアの部屋」があり、Yahoo!ニュースの全エンジニアが入室しています。代表的な使われ方としては、システム障害時の緊急的なやりとり、技術的なTipsや資料のゆるーいシェア、「だれか◯◯について詳しい方いますか?」と問いかけて他のエンジニアに教えてもらう、などなど。

書き込まれる内容はエンジニアリングに関することがほとんどですが、エンジニア以外の方も自由に部屋に入ることができ、ディレクターや編集者なども話題に参加することがあります。ニュース以外のエンジニアの方も何名か入室しています。「Yahoo!ニュースの技術に興味がある人」であれば誰でも入室でき、垣根がない状態での有効な情報共有ができています。

ニュース技術勉強会 

「ニュース技術勉強会」を毎週開催しており、1〜2人ずつ何かしらの発表をします。勉強会のネタは「自分が担当しているプロジェクトのシステムや施策の説明」「CI/CD導入方法などのノウハウ共有」「開発業務での失敗点の共有」「最新技術の説明」「社外セミナーの内容報告」などです。

この勉強会の時間は全エンジニアが予定を空けるようにしているため、上記の目的以外の用途で使われることもあります。ビジネス職の方をお呼びして業務内容をうかがったり、Yahoo!ニュース以外のサービスのノウハウを共有していただいたりします。

勉強会への参加は強制ではなく、事前に展開される勉強会の内容を確認した上で、各自で参加するかどうかを自由に決めることができます。


まとめ

この体制のいいところ

この記事で触れたYahoo!ニュースエンジニア体制の良いところを書き出してみると、

  • エンジニアが担当する業務の幅が広く、本人の希望や得意分野が発揮できる。
  • プロジェクトによって自由に業務のやり方を決められる。
  • プロジェクト内でPMとTLを分けているため、各専門分野を生かしたジャッジができる。
  • TLとリーダーを分けているため、技術的な意思決定と人事評価が分担されており、メンバーの気ままな意見が集まりやすい。
  • エンジニアが不満を持った時も、PM、TL、リーダーとさまざまな相談先があるため、素早いキャッチアップができる。
  • TL会によってサービス全体がまるで1チームのように相互ヘルプできる雰囲気を作れている。
  • TL会によって各プロジェクトの開発状況の相互理解ができており、全体にとって最適な開発を行うことにつながっている。
  • なんでも話せる社内チャットツール「Yahoo!ニュースエンジニアの部屋」がある。
  • ニュース技術勉強会で知識共有ができている。

となりますでしょうか。

1つ1つを見ると簡単な工夫でどの企業でもできることのようですが、そういった当たり前のことを当たり前のようにやり続けて、プロジェクト運営の改善を日々行い、エンジニアからの不満が少ない雰囲気を作っていくことが大切だと考えています。

気をつけないといけないところ

TL制度に代表されるように、Yahoo!ニュースではプロジェクト1つ1つが個別に独立して動けるような体制をとっています。全体をしばるルールをなるべく少なくしてプロジェクトの自由度を高くするということは、サービス全体のコントロールが効きにくくなるということでもあります。

「これはTL会や社内チャットで共有しなくてもいいだろう」と1つのプロジェクトで判断されリリースされたものが、世に出た瞬間に他のプロジェクトのシステムにて思わぬ悪影響を及ぼすこともあります。そういった悪影響を完全に防ぐためには「ホゲホゲの場合にはフガフガの場所でピヨピヨ形式で承認を取らなければいけない」というルールを課す解決方法もあります。しかし、それをしてしまうと開発スピードが落ちてしまいます。したがって、業務フローの細かいルールは設定しません。

プロジェクト間での食い違いによって問題が起こりそうな時には、各TLや各エンジニアの「Yahoo!ニュース全体のことを考える」という意識によってトラブルを改善していきたいと思っています。TL会や社内チャットという「共有の場」の使い方は自由なので、それをどう使えば物事がうまく進むのか、1人1人が考えて行動することが求められています。 

さいごに

TL制度が始まったのは2013年。そこからさまざまな試みがあり、今のような形になりました。まだまだ完全ではなく、気をつけなければいけないこともたくさんあります。少しずつ改善していきたいと思います。

冒頭にも書きましたが、この記事がチーム開発を行っている方々のちょっとしたヒントになれば幸いです。最後まで読んでいただきありがとうございました。



追記:
Yahoo!ニュースではエンジニアの募集も行っています。ともに開発を行う仲間をもっと増やしたいと思っておりますので、ご興味あれば下記記事もご覧いただけるとありがたいです。
Yahoo!ニュース・エンジニア(正社員/中途採用)の募集を開始しました

 

 

Yahoo! JAPANでは情報技術を駆使して人々や社会の課題を一緒に解決していける方を募集しています。詳しくは採用情報をご覧ください。

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