Slide 1

Slide 1 text

Copyright © Henry, Inc. All rights reserved. Why Kotlin? 電子カルテを Kotlin で開発する理由 縣 直道 / @agatan_ 2025-11-25 Server-Side Kotlin Night 2025

Slide 2

Slide 2 text

Copyright © Henry, Inc. All rights reserved. 󰳕 自己紹介 縣 直道 @agatan_ 株式会社ヘンリー VP of Product ● 2022/04 ヘンリーにエンジニアとして入社 ● 2025/10 より現職

Slide 3

Slide 3 text

Copyright © Henry, Inc. All rights reserved. 日本の病院向けに開発された 唯一のクラウドネイティブな電子カルテ 業務改革を実現する基幹システム レセコン(医事会計システム)も一体化 レセコン一体型電子カルテ「Henry」

Slide 4

Slide 4 text

Copyright © Henry, Inc. All rights reserved. 病院向け電子カルテの3つの性質 巨大 高密度 変化

Slide 5

Slide 5 text

Copyright © Henry, Inc. All rights reserved. 性質1:巨大 院内すべての業務の起点でありハブ 電子カルテは、病院という組織の基幹システム ● 医師、看護師、薬剤師、検査技師、医療事務... ● 多数のアクターが登場し、電子カルテで 日々業務を行っている

Slide 6

Slide 6 text

Copyright © Henry, Inc. All rights reserved. 医療は複数の専門職による緊密な連携プレー 12 / 43 性質2:高密度

Slide 7

Slide 7 text

Copyright © Henry, Inc. All rights reserved. 多様な専門職の業務が、「診療報酬制度」によって横断的に制約されている。 診療報酬制度による業務横断の結合 診療報酬制度とは? 医療行為の価格(点数)を決める公的なルール。 たとえば... ● 初診だったら291点(= 2910円) ● 短時間の静脈麻酔をやったら120点(= 1200円) 算定するためにカルテに特定の内容が記録されていることを求めたり、定められた様式で診 察内容を記載し患者からの署名をもらうことを求めるようなものもあり、医療の現場での業 務に大きな影響を与えるもの。

Slide 8

Slide 8 text

Copyright © Henry, Inc. All rights reserved. 定期的かつ強制的な変化 診療報酬制度は2年に1回改定される (次回は2026年6月) それ以外にも、コロナや政治などの要因で、 制度変更は不定期に訪れる。 性質3: 変化 不確実な変化 制度変更によってコンテキスト同士の関係性・結合度が変わりうる 昨日まで正しかった設計が、制度変更で「間違い」になる

Slide 9

Slide 9 text

Copyright © Henry, Inc. All rights reserved. Copyright © Henry, Inc. All rights reserved. 技術選定

Slide 10

Slide 10 text

Copyright © Henry, Inc. All rights reserved. 構成技術はふつうのWebアプリケーション

Slide 11

Slide 11 text

Copyright © Henry, Inc. All rights reserved. 構成技術はふつうのWebアプリケーション

Slide 12

Slide 12 text

Copyright © Henry, Inc. All rights reserved. ● バックエンドサービスはほぼ全て Kotlin で記述 ○ grpc-java → GraphQL Kotlin (w/ Ktor) ○ Exposed (DBアクセス) ○ Koin (DI) ○ Kotest (Testing) ○ etc… Server Side Kotlin

Slide 13

Slide 13 text

Copyright © Henry, Inc. All rights reserved. 1. 安全性 2. 表現力 3. 資産 Why Kotlin?

Slide 14

Slide 14 text

Copyright © Henry, Inc. All rights reserved. ● Null Safety ○ ワークフローの途中状態として、欠損が容易に生み出される ■ e.g. ● 入院予定を登録する時点では病棟病室は任意項目だが、入院中・退院後は必須 ● 患者登録時点では生年月日は任意項目だが、会計上は必須 ● 静的型検査やIDE支援によるリファクタリング支援 ○ 診療報酬改定を筆頭に、強制イベントを乗り越えリファクタリングし 続ける必要性がある 安全性

Slide 15

Slide 15 text

Copyright © Henry, Inc. All rights reserved. ● Sealed Class / Data Class ○ ドメインモデリングの武器として強力 ● internal ○ Gradleモジュールを分割し、モジュール外からのアクセスを禁止する ○ モジュラーモノリスとしての一定の規律を提供できる 表現力

Slide 16

Slide 16 text

Copyright © Henry, Inc. All rights reserved. ● Java & JVM の資産は強力 ○ Java 資産を利用できる ■ 特に電子カルテにおいては、いわゆる業務っぽい資産が活きる ○ JVM 運用ノウハウを利用できる ● 採用観点 ○ 「複雑なドメインに向き合う」ことに慣れた人が Java / Kotlin 経験 者には相対的に多い(気がする)(要出典) ○ モダンな言語を利用している人なら違和感なくとっつきやすい 資産

Slide 17

Slide 17 text

Copyright © Henry, Inc. All rights reserved. 宣伝 ドメインとの向き合い方について、アーキテクチャConference2025でも 登壇してきました!

Slide 18

Slide 18 text

Copyright © Henry, Inc. All rights reserved. 採用情報や事業や技術について、積極的に発信しています! 採用情報 採用募集ページ 募集中の採用ポジションや募集要項 がご確認いただけます。 オープンポジションのカジュアル面 談も募集していますので、お気軽に お申し込みください。 技術ブログ はてなブログ ヘンリー製品開発チームが運営する 技術ブログです。 会社公式ブログ note ヘンリーで働く人や医療業界や事業 のことが幅広くしれる公式ブログで す。 CEO の逆瀬川も個人で NOTE を発 信しているのでぜひ! 理想駆動ラジオ Spotify プロダクト開発・運営の様子をお届 けするポッドキャストです。