株式会社メディカルノート

「医師と患者をつなぐ」を技術面から支援する

Ruby bizグランプリ2020で大賞を受賞した「Medical Note」は、株式会社メディカルノートのデジタルヘルスケアプラットフォームである。
CTOの横尾雅博氏にお話を伺った。

(サービス名がMedical Note、会社名の日本語表記がメディカルノートであるため、本記事内でもサービスを指す場合はMedical Note、会社を指す場合はメディカルノートと使い分けている)

最善のアクションに繋げられる医療メディア

Medical Noteは、「医師と患者をつなぐ」をコンセプトとした医療情報メディアである。
疾患、症状に関する情報、医療機関情報、オンライン医療相談などのコンテンツを提供している。
メディカルノートの強みは、多くの医療機関や医師をはじめとする医療従事者と提携しているところにある。
様々な疾患について、その疾患について一定の知名度がある医師や評価されている病院に勤務している有名な医師、医療従事者などのKOL(Key Opinion Leader)とのネットワークを持っている。
また、全国で1,100以上の医療機関とのネットワークを有し、学会などとも連携している。
このネットワークによって、メディカルノートは最新の症例や治療例、エビデンスや臨床経験に基づいた医療情報の提供が可能だ。
Medical Noteでは、病気の症状や治療法の詳しい情報だけでなく、全国の病院や、病院に勤務している医師のプロフィールなどを閲覧することもできる。
Medical Noteというサービス全体としては、医療情報の提供だけに価値をおいているのではなく、信頼できる情報を提供し、その情報を閲覧した人が、例えば、病院に行った方が良いと判断して、適切な病院や医師を選ぶことができたり、生活改善などのアクションに繋げたりできるようにすることを重視している。
そのため医療情報の提供だけでなく、「Medical Note 医療相談」という医師にテキストベースで相談できるサービスもある。
これはオンライン診療とは異なり、自身の症状について受診すべきか迷っていたり、日常生活で困っていることなどを相談し、現状の不安を解消したり、次のアクションに繋げるきっかけとすることを目的としている。

サービス内容の変化に合わせた情報セキュリティの強化

創業当初から医療メディアとして情報提供を行ってきたが、医療相談サービスを拡充するにあたり、情報セキュリティ面を強化した。
医療相談サービスでは、相談者の病歴など、要配慮個人情報も含まれる可能性がある。
そのため、プライバシーマークやISMS認証の取得をした。
また情報セキュリティの専門家も採用した。専門家と共にサービスのガイドラインを策定したり、日々の運用についても最大限の配慮を行っている。

サービスへの情熱にあふれる開発チーム

開発チームについて伺っていたところ、社会的意義のあるサービスを開発していることに誇りと使命感を持っていることが良く伝わってきた。

「弊社のエンジニアは、手掛けているサービスについて情熱をもって開発をしています。
コロナ禍において、大勢の方が不安を抱えていて、医療機関側も患者さんに適切な医療を提供したいと思っている。弊社としては、あらためてその手助けになるべく力を入れているという状況です。
サービスを開発することが社会貢献につながっていると実感しています。
しかもRubyを使うとスピーディーに開発することができ、一層貢献できることにやりがいを感じています。」(横尾氏)

「医師と患者をつなぐ」双方向メディアとして、両者からのフィードバックからこのサービスの有用性を直に感じ取ることができ、やりがいを感じているようだ。
求められているものをスピーディーに開発できているというが、どのように作られているのだろうか。

Ruby on Railsを使用したスピーディーな開発

メディカルノートは、多くの信頼できる医療情報を保持していると自負している。
これらを医療情報として自社メディアに掲載するだけではなく、他のサービス向けにもデータ提供可能な基盤をRubyを使って構築している。
システム的には徐々にマイクロサービス化を推進しており、これらのバックエンドとしてRuby On Railsを採用している。
Medical Noteが提供している機能/サービスをAPIで構成することにより、自社サービスに限らず、他社サービスとの連携も可能となっている。
「Ruby on Railsを使うことにより、スピード感のあるAPI開発ができています。例えば、病院の情報を提供するところなどの開発がスピーディーにできました。」(横尾氏)

スキーマ駆動開発

メディカルノートでは、スキーマ駆動開発を広く採用している。
マイクロサービスで作成しているため、各マイクロサービス間のデータのやり取りはREST APIを経由して行う。
このAPIの開発手法としてスキーマ駆動開発を採用することにより、多くのメリットが得られている。
最初にAPIのインターフェースを定義して、それを使ってドキュメントやモック、テストコードを自動的に生成することができる。また、インターフェースの変更がある際も最初にドキュメントを更新するので、実装とドキュメントが乖離している状態になる、といった問題も防ぐことができる。

「開発のしかたとして、APIの仕様書からswaggerでドキュメントを開発し、ドキュメントどおりにリクエストやレスポンスできるのをテストで担保するAPI開発の流れがここ2年ぐらいで洗練されてきました。
使用する可能性のあるメンバーがレビューすることで、破綻したアーキテクチャにならないようにしています。」(横尾氏)

スキーマ駆動開発はメンバー間での情報共有にも役立っている。さらに、新たなメンバーが増えた際のシステムの説明が容易になったり、現状把握するまでの時間短縮にもつながっている。
「都度コミュニケーションをしなくても、また各マイクロサービスのコンテクストを共有できていなくても、スキーマを見れば意思疎通で失敗することなく開発できています。」(横尾氏)

また、APIを作成する際の仕様は全社で共通化されている。そのため、呼び出し側もある程度共通化することができ、製作者は呼び出し部分の実装に注力することなく、受け取った後の処理に注力することができる。
「他社と提携したサービスを開発する際にも、これらがとても有効です。」(横尾氏)

Rubyを使ってスピーディーに開発

チャットボットを使ったリリース、コードレビューを円滑に進めるための仕組みなど、開発メンバーの効率をあげるためのツールを制作する時にもRubyを活用している。
豊富なGemや、簡潔に書けるなどの利点を活かして、コストをかけずにツールを作ることにもRubyが役立っているのだそうだ。

Medical Noteにおいても、各マイクロサービスが持つAPIを呼び出す機能群を社内Gemとして切り出して、共有している。
このインタビューの間に「少人数でスピーディーに開発できる」という言葉を何度も聞いた。
効率よく開発できる環境を作り、注力すべき機能の作成に時間を配分することがうまく実現できている。

今後他の言語にするという選択肢はないのかという問いに対しては、このように答えてくれた。
「今の会社のスピード感、規模感、社内のリソースの状況やこれまでの資産などを総合的に考えると、ユーザーの目に触れるところ以外で他の言語を使うのは技術スキルの向上の一環としてであればありかもしれないが、プロダクトとしてはRubyを使い続けるのが良いと思います。」(横尾氏)

Rubyコミュニティとのかかわり

Rubyコミュニティには関心を持っていたものの、関わり方を模索している段階だったようだ。
「以前から、RubyのOSSに何か貢献できないかと常々考えていましたが、行動には移せていませんでした。
Rubyで大賞をいただいたのを良いきっかけとして、貢献できるようにしたいです。
例えば、データを提供するためのAPIをOSSとして公開するとか。
限られた情報だけど、誰でも使ってもらえるようにして、医療課題を考えているような人たちへの手助けになるようなことを、エンジニアから発信できるようなことができればよいなあと思います。
そうすると、会社としてもエンジニアとしてもより強くなれそうな気がします。」(横尾氏)
このインタビューの中でも、コミュニティで発表してほしいと思わせるエピソードもあった。今後の活躍に期待したい。

フィードバックを大切にしながら「医師と患者をつなぐ」をより良くしていく

今後については、熱く語ってくれたのでそのまま引用したい。
「患者さん側からだけでなく、医療従事者側からもフィードバックを得られるところが、Medical Noteというサービスを開発しているところの唯一無二の体験です。
自分たちの作っているサービスが、まさに医師と患者をつないでいるということを実感しています。
このような双方向にコミュニケーションできる、患者さん側だけでなく、より良い医療を提供したい医療従事者の課題解決もできるサービスとして、これからもより一層役立つサービスとして成長させていきたいと思っています。」(横尾氏)

※本事例に記載の内容は取材日時点(2021年1月)のものであり、現在変更されている可能性があります。