メインコンテンツへスキップ
見出し画像

「設計が7割」の矜持。immedioがプロダクトの境界を溶かし、一つの体験を編み出すまでのストーリー

    CTO室 井上 拓磨
    immedio EM 中山 大誉

    immedioの進化の根底にあるのは、複数のプロダクトを一つの体験として繋ぎ、お客様の「商談獲得」を加速させる徹底したこだわりです。

    今回は、プロダクト間の境界を溶かした「セッション統合」プロジェクトの裏側に迫りました。仕組みの根本が異なる2つのサービスをリスペクトを持って繋ぎ合わせた、エンジニアたちの試行錯誤と、妥協のない設計プロセスをぜひご覧ください。


    なぜ今、プロダクトの「境界線」を溶かす必要があったのか

    中山:今回は、先日リリースされた「セッション統合」について、開発の裏側にあったこだわりを聞かせてください。まずは、このプロジェクトが動き出した背景から教えていただけますか?

    井上:一言でいうと、お客様に「immedioのプロダクトを、一つの大きな体験としてシームレスに使い倒してほしかった」という思いからです。これまで、私たちのプロダクトである『immedio』『immedio Box』『immedio Forms』は、それぞれが独立したシステムとして動いていました。
    でも、同じ会社が作っているプロダクトなのに、画面を行き来するたびにログインし直さなきゃいけないのは、ユーザーにとって手間ですし、見た目的にもあまり良くないなと感じていたんです。その違和感を解消して、1回ログインしたらそれぞれのサービスを横断してシームレスに動けるようにしたい、というのが始まりでした。

    中山:お客様からも「ログインを一つにしてほしい」といった要望があったのでしょうか?

    井上:そうですね。お客様からいくつかそういった声をいただいていたことに加え、社内からも同様の課題感を持っていると聞いていました。ただ、単に不便を解消するだけでなく、ビジネス的な狙いもありました。
    例えばimmedio Boxが未契約のお客様で『immedio』から『immedio Box』へ移動しようとするユーザーの動きをCSが即座にキャッチできれば、CSとしても「今、Boxに興味を持っていただいていますね」と最適なタイミングで提案ができます。シームレスな体験が、そのままエクスパンションのきっかけにもなる。そうした背景が重なって、「今、やるべきだ」と決まりました。

    徹底した調査と「設計7割」の決断

    中山:開発期間は約1ヶ月強とスピーディーでしたが、井上さんは「実装よりも、事前の調査と設計に7割の時間をかけた」と仰っていました。そこにはどんな試行錯誤があったんでしょうか。

    井上:一番の難所は、2つのプロダクトが歩んできた「仕組み」の違いをどう融合させるかでした。『immedio』はサーバー側でログイン状態を管理する一方で、『immedio Box』はトークンベースの管理。さらに、ユーザーと会社の紐付け方も、『immedio』は「1対多」が基本なのに対して、『immedio Box』「多対多」という具合に、データの構造からして根本的に違っていたんです。

    中山:そこを無理やり繋ぐのではなく、整理された状態で統合しようと。

    井上:そうです。今あるプロダクトの仕様を変えず、かつ将来の拡張性を潰さない。パズルの最後の1ピースをはめるような感覚で、リーダー陣とも「何がお客様にとっての正解か」を何度も議論しました。
    特に、CSがサポートのために使う「ユーザー切り替え」の機能があります。切り替え後のアカウントで『immedio Box』側まで操作できてしまうと、セキュリティ上のリスクになりかねません。最初にログインした「本来のユーザー」を正しく判別し、意図しない操作を防ぐ仕組みをロジックに組み込む。こうした複雑な考慮事項を一つひとつ整理していく作業は、今回の設計において非常に比重の大きい部分でした。

    中山:かなり複雑そうな要素がたくさんある中で、決定ポイントはなんだったんですか。

    井上:そうですね、大前提として今あるプロダクトの仕様は変えないということがあったので、そこが意思決定のポイントになりました。そこを軸に、あるべき姿やセキュリティ的な問題を回避しつつ、わかりやすい挙動にしていこうと整理していった感じです。

    異質な仕組みを繋ぐ「リスペクト」のある実装

    中山:今回は、井上さんが普段触っていない『immedio Box』側のコードもかなり修正されていましたよね。他チームの領域に踏み込む際、どんなことを意識していましたか?

    井上:相手のチームが積み上げてきた「仕組み」を、尊重することです。自分がやりやすいからといって、独自の実装をいきなり持ち込んだら、後でそれを見る『immedio Box』チームのメンバーを困らせてしまいます。だから、既存のコードやルールを徹底的に読み込んで、「Boxチームの誰かが書いたのかな?」と思われるくらい、相手の作法に馴染む実装をすることに全力を注ぎました。

    中山:PR(プルリクエスト)のコメントでも「極力Boxの形に沿って書いたので、違和感があれば何でも言ってください」と添えていたのが印象的でした。

    井上:不確定要素が多いところから先に手を付けるという、開発の進め方も工夫しました。まずは自分が不慣れな『immedio Box』側と、新しく立てるマイクロサービスから着手し、慣れ親しんだ『immedio』側を最後に持ってくる順番で進めました。
    早い段階でリスクが高い部分を解消しておくことで、プロジェクト全体の確実性を高めたかったんです。また、独自の実装を差し込まずに既存の作法に合わせることで、リリース後の運用においてもチームに余計な負荷をかけないよう、最大限意識しました。

    中山:実装を進めていく中で特に大変だった部分などありますか?

    井上:実装範囲としては、『immedio』と『immedio Box』それぞれのリポジトリと、ログインセッション管理マイクロサービスの3つになります。当時流行っていた手法としてSpeckitによるSDDを試してみました。よかった部分もありましたが今回のケースだと複雑な仕様をドキュメントに書き起こす作業が多くて使いづらさなども感じました。結果的にはシンプルな方法で進めることになりました。キャッチアップの大変さはありましたが、AIに補助してもらいながらコードを書くことはスムーズに進められました。自分でセルフレビューするみたいな感じで進めていました。

    画像

    「地味な変化」に宿る設計の重み。

    中山:リリースから2ヶ月以上が経ちましたが、今のところ大きな不具合報告はゼロ。この結果をどう受け止めていますか?

    井上:素直に、ホッとしています。あの時、設計に7割のリソースを割いて、モレがないか徹底的に自分を疑った結果かなと思っています。実際に自分で使ってみて、リンクをポチッと押すだけで『immedio Box』に飛べる体験は、本当に気持ちがいい。複数のサービスを跨いでいることを感じさせない、非常にシームレスな体験を実現できたことは、リリース後の大きな成果だと感じています。

    中山:社内外からのフィードバックなどありましたか。

    井上:「めっちゃいい!」という声をたくさんいただくことができました。CSの方からも好反応で、当初の目的がしっかり達成できていると実感できました。見た目はサービスの切り替えボタンが出てきただけの地味な変化なのですが、その裏側の大変さをわかってくれるメンバーや、その価値を感じてくださるお客様がいることで、やってよかったと思います。

    中山:immedioのフロントメンバーは、技術に対する理解度が高いですよね。裏側の大変さも含めてフィードバックをくれるところは、とても良い関係性だなと思います。
    井上さん的に振り返ってみて、もっとこうしたいなど思う部分はありますか。

    井上:そうですね。今後の活用を考えるのであればいろいろとできたことはあったと思います。ただ今回はスピード優先で進めていましたし、メンテナンスする側の学習コストなどを考えると今がベストではあると思っています。
    1つあるとしたら、インフラ構成でレイテンシを改善したいですね。セキュリティを担保するためには毎回キャッシュなどを使わずにセッションマイクロサービスAPIを呼ぶのが1番良いのですが、毎回呼んでいると1回あたり大体100msかかります。100msとはいえ、全体的に見ると0.1秒ほど遅くなってしまうため、ここは今後突き詰めていきたいポイントです。

    中山:そうなんですね。ぜひこれから一緒に働くメンバーにはこういうところも一緒に進めていってもらいたいですね。

    チームの壁を超えimmedioを「データのハブ」へ

    中山:今回のプロジェクトはチームを跨いだ大きな開発で、immedioとしては初めての試みでした。immedioのValuesの一つである「挑み、学ぶ」を体現したプロジェクトでもありました。これをきっかけに、新しく「CTO室」が新設されましたね。
    これから井上さんが挑戦していきたいことを教えてください。

    井上:今回のセッション統合を皮切りに、チーム横断でエンジニア組織全体のイネーブルメントを高めたり、技術的な課題を解消していきたいと考えています。ここ最近では、どちらのチームにも閉じない業務、例えば認証基盤周りのメンテナンスなど「誰かがやらなきゃいけないけれど、宙に浮いてしまいがちな業務」が増えてきていた時期でもあったので、チームに閉じない業務も含めてしっかり対応していきます。
    さらに、各チームがより働きやすい環境を整えていくことで、全体のモチベーションを底上げしていきたいですね。

    中山:これからの挑戦でimmedioならではの面白みを教えてください。

    井上:今回のセッション統合は、あくまで第一歩に過ぎません。これからは認証の壁だけでなく、プロダクト間の「データの壁」もどんどん溶かしていきたいと考えています。それぞれのサービスに散らばっている情報を一箇所に集約し、immedioをセールスプロセスにおける「データのハブ」へと進化させていく。これが今、私たちが描いている大きなビジョンです。

    中山:まさに、プロダクトの根幹を再定義していくフェーズですね。

    井上:そうなんです。今、immedioは「既存のセールスプロセスを便利にする」段階から、蓄積されたデータを使って「セールスの勝ち筋を、より確実なものに変えていく」という、非常に手応えのあるフェーズに突入しています。
    今までブラックボックスだった部分が、データが繋がることでクリアに見えてくる。そのための土台を自分たちの手で作っていくのは、エンジニアとして純粋に面白い仕事です。この大きな進化の瞬間に立ち会い、ゼロから仕組みを組み上げていけるのは、今このタイミングだからこそのチャンスだと思います。

    画像

    インタビュー後記

    今回は、immedioのエンジニアチームの2人に対談していただきました。技術的な正しさを追求するだけでなく、お客様の「使い心地」を考え、他チームへのリスペクトを払いながら進める。井上さんの話を聞きながら、immedioが大切にしている誠実なエンジニアリングの姿勢を再確認しました。
    immedioでは、自身の技術力とアイデアを最大限に活かし、プロダクトの未来を共に創っていく仲間を求めています。この記事を読んで、immedioの開発に興味を持った方は、ぜひ一度お話してみませんか?


     
     
    株式会社immedioはテクノロジーの力で、サービスを作る側と探す側双方の体験を改善していきます。ビジネスの出会いから不効率を排除し、サービスを探す体験がもっと楽しくなる、サービスを作る側は価値の創出とデリバリーに専念できる、そんな社会を作っていくのが私達のミッションです。

    あなたへのおすすめ