見出し画像

法人40万社、ユーザー95万人を抱える転職サービス「ミイダス」のリファクタリングに関して / ミイダス株式会社

この記事は、イベント 【PERSOL(パーソル)グループ Tech Talk #3 - 技術負債との向き合い方 - 】を開催しました。 の発表内容です。

ミイダスの眞下です。ミイダスで開発組織の運営とかプロジェクトの進行管理、フロントエンドのEMみたいなことをやっています。ミイダスはリクルーティングがメインのサービスになります。また他の新規事業も色々と進めていますが、詳細はホームページでご確認ください。

今回のイベントはリファクタリングがテーマですが、私自身ここ2-3年実装から遠ざかっているので鮮度のいい具体的な事例で話すことがないなと思いました。

そこで今回は具体的な事例の話ではなく、開発組織としてリファクタリングとどういう風に向き合って進めているかみたいな話をしようかなと思っています。
個人的には全部「バランス」という言葉に尽きるかなと思っています。結論は以上です。と終わってしまうんですけど(笑)もう少し詳しく何がバランスなのかっていうところについてご紹介したいと思います。

本当に全てにおいてバランスとしか言いようがなくて。
何らかのサービスなりプロダクトをやってる以上は利益がなくちゃ存続できません。そういう意味でビジネスからの要求みたいなものとの間にもバランスは必要です。
またリファクタリングをするにしても色々な事情がある中で限られたリソースをどう使うかとか、どの部分をやるのかとかが重要です。あとはいつやるのかとかっていうのも解消すべきことの深刻度や工数だったり、開発計画とバランスを取ってとか。場合によってはエンジニアの欲求だったり、モチベーションみたいなところにも影響があったりするんです。
本当にそういう意味で色んなこととのバランスを取って、いつ・何を・どうやるか決めていくかが大事です。

そんな中でミイダスがどのようにやっているかを少しご紹介しようと思います。

よくある悩みとしては「上司やビジネス側からなかなか理解を得られない」「実施を承認してもらえない」などがあるかなと思います。
これに関して言うと、ミイダスでは月々のエンジニアの工数全体の30%を保守だったりリファクタリングで使うことを事前にボスと握っています。
基本的にはこの30%の中で、システム的には必要だけど売上やKPIには直結しないことを割とできる状態にはなっています。

やっていることをブラックボックスにはしていないんですけど、この数値の中でリソースを動かすのであればビジネス側もやっていることに対して深く立ち入って来ることはありません。
もちろんその分責任は伴います。この握りっていうのが簡単にできたわけではなくて、サービスとかプロダクトにとって保守やリファクタリングは必要なことだし、自分達で責任を持つからとボスと話して理解してもらいました。
うちの場合でいうと、ボスが自分で分からない部分に関しては分かる人を信頼して任せるスタンスでもあるので、最終的には「開発側が責任を持ってやってね」というところで握れました。

ミイダスとしては保守とかリファクタリングの必要性っていうのを納得してもらえるまで粘って対話して、それにかける時間を使えるベースを確保したという感じになります。

エンジニア畑出身の人がその辺の裁量を持っていたりする組織なら、比較的楽に行くんじゃないかなと思います。
基本的に対話する相手には、判断の材料としてシステムの都合だけで言ってると受け取られないようにしています。サービスやプロダクトの維持成長にとって何でリファクタリングって必要なのかっていう所まで繋げた話を持っていくと相手も判断しやすいんじゃないかなと思ってます。

次によくありがちな話として、保守やリファクタリングの時間の確保が難しいということもよく聞きます。理由はいろいろあると思うんですけど、例えば先ほどの話と関連してそもそも承認がもらえないから時間も取れないこともあると思います。
あとは機能開発の進行の都合と、やりたいことと規模感の都合から折り合いが付かないというケース。この後者の方のケースについて言うと、ミイダスでも結構悩みが多いところではありますね。

リソース的にも進行的にも基本は機能開発を優先しているので、リファクタリングしたい部分がそれとバッティングするっていうのは結構頻繁にあります。そういった時にどう進行しているかを思い出していくつか挙げてみました。
前提として先ほど話した通り30%の握りっていうのがミイダスではあるので、基盤に手を入れるような大きなリファクタリングをやったり、その中で機能開発とバッティングしない箇所をタイミングを選んで粛々と進めているっていうような感じになります。

あとは、機能開発にリファクタリングも含むといったこともやっていますね。例えば、3日で終わる開発があるとしたら開発期間をプラス2日にして全体で5日間もらえるように企画担当と交渉します。そのプラス2日の中でリファクタリングも一緒にやってしまう感じですね。
承認してもらえるか次第ではあるんですけど、ミイダスでは大部分がこれで賄えてる印象です。
あとはそもそも承認してもらえるかっていうところについても期日があったり。あとあまりに工数が増えるようだとそもそもやっぱ厳しいんですけど。開発期間とか施策の優先度みたいなのに応じて、バランスとってうまく話持っていけば大体OKしてもらえると思ってます。

次に分割して対応することについてです。これは多分皆さんも当たり前にやってると思いますし、詳しく説明しなくても良いかなと思うんですけど。
リファクタリングしたい内容を一回で対応し切る必要があるのかという所です。複数回に分けて実施できる場合は、機能開発にリファクタリングを含めるっていうやり方と絡めて少しずつ進めている感じです。
「一回のリファクタリングで1カ月かかります。その間は関連する機能の開発も止まります」って言われるよりは「機能開発を止めないように複数回に分けてリファクタリングをするので、各機能開発にかかる期間を少しずつ増やしたいです。」と言われた方が口当たりがいいんじゃないかなと思います。

そして3つ目が、色々やりくりしてても時間が割けないケースですね。そういう時に大きな機能開発に着手する前に裁量を持っている人に「こういう理由でリファクタリングは必須になるから、一旦リリース優先して開発をします。ただ、リリース後にこれくらいの期間をリファクタリング期間として取らせてください」という交渉をします。
リリースの節目で期間を確保してリファクタリングするようなことも、かつてやった記憶がありますね。ここでもやはりビジネス側との対話が必要になってきますが、予め色々バランス見てこの方法ならOKが出そうっていうようなところは見繕って持っていくのが良いですね。

最後に実施内容やタイミング進め方をどう決めるかと言うことについてです。
これも結局色んなこととのバランスを取って折り合いをつけていくっていうことでしかないかなと思ってます。
まずミイダスの開発組織は、細かいリファクタリングについての実施内容やタイミングは職能チームや機能チームごとで判断して実施しています。
大きめのいくつかの職能にまたがる機能のリファクタリングや基盤を直すなど、そういった影響範囲が大きかったり工数が大きいものについては、基本的にはチーム長やEMのポジションで話し合いながら進めています。優先順位の決め方については、シンプルに緊急度とか重要度とかで進めていますね。

これまでお話ししたように、個人的にはリファクタリングに関しては全てバランスかなと思ってます。あともう一つ重要かなと思ったのが、裁量を持っている人といかに上手く対話ができるかと言う点です。
対話の内容も開発側だけの都合と思われないように、ビジネスに影響あることだと理解してもらうかがとても大事です。というわけで少しでもリファクタリングの進め方の参考になれば嬉しいです。以上となります。ありがとうございました。

イベント 【PERSOL(パーソル)グループ Tech Talk #3 - 技術負債との向き合い方 - 】を開催しました。 の発表より

– - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

眞下 純平 / ミイダス株式会社

制作会社所属時にミイダスの立ち上げに関わり、入社を決める。現在はフロントエンドの責任者としてチーム運営や技術選定を担当しながら、開発全体の運用業務や開発プロセス改善も担当。

ミイダス株式会社
転職アプリ「ミイダス 」の開発・運営を行っています。 「ミイダス」は職務経歴や経験・スキル情報から自分の市場価値を診断すると、企業から直接オファーが届く転職サービスです。

– - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

ミイダス Techについて

ミイダスでは、様々な技術イベントを開催しています。connpassやYouTubeチャンネルでミイダスグループのメンバーになった方には、最新の開催情報やアーカイブの公開情報が届きますのでぜひご登録をお願いいたします。

イベントページ:https://miidas-tech.connpass.com/
Twitter:https://twitter.com/miidas_tech

この記事が気に入ったらサポートをしてみませんか?