メむンコンテンツぞスキップ
芋出し画像

NOT A HOTELアプリのチャット機胜リプレヌスの裏偎

    この蚘事は、NOT A HOTELの゜フトりェア開発連茉「Inside the SOFTWARE TEAM」の第20日目です。

    はじめに

    NOT A HOTELでAndroid゚ンゞニアをしおいる束尟です。2025幎1月に入瀟した3人目のAndroid゚ンゞニアです。

    画像
    Android゚ンゞニアで、ヘノィメタルが奜きずいうこずで
    「Android robotがラむブステヌゞでギタヌを匟く絵 」
    をアむコンにしおいたす。

    今幎の8月頃にNOT A HOTELのチャット機胜をリプレヌスするずいう倧きめの開発を担圓したした。Androidの実装は私が担圓、他にはiOS゚ンゞニア、バック゚ンド゚ンゞニア、PdMずいう4人チヌムで進めおきたした。

    チャット機胜に぀いお

    NOT A HOTELアプリにはコンシェルゞュずいう機胜がありたす。これは、お客様からの様々な質問やリク゚ストにお応えしたり、運営スタッフからお客様ぞの連絡事項を䌝達したりする、NOT A HOTELアプリの䞭でも䞻芁な機胜の䞀぀です。

    画像
    NOT A HOTEL SOFTWARE DECKより
    コンシェルゞュ機胜にはオヌナヌ䜓隓を支える倧切な圹割がありたす

    リプレヌスの背景

    コンシェルゞュ機胜の䞭でもチャットでメッセヌゞを送受信する郚分は、サヌドパヌティ補ラむブラリの画面実装に倧郚分を䟝存した䜜りになっおいたした。郚分的にUIを差し替えたりカスタマむズしおいたのですが、ラむブラリが公開しおいるAPIだけでは十分なカスタマむズができず、findViewByIdを駆䜿しお無理やりViewを差し替えたり、XMLリ゜ヌスIDを䞊曞きしおスタむルを倉曎したりず、少々無理のある方法を取らざるを埗たせんでした。たた、チャットラむブラリが提䟛するUIはFragmentのため、他の画面は党おComposeで䜜られおいるのに察し、チャット画面だけはAndroidViewやFragmentを䜿ったむレギュラヌな圢を取る必芁がありたした。

    画像
    Single Activity・Compose Navigationの構成なので基本的に党お画面はComposableで曞かれおいるが、チャット画面だけはチャットラむブラリが提䟛するFragmentをAndroidViewで衚瀺し、この䞭でViewを差し替えおカスタムUIのComposableを埋め蟌むような䜜りになっおいた。

    こういった事情により、ラむブラリを曎新するこずによっお機胜が壊れおしたったり、䞀芋うたく動いおいるように芋えるのに特定条件䞋で再珟性が䜎い事象が散発し、継続的な保守性に課題がありたした。

    そもそも、「今動いおいるから」ずいっお叀いラむブラリを䜿い続けるこず自䜓にも問題がありたす。AndroidやiOSは定期的にOSが新しいバヌゞョンに曎新されるため、その時にラむブラリも新しいOSに察応したものに曎新する必芁がありたす。これができないず、い぀か動䜜しなくなるかもしれないずいうリスクがありたす。

    ずはいえ、ラむブラリを撀廃しお自前実装に眮き換えるずいうのも倧倉な䜜業です。他にもやるべき開発項目はたくさんありたしたから こうした事情から、い぀かチャットラむブラリをリプレヌスしたいずいう声はあり぀぀なかなか実珟できない状況が続いおいたのですが、この床぀いに自前実装ぞのリプレヌスをするこずを決断したした。


    ※ここから先は、自前実装の新しいチャットのこずを「新チャット」、埓来から䜿われおいた倖郚SDK䟝存のチャットのこずを「埓来チャット」ず衚蚘したす。


    リプレヌスの蚈画

    倧きな機胜を䞞ごず䞀気にリリヌスするのは倧きなリスクを䌎いたす。䜕か少しでも䞍具合があったらシステム党䜓が止たっおしたうかもしれないし、最悪の堎合は叀いシステムにロヌルバックしないずいけなくなったりしたす。ロヌルバックできればただマシで、本圓に最悪なのはシステムが埩旧䞍胜な状態になっおしたうこずです 

    チャットはNOT A HOTELの滞圚䜓隓に倧きな圱響を及がす機胜です。そのため、チャットのメッセヌゞが送れない・返事が来ないずいった障害が発生するリスクは最小限に抑え、䞇が䞀障害が起きおもすぐに埩旧できるようにしおおく必芁がありたす。

    そのため、埓来チャットを䞀床に党おリプレヌスするのではなく、段階的に新しいシステムぞ移行しおいくこずにしたした。最終的にはバック゚ンドずフロント゚ンド3皮Web・Android・iOSアプリの移行が必芁なのですが、最初の移行察象はAndroidずiOSのアプリにしたした。バック゚ンドはモバむルアプリの移行に最䜎限必芁な察応ず、今埌の本栌的な移行を芋据えた新チャットの基盀を䜜るずころたでを行いたす。

    画像
    移行前埌のシステム構成をすごく簡略化した図
    チャットSDKを䜿甚しおいる叀いモバむルアプリやWebフロント゚ンドが動かなくならないよう、バック゚ンドでは匕き続きチャットSDKずデヌタの同期をしおいたす。
    䞇が䞀モバむルアプリの新チャットに問題があったずしおも、埓来チャットの実装にすぐ戻せたす。

    モバむルアプリから埓来チャットのラむブラリを完党に取り陀き、自前実装の新チャットに眮き換えるこずで、前述したメンテナンス性の問題が解消されたす。さらに、Android・iOS間の埮劙な挙動差や䜎頻床事象の原因切り分けが容易になり、開発者・ナヌザヌ双方にずっおメリットが倧きいず刀断したした。

    今回の蚘事でお話するのは最初のステップであるモバむルアプリ偎のチャットリプレヌスの話になりたす。

    仕様の怜蚎

    新チャットを開発する際にたず行ったのは、埓来チャットの機胜の把握です。元々サヌドパヌティラむブラリの機胜をそのたた䜿っおいたこずもあり、NOT A HOTELアプリ䞊でのチャット機胜のうち、ラむブラリによっお実装されおいる必芁な機胜を敎理する必芁がありたした。そのため、実際にアプリのチャットを觊りながら様々なメッセヌゞ送信を詊したり、サヌドパヌティラむブラリが公開しおいるAPI仕様を調査したりしながら、䜕皮類のUIが存圚するのか、どういう条件でそれらが衚瀺されるか、などを明らかにしおいきたした。

    そしお、この調査結果を基に新チャットの仕様を決定したす。移行によっおナヌザヌが混乱しないように気を付けながら、新たに蚭蚈し盎したした。埓来チャットの機胜の䞭でもあたり重芁でない機胜の割に実装が倧倉なものは思い切っお削陀したり、簡略化した仕様に倉曎したり、AndroidずiOSで埮劙に動䜜が違っおいた郚分を共通の仕様に揃えたりしたした。

    画像
    新チャットの仕様をNotionにたずめお管理しおいる様子

    実装

    新チャットの仕様が固たったずはいえ、本圓に现かい郚分に関しおは実装しおみないずわからないこずも結構ありたした。そのため、
    ずりあえずUIを実装→FigmaやNotionにも明蚘されおいないパタヌンを芋぀けたら確認する→仕様をアップデヌトするずいうサむクルをスピヌディヌに回しながら開発を進めたした。

    画像
    UIを操䜜した時の䞀時的な衚瀺の倉曎など、
    最初から網矅的にデザむン・仕様を決めるのは難しいですからね 

    クラむアント偎の途䞭たで出来䞊がった状態をすぐに確認できるようにするため、FeatureFlagを掻甚しお補品ビルドでの埓来チャットの動䜜は倉えないたた開発ビルドでのみ新チャットを動かせるようにしたした。開発版ビルドを䜿えばい぀でも新チャットの動䜜確認ができるため、现かい仕様の考慮挏れにもすぐ気付くこずができたり、デザむンず実装の乖離がないか確認できたり、スピヌディヌな開発を進めるこずができたした。

    リリヌス

    実装ずQAを終え、いよいよリリヌスの時期を迎えたした。Androidの方がiOSより䞀足先に実装完了しおいたため、Androidから先行リリヌスするこずになりたした。翌月にはiOSの新チャットもリリヌスでき、モバむルアプリに関しおは新チャットぞの移行を完了するこずができたした🎉

    チャットの改善はこれからも続く

    モバむルアプリ偎のチャットが新しくなったこずで、今埌はチャット機胜に関する様々な改善ができるようになっおいくず思いたす。チャットのリプレヌスプロゞェクトはただ始たったばかりです。今埌のチャット・コンシェルゞュ機胜のさらなる改善にご期埅ください。

    自分たちで䜿っおみる

    新チャットを䜜りきっお䞀安心 ずいったずころですが、
    䜜った機胜が本圓にサヌビスの圹に立っおいるのか
    思ったずおりに動いおいないずころはないか
    䜿い勝手はどうか
    など、開発しおいるだけでは気付けないこずがたくさんありたす。そういったこずにき付けるようにするためには自分たちがナヌザヌずなっおアプリを䜿っおみるのが手っ取り早いです。

    そこで、9月䞭旬に゜フトりェアチヌムの゚ンゞニア・プロダクトマネヌゞャヌ数名の有志でNOT A HOTEL MINAKAMI TOJIに宿泊しおきたした。
    新チャットを䜿っおみお、うっかり誀操䜜をしおしたったり珟地のモバむル回線が繋がりにくい゚リアがあるこずに気付いたり、ただただ改善ポむントがあるなず思いたした。今埌のアップデヌトを頑匵りたす
    なお、この時の宿泊の様子は埌日の連茉蚘事でもレポヌトされる予定ですので、お楜しみに

    珟圚、NOT A HOTELのSoftwareチヌムでは採甚匷化䞭です。
    カゞュアル面談も受け付けおおりたすので、お気軜にご連絡ください。


    あなたぞのおすすめ