見出し画像

LIFULL 介護の式年遷宮を始めました

はじめまして!LIFULL senior 技術広報チームです

はじめまして、私たちは株式会社LIFULL seniorの技術広報チームです。

老人ホーム・高齢者向け住宅情報サイト「LIFULL 介護」を支える技術と、プロダクト開発を担うチームを知っていただくために結成されました。
今回の記事では、「LIFULL 介護」のアーキテクチャを刷新する「式年遷宮プロジェクト」についてお伝えします。


LIFULL 介護とは

「LIFULL 介護」は、全国の老人ホームを検索できる日本最大級のWebサービスです。
57,000件以上の施設が登録され、地図や路線、費用や施設種別などさまざまな条件で検索できます。

「LIFULL 介護」は2008年、不動産検索サイト「LIFULL HOME'S」の新サービスとしてスタートしました。
超高齢社会において適切な介護施設を見つけることが難しいという社会課題の解決には大きなニーズがあり、サービスは飛躍的に成⻑しています。
2015年には「株式会社LIFULL senior」を設立し、独立した事業として運営しています。


式年遷宮プロジェクト

老人ホーム検索サイトのフロントランナーとしてサービスを提供し続け、今年で16年を迎えます。
当時と今とではユーザーの閲覧環境も大きく異なりますし、技術的なベストプラクティスも変化し続けています。
そのため、サービス開始当時のアーキテクチャでは実現できないことが増え、開発の効率も徐々に下がってしまいました。

そこで、サービスの価値提供と事業の成⻑を加速するために、「LIFULL 介護」のアーキテクチャを刷新することにしました。
伊勢神宮の正殿を20年ごとに建て替える慣わしになぞらえて、「式年遷宮プロジェクト」と名付けています。

本物の式年遷宮は内宮・外宮の2つの正殿をすぐ隣に新築し、完成後に遷座(神様に移ってもらう儀式)を行います。
「LIFULL 介護」では、新しいアーキテクチャによるアプリケーション基盤をすぐ隣に新設し、サービスの機能を徐々に移していく方針としました。旧アーキテクチャ上でのサービス提供を止めず徐々に移行することで、古くなった機能や仕様を断捨離する狙いもあります。

マーティン・ファウラー氏の「ストラングラーフィグアプリケーション」という記事(原文はこちら)をご存知の方は、よりイメージしやすいかもしれません。
古い宿主となる木に寄生し、その木を締め殺しながら徐々に成⻑し、やがて独自の美しい姿に成⻑する、という熱帯雨林の木になぞらえたアーキテクチャパターンです。

事業の核となるサービスのアーキテクチャ刷新は、高いコストを投資する必要があります。
経営陣を筆頭に全社から賛同と支援が得られたため、式年遷宮の実施に踏み切ることができました。


旧アーキテクチャ

現在の「LIFULL 介護」は「旧アーキテクチャ」と呼ばれるアプリケーション基盤で提供しています。
PHP + SymphonyによるWebアプリケーションがAWS EC2の上で動作しています。

サービス開始当初から開発を続けてきたので、歴史的経緯による負債が蓄積してきました。
開発生産性が徐々に下がる、各種ミドルウェアの更新に手が回らない、古い仕様が足枷になるなど、システムとしての老朽化が目立つようになってしまいました。


新アーキテクチャ

そこで、「新アーキテクチャ」と呼ばれる新しいアプリケーション基盤を開発し、サービスの提供をこちらに移すことで、老朽化によるさまざまな課題を解決することが「式年遷宮プロジェクト」です。

「新アーキテクチャ」はPython + Djangoで開発され、すでに一部機能のバックエンドとして利用されています。
この比率を高め、最終的に旧アーキテクチャを退役させることが「式年遷宮プロジェクト」のゴールです。

また、新アーキテクチャではモダンな開発者体験を提供するために、次のようなメリットを設定しました。


バックエンドとフロントエンドの分割

近年Webアプリケーションの開発は、バックエンドとフロントエンドを分割することが増えてきました。
リッチなユーザー体験が求められるようになり、それをフロントエンドの実装で実現します。
バックエンドはAPIとしてデータを返すことや、他システムとの連携が主な役割になっています。

新アーキテクチャでもこの流れを取り入れ、バックエンドとフロントエンドを分割しました。バックエンドはPython + Django、フロントエンドはVue.js(Nuxt.js)を利用しています。

バックエンドとフロントエンドを分割することによって、新アーキテクチャの機能を旧アーキテクチャのバックエンドとしても利用することが可能になりました。
フロントエンドが旧アーキテクチャ上に残ったままでも、新アーキテクチャのWeb APIをバックエンドとして使うことで、新旧アーキテクチャの段階的な移行がより柔軟に行える、というメリットもあります。


モバイルファースト

「LIFULL 介護」のサービス開始当時は、ユーザーの大半がPCのWebブラウザで利用していました。
しかし2024年現在では、スマートフォンからの利用比率が高くなっています。

新アーキテクチャのフロントエンドは、スマートフォンによるユーザー体験を優先する「モバイルファースト」で開発を進めます。
スマートフォンでの利用を前提として設計・実装することで、サービスの体験改善をより多くのユーザーに届けることが期待できます。

また、旧アーキテクチャ上ではクライアント向けのHTMLテンプレートをPC用とスマートフォン用で別々に開発していました。
これをレスポンシブデザインに変更することで、フロントエンドの開発速度を向上することも狙いです。


ユニットテストの整備と自動テストの実施

旧アーキテクチャではユニットテストの記述量が少なく、人間の手と目によるテストが主流でした。
そのため自動テストも実施されておらず、デプロイの自動化にも制約がありました。

新アーキテクチャは開発当初から「CI/CDの整備」を目標に掲げており、すでに開発済みの部分はある程度のテストカバレッジが実現しています。
式年遷宮を通じてさらにテストカバレッジを高め、バックエンドの動作を自動テストで担保できるところまで引き上げることを目標としました。

これを実現することで自動デプロイができるようになり、開発サイクルもより速くなります。
仮説検証のサイクルを速く簡単に回せるようになることで、サービスの価値向上を技術面から支援します。


マネージドサービスの積極導入とインフラの省力化

インフラのモダン化も推進していきます。
たとえば旧アーキテクチャでは、EC2上に構築したElasticsearchで施設の検索を実現してきました。
これをマネージドサービスであるAmazon OpenSearch Servicesに移行することで、保守・運用を省力化します。

ほかにもコンテナ化やIaC化などの施策を通じて、属人性を排除した「手のかからないインフラ」を目指します。


GitHub Copilotの導入

直接アーキテクチャとは関係ありませんが、GitHub Copilotをすべてのエンジニアが使えるようになりました。

以前から利用可能だったIntelliJ IDEA (Ultimate)と組み合わせることで、生産性を高める支援を強化しました。


これからの「LIFULL 介護」とプロダクト開発チーム

式年遷宮プロジェクトによって「LIFULL 介護」は新しく生まれ変わります。エイジテックカンパニーとしてさらなる社会課題を解決するために、アーキテクチャを足枷ではなく武器にすることが目標です。
新アーキテクチャによって、エンジニアは技術で事業を加速させていきます。

また、「LIFULL 介護」をより価値のあるサービスに進化させるために、プロダクト開発チームの能力と、チーム力の成⻑を支援する施策がたくさん始まりました。
今後はそういった取り組みについても紹介していく予定です。

みんなにも読んでほしいですか?

オススメした記事はフォロワーのタイムラインに表示されます!