「モダン」で「カジュアル」で
スケーラブルな開発チームを目指して
プロジェクトストーリーvol.1

テクノロジーグループが牽引する“開発体制・手法”の社内改善
ソケッツのエンジニア理想像を追う改革ストーリー

開発スピードの向上や、さらなるサービスの成長を目指し、従来の開発体制や手法の見直しを行う企業が多い中、多数の案件を抱える多忙なソケッツ開発部隊でも新たな挑戦に取り組んでいます。
ソケッツの理想のエンジニア像を求め、そのプロジェクトを牽引する、テクノロジーグループ グループリーダーの東が語ります。

東 孝一/グループリーダー

東 孝一

2011年にソケッツ入社。
LIFE's radioをはじめとしたストリーミングサービスの開発や、ソケッツMSDBを活用したレコメンデーションシステムの企画・開発に携わる。

「テクノロジーで価値ある標準化を行う」

テクノロジーグループは2014年度に発足した組織です。
通常の開発部とは別に発足された意図としては、多忙な案件に携わりながら、開発体制や手法の見直し・改善を並行して行うために、組織・プロジェクトを横断的に関わるポジションで既存・新規案件の実務の中で改革を牽引していくためです。

そんな中、僕が掲げたテクノロジーグループミッションは「テクノロジーで価値ある標準化を行うこと」です。
そもそも「価値ある標準化」とは何かといえば、大きく3つあると考えました。

まず1点目は「仕事の明確化」。
PM、プログラマーなど、各ポジションの業務範囲・責任範囲をきちんと定義し、登場人物の役割を明確にする。次にプロジェクト内容を明確にする。
これは当たり前のことですが、意外とソケッツのプロジェクトにおいて、形骸化しているように感じていました。
明確化されていないことが原因で、それぞれの認識・思いこみによるちょっとした抜け漏れが起きる。その躓きからの事故を防ぐことができます。
テクニカルな何かが必要なわけではなく、これは開発エンジニアだけではなくてプロジェクトに携わるあらゆるポジションの人にも共通で意識として根付かせたいと思いました。

次に「手続きの標準化」です。
経験・能力によるあらゆるバラつきの標準化です。
日ごろからトレーサブルなドキュメンテーションを作る、ただ残すだけでなく、誰が見てもわかりやすい内容でREADMEを残すなどを意識しトレーニングし、UMLの活用などを推進して共通言語化することで、見積や設計の標準化を実現することです。

そして、最後に3つ目「開発手法の標準化」です。
現状の課題点を起点とし、「ソースコード管理」、「デプロイ」、「テスト」の3点を、MUSTとして推進すべきだと感じていました。
具体的には、Gitを全社導入し、Gitフローライクな開発の流れをつくること。これは結果としてコードレビューの目も入ることになりますし、チームでの分担もしやすく、開発スピードアップにもつながります。
デプロイに関してよく問題になるのは、属人性。「デプロイ職人」のみが本番リリースできるという状況ですね。この処理を自動化することで、事故なく誰でも簡単にデプロイができるようにすること。デプロイが簡単になると回数を増やすこともでき、サービスの成長にもつながると考えています。
そして、リファクタリングやテスト駆動開発も視野に入れて、ユニットテストを必須化すること。少なくとも新規開発においては意識していくこと。テストを意識することで、テストできるコードを書くようになる。結果として、見通しがよく、メンテナンスしやすいクラス設計が生まれるという考え方に基づいています。

どう実現していくか

上記3点にまとめた「標準化」をどう実行していくかについては、テクノロジーグループ内で話し合い、とにかく「カジュアル」に実現することが重要だと考えました。

それは、厳格なルールで縛らないのは勿論、ドキュメント化やテンプレート化、標準化といったことそのものを目的にするのでは決してなく、これを使った人が軽快にレールの上を歩けるような(見落としなく、よりよくプロジェクトを遂行できるような)知識体系を作ることを目的とするということです。

「プロジェクトをゴールに導くために必要なこと」を、チェックリスト化し、それらをよりよく行うために、ツールや手法を整理していきます。たとえば見積もりであれば、要求分析を行うためにユースケース図による要件、もしくはユーザーストーリーの洗い出しを行い、依存性や抜け漏れを探したうえで、作業量を見積もっていきます。こうした要求分析は外部設計のインプットにもなりますし、ユースケース駆動設計のような考え方を取り入れれば、そのままクラス設計までのモデリングイテレーションを回し始めることができます。
開発環境は、VagrantやDockerなどを活用すれば、ポータブルで再現可能な環境を用意することができ、新規参画のハードルを下げることができます。意外と忘れがちな、プロジェクト開始時にキックオフをちゃんとやるとか、終了時には振り返りをやるとか、また、打ち上げのお店探しに便利なサイト集なんかも、ツールとしてまとめておきます。その他、テストの自動化や、継続的インテグレーションに向けたあらゆるツールを用意し、プロジェクト開始時に取捨選択できるようにしておきます。プロジェクトは100あれば100通りの事情があると思います。手法を強要するのではなく、うまく参照し、適当に導入するという考え方をもちます。

さて、導入していくにあたり、あわせて開発手法の見直しも必要になります。
ITの開発現場では、複数の会社が関わっていたり、フリーランスのエンジニアがいたり、開発言語や実行環境は複数だったり、デザイン調整が微妙だったり、また、クライアントの要求も複数の場所から発生して、何を優先して進めるのか?についても高度な判断が必要だったりします。
そんな、複雑で変化の激しいビジネス環境に合わせてチームを進化させる「モダンな開発手法」の導入が必須となります。
「モダン」とは論理的、合理的な産業化を代表とする変化のことで、システム開発もそういった「産業」のはずなのですが、世の中では個人のスキルや意識に依存して、アウトプットの品質にバラつきがある“職人的な開発”がまだまだ主流だと聞いていますし、残念ながらまだまだ当社でもそういうことがあります。
研究開発や、学術的なシステム開発、プロトタイピングであればそれも必然かとは思いますが、Webアプリケーションのような継続的なバージョンアップが必要なサービス開発において、職人が作ったもので作り込んで行くのは「前近代的」だと思うので、組織的に責任が持てるアウトプットを出すためにペアプログラミングやGitフローなどのコードレビューを前提としたワークフローを導入することで、組織的なチェック体制を構築し、チームによる開発、きちんと運用できる開発を目指そうと思いました。

情報や価値観の共有

ソケッツのエンジニアはこうありたいよね、という理想像から逆算していくと、前述の「価値ある標準化」に挙がっているような項目をひとつずつ勉強会という形で、開発に携わる社員みんなと考えていく時間が作れたら、ということで、まずは週1ペースで水曜日の18:00からの30分間で毎回テーマを設けて講義の時間を設けることにしました。 テクノロジーグループメンバーは、日々の業務の中で、あらゆるプロジェクトに横断的に携わるので、それぞれのエンジニアと日常的なコミュニケーションをとることができますが、全員ともれなく同じ意識を共有できるかといえば、それはやはりみんなと考えていく時間が必要だと思いました。

聞きたいことが聞ける、言いたいことを言える、プロジェクトの大小に関わらず、開発はチーム活動であるということを意識し、情報や価値観を共有するということは、つまり“見える化”でもあります。
もちろんこの勉強会自体も義務や重荷になるようなものではなく、ざっくばらんにオープンな雰囲気で開催していますが、実際に抗議がはじまると、みんな真剣な表情を見せます。みんな技術に貪欲で、モチベーションが高く、いい意味で「開発を楽しめる」エンジニアがソケッツには揃っているんです。

チャレンジできる環境

僕自身現役のエンジニアですが、ソケッツは新技術をキャッチアップし、システム設計やプロジェクトマネジメントなど積極的に学びたいと思っている多くのエンジニアにとって色々とチャレンジできる環境だと思います。
ソケッツでは、エンジニアとしての高いモチベーション、技術などと合わせて「人を想い、チームを楽しむことができる」というマインドも重要と考えていますので、ひとつのプロジェクトを遂行していく中でも人として、エンジニアとして、切磋琢磨していけると思います。また、逆境やピンチにも感謝するメンタリティを忘れずに挑戦していく集団になりたいですね。

ソケッツでは、これ以外にも目指すこと、取り組みたいこと、やりたいことが山ほどあります。研究開発の部隊が中心となって取り組んでいますが、大規模ログデータをもとにしたディープラーニングなどの機械学習、それらを応用したレコメンデーションや、パーソナライゼーション、人々に出会いや気付きをもたらす新しい技術が、もう目の前にきていると思っています。そんな技術の可能性を僕らは信じていますし、こういう取り組みが、いつかビックリするような新しいサービスにつながっていくと思います。
それに共感して、ともに歩んでいける人、心地いい新たな風を起こしてくれる人、1人でも多くそんな未来の仲間に会いたいと思っています。

Pagetop