サービス横断的な改善を行うエンジニアが思う、エス・エム・エスに携わる面白さ

はじめまして。医療・介護・ヘルスケア・シニアライフの4つの領域で高齢社会の情報インフラを構築している株式会社エス・エム・エスでエンジニアとして働く光宗朋宏です。技術推進グループにて各サービスの横断的な改善に携わりながら、介護事業者向け経営支援サービス『カイポケ』のアーキテクチャ改善にもテクニカルディレクターとして関わっています。他チームや他部門とも連携しながら問題解決に取り組む日々です。

今回は、そんな私の考えるエス・エム・エスの面白さについて、入社の経緯や現在の仕事内容、今後の展望から、お伝えしたいと思います。

to Bのサービス開発や内製化への興味から転職

私はエス・エム・エスに入社するまで、主にto CのWebサービスやアプリケーション開発に従事してきました。旅行クチコミサイトから漫画雑誌アプリ、ヘルスケアメディアなどジャンルも様々。サービスの立ち上げからコミットしたものも複数あります。

前職の大手比較サイトや大手ソーシャルゲーム企業では、複数のWebサービスの立ち上げを経験しました。後者の企業では社内横断プロジェクトに関わる部署に所属し、新たに立ち上がった企画に開発メンバーとしてジョインするような動きをしていました。現在の仕事にもつながる部分かもしれません。

また、大手比較サイトではエンジニア兼マネージャー的な仕事にもトライしました。当たり前のことですが、人間は10人いたら10通りの思考や行動がある。何か失敗があっても、ただ否定するのではなく、相手が何を考えて動いたかを理解し、同じことを繰り返さないようにするには?を考える。当時身についたコミュニケーションは今も意識しているように思います。

そこからエス・エム・エスに入社したのは、シンプルに、今までと違うことをやってみたかったから、です。介護業界の知識や経験があったわけではなく、to Cのサービスやアプリとは別の仕事をやってみたいなという理由でした。

加えて、私が転職を検討していた2016年は、エス・エム・エスがこれから開発を内製化していくフェーズ。これまで外注していた業務をどのように内製化するのか、開発体制やプロセスをどう設計するのか、人が集まるなかで組織がどう変容していくのかといった辺りは興味を惹かれました。内製化についてはこちらの記事で詳しく紹介しているのでぜひご覧ください。 tech.bm-sms.co.jp tech.bm-sms.co.jp

あとは、田辺さん(プロダクト開発部部長 田辺順)とは前職で一緒に働いていて、定期的に社内の様子を聞いていたんです。選考に進んで経営層と話す機会があったとき、両者の話にズレがなかったことも入社の決め手になりました。

複雑な介護ドメインをシステムに落とし込む面白さ

入社してからは、技術推進グループに所属し、基盤技術の調査・研究、各サービスの改善業務を担当してきました。カイポケのデータベースのパフォーマンスチューニングやオンプレミス環境からAWSへのシステム移行、カイゴジョブケアマネドットコムのリニューアル、その他には社内オペレーション改善、エンジニア採用活動などにも関わってきました。

私は介護業界について知識や経験がなかったため、入社してからキャッチアップし、介護の仕組み、とりわけ介護保険制度の複雑さ、変化の早さを知りました。それらはエス・エム・エスで開発をする難しさであり、面白さでもあると感じます。

例えば、カイポケには、利用者に提供した介護サービスに応じて、事業者が国に介護給付費を請求する「請求業務」の機能があります。この請求の点数計算は、サービスの種別や都道府県、行政ごとにルールが違う。それも3年に一度の介護報酬改定によって変化します。

また、データベースのチューニングをするなかで、扱うデータの特性も複雑さを増している要因だと感じました。請求業務で言えば、基本的には毎月1日から10日にかけて、事業者が請求をします。ですが、何ヶ月か遡って請求する人もいますし、一定期間を過ぎてしまうと遡って請求はできないなどの決まりもあります。こうしたルールを踏まえ、どのデータをどのくらいの期間までアクセス頻度が高いと見なし、データベースのパフォーマンス最適化を図るのかは、なかなか判断が難しいところです。

ですが、面白いのは、その複雑なルールさえ網羅しておけば、ある程度の動きが読めることです。to Cのサービスであれば、ユーザーのアクセスパターンは多様ですから、一定の幅を持たせて、データベースを設計しておかなければいけません。一方、例えばカイポケの請求業務であれば、事業者の人数や要介護者の内訳などで規模感などは読める。それらに則って最適な設計をすれば仮説通りに動くことも多いんです。その瞬間の気持ちよさはルールの決まっている土俵ならではかもしれません。

より拡張性を備えた設計へ、システム全体を俯瞰する役割を担う

現在、カイポケのアーキテクチャ改善に携わっています。

カイポケのアーキテクチャ改善では、訪問介護や通所介護、居宅介護など、サービスの種別ごとにマイクロサービス化を進めています。既存のシステムは、複数のサービスが一つのデータベースにアクセスするモノリシックな作りになっています。各サービスを独立させ、共通のインターフェースを介して連携できる仕組みに移行することで、より柔軟に変化へ対応できると考えています。

そのなかで私はテクニカルディレクターとして、システム全体の整合性や相互アクセスの仕組みづくりなどを考える役割を担っています。実際に具体のルールや細かい部分を決めて手を動かすのは、訪問介護や通所介護など種別ごとの開発チームなので、連携しながら進める形です。

詳しくはこちらのブログに書かれていますが、まずはカイポケの重要な機能である「請求業務」の部分を切り出そうと、取り組んできました。私自身もどのようなロジックを組んでいくのが最適か、厚生労働省の資料を眺めながら検討したりしました。現状の仕組みをただ移行するのではなく、3年ごとの介護報酬改定や細かい点数計算のルール変更にも対応できるよう、拡張の幅を持たせながら設計し直しています。 採用している技術としては各サービス間のやりとりはGraphQL、開発言語はKotlinです。カイポケはJavaで書かれているためJava 16を採用する手もありましたが、モダンな言語でありながらJavaの資産も活かせる点、Androidの公式言語への採用実績などからKotlinに落ち着きました。

また、設計においてはカイポケの扱う業務ドメインの再定義も必要です。各事業部の方に、どこにアプリケーションコードがあるのか、どういった部分を改善したいかなどのヒアリングなども行なっています。カイポケは歴史の長いサービスですから、仕様を漏れなく洗い出すのは大変ですが、できる限り顕在化していないものの無い状態を目指したいです。

このように複雑かつ変化の多いドメインで、技術による課題解決を率い、一定の歴史と規模のあるプロダクトに変化をもたらしていけるのは、エス・エム・エスで働くやりがいだと感じています。

個よりチームの総合力で良いプロダクトを創る

複雑な問題に対し、一人の敏腕エンジニアが意思決定をするのではなく、チームの総合力で向き合うのも、エス・エム・エスの特徴だと感じます。みんなで納得して物事を動かしていく空気があります。私が日頃の業務で関わる人たちは、上から言われてやらされる感を持って仕事をすることはなく、「自分がどうしたいのか」を持っているように感じます。

自分の意見を発言するときも、年齢や期待される役割などは誰も気にしません。良いアイデアは良いアイデアですから。誰が言うかは関係ないといったカルチャーがある気がします。

また、そうやって全員で意思決定して動かしていけるのは、エンジニアや非エンジニア問わず、論理的に思考できる人が多いこともあるかもしれません。現状の問題に対し、状況や取り得る解決策、生じるコストなどを冷静に判断し、どうするかを話し合ってくれる人が多い。特に裁量を持っている人たちがそうした方ばかりなので、仕事を進めやすいですね。

個人としても、コミュニケーションにおいては論理的に、順序立ててわかりやすくを意識しています。誰にとっても理解できるように話すというのは、非エンジニアとのコミュニケーションだけでなく、エンジニア間でも重要です。専門用語で捲し立てて「わかった」と言われても意味がありません。社内では「ITに一切興味のない友人や家族にも説明してわかるように」と伝えたりします。

チームで意思決定をして物事を動かしていくという点で付け加えると、開発においてモブプログラミングを取り入れている人も多いです。

技術力を磨きながら、横断的な課題解決に携わりたい人

これから力を入れていきたいのは、UIやUXなどエンドユーザーの使い心地に直結する部分の開発です。個人的にも興味を持っている部分でもありますし、エス・エム・エスはサーバーサイドの得意な人が比較的多く、フロントエンドは優先度を上げきれていないので。会社としても、次のチャレンジとして適切かなと思っています。

開発組織としても、社内だけで設計や実装部分が完結する体制が整ってきて、これからプロダクトのビジョン設計や企画も含め、開発全体を担えるよう成長していく段階と捉えています。

その際には、プロダクトオーナーが「これを作ってください」とビジョンを描き、エンジニアがその通りに作るといった組織ではなく、たたき台をもとに皆の意見を反映していくような組織でいたいと考えています。視点も違えば意見も変わる。その違いが改善のヒントになることもあると思うので、大事にしていきたいです。

ここまで書いてきた通り、エス・エム・エスは個人としての技術的な探究をしながら、組織を横断して会社の課題解決にも携わりたいエンジニアにとって、良い環境だと思います。

なかでも、今注力して募集しているテックリードは、サービスを1から10に成長させるフェーズにおいて、周りを巻き込みながら技術的な課題解決をしていく役割です。エンジニア以外にも情報を伝播し、形にしていく部分を担います。(もちろん本人の経験や希望、状況によって、どれくらい手を動かすかも変わります)

自分なりにプロダクトのビジョンも描きながら、チームを巻き込み、技術力で開発を率いてみたい方は大歓迎です。少しでも興味を持っていただけた方がいたら、ぜひお話できたら嬉しいです。