Techtouch Developers Blog

テックタッチ株式会社の開発チームによるテックブログです

再設計の意思決定について

adventCalendar-day25

この記事はテックタッチアドベントカレンダー25日目の記事です。

テックタッチの日比野です。最近海の近くに引っ越しました。

これを機に何か一つマリンアクティビティをと考えてまして、いろいろ検討した結果釣りを始めようかと思っています。お酒のおつまみが一品増えるという点が決め手となりました。

釣りど素人の僕調べでは、砂浜から海に投げ込む「ちょい投げ」というスタイルがあるようで、比較的簡単に始められそうなのでこのスタイルでいこうと思います。

おつまみづくりの後工程だけでなく、何処に何を釣りに行くか考える前工程も釣りの面白みの一つらしいので、そこまでハマれれば嬉しいです。最初は徒歩30分圏内でのんびりやってみます。いざ上州屋へ。

この記事について

テックブログなので技術的な話をしたいのですが、今年は開発効率や品質を上げるため大きな決断をした年で、その中の一つであるクライアントアプリケーションを1から作り替える再設計プロジェクトのお話をしたいと思います。

ここでは再設計のアーキテクチャや開発手法ではなく、どのような考えで意思決定をしたのかに焦点を当ててお話しできればと思います。

はじめに

テックタッチは顧客のブラウザ上で動作させるアプリケーションを開発しています。いわゆる拡張機能です。 サービスの説明はこちらをご覧ください。

拡張機能は有効化するサービスを限定することができるのですが、テックタッチは開発当初から「どのようなサービス上でも動作する」というプロダクト要件を設定してきました。

この要件を満たすためには各サービスで使われている(であろう)JSライブラリやブラウザの仕様を深く理解し、場当たり的な対応ではなく根本解決できる実装が求められます。

同時に検証するべき環境を限定できないという側面もあり、これが開発難易度をさらに上げる要素となります。 (テックタッチのフロントエンドエンジニアはこの辺りが面白みと思っています。)

また、当然のことながらブラウザは業務で最も使用されるソフトウェアの一つです。我々のような拡張機能が原因でブラウザの動作を阻害することは顧客の業務を阻害することになります。 このようなプロダクトの性質上、求められる品質が鬼のように高いです。

開発当初からこの2点は意識高めにやってきましたが、それでもうまくいかないのがプロダクト開発というものです。

再設計プロジェクト

テックタッチが現在提供しているアプリケーションはVue.jsをベースに開発を進めてきました。 冒頭でもお話しした通り、開発当初から「どのようなサービスでも動作させる」「障害発生時のインパクト」の2点については意識高く進めてきましたし、この後も継続して最も重要なプロダクト要件となります。

この要件を満たしつつ、より安定し、変更に強く、ユーザーに価値を届けられるテックタッチにするために設計を一から見直した方が良いという意見が一人のエンジニアから上がりました。

突如として、一人の男から再設計プロジェクトの提案がなされた。 image.png

牛タン定食を食べながら必要性を訴えるtakaと夜遅くにプロジェクト実施の段取りを話しました。 最初は一人から始まった再設計プロジェクトですが、周りの人間を次々に巻き込んでいき、開始から一年近くたった今、会社の未来を左右するような一大プロジェクトとなっています。

SaaS事業者として深刻な問題

再設計プロジェクトが開始したのは、リリースが開始され導入企業も増えている今年の1月頃でした。 本来ならここで機能開発を加速させPMFを確かなものにし、一気に拡販させたいところですが、プロダクトチームには一つ課題がありました。 それは「リリースサイクルが遅い」というものです。

我々のようなSaaS事業者は初期のプロダクトを売って終わりではなく長く継続利用してもらうことが重要です。開発ロードマップを顧客に見てもらい将来に期待されて導入を進めてもらうこともあります。 「スピード感があり安定したプロダクトのリリースサイクル」は提供するべき重要な価値の一つです。それが実現できていない状態はSaaS事業者として深刻な問題です。

「リリースサイクルが遅い」理由は色々ありますが、設計が甘くデグレが頻繁に発生している現実がありました。深刻な問題は解消ハードルの高い原因から来ていました。

何を実現するべきか

スタートアップのプロダクトは、まず自分たちのアイデアをインタビューなどを実施して「潜在ニーズ」であることを検証し、その後にプロダクトがニーズを満たす価値があるものかを検証します。MVP検証です。 このMVP検証は「素早く」や「最小限」という意味合いが大きいですが「実行可能な製品」であることも重要な要素です。

テックタッチはこの「実行可能な製品」であるMVPを作ることに苦労したものの、Vue.jsを用いた現行のプロダクトで検証できたと思っています。

MVP検証に成功した後はPMFを目指すことになります。PMFというのは市場に受け入れられている状態の事であり到達したとしても維持できるかが重要です。 維持するためには既存顧客の信頼を高め続け、市場のニーズの移り変わりに対応し、競合優位性を確保し続けなければなりません。 このような高いハードルを「リリースサイクルが遅いプロダクト」で超えていくのは困難です。

SaaS事業者として「スピード感があり安定したプロダクトのリリースサイクル」を保ち続けるのはMUST要件といえるのですが、この点で僕らは保てていないという判断をし、再設計プロジェクトの実施を決定しました。

上記で描いたような計画は開発当初からのものではなく、最後までVue.jsで作られたもので進めていくつもりでした。設計の重要性を今まで以上に強く認識していれば回避できたかもしれません。 しかしプロダクト開発といのはなかなかうまくいかないもので、このような経緯をたどってしまいました。

スタートアップには意思決定スピードの速さという特有の武器があります。いろいろな間違いを犯しても問題に対して目を背けず原因を特定して迅速に行動することで成功にたどり着けるのではないかと思います。

この考えが正しいかったかどうか来年また振り返りたいと思います。

最後に

導入企業も増えてきており、売り上げも伸ばせるタイミングでこのような意思決定に賛同してくれたNakaをはじめとするビジネスチームの方々に感謝したいと思います。

また、開発リソースの30%以上をこの再設計プロジェクトに割いた中でも、事業を進捗させている既存プロジェクトのメンバーには大変な苦労を掛けたと思います。本当にありがとうございます。

最後に、このプロジェクトの成功を確信されてくれるような高品質なアプリケーションの開発をしてくれている発起人のtakaはじめ再設計チームのみんなにも感謝して。

メリークリスマス!