• Home
  • コーポレートブログ Geniee’s BLOG
コーポレートブログ

Geniee’s BLOG

ジーニーは最先端の広告テクノロジーで
顧客の収益を最大化します。

GENIEE SSP開発チームの齋藤です。ジーニーには2019年に新卒入社して、今年度で3年目になります。

SSP開発チームではスクラムを取り入れた開発を始めておよそ一年経ちました。チームでスクラムをどのように取り入れたか、スクラムを取り入れてから何が改善されたか、という点を書いていこうと思います。

齋藤洋平 / 宮城大学(事業構想学部)卒業後、2019年に入社。R&D本部アド・プラットフォーム開発部 SSP開発チーム リーダー。

Contents

1. SSP開発チームの業務と抱えていた課題

2. そもそもスクラムとは

3. スクラムの課題に立ち向かう

4. スクラムを取り入れて改善されたこと

5. まとめ

1. SSP開発チームの業務と抱えていた課題

SSP開発チームでは広告収益を最大化するためのアドプラットフォームであるSSP(Supply Side Platform)の運用や改修、その他収益の全般的な最適化ツールを開発します。

■主な業務

普段はざっくり次のような業務があります。

– 管理画面の開発(React)

– APIやバッチなどサーバーサイドの開発(PHP, Go, Python)

– 広告フォーマットなどのWebクライアントサイドの開発(JavaScript, TypeScript)

– SSPやその周りのシステムの改修(C++)

– その他広告が正常に配信されているかの調査など

■スクラムを取り入れる前のSSP開発チームの課題

スクラムを取り入れる前は、エンジニアの属人化が問題になっていました。いわゆるバックエンド、フロントエンド、というような区切りで開発の担当者が決められ、PMと担当者間で仕様が決まるという体制です。開発を担当した者しか詳細を把握してない場合が多く、問題が起きた時に担当者が既にチームにいない場合は、誰かが一から仕様を調査する必要がありました。

PMと担当者という体制の場合、要件の認識が合っていないことによって開発の遅延が起きることがありました。また、エンジニアの経験や能力次第で開発が遅れてしまうということもしばしばありました。特に最近はほとんどのエンジニアがリモートで勤務しているためコミュニケーションの機会も減りました。これも情報共有においては障害になることがあり、開発の遅れの原因の一つでした。

 2. そもそもスクラムとは

2020年版のスクラムガイドでは、スクラムの定義について次のように述べられています。

> スクラムとは、複雑な問題に対応する適応型のソリューションを通じて、人々、チーム、組織が価値を生み出すための軽量級フレームワークである。

> スクラムのルールは詳細な指示を提供するものではなく、実践者の関係性や相互作用をガイドするものである。

2020-Scrum-Guide-Japanese.pdf スクラムガイド 2020年11月

…このように、抽象的な定義です。

定期的にスクラムガイドは更新されますが、2017年版と比べて2020年版では、スクラムを最小限かつ十分なフレームワークに戻すことを目的とし指示的な表現を減らしてあるようです。「スクラムとは〇〇であるべき」みたいな型に合わせるものではなく、開発チームの体制や業務に合わせて、チームの課題を解決するためにスクラムを取り入れました。

■スクラムを取り入れる

これまでSSP開発チームで抱えていた属人化の課題の解消や、開発の遅延を防ぐ・検知する、コミュニケーションの機会を増やす、といったことを目的にスクラムを取り入れました。機能をどれだけ開発できているか可視化する目的もありました。

■スクラムチーム

スクラムを取り入れてチームの編成が変わりました。PMの要望にチームで応えられるよう、それぞれに得意な領域を持ったメンバーの機能横断型チームとしてスクラムチームを構成しています。

■具体的な運用

AtlassianのJiraというツールを使っています。2週間を1スプリントとし、開始と終了にスプリントプランニング、スプリントレビューを行います。毎日15分から30分程度のデイリースクラムでコミュニケーションをとり、進捗や問題を明らかにしています。

ツールの運用の工夫として、スプリント中の差し込みタスクを記録するためのバックログを事前に作っている点が少し変わっていますが、これは後述します。基本的にはスクラムガイドに従ったフローです。

(工夫としてスプリント中に発生した差し込みを記録するためのバックログを用意している)

3. スクラムの課題に立ち向かう

ガイドラインに従って一般的と思われる形でスクラムを取り入れましたが、スクラムのフレームワークで解決できない課題があります。例えば差し込みタスクは事前のプランニングの外にあるので、こちらへの対応が課題になりました。また、広告フォーマットの仮説検証など、通常の開発とは違う取り組みにも対応が必要でした。

■差し込みタスクへの対応の難しさ

差し込みタスクはスクラムチームの進捗を妨げる障害になるので、基本的には引き受けないようにしますが、どうしても改修や調査をやらねばならない時があります。

差し込みタスクのような予定していない作業が増えると、スプリントで完了させることのできるタスクの量が安定しづらくなり、機能のリリースで価値をもたらすまでの時間が増えてしまいます。

■スプリントごとの差し込みタスクの量を調べてバッファを持つ

スプリントで実行する作業計画を立てる際に、その期間で発生する差し込みタスク分のバックログを作り、差し込みが発生するたびに追加しています。このようにしてスプリント内の差し込みタスクがどの程度あったか記録しておくことで、次回以降のスプリントにバッファを持たせるようにしています。

(差し込みタスクは誰がどれくらい時間を取られたか記録し後から把握できるようにしている)

■遊撃部隊的な動きで対応する

SSP開発チームでは、広告フォーマットの開発やフォーマットのABテストなどの仮説検証を行うこともあります。このような開発は状況に合わせて試行錯誤する作業になるため、どれくらいの開発が必要か事前に予測がしづらいです。

そこで、プランニング時にアサインするタスクを少なめにした遊撃部隊のような要員も含めています。このメンバーはプランニング時点でアサインするタスクをかっちり決めないことで、事前に予測できないタスクに対応します。

このような取り組みで差し込みタスクや仮説検証のタスクに対応可能にし、スクラムの課題に立ち向かう工夫をしています。

4. スクラムを取り入れて改善されたこと

スクラムを取り入れて体制がいくつか改善されました。エンジニア個人の能力の幅を広げる意識と、チームで知識を共有して属人化を防ぐ意識が定着しています。

■チャレンジしやすい環境になった

> スクラムチームは機能横断型で、各スプリントで価値を生み出すために必要なすべてのスキルを備えている。また、自己管理型であり、誰が何を、いつ、どのように行うかをスクラムチーム内で決定する。

2020-Scrum-Guide-Japanese.pdf スクラムガイド 2020年11月

スクラムガイドに従い、機能横断で自己管理型であることを目指しています。

機能横断型のチームになるためには、それぞれ得意な領域を持った他のメンバーとの連携やコミュニケーションが必要です。また、スクラムのメンバーは自己管理型を意識し、作成したバックログの中から自分たちでタスクを選んでいくようにしています。

タスクはリファインメント時に可能な限り分割されています。必要であればペアプログラミングも行いながら開発することで、経験が少ない領域にも小さなタスクから挑戦しやすくなりました。

■属人化の解消をチームで意識するようになった

スクラムを取り入れる前は、いわゆるフロントエンド・バックエンド、といった領域によっておおよその担当者が決まっており、担当者とPMとの間で仕様が決められるという体制でした。これは属人化の原因になっており、ある領域で優秀な一人のエンジニアにばかり任せるという状態が見られました。

スクラムを取り入れてからは、PMからの要望をチームで理解し、バックログに分割しています。スプリントで目標にしたバックログの完了はチームの責任として考え、チーム全体が仕様を理解するための意識が生まれ、属人化の解消に繋がっています。

5. まとめ

僕の所属するSSP開発チームでは、チームや組織・プロダクトの実情に合わせてスクラムを取り入れて運用しています。スクラムを取り入れて改善された点は、エンジニア個人の能力を広げる挑戦がしやすくなったことと、チームで理解して属人化を防ぐ意識ができたことです。開発する機能の遅れにも気が付きやすくなりました。

どうしても発生する差し込みタスクに対しては、一定量の受け入れる準備をしていることや、遊撃要員はある程度自由に動けるようにするような工夫をしています。それ以外はほとんどスクラムガイドに従うようにしており、従来の開発体制と比べて開発フローが改善したと感じています。

スクラムは組織が価値を生み出すためのフレームワークです。チームや開発項目で抱えている問題に向き合い、スプリントごとの振り返りで開発の体制を継続して改善することが重要でしょう。

ここまでが、GENIEE SSP開発チームでスクラムを取り入れた際の工夫や改善された点の紹介でした。スクラムを取り入れた開発の一例として参考になればと思います。

参考

2020-Scrum-Guide-Japanese.pdf スクラムガイド 2020年11月

一緒に働く仲間募集中!

【ジーニーのリクルートサイトはこちら】

https://geniee.co.jp/recruit/

こんにちは、R&D本部 18卒エンジニアの鈴木です。
経営システム情報開発部でリーダーをしています。
今回はタイトルの通り、リーダー業務について紹介しようと思います。
(経営システム情報開発部 鈴木望 2018年新卒でジーニーに入社。早稲田大学理工学部出身)

Contents

1 普段の業務紹介
2 メンバーとリーダーの違いとは
3 これからリーダーになる人へ

1 普段の業務紹介

開発業務
私の所属する経営情報システム開発部では、主に社内の各プロダクトを統合する業務管理ハブの開発を行っています。それに伴い社内の工数削減につながる業務を担うことが多いです。直近の業務だと、財務会計システムのオンプレミスソフトウェアからクラウドSaaSへの移行などを行っていました。
リーダーとは言っても、開発業務自体はメンバーと特に違いはありません。組織運営などがある分、実際に手を動かす時間は減ります。

プロジェクト管理
開発業務の中には、数日で終わるものから要件定義含めて数年かかるものがあります。
開発業務の箇所で紹介した財務会計システムの移行なども全体で1年ほどかかった大きなものでした。
小さな開発でもスケジュールを決めることは必要ですが、プロジェクトが大きくなればなるほどスケジュールの管理が重要になってきます。
また、プロジェクトの中のタスクを持ちつつも、プロジェクト全体の進捗にも意識を向けてPL(※1)のフォローをする必要があります。そのためには、各メンバーのタスク内容を把握して適切にフォローを行えるようにした上で、全体的にプロジェクトを俯瞰できることも重要になります。

組織運営
組織運営と言っても色々あるとは思いますが、今回は「チーム」運営に絞って話そうと思います。その中でも効果がすぐに期待できる会議運営とそれに付随した当事者意識の促進に関して話そうと思います。

各チームで定例的に開催している会議体はいくつかあると思いますが、会議自体に対しての改善を行っていく姿勢を少なくともリーダーは持つ必要があります。つまり自チームの運営に関して当事者としての意識をより強く持つ必要があるということです。また、チームメンバーに対しても当事者としての意識をより強く持たせるように促す必要があります。

今は在宅勤務をしている方も多いと思いますが、その中で当事者としての意識の有無がより顕著に出てきていると思います。例えば、会議に参加しているが裏で別の作業をしていて発言をしない、あるいは会議には参加しているが終始受け身になっているなどです。
前者に関しての問題点は、会議の進行中に別作業をしているので、会議の進行自体に対して何も意識を向けられないこと、また自分が会議に参加している理由を考えて提案を行うところまで行動にできないことです。後者に関しての問題点は、課題感を正確に把握してフィードバックを行うことができないことです。

会議で当事者意識を持ってもらうために、私は例えば、会議の中で、発言のない人に意見を聞いてみる、あるいはタスクを持ってもらうなどして積極的に関わらざるをえない状況を作っています。また全員でフィードバックの会(※2)を設けてチームメンバーに対してお互いに改善のためのフィードバックを与えるようにしたことで、それぞれがチームメンバーをちゃんと意識して業務を行えるようになったと思います。また、それによって意見を出す敷居が下がり、積極的に話し合いが行えるようになったと感じています。

このように、現状の課題を洗い出し、適切なアクションを考えチームに落とし込むことも業務の一つになると思います。

(※1)プロジェクトリーダーのこと。今回は比較的大きなプロジェクトだったので、プロジェクトに関わる各チームで一人ずつ割り当て、担当する各チームのプロジェクト作業を管理する役割を担ってもらいました。
(※2)お互いのメンバーに関して、改善のためのフィードバックを与える会。開発に関わる業務だけでなく、会議進行やslackでのメッセージの送り方など幅広くフィードバックを与えています。

2 メンバーとリーダーの違いとは

視座と価値の出し方
一般的に言われていることだと思いますが、メンバーとリーダーの違いとして視座の違いがあるかと思います。自分の動きだけではなく、メンバー全体の動き、延いてはチームの動きも考える必要があるからです。

リーダーとして動く中で意識していることは、メンバーとマネージャーの間になぜリーダーというポジションがあるのかということです。また、マネージャーや部長と動きの方向性がずれていないかということです。

メンバー全体の動きという点で一例をあげます。
メンバー全体の開発の進捗を、音頭を取ってスケジュール管理していくというのは、一つの重要な役割になるかと思います。メンバー一人ひとりの開発タスクの確認まで細かいことはマネージャーが行う必要はなくリーダーが行い、まとめたものをマネージャーに報告すればいいからです。マネージャーの資源はより上位の組織運営などに使われるべきです。

次に、チームの動きに関して一例をあげます。
チームの動きを考えていく姿勢は確かに重要なものです。しかし、同じ方向を向いていなければリーダー以下のチームの動きとしてはうまくいっているように見えても、より広いグループや部という視点から見ると混乱を招いているだけです。

このように、リーダーとしての動き方の前提になるのは、マネージャーや部長と同じ方向性を持った上で、メンバーとマネージャーの間のブリッジになることです。そのためにもマネージャーとは密にコミュニケーションをとって業務を行っていくことが重要です。
その上で、「どのように」「どれくらいの速さで」チームを取りまとめて動いていけるか、また、「どれくらい」マネージャーや部長の手からメンバーの細かいタスクへの意識を手放せられるかが、リーダーとしての価値の出し方になると思います。

3 これからリーダーになる人へ

いかがでしたか。
これからリーダーになる方や、リーダーではあるがメンバーとの違いを意識できていない方はこの機会に一度、なぜメンバーとマネージャーの間にリーダーという役職があるのか振り返ってみてはいかがでしょうか。これからの働き方のヒントが浮かび上がってくるのではないでしょうか。

一緒に働く仲間募集中!
【ジーニーのリクルートサイトはこちら】
https://geniee.co.jp/recruit/

Back to top