CyberZに聞く!【後編】すべてのエンジニアがフルスタック、『F.O.X』の開発体制とは?

国内初のスマートフォン広告効果測定プラットフォーム「F.O.X」などを開発するアドテクノロジー事業。後編となる本記事では「F.O.X」の開発体制について伺った。クライアントからの要望や社内メンバーの提案を柔軟に取り入れ実現させていくF.O.Xの開発体制とは、どのようなものだろうか。

前編はこちら:CyberZに聞く!【前編】現場の声から次々と新機能を開発するスマホ広告効果計測ツール『F.O.X』とは

過去の反省を活かし『固定チーム制』を導入

F.O.Xでは全体で15~20名のエンジニアを3、4名ずつのチームに分け、チーム制で開発を行っている。まず、プロダクトオーナーと呼ばれる役割のメンバーが顧客とのヒアリングや市場調査を行い、それを元に実装する機能を決定。開発チームはプロダクトオーナーからの依頼を受け、詳細な仕様や開発の方法、スケジュールなどを決めて実際に機能を作っていく、というのが主なフローだ。

「チームは基本的に固定制です。以前はプロジェクトチーム制で、新しいプロジェクトを起こすときに数名集まって、それが終わるとまた別れて新しいチームになる、という形だったんですが、このやり方だと色々と問題があったんですよ。まず、一人が担当するプロジェクトの数が増えてしまうんです。同時に、そのプロジェクトをやっていた時に組んだメンバーが異動するということが起きると、結果的に一人だけでプロジェクトを担当しなければならないことが多くありました。それで安心して休めないとか、機能拡張をするにも誰々さんじゃなきゃできないとかいうことが多発していたので、これはあまり健全じゃないだろうと。そこで、チームをある程度固定して、チームの担当プロジェクトはチーム内の誰もが扱えるような状況を作ったんです」

また、それぞれのチームには『集計』『計測』などの大まかなテーマが設けられている。さらにチームのうちそのうちの1名ずつが半年から1年に1回のペースで入れ替わるという体制をとっている。これには別テーマの分野にも知識を広げつつ、元のチームや担当外のプロダクトで問題が起きた時にサポートできるようなメンバーを増やす意図があるという。
さらに門田氏は開発体制の特徴について、上下関係がほとんど存在しないことを挙げた。

「実力主義で、思ったことは言ったほうがいい、という気風があると思います。意見ははっきり出したほうが開発スピードも上がってプロダクトのためになるということを、みんな理解している。開発チーム外のことでも、エンジニアがクライエントから直接話を聞くために営業に同行するとか、そういうのを各々自主的にやっているんですよね。それぞれが考えて現場の中で裁量を振ってやっている。なので、逐一誰かに伺いを立てなきゃいけない、というようなこともなく自由に開発できる環境があると思います」

上下関係のない気風の中で固定チーム制を取ることによって、F.O.Xはスピーディーに開発を進める環境を整えている。

全てのエンジニアがフルスタックになる、その教育体制とは

しかし、固定されたチームで開発を行っていくことは簡単ではない。例えばチーム内でフロントやサーバサイド、インフラのように役割が分かれていたとしたら、誰かがチームを外れてしまったときは同様の役割を行うメンバーを補完する必要が生じる。また、問題が生じた際に担当メンバーが不在であれば対応は行えない。

では、F.O.Xにおいて固定チーム制の開発が可能なのはなぜか。それは「すべてのエンジニアがフルスタックである」からだ。

「昔は担当領域でエンジニアの職種を分けていたんですが、1年ほど前にすべて撤廃しました。契機になったのはデータセンターからクラウド(AWS)に移行した時ですね。フルマネージドサービスを活用するには、サーバサイドエンジニアがクラウド上のサービスを理解する必要がありますし、インフラエンジニア側にも、インフラよりももっと技術革新の流れが速いサーバサイドやフロントサイドのところを学べないジレンマがあったので、いっそのことみんなが全部やるようにしようと。そこから全員がフルスタックの体制に変わっていきました」

エンジニアのフルスタック化は、クラウドへ移行することに伴い、インフラエンジニアという役割をなくすことからスタートした。

「元々インフラエンジニアをやっていたメンバーが教育担当になって、8ヶ月ほどかけて他のメンバーに知識をインプットしていきました。AWSへ移行する作業そのものを課題として、インフラエンジニア以外のメンバーでやってもらったんです。その中でもう十分にスキルが身についたメンバーには『認定』みたいな形をとり、今はその認定を受けたメンバーがメンターになって他のメンバーをトレーニングしています。ですから、新しく入ってきた人がAWSをやったことがなくても教えられるような状況になっています」

また、F.O.X開発チームの属しているCyberZ全体では2週間に1度「スキルウェンズデー」という社内勉強会も行っている。スキルウェンズデーでは自由登壇かつ自由なテーマで、自身が業務内/外で興味を持ったことや開発したものなどの成果などを社内に発表することができる。さらに研修サポート制度もあり、業務時間を利用した勉強会への参加や外部研修プログラムの受講など技術向上のための様々な支援を行っている。

こうした背景には次のような狙いがあると門田氏は話す。
「内側(社内)にこもってしまうと新しい技術のキャッチアップが遅れてしまいます。最先端の技術を利用すればいいというものでは必ずしも無いのですが、もっと良い方法があることを知らないことは、エンジニアにとってもプロダクトにとっても損でしかありません。外に目を向けることで最新の技術動向を押さえ、社内にて発表することでプロジェクトへの応用を具体的に説明することができ、スピーディーに最新技術の採用を検討することが可能だと考えています。」

このような、メンバーのスキルアップを第一に考える姿勢が「すべてのエンジニアがフルスタック」という開発チームを実現しているのだ。さらに門田氏は、「F.O.Xのメンバーは、フルスタックのその先にいる」と話す。全てのエンジニアリング領域をこなせるようになったエンジニアたちは、そこからさらに、自分の強みを生かして多様化していくのだという。

「何のためにフルスタックエンジニアになるかというと、プロジェクトの全ての段階を一人でできるようになるためなんですね。そうすると開発だけできればいい、ということではなくなってくる。それでもう一歩先を考えた時に、『お客さんのニーズがわからないとダメだ』って市場動向に意識が向くメンバーもいれば、既存のものを改善することに注力するメンバーもいます。どちらかというとビジネス寄りの方面に興味の矛先を向けていくメンバーが多いですが、それだけではなくて、個々がプロダクトの中で活きることをやっていくようになると思います」

F.O.Xの開発チームの特色は単に全員がフルスタックエンジニアであるということだけではない。フルスタックを可能にする開発メンバーのチャレンジ精神とそれを強く後押しする社内体制こそが、開発を支えているのだ。

「やったことない」は、乗り越えられる

F.O.Xでは現在、開発チームに参加する新たなエンジニアを募集している。門田氏はF.O.Xでエンジニアとして働く利点のひとつとして、同社が膨大な数のトラフィックを扱っていることを挙げた。

「今は秒間数万リクエスト以上あり、これは通常のWebサービス開発ではまず体験できないレベルです。『F.O.X』ではアプリ起動の計測を行っているんですが、特に地震のような大きなニュースが起きた時に、各種メディアアプリがプッシュ通知を出すので、それに伴って起動のデータが一気に『F.O.X』になだれ込んでくるんですよ。トラフィック数でいうと通常の10倍以上にもなります。こういった急激なアクセス増に対応したり、1サービスの範疇をはるかに超えるビッグデータを活用したりする経験ができるのも、F.O.Xならではですね」

F.O.Xに入社したエンジニアは他のメンバーと同様にフルスタックを目指し、専門分野にとらわれず幅広い知識と技術を身に着けていく必要がある。今現在フルスタックではないエンジニアが同社で働くことになったとき、技術力と並び立って重要なのは「気持ち」であると門田氏は言う。

「『興味がない』は一番のネックなんですよね。やりたくない人はどれだけ頑張ってもできない。でも『やったことない』は、乗り越えられると思うんです。やりたい気持ちがあって経験のない人に対しては、周囲のメンバーや会社全体でサポートしてどんどん技術を伸ばしていってもらいたいし、それができる体制を作っています」

現在の開発チームのメンバーのキャリアや志向を尋ねると、門田氏は「万遍ないですね、色々な人がいます」と答えた。前職はSIerやWeb系のスタートアップ、大手企業まで様々で、入社動機も「ビックデータを扱いたい」「大量のトラフィックを処理したい」「少人数のメンバーでサービスに積極的に関わりたい」など多岐にわたっている。その上で、F.O.Xが志望者に対して重視するのは、今後のビジョンだという。

「全エンジニアがフルスタックだというのも、サーバーサイドエンジニアはフロントサイドができないとか、それぞれの担当領域以外のことはできないという状況だったのを、『できない』を取り払って『やるか、やらないか』だけにしたからなんですよね。ですから、重要なのはこれから何をやりたいか。どちらかというと安定というよりはスタートアップ志向で、どんどん新しいことにチャレンジしていきたい、もっともっと事業を大きくしたい、みたいな意欲のある人が、僕たちとマッチするんじゃないかと思います」

エンジニアのチャレンジ精神を受け止め、それがサービスの発展へと繋がる開発体制。フルスタックはエンジニアたちの向上心と環境によって生み出された結果であり、本当に重要なのはその根幹にある意志に他ならない。無尽の意欲を持つエンジニアを、F.O.Xは求めている。

[contact-form-7 404 "Not Found"]