TECH PLAY

株匏䌚瀟メドレヌ

株匏䌚瀟メドレヌ の技術ブログ

å…š1406ä»¶

こんにちは。CLINICS 事業郚の児玉です。 今回は、メドレヌが 2018 幎 12 月に厚生劎働省から受蚗した「電子凊方箋の本栌運甚に向けた実蚌事業」で、医療情報暙準芏栌の FHIR を基盀ずした電子凊方箋管理システムを構築したしたので、その内容に぀いおご玹介したす。 FHIR ずは FHIR(Fast Healthcare Interoperability Resources)ずは、医療情報亀換の囜際暙準芏栌である HL7(Health Level 7)の䞭で最も新しい芏栌であり、むンタヌネットテクノロゞヌをベヌスずした、シンプルで効率的にシステム間での情報共有を可胜にする「 次䞖代の医療情報暙準芏栌 」ずしお䞖界各囜で泚目されおいたす。 HL7 は、䞖界に 30 以䞊の囜際支郚を有しおおり、日本では 1998 幎に 日本 HL7 協䌚 が蚭立されたした。そしお、珟圚流通しおいる HL7 芏栌には、デヌタ亀換に利甚される HL7v2 ず、医甚文曞の蚘述に利甚される CDA (Clinical Document Architecture)が存圚したす。 電子凊方箋ずは 電子凊方箋ずは、埓来の玙に印刷された凊方箋ではなく、医療機関ず調剀薬局が電子デヌタを甚いお凊方内容をやりずりする仕組みです。単玔にペヌパヌレス化するこずだけが目的ではなく、患者個人の服薬履歎を電子的に管理しお、重耇投薬の適正化を図るずいった目的もありたす。 実蚌事業の背景ず抂略 2016 幎 3 月の法什改正で、凊方箋の電子的な亀付が可胜ずなり、 運甚ガむドラむン も策定されたした。しかし、法什改正から数幎が経過した珟圚においおも、実運甚での課題が払拭できずに、電子凊方箋の党囜的な普及は進んでおりたせん。 ガむドラむンに定められた運甚フロヌ電子凊方せんの運甚ガむドラむンより転茉 元来、凊方箋には医垫の蚘名抌印、たたは眲名が必芁であるず医垫法で定められおいたす。珟行のガむドラむンは、この芏則を螏襲しお蚭蚈されおいたすので、玙の凊方箋の代替ずしお CDA で蚘述された静的ファむル を必芁ずし、蚘名抌印の代替ずしお HPKI を䜿甚した 電子眲名 が必芁ずなりたす。 たた、クラむアント端末で生成された静的ファむルが、むンタヌネットに流通するフロヌずなっおいたすので、改ざんの怜知を可胜ずするために 電子タむムスタンプ を付䞎する必芁がありたす。 このように耇雑化された運甚フロヌが、電子凊方箋の普及を阻害する芁因の 1 ぀であるず考えられたす。 こうした状況を螏たえ、珟行のガむドラむンに瞛られず、円滑な運甚ができる仕組みを怜蚎するために、実際の医療機関ず調剀薬局を䜿甚したフィヌルド実隓を実斜したした。 実蚌事業抂略 実斜目的電子凊方箋の運甚の仕組みの怜蚎・実蚌・考察 実斜期間2019 幎 2 月 4 日 - 2019 幎 3 月 17 日 実蚌゚リア東京郜枯区 協力斜蚭2 医療機関 / 6 薬局 利甚実瞟64 ä»¶ 電子凊方箋管理システムの抂芁 以䞋に瀺すのは、今回の実蚌事業で開発した評䟡システムです。本システムは「凊方箋管理システム」「医療機関システム」「薬局システム」「PHR アプリ」の 4 ぀のシステムから構成されおいたす。 システム抂芳 凊方箋管理システム 医療機関システム、薬局システム及び PHR アプリから接続され、各システムからの凊理芁求を受けお、凊方デヌタず調剀デヌタの返答、䜜成、線集、及び削陀を行う。 医療機関システム 蚺療結果ずしおの凊方デヌタを凊方箋管理システムに登録し、その結果ずしお返される凊方箋アクセスコヌドを患者に共有する。凊方箋アクセスコヌドは QR コヌドの掻甚を想定し、QR コヌドを印字した玙又は電子デヌタを患者に共有する。 「QR コヌド」は株匏䌚瀟デン゜ヌりェヌブの登録商暙です。 薬局システム 蚪問しおきた患者の本人確認を行った䞊で、凊方箋アクセスコヌドを受け取り、凊方箋管理システムにアクセスし凊方デヌタを参照する。凊方埌は調剀デヌタを凊方箋管理システムに栌玍する。 PHR アプリ 患者がオンラむン蚺療やお薬手垳の機胜を利甚するためのアプリ。凊方箋管理システムぞのアクセスが蚱可され、医療機関システムから受け取った凊方箋アクセスコヌドを元に、調剀結果を参照するこずを可胜にする。 医療機関システムは、メドレヌのクラりド電子カルテ「CLINICS カルテ」を利甚したしたが、システム連携に関わる郚分に぀いおは、他の電子カルテなどでも掻甚できるよう、疎に結合した蚭蚈を意識したした。 凊方箋管理システムは、前述の通り FHIR むンタヌフェむスを基盀ずしお構築したした。これは珟行のガむドラむンには蚘茉されおいない新たな詊みです。 HPKI を利甚した SSO(Single Sign On)による本人資栌確認 ず、FHIR むンタヌフェむスを利甚した クラりドベヌスでのデヌタフロヌ を実珟するこずが可胜であれば、耇雑化の芁因ずなっおいる静的ファむル、電子眲名、タむムスタンプは䞍芁であるず考えたした。 デヌタ蚭蚈 FHIR には「リ゜ヌス」ず呌ばれるデヌタセットが定められおいたす。リ゜ヌスは、Patient(患者)、Practitioner(斜術者)、Organization(組織)ずいった粒床で蚭蚈されおおり、リ゜ヌス単䜍でのデヌタ亀換が可胜です。 FHIR を利甚するためには、その目的に応じたリ゜ヌスの遞定ず、リ゜ヌスの䞋䜍抂念であるフィヌルドに蚭定する具䜓的な倀を定矩する必芁がありたす。 䟋えば、日本では人名を蚘述する際に、挢字氏名ずカナ氏名を䜵蚘するこずが䞀般的ですが、グロヌバル・スタンダヌドではありたせん。このような囜の事情に応じお、ロヌカラむズされた蚘述ルヌルを定める必芁がありたす。 実蚌事業で䜿甚したリ゜ヌス リ゜ヌス 説明 Patient 患者 Practitioner 斜術者凊方医薬剀垫 PractitionerRole 斜術者圹割 Organization 組織医療機関調剀薬局 MedicationRequest 投薬芁求 MedicationDispense 調剀実斜 Coverage 保険 FHIR を䜿甚した所感 FHIR の改版は on-Going で行われおいたす。実蚌事業のための開発を始めた頃は、STU3(Standard for Trial Use 3)が公匏バヌゞョンでした。しかし、あるずき急に FHIR のホヌムペヌゞが接続䞍安定になり困っおいたずころ、翌日には R4(Release 4)に曎新されおいたずいうこずもありたした。 このように、日進月歩の FHIR をプロダクトに組み蟌むには、タむミングの芋極めず、アップデヌトに远埓する「芚悟」を決めるこずが倧切だず思いたす。 2018 幎 12 月 27 日に R4 が Current Version になりたした FHIR の利点は、埓来の HL7 芏栌ず比范した 実装容易性 にあるず考えたす。REST(REpresentational State Transfer)のように、Web サヌビスでは䞀般的に普及しおいる抂念を暙準ずしお取り蟌んでいるため、**実装者は特別な知識を習埗する必芁がありたせん。**たた、FHIR を実装するためのオヌプン゜ヌスラむブラリが豊富に提䟛されおおり、これらを掻甚するこずによっお、本圓に必芁な凊理に泚力しお開発するこずが可胜ずなりたす。 臚床抂念モデルずしおの芳点では、CDA のベヌスずなっおいる HL7v3-RIM (Reference Information Model)ず比范するず、クラス、継承のようなオブゞェクト指向の抂念が廃止されおいたす。あらゆる臚床抂念をモデリング可胜ずするこずを目指した RIM ず比べるず、さすがに衚珟可胜な範囲は狭たるず思われたすが、網矅性は実甚域のレベルには達しおいるのではないでしょうか。 たた、1:1 のシステム連携におけるデヌタ亀換では、すでに皌働しおいる v2 むンタヌフェむスを、無理しお FHIR に眮き換える必芁は無いず思いたす。甚途に応じお、既存の芏栌ず共存しおいくのが倧切であるず考えたす。 実運甚ぞ向けおの課題 FHIR リ゜ヌスは、臚床抂念ずしおナニバヌサルに利甚可胜なものを䞭心に構成されおいたす。保険情報のような各囜の医療制床に応じお異なるものや、調剀技法に察する「䞀包化」や「粉砕」などの现かな指瀺情報に関しおは、ある皋床アドホックにマッピングするしかありたせんでした。実装者によるマッピングのブレが生じないようにするためには、 指暙ずなるガむドラむンの策定 が必芁になりたす。 たた、リ゜ヌスにマッピングする医薬品や甚法のマスタヌコヌドに぀いおは、 厚生劎働省暙準マスタヌ の利甚が望たれたす。しかしながら、満遍なく普及しおいるずは蚀い難い状況ですので、 暙準マスタヌ利甚の掚奚 も䜵せおガむドラむンに明蚘するこずが必芁です。 ガむドラむンは、メドレヌ 1 瀟で策定するこずが可胜なものではなく、医療情報システムの開発に関わる倚くの開発者に FHIR を利甚しおいただき、 実装方法に぀いおの議論 を亀わす必芁がありたす。しかし、珟時点での日本囜内における FHIR の掻甚事䟋は、残念ながらほずんど芋られたせん。 次にご玹介するのは、FHIR を䜿甚した簡単なコヌドのサンプルず、ロヌカル環境で FHIR Server を簡易的に動かす方法です。実装者の方が FHIR に觊れるきっかけになればず思っお曞きたしたので、ご参考にしおいただけたすず幞いです。 FHIR の実装サンプル FHIR を理解するためには、実際にコヌドを曞いお動かしおみるのが䞀番だず思いたす。ここでは、ロヌカル環境で FHIR Server を起動しお、リ゜ヌスを登録する簡単なプログラムを曞いおみたした。オヌプン゜ヌスの恩恵を最倧限に享受しおいたす。 実行環境 macOS v10.14.3 Ruby v2.5.1 Docker v18.09.2 FHIR Server Docker コンテナで FHIR Server を起動したす。簡単に動かせるように、DockerHub に公開されおいる HAPI-FHIR のコンテナむメヌゞを利甚したす。 HAPI-FHIR ずは、カナダのトロントにある医療研究機関の UHN(University Health Network)が立ち䞊げたプロゞェクトで、FHIR のオヌプン゜ヌスラむブラリを提䟛するこずを目的に掻動しおいたす。 https://github.com/jamesagnew/hapi-fhir https://hub.docker.com/r/petersonjared/hapi-fhir Docker コンテナむメヌゞの取埗 $ docker pull petersonjared/hapi-fhir $ docker run -d -p 8080:8080 --name=fhir petersonjared/hapi-fhir:dstu3 $ docker exec -it fhir /docker-entrypoint.sh java -jar /usr/local/jetty/start.jar Docker をむンストヌルするのが面倒な人は、HAPI-FHIR がグロヌバルに公開しおいる テストサヌバヌ を利甚するこずも可胜です。ただし、䞖界䞭の人がテストに利甚しおいるサヌバヌですので、機埮な個人情報は登録しないよう泚意が必芁です。 FHIR Client FHIR Client は、Ruby で動かしたす。以䞋の Gem を利甚したす。 $ gem install fhir_client $ gem install fhir_models Ruby のコヌドです。Patient リ゜ヌスを䜜成しお FHIR Server に登録したす。 patient.rb require 'fhir_client' client = FHIR::Client . new ( "https://localhost:8080/baseDstu3" ) FHIR::Model . client = client patient = FHIR::Patient . new # 患者 ID identifier = FHIR::Identifier . new identifier. value = '12345678' patient. identifier = identifier # 患者氏名 human_name = FHIR::HumanName . new human_name. family = 'Kodama' human_name. given = 'Yoshinori' patient. name . push (human_name) # 性別 patient. gender = 'male' patient. create puts patient. id 䞊蚘のコヌドを実行するず、FHIR Server に Patient リ゜ヌスが登録されたす。ここでリ゜ヌスを䞀意に特定するリ゜ヌス ID が採番されたす。今回は 19953 が採番されたした。puts patient.id で確認 このリ゜ヌス ID を利甚しお、FHIR Server に HTTP リク゚ストを送りたす。 $ curl https://localhost:8080/baseDstu3/Patient/19953 そうするず、先ほど登録したリ゜ヌスが JSON 圢匏で取埗できたす。 { "resourceType" : "Patient" , "id" : "19953" , "meta" : { "versionId" : "1" , "lastUpdated" : "2019-03-21T09:12:44.660+00:00" }, "text" : { "status" : "generated" , "div" : "<div xmlns= \" https://www.w3.org/1999/xhtml \" ><div class= \" hapiHeaderText \" >Yoshinori <b>KODAMA </b></div><table class= \" hapiPropertyTable \" ><tbody><tr><td>Identifier</td><td>12345678</td></tr></tbody></table></div>" }, "identifier" : [ { "value" : "12345678" } ], "name" : [ { "family" : "Kodama" , "given" : [ "Yoshinori" ] } ], "gender" : "male" } もちろん、患者 ID など利甚しお怜玢するこずも可胜です。 $ curl https://localhost:8080/baseDstu3/Patient?identifier= 12345678 さいごに 今回の実蚌事業では、FHIR のむンタヌフェむスを掻甚するこずにより、シンプルなアヌキテクチャずシヌムレスなフロヌで、迅速に凊方箋管理システムの構築ができ、電子凊方箋の運甚評䟡を行うこずができたした。本実蚌事業の最終成果報告曞は 厚生劎働省のサむト に公開されおいたすので、詳现に぀いお興味のある方はこちらをご参照ください。 https://www.mhlw.go.jp/stf/denshishohousen.html メドレヌは、実蚌事業で埗られた知芋を可胜な限りオヌプンにしお電子凊方箋の普及掚進に取り組むこずはもちろん、むンタヌネットを掻甚したオヌプンな技術の普及掻動に積極的に取り組み、医療機関ず患者の双方にずっおより良い医療の実珟を目指しおたいりたす。 お知らせ 今回の電子凊方箋実蚌事業の成果ず、システム開発に掻甚した FHIR に぀いお共有するむベントを、以䞋のずおり 4 月 23 日(火)に開催したす。お時間ある方はぜひご参加ください。 https://techplay.jp/event/725549 たた、メドレヌでは医療業界に存圚する課題に IT を駆䜿しお取り組んでいきたいメンバヌを、デザむナヌ・゚ンゞニアを䞭心に党職皮絶賛募集䞭です。皆さたからのご応募お埅ちしおおりたす。 https://www.medley.jp/recruit/creative.html
こんにちは。CLINICS 事業郚の児玉です。 今回は、メドレヌが 2018 幎 12 月に厚生劎働省から受蚗した「電子凊方箋の本栌運甚に向けた実蚌事業」で、医療情報暙準芏栌の FHIR を基盀ずした電子凊方箋管理システムを構築したしたので、その内容に぀いおご玹介したす。 FHIR ずは FHIR(Fast Healthcare Interoperability Resources)ずは、医療情報亀換の囜際暙準芏栌である HL7(Health Level 7)の䞭で最も新しい芏栌であり、むンタヌネットテクノロゞヌをベヌスずした、シンプルで効率的にシステム間での情報共有を可胜にする「 次䞖代の医療情報暙準芏栌 」ずしお䞖界各囜で泚目されおいたす。 HL7 は、䞖界に 30 以䞊の囜際支郚を有しおおり、日本では 1998 幎に 日本 HL7 協䌚 が蚭立されたした。そしお、珟圚流通しおいる HL7 芏栌には、デヌタ亀換に利甚される HL7v2 ず、医甚文曞の蚘述に利甚される CDA (Clinical Document Architecture)が存圚したす。 電子凊方箋ずは 電子凊方箋ずは、埓来の玙に印刷された凊方箋ではなく、医療機関ず調剀薬局が電子デヌタを甚いお凊方内容をやりずりする仕組みです。単玔にペヌパヌレス化するこずだけが目的ではなく、患者個人の服薬履歎を電子的に管理しお、重耇投薬の適正化を図るずいった目的もありたす。 実蚌事業の背景ず抂略 2016 幎 3 月の法什改正で、凊方箋の電子的な亀付が可胜ずなり、 運甚ガむドラむン も策定されたした。しかし、法什改正から数幎が経過した珟圚においおも、実運甚での課題が払拭できずに、電子凊方箋の党囜的な普及は進んでおりたせん。 ガむドラむンに定められた運甚フロヌ電子凊方せんの運甚ガむドラむンより転茉 元来、凊方箋には医垫の蚘名抌印、たたは眲名が必芁であるず医垫法で定められおいたす。珟行のガむドラむンは、この芏則を螏襲しお蚭蚈されおいたすので、玙の凊方箋の代替ずしお CDA で蚘述された静的ファむル を必芁ずし、蚘名抌印の代替ずしお HPKI を䜿甚した 電子眲名 が必芁ずなりたす。 たた、クラむアント端末で生成された静的ファむルが、むンタヌネットに流通するフロヌずなっおいたすので、改ざんの怜知を可胜ずするために 電子タむムスタンプ を付䞎する必芁がありたす。 このように耇雑化された運甚フロヌが、電子凊方箋の普及を阻害する芁因の 1 ぀であるず考えられたす。 こうした状況を螏たえ、珟行のガむドラむンに瞛られず、円滑な運甚ができる仕組みを怜蚎するために、実際の医療機関ず調剀薬局を䜿甚したフィヌルド実隓を実斜したした。 実蚌事業抂略 実斜目的電子凊方箋の運甚の仕組みの怜蚎・実蚌・考察 実斜期間2019 幎 2 月 4 日 - 2019 幎 3 月 17 日 実蚌゚リア東京郜枯区 協力斜蚭2 医療機関 / 6 薬局 利甚実瞟64 ä»¶ 電子凊方箋管理システムの抂芁 以䞋に瀺すのは、今回の実蚌事業で開発した評䟡システムです。本システムは「凊方箋管理システム」「医療機関システム」「薬局システム」「PHR アプリ」の 4 ぀のシステムから構成されおいたす。 システム抂芳 凊方箋管理システム 医療機関システム、薬局システム及び PHR アプリから接続され、各システムからの凊理芁求を受けお、凊方デヌタず調剀デヌタの返答、䜜成、線集、及び削陀を行う。 医療機関システム 蚺療結果ずしおの凊方デヌタを凊方箋管理システムに登録し、その結果ずしお返される凊方箋アクセスコヌドを患者に共有する。凊方箋アクセスコヌドは QR コヌドの掻甚を想定し、QR コヌドを印字した玙又は電子デヌタを患者に共有する。 「QR コヌド」は株匏䌚瀟デン゜ヌりェヌブの登録商暙です。 薬局システム 蚪問しおきた患者の本人確認を行った䞊で、凊方箋アクセスコヌドを受け取り、凊方箋管理システムにアクセスし凊方デヌタを参照する。凊方埌は調剀デヌタを凊方箋管理システムに栌玍する。 PHR アプリ 患者がオンラむン蚺療やお薬手垳の機胜を利甚するためのアプリ。凊方箋管理システムぞのアクセスが蚱可され、医療機関システムから受け取った凊方箋アクセスコヌドを元に、調剀結果を参照するこずを可胜にする。 医療機関システムは、メドレヌのクラりド電子カルテ「CLINICS カルテ」を利甚したしたが、システム連携に関わる郚分に぀いおは、他の電子カルテなどでも掻甚できるよう、疎に結合した蚭蚈を意識したした。 凊方箋管理システムは、前述の通り FHIR むンタヌフェむスを基盀ずしお構築したした。これは珟行のガむドラむンには蚘茉されおいない新たな詊みです。 HPKI を利甚した SSO(Single Sign On)による本人資栌確認 ず、FHIR むンタヌフェむスを利甚した クラりドベヌスでのデヌタフロヌ を実珟するこずが可胜であれば、耇雑化の芁因ずなっおいる静的ファむル、電子眲名、タむムスタンプは䞍芁であるず考えたした。 デヌタ蚭蚈 FHIR には「リ゜ヌス」ず呌ばれるデヌタセットが定められおいたす。リ゜ヌスは、Patient(患者)、Practitioner(斜術者)、Organization(組織)ずいった粒床で蚭蚈されおおり、リ゜ヌス単䜍でのデヌタ亀換が可胜です。 FHIR を利甚するためには、その目的に応じたリ゜ヌスの遞定ず、リ゜ヌスの䞋䜍抂念であるフィヌルドに蚭定する具䜓的な倀を定矩する必芁がありたす。 䟋えば、日本では人名を蚘述する際に、挢字氏名ずカナ氏名を䜵蚘するこずが䞀般的ですが、グロヌバル・スタンダヌドではありたせん。このような囜の事情に応じお、ロヌカラむズされた蚘述ルヌルを定める必芁がありたす。 実蚌事業で䜿甚したリ゜ヌス リ゜ヌス 説明 Patient 患者 Practitioner 斜術者凊方医薬剀垫 PractitionerRole 斜術者圹割 Organization 組織医療機関調剀薬局 MedicationRequest 投薬芁求 MedicationDispense 調剀実斜 Coverage 保険 FHIR を䜿甚した所感 FHIR の改版は on-Going で行われおいたす。実蚌事業のための開発を始めた頃は、STU3(Standard for Trial Use 3)が公匏バヌゞョンでした。しかし、あるずき急に FHIR のホヌムペヌゞが接続䞍安定になり困っおいたずころ、翌日には R4(Release 4)に曎新されおいたずいうこずもありたした。 このように、日進月歩の FHIR をプロダクトに組み蟌むには、タむミングの芋極めず、アップデヌトに远埓する「芚悟」を決めるこずが倧切だず思いたす。 2018 幎 12 月 27 日に R4 が Current Version になりたした FHIR の利点は、埓来の HL7 芏栌ず比范した 実装容易性 にあるず考えたす。REST(REpresentational State Transfer)のように、Web サヌビスでは䞀般的に普及しおいる抂念を暙準ずしお取り蟌んでいるため、**実装者は特別な知識を習埗する必芁がありたせん。**たた、FHIR を実装するためのオヌプン゜ヌスラむブラリが豊富に提䟛されおおり、これらを掻甚するこずによっお、本圓に必芁な凊理に泚力しお開発するこずが可胜ずなりたす。 臚床抂念モデルずしおの芳点では、CDA のベヌスずなっおいる HL7v3-RIM (Reference Information Model)ず比范するず、クラス、継承のようなオブゞェクト指向の抂念が廃止されおいたす。あらゆる臚床抂念をモデリング可胜ずするこずを目指した RIM ず比べるず、さすがに衚珟可胜な範囲は狭たるず思われたすが、網矅性は実甚域のレベルには達しおいるのではないでしょうか。 たた、1:1 のシステム連携におけるデヌタ亀換では、すでに皌働しおいる v2 むンタヌフェむスを、無理しお FHIR に眮き換える必芁は無いず思いたす。甚途に応じお、既存の芏栌ず共存しおいくのが倧切であるず考えたす。 実運甚ぞ向けおの課題 FHIR リ゜ヌスは、臚床抂念ずしおナニバヌサルに利甚可胜なものを䞭心に構成されおいたす。保険情報のような各囜の医療制床に応じお異なるものや、調剀技法に察する「䞀包化」や「粉砕」などの现かな指瀺情報に関しおは、ある皋床アドホックにマッピングするしかありたせんでした。実装者によるマッピングのブレが生じないようにするためには、 指暙ずなるガむドラむンの策定 が必芁になりたす。 たた、リ゜ヌスにマッピングする医薬品や甚法のマスタヌコヌドに぀いおは、 厚生劎働省暙準マスタヌ の利甚が望たれたす。しかしながら、満遍なく普及しおいるずは蚀い難い状況ですので、 暙準マスタヌ利甚の掚奚 も䜵せおガむドラむンに明蚘するこずが必芁です。 ガむドラむンは、メドレヌ 1 瀟で策定するこずが可胜なものではなく、医療情報システムの開発に関わる倚くの開発者に FHIR を利甚しおいただき、 実装方法に぀いおの議論 を亀わす必芁がありたす。しかし、珟時点での日本囜内における FHIR の掻甚事䟋は、残念ながらほずんど芋られたせん。 次にご玹介するのは、FHIR を䜿甚した簡単なコヌドのサンプルず、ロヌカル環境で FHIR Server を簡易的に動かす方法です。実装者の方が FHIR に觊れるきっかけになればず思っお曞きたしたので、ご参考にしおいただけたすず幞いです。 FHIR の実装サンプル FHIR を理解するためには、実際にコヌドを曞いお動かしおみるのが䞀番だず思いたす。ここでは、ロヌカル環境で FHIR Server を起動しお、リ゜ヌスを登録する簡単なプログラムを曞いおみたした。オヌプン゜ヌスの恩恵を最倧限に享受しおいたす。 実行環境 macOS v10.14.3 Ruby v2.5.1 Docker v18.09.2 FHIR Server Docker コンテナで FHIR Server を起動したす。簡単に動かせるように、DockerHub に公開されおいる HAPI-FHIR のコンテナむメヌゞを利甚したす。 HAPI-FHIR ずは、カナダのトロントにある医療研究機関の UHN(University Health Network)が立ち䞊げたプロゞェクトで、FHIR のオヌプン゜ヌスラむブラリを提䟛するこずを目的に掻動しおいたす。 GitHub - jamesagnew/hapi-fhir: 🔥 HAPI FHIR - Java API for HL7 FHIR Clients and Servers 🔥 HAPI FHIR - Java API for HL7 FHIR Clients and Servers - jamesagnew/hapi-fhir github.com hub.docker.com hub.docker.com Docker コンテナむメヌゞの取埗 $ docker pull petersonjared/hapi-fhir $ docker run -d -p 8080:8080 --name=fhir petersonjared/hapi-fhir:dstu3 $ docker exec -it fhir /docker-entrypoint.sh java -jar /usr/local/jetty/start.jar Docker をむンストヌルするのが面倒な人は、HAPI-FHIR がグロヌバルに公開しおいる テストサヌバヌ を利甚するこずも可胜です。ただし、䞖界䞭の人がテストに利甚しおいるサヌバヌですので、機埮な個人情報は登録しないよう泚意が必芁です。 FHIR Client FHIR Client は、Ruby で動かしたす。以䞋の Gem を利甚したす。 $ gem install fhir_client $ gem install fhir_models Ruby のコヌドです。Patient リ゜ヌスを䜜成しお FHIR Server に登録したす。 patient.rb require 'fhir_client' client = FHIR::Client . new ( "https://localhost:8080/baseDstu3" ) FHIR::Model . client = client patient = FHIR::Patient . new # 患者 ID identifier = FHIR::Identifier . new identifier. value = '12345678' patient. identifier = identifier # 患者氏名 human_name = FHIR::HumanName . new human_name. family = 'Kodama' human_name. given = 'Yoshinori' patient. name . push (human_name) # 性別 patient. gender = 'male' patient. create puts patient. id 䞊蚘のコヌドを実行するず、FHIR Server に Patient リ゜ヌスが登録されたす。ここでリ゜ヌスを䞀意に特定するリ゜ヌス ID が採番されたす。今回は 19953 が採番されたした。puts patient.id で確認 このリ゜ヌス ID を利甚しお、FHIR Server に HTTP リク゚ストを送りたす。 $ curl https://localhost:8080/baseDstu3/Patient/19953 そうするず、先ほど登録したリ゜ヌスが JSON 圢匏で取埗できたす。 { "resourceType" : "Patient" , "id" : "19953" , "meta" : { "versionId" : "1" , "lastUpdated" : "2019-03-21T09:12:44.660+00:00" }, "text" : { "status" : "generated" , "div" : "<div xmlns= \" https://www.w3.org/1999/xhtml \" ><div class= \" hapiHeaderText \" >Yoshinori <b>KODAMA </b></div><table class= \" hapiPropertyTable \" ><tbody><tr><td>Identifier</td><td>12345678</td></tr></tbody></table></div>" }, "identifier" : [ { "value" : "12345678" } ], "name" : [ { "family" : "Kodama" , "given" : [ "Yoshinori" ] } ], "gender" : "male" } もちろん、患者 ID など利甚しお怜玢するこずも可胜です。 $ curl https://localhost:8080/baseDstu3/Patient?identifier= 12345678 さいごに 今回の実蚌事業では、FHIR のむンタヌフェむスを掻甚するこずにより、シンプルなアヌキテクチャずシヌムレスなフロヌで、迅速に凊方箋管理システムの構築ができ、電子凊方箋の運甚評䟡を行うこずができたした。本実蚌事業の最終成果報告曞は 厚生劎働省のサむト に公開されおいたすので、詳现に぀いお興味のある方はこちらをご参照ください。 電子凊方箋 www.mhlw.go.jp メドレヌは、実蚌事業で埗られた知芋を可胜な限りオヌプンにしお電子凊方箋の普及掚進に取り組むこずはもちろん、むンタヌネットを掻甚したオヌプンな技術の普及掻動に積極的に取り組み、医療機関ず患者の双方にずっおより良い医療の実珟を目指しおたいりたす。 お知らせ 今回の電子凊方箋実蚌事業の成果ず、システム開発に掻甚した FHIR に぀いお共有するむベントを、以䞋のずおり 4 月 23 日(火)に開催したす。お時間ある方はぜひご参加ください。 FHIR Meetup Tokyo #01 @ TECH PLAY SHIBUYAIT勉匷䌚・むベントならTECH PLAYテックプレむ 2019/04/23火開催 今埌の医療ITシステムの栞ずなるであろう技術ずしお「FHIR」にフォヌカスし、FHIRの抂芁、FHIRを掻甚したテクノロゞヌ補品や事䟋の玹介、電子凊方箋実蚌事業におけるFHIR掻甚の事䟋など、開発者がFHIRを具䜓的に掻甚しおいくためのノりハりを共有しおいきたす。 techplay.jp たた、メドレヌでは医療業界に存圚する課題に IT を駆䜿しお取り組んでいきたいメンバヌを、デザむナヌ・゚ンゞニアを䞭心に党職皮絶賛募集䞭です。皆さたからのご応募お埅ちしおおりたす。 メンバヌのストヌリヌ | 株匏䌚瀟メドレヌ メンバヌのストヌリヌ 家族や友人が病気になった時に救いの手を差しのべる医療の力。... www.medley.jp
こんにちは。CLINICS 事業郚の児玉です。 今回は、メドレヌが 2018 幎 12 月に厚生劎働省から受蚗した「電子凊方箋の本栌運甚に向けた実蚌事業」で、医療情報暙準芏栌の FHIR を基盀ずした電子凊方箋管理システムを構築したしたので、その内容に぀いおご玹介したす。 FHIR ずは FHIR(Fast Healthcare Interoperability Resources)ずは、医療情報亀換の囜際暙準芏栌である HL7(Health Level 7)の䞭で最も新しい芏栌であり、むンタヌネットテクノロゞヌをベヌスずした、シンプルで効率的にシステム間での情報共有を可胜にする「 次䞖代の医療情報暙準芏栌 」ずしお䞖界各囜で泚目されおいたす。 HL7 は、䞖界に 30 以䞊の囜際支郚を有しおおり、日本では 1998 幎に 日本 HL7 協䌚 が蚭立されたした。そしお、珟圚流通しおいる HL7 芏栌には、デヌタ亀換に利甚される HL7v2 ず、医甚文曞の蚘述に利甚される CDA (Clinical Document Architecture)が存圚したす。 電子凊方箋ずは 電子凊方箋ずは、埓来の玙に印刷された凊方箋ではなく、医療機関ず調剀薬局が電子デヌタを甚いお凊方内容をやりずりする仕組みです。単玔にペヌパヌレス化するこずだけが目的ではなく、患者個人の服薬履歎を電子的に管理しお、重耇投薬の適正化を図るずいった目的もありたす。 実蚌事業の背景ず抂略 2016 幎 3 月の法什改正で、凊方箋の電子的な亀付が可胜ずなり、 運甚ガむドラむン も策定されたした。しかし、法什改正から数幎が経過した珟圚においおも、実運甚での課題が払拭できずに、電子凊方箋の党囜的な普及は進んでおりたせん。 ガむドラむンに定められた運甚フロヌ電子凊方せんの運甚ガむドラむンより転茉 元来、凊方箋には医垫の蚘名抌印、たたは眲名が必芁であるず医垫法で定められおいたす。珟行のガむドラむンは、この芏則を螏襲しお蚭蚈されおいたすので、玙の凊方箋の代替ずしお CDA で蚘述された静的ファむル を必芁ずし、蚘名抌印の代替ずしお HPKI を䜿甚した 電子眲名 が必芁ずなりたす。 たた、クラむアント端末で生成された静的ファむルが、むンタヌネットに流通するフロヌずなっおいたすので、改ざんの怜知を可胜ずするために 電子タむムスタンプ を付䞎する必芁がありたす。 このように耇雑化された運甚フロヌが、電子凊方箋の普及を阻害する芁因の 1 ぀であるず考えられたす。 こうした状況を螏たえ、珟行のガむドラむンに瞛られず、円滑な運甚ができる仕組みを怜蚎するために、実際の医療機関ず調剀薬局を䜿甚したフィヌルド実隓を実斜したした。 実蚌事業抂略 実斜目的電子凊方箋の運甚の仕組みの怜蚎・実蚌・考察 実斜期間2019 幎 2 月 4 日 - 2019 幎 3 月 17 日 実蚌゚リア東京郜枯区 協力斜蚭2 医療機関 / 6 薬局 利甚実瞟64 ä»¶ 電子凊方箋管理システムの抂芁 以䞋に瀺すのは、今回の実蚌事業で開発した評䟡システムです。本システムは「凊方箋管理システム」「医療機関システム」「薬局システム」「PHR アプリ」の 4 ぀のシステムから構成されおいたす。 システム抂芳 凊方箋管理システム 医療機関システム、薬局システム及び PHR アプリから接続され、各システムからの凊理芁求を受けお、凊方デヌタず調剀デヌタの返答、䜜成、線集、及び削陀を行う。 医療機関システム 蚺療結果ずしおの凊方デヌタを凊方箋管理システムに登録し、その結果ずしお返される凊方箋アクセスコヌドを患者に共有する。凊方箋アクセスコヌドは QR コヌドの掻甚を想定し、QR コヌドを印字した玙又は電子デヌタを患者に共有する。 「QR コヌド」は株匏䌚瀟デン゜ヌりェヌブの登録商暙です。 薬局システム 蚪問しおきた患者の本人確認を行った䞊で、凊方箋アクセスコヌドを受け取り、凊方箋管理システムにアクセスし凊方デヌタを参照する。凊方埌は調剀デヌタを凊方箋管理システムに栌玍する。 PHR アプリ 患者がオンラむン蚺療やお薬手垳の機胜を利甚するためのアプリ。凊方箋管理システムぞのアクセスが蚱可され、医療機関システムから受け取った凊方箋アクセスコヌドを元に、調剀結果を参照するこずを可胜にする。 医療機関システムは、メドレヌのクラりド電子カルテ「CLINICS カルテ」を利甚したしたが、システム連携に関わる郚分に぀いおは、他の電子カルテなどでも掻甚できるよう、疎に結合した蚭蚈を意識したした。 凊方箋管理システムは、前述の通り FHIR むンタヌフェむスを基盀ずしお構築したした。これは珟行のガむドラむンには蚘茉されおいない新たな詊みです。 HPKI を利甚した SSO(Single Sign On)による本人資栌確認 ず、FHIR むンタヌフェむスを利甚した クラりドベヌスでのデヌタフロヌ を実珟するこずが可胜であれば、耇雑化の芁因ずなっおいる静的ファむル、電子眲名、タむムスタンプは䞍芁であるず考えたした。 デヌタ蚭蚈 FHIR には「リ゜ヌス」ず呌ばれるデヌタセットが定められおいたす。リ゜ヌスは、Patient(患者)、Practitioner(斜術者)、Organization(組織)ずいった粒床で蚭蚈されおおり、リ゜ヌス単䜍でのデヌタ亀換が可胜です。 FHIR を利甚するためには、その目的に応じたリ゜ヌスの遞定ず、リ゜ヌスの䞋䜍抂念であるフィヌルドに蚭定する具䜓的な倀を定矩する必芁がありたす。 䟋えば、日本では人名を蚘述する際に、挢字氏名ずカナ氏名を䜵蚘するこずが䞀般的ですが、グロヌバル・スタンダヌドではありたせん。このような囜の事情に応じお、ロヌカラむズされた蚘述ルヌルを定める必芁がありたす。 実蚌事業で䜿甚したリ゜ヌス リ゜ヌス 説明 Patient 患者 Practitioner 斜術者凊方医薬剀垫 PractitionerRole 斜術者圹割 Organization 組織医療機関調剀薬局 MedicationRequest 投薬芁求 MedicationDispense 調剀実斜 Coverage 保険 FHIR を䜿甚した所感 FHIR の改版は on-Going で行われおいたす。実蚌事業のための開発を始めた頃は、STU3(Standard for Trial Use 3)が公匏バヌゞョンでした。しかし、あるずき急に FHIR のホヌムペヌゞが接続䞍安定になり困っおいたずころ、翌日には R4(Release 4)に曎新されおいたずいうこずもありたした。 このように、日進月歩の FHIR をプロダクトに組み蟌むには、タむミングの芋極めず、アップデヌトに远埓する「芚悟」を決めるこずが倧切だず思いたす。 2018 幎 12 月 27 日に R4 が Current Version になりたした FHIR の利点は、埓来の HL7 芏栌ず比范した 実装容易性 にあるず考えたす。REST(REpresentational State Transfer)のように、Web サヌビスでは䞀般的に普及しおいる抂念を暙準ずしお取り蟌んでいるため、**実装者は特別な知識を習埗する必芁がありたせん。**たた、FHIR を実装するためのオヌプン゜ヌスラむブラリが豊富に提䟛されおおり、これらを掻甚するこずによっお、本圓に必芁な凊理に泚力しお開発するこずが可胜ずなりたす。 臚床抂念モデルずしおの芳点では、CDA のベヌスずなっおいる HL7v3-RIM (Reference Information Model)ず比范するず、クラス、継承のようなオブゞェクト指向の抂念が廃止されおいたす。あらゆる臚床抂念をモデリング可胜ずするこずを目指した RIM ず比べるず、さすがに衚珟可胜な範囲は狭たるず思われたすが、網矅性は実甚域のレベルには達しおいるのではないでしょうか。 たた、1:1 のシステム連携におけるデヌタ亀換では、すでに皌働しおいる v2 むンタヌフェむスを、無理しお FHIR に眮き換える必芁は無いず思いたす。甚途に応じお、既存の芏栌ず共存しおいくのが倧切であるず考えたす。 実運甚ぞ向けおの課題 FHIR リ゜ヌスは、臚床抂念ずしおナニバヌサルに利甚可胜なものを䞭心に構成されおいたす。保険情報のような各囜の医療制床に応じお異なるものや、調剀技法に察する「䞀包化」や「粉砕」などの现かな指瀺情報に関しおは、ある皋床アドホックにマッピングするしかありたせんでした。実装者によるマッピングのブレが生じないようにするためには、 指暙ずなるガむドラむンの策定 が必芁になりたす。 たた、リ゜ヌスにマッピングする医薬品や甚法のマスタヌコヌドに぀いおは、 厚生劎働省暙準マスタヌ の利甚が望たれたす。しかしながら、満遍なく普及しおいるずは蚀い難い状況ですので、 暙準マスタヌ利甚の掚奚 も䜵せおガむドラむンに明蚘するこずが必芁です。 ガむドラむンは、メドレヌ 1 瀟で策定するこずが可胜なものではなく、医療情報システムの開発に関わる倚くの開発者に FHIR を利甚しおいただき、 実装方法に぀いおの議論 を亀わす必芁がありたす。しかし、珟時点での日本囜内における FHIR の掻甚事䟋は、残念ながらほずんど芋られたせん。 次にご玹介するのは、FHIR を䜿甚した簡単なコヌドのサンプルず、ロヌカル環境で FHIR Server を簡易的に動かす方法です。実装者の方が FHIR に觊れるきっかけになればず思っお曞きたしたので、ご参考にしおいただけたすず幞いです。 FHIR の実装サンプル FHIR を理解するためには、実際にコヌドを曞いお動かしおみるのが䞀番だず思いたす。ここでは、ロヌカル環境で FHIR Server を起動しお、リ゜ヌスを登録する簡単なプログラムを曞いおみたした。オヌプン゜ヌスの恩恵を最倧限に享受しおいたす。 実行環境 macOS v10.14.3 Ruby v2.5.1 Docker v18.09.2 FHIR Server Docker コンテナで FHIR Server を起動したす。簡単に動かせるように、DockerHub に公開されおいる HAPI-FHIR のコンテナむメヌゞを利甚したす。 HAPI-FHIR ずは、カナダのトロントにある医療研究機関の UHN(University Health Network)が立ち䞊げたプロゞェクトで、FHIR のオヌプン゜ヌスラむブラリを提䟛するこずを目的に掻動しおいたす。 GitHub - jamesagnew/hapi-fhir: 🔥 HAPI FHIR - Java API for HL7 FHIR Clients and Servers 🔥 HAPI FHIR - Java API for HL7 FHIR Clients and Servers - jamesagnew/hapi-fhir github.com hub.docker.com hub.docker.com Docker コンテナむメヌゞの取埗 $ docker pull petersonjared/hapi-fhir $ docker run -d -p 8080:8080 --name=fhir petersonjared/hapi-fhir:dstu3 $ docker exec -it fhir /docker-entrypoint.sh java -jar /usr/local/jetty/start.jar Docker をむンストヌルするのが面倒な人は、HAPI-FHIR がグロヌバルに公開しおいる テストサヌバヌ を利甚するこずも可胜です。ただし、䞖界䞭の人がテストに利甚しおいるサヌバヌですので、機埮な個人情報は登録しないよう泚意が必芁です。 FHIR Client FHIR Client は、Ruby で動かしたす。以䞋の Gem を利甚したす。 $ gem install fhir_client $ gem install fhir_models Ruby のコヌドです。Patient リ゜ヌスを䜜成しお FHIR Server に登録したす。 patient.rb require 'fhir_client' client = FHIR::Client . new ( "https://localhost:8080/baseDstu3" ) FHIR::Model . client = client patient = FHIR::Patient . new # 患者 ID identifier = FHIR::Identifier . new identifier. value = '12345678' patient. identifier = identifier # 患者氏名 human_name = FHIR::HumanName . new human_name. family = 'Kodama' human_name. given = 'Yoshinori' patient. name . push (human_name) # 性別 patient. gender = 'male' patient. create puts patient. id 䞊蚘のコヌドを実行するず、FHIR Server に Patient リ゜ヌスが登録されたす。ここでリ゜ヌスを䞀意に特定するリ゜ヌス ID が採番されたす。今回は 19953 が採番されたした。puts patient.id で確認 このリ゜ヌス ID を利甚しお、FHIR Server に HTTP リク゚ストを送りたす。 $ curl https://localhost:8080/baseDstu3/Patient/19953 そうするず、先ほど登録したリ゜ヌスが JSON 圢匏で取埗できたす。 { "resourceType" : "Patient" , "id" : "19953" , "meta" : { "versionId" : "1" , "lastUpdated" : "2019-03-21T09:12:44.660+00:00" }, "text" : { "status" : "generated" , "div" : "<div xmlns= \" https://www.w3.org/1999/xhtml \" ><div class= \" hapiHeaderText \" >Yoshinori <b>KODAMA </b></div><table class= \" hapiPropertyTable \" ><tbody><tr><td>Identifier</td><td>12345678</td></tr></tbody></table></div>" }, "identifier" : [ { "value" : "12345678" } ], "name" : [ { "family" : "Kodama" , "given" : [ "Yoshinori" ] } ], "gender" : "male" } もちろん、患者 ID など利甚しお怜玢するこずも可胜です。 $ curl https://localhost:8080/baseDstu3/Patient?identifier= 12345678 さいごに 今回の実蚌事業では、FHIR のむンタヌフェむスを掻甚するこずにより、シンプルなアヌキテクチャずシヌムレスなフロヌで、迅速に凊方箋管理システムの構築ができ、電子凊方箋の運甚評䟡を行うこずができたした。本実蚌事業の最終成果報告曞は 厚生劎働省のサむト に公開されおいたすので、詳现に぀いお興味のある方はこちらをご参照ください。 電子凊方箋 www.mhlw.go.jp メドレヌは、実蚌事業で埗られた知芋を可胜な限りオヌプンにしお電子凊方箋の普及掚進に取り組むこずはもちろん、むンタヌネットを掻甚したオヌプンな技術の普及掻動に積極的に取り組み、医療機関ず患者の双方にずっおより良い医療の実珟を目指しおたいりたす。 お知らせ 今回の電子凊方箋実蚌事業の成果ず、システム開発に掻甚した FHIR に぀いお共有するむベントを、以䞋のずおり 4 月 23 日(火)に開催したす。お時間ある方はぜひご参加ください。 FHIR Meetup Tokyo #01 @ TECH PLAY SHIBUYAIT勉匷䌚・むベントならTECH PLAYテックプレむ 2019/04/23火開催 今埌の医療ITシステムの栞ずなるであろう技術ずしお「FHIR」にフォヌカスし、FHIRの抂芁、FHIRを掻甚したテクノロゞヌ補品や事䟋の玹介、電子凊方箋実蚌事業におけるFHIR掻甚の事䟋など、開発者がFHIRを具䜓的に掻甚しおいくためのノりハりを共有しおいきたす。 techplay.jp たた、メドレヌでは医療業界に存圚する課題に IT を駆䜿しお取り組んでいきたいメンバヌを、デザむナヌ・゚ンゞニアを䞭心に党職皮絶賛募集䞭です。皆さたからのご応募お埅ちしおおりたす。 メンバヌのストヌリヌ | 株匏䌚瀟メドレヌ メンバヌのストヌリヌ 家族や友人が病気になった時に救いの手を差しのべる医療の力。... www.medley.jp
こんにちは。CLINICS 事業郚の児玉です。 今回は、メドレヌが 2018 幎 12 月に厚生劎働省から受蚗した「電子凊方箋の本栌運甚に向けた実蚌事業」で、医療情報暙準芏栌の FHIR を基盀ずした電子凊方箋管理システムを構築したしたので、その内容に぀いおご玹介したす。 FHIR ずは FHIR(Fast Healthcare Interoperability Resources)ずは、医療情報亀換の囜際暙準芏栌である HL7(Health Level 7)の䞭で最も新しい芏栌であり、むンタヌネットテクノロゞヌをベヌスずした、シンプルで効率的にシステム間での情報共有を可胜にする「 次䞖代の医療情報暙準芏栌 」ずしお䞖界各囜で泚目されおいたす。 HL7 は、䞖界に 30 以䞊の囜際支郚を有しおおり、日本では 1998 幎に 日本 HL7 協䌚 が蚭立されたした。そしお、珟圚流通しおいる HL7 芏栌には、デヌタ亀換に利甚される HL7v2 ず、医甚文曞の蚘述に利甚される CDA (Clinical Document Architecture)が存圚したす。 電子凊方箋ずは 電子凊方箋ずは、埓来の玙に印刷された凊方箋ではなく、医療機関ず調剀薬局が電子デヌタを甚いお凊方内容をやりずりする仕組みです。単玔にペヌパヌレス化するこずだけが目的ではなく、患者個人の服薬履歎を電子的に管理しお、重耇投薬の適正化を図るずいった目的もありたす。 実蚌事業の背景ず抂略 2016 幎 3 月の法什改正で、凊方箋の電子的な亀付が可胜ずなり、 運甚ガむドラむン も策定されたした。しかし、法什改正から数幎が経過した珟圚においおも、実運甚での課題が払拭できずに、電子凊方箋の党囜的な普及は進んでおりたせん。 ガむドラむンに定められた運甚フロヌ電子凊方せんの運甚ガむドラむンより転茉 元来、凊方箋には医垫の蚘名抌印、たたは眲名が必芁であるず医垫法で定められおいたす。珟行のガむドラむンは、この芏則を螏襲しお蚭蚈されおいたすので、玙の凊方箋の代替ずしお CDA で蚘述された静的ファむル を必芁ずし、蚘名抌印の代替ずしお HPKI を䜿甚した 電子眲名 が必芁ずなりたす。 たた、クラむアント端末で生成された静的ファむルが、むンタヌネットに流通するフロヌずなっおいたすので、改ざんの怜知を可胜ずするために 電子タむムスタンプ を付䞎する必芁がありたす。 このように耇雑化された運甚フロヌが、電子凊方箋の普及を阻害する芁因の 1 ぀であるず考えられたす。 こうした状況を螏たえ、珟行のガむドラむンに瞛られず、円滑な運甚ができる仕組みを怜蚎するために、実際の医療機関ず調剀薬局を䜿甚したフィヌルド実隓を実斜したした。 実蚌事業抂略 実斜目的電子凊方箋の運甚の仕組みの怜蚎・実蚌・考察 実斜期間2019 幎 2 月 4 日 - 2019 幎 3 月 17 日 実蚌゚リア東京郜枯区 協力斜蚭2 医療機関 / 6 薬局 利甚実瞟64 ä»¶ 電子凊方箋管理システムの抂芁 以䞋に瀺すのは、今回の実蚌事業で開発した評䟡システムです。本システムは「凊方箋管理システム」「医療機関システム」「薬局システム」「PHR アプリ」の 4 ぀のシステムから構成されおいたす。 システム抂芳 凊方箋管理システム 医療機関システム、薬局システム及び PHR アプリから接続され、各システムからの凊理芁求を受けお、凊方デヌタず調剀デヌタの返答、䜜成、線集、及び削陀を行う。 医療機関システム 蚺療結果ずしおの凊方デヌタを凊方箋管理システムに登録し、その結果ずしお返される凊方箋アクセスコヌドを患者に共有する。凊方箋アクセスコヌドは QR コヌドの掻甚を想定し、QR コヌドを印字した玙又は電子デヌタを患者に共有する。 「QR コヌド」は株匏䌚瀟デン゜ヌりェヌブの登録商暙です。 薬局システム 蚪問しおきた患者の本人確認を行った䞊で、凊方箋アクセスコヌドを受け取り、凊方箋管理システムにアクセスし凊方デヌタを参照する。凊方埌は調剀デヌタを凊方箋管理システムに栌玍する。 PHR アプリ 患者がオンラむン蚺療やお薬手垳の機胜を利甚するためのアプリ。凊方箋管理システムぞのアクセスが蚱可され、医療機関システムから受け取った凊方箋アクセスコヌドを元に、調剀結果を参照するこずを可胜にする。 医療機関システムは、メドレヌのクラりド電子カルテ「CLINICS カルテ」を利甚したしたが、システム連携に関わる郚分に぀いおは、他の電子カルテなどでも掻甚できるよう、疎に結合した蚭蚈を意識したした。 凊方箋管理システムは、前述の通り FHIR むンタヌフェむスを基盀ずしお構築したした。これは珟行のガむドラむンには蚘茉されおいない新たな詊みです。 HPKI を利甚した SSO(Single Sign On)による本人資栌確認 ず、FHIR むンタヌフェむスを利甚した クラりドベヌスでのデヌタフロヌ を実珟するこずが可胜であれば、耇雑化の芁因ずなっおいる静的ファむル、電子眲名、タむムスタンプは䞍芁であるず考えたした。 デヌタ蚭蚈 FHIR には「リ゜ヌス」ず呌ばれるデヌタセットが定められおいたす。リ゜ヌスは、Patient(患者)、Practitioner(斜術者)、Organization(組織)ずいった粒床で蚭蚈されおおり、リ゜ヌス単䜍でのデヌタ亀換が可胜です。 FHIR を利甚するためには、その目的に応じたリ゜ヌスの遞定ず、リ゜ヌスの䞋䜍抂念であるフィヌルドに蚭定する具䜓的な倀を定矩する必芁がありたす。 䟋えば、日本では人名を蚘述する際に、挢字氏名ずカナ氏名を䜵蚘するこずが䞀般的ですが、グロヌバル・スタンダヌドではありたせん。このような囜の事情に応じお、ロヌカラむズされた蚘述ルヌルを定める必芁がありたす。 実蚌事業で䜿甚したリ゜ヌス リ゜ヌス 説明 Patient 患者 Practitioner 斜術者凊方医薬剀垫 PractitionerRole 斜術者圹割 Organization 組織医療機関調剀薬局 MedicationRequest 投薬芁求 MedicationDispense 調剀実斜 Coverage 保険 FHIR を䜿甚した所感 FHIR の改版は on-Going で行われおいたす。実蚌事業のための開発を始めた頃は、STU3(Standard for Trial Use 3)が公匏バヌゞョンでした。しかし、あるずき急に FHIR のホヌムペヌゞが接続䞍安定になり困っおいたずころ、翌日には R4(Release 4)に曎新されおいたずいうこずもありたした。 このように、日進月歩の FHIR をプロダクトに組み蟌むには、タむミングの芋極めず、アップデヌトに远埓する「芚悟」を決めるこずが倧切だず思いたす。 2018 幎 12 月 27 日に R4 が Current Version になりたした FHIR の利点は、埓来の HL7 芏栌ず比范した 実装容易性 にあるず考えたす。REST(REpresentational State Transfer)のように、Web サヌビスでは䞀般的に普及しおいる抂念を暙準ずしお取り蟌んでいるため、**実装者は特別な知識を習埗する必芁がありたせん。**たた、FHIR を実装するためのオヌプン゜ヌスラむブラリが豊富に提䟛されおおり、これらを掻甚するこずによっお、本圓に必芁な凊理に泚力しお開発するこずが可胜ずなりたす。 臚床抂念モデルずしおの芳点では、CDA のベヌスずなっおいる HL7v3-RIM (Reference Information Model)ず比范するず、クラス、継承のようなオブゞェクト指向の抂念が廃止されおいたす。あらゆる臚床抂念をモデリング可胜ずするこずを目指した RIM ず比べるず、さすがに衚珟可胜な範囲は狭たるず思われたすが、網矅性は実甚域のレベルには達しおいるのではないでしょうか。 たた、1:1 のシステム連携におけるデヌタ亀換では、すでに皌働しおいる v2 むンタヌフェむスを、無理しお FHIR に眮き換える必芁は無いず思いたす。甚途に応じお、既存の芏栌ず共存しおいくのが倧切であるず考えたす。 実運甚ぞ向けおの課題 FHIR リ゜ヌスは、臚床抂念ずしおナニバヌサルに利甚可胜なものを䞭心に構成されおいたす。保険情報のような各囜の医療制床に応じお異なるものや、調剀技法に察する「䞀包化」や「粉砕」などの现かな指瀺情報に関しおは、ある皋床アドホックにマッピングするしかありたせんでした。実装者によるマッピングのブレが生じないようにするためには、 指暙ずなるガむドラむンの策定 が必芁になりたす。 たた、リ゜ヌスにマッピングする医薬品や甚法のマスタヌコヌドに぀いおは、 厚生劎働省暙準マスタヌ の利甚が望たれたす。しかしながら、満遍なく普及しおいるずは蚀い難い状況ですので、 暙準マスタヌ利甚の掚奚 も䜵せおガむドラむンに明蚘するこずが必芁です。 ガむドラむンは、メドレヌ 1 瀟で策定するこずが可胜なものではなく、医療情報システムの開発に関わる倚くの開発者に FHIR を利甚しおいただき、 実装方法に぀いおの議論 を亀わす必芁がありたす。しかし、珟時点での日本囜内における FHIR の掻甚事䟋は、残念ながらほずんど芋られたせん。 次にご玹介するのは、FHIR を䜿甚した簡単なコヌドのサンプルず、ロヌカル環境で FHIR Server を簡易的に動かす方法です。実装者の方が FHIR に觊れるきっかけになればず思っお曞きたしたので、ご参考にしおいただけたすず幞いです。 FHIR の実装サンプル FHIR を理解するためには、実際にコヌドを曞いお動かしおみるのが䞀番だず思いたす。ここでは、ロヌカル環境で FHIR Server を起動しお、リ゜ヌスを登録する簡単なプログラムを曞いおみたした。オヌプン゜ヌスの恩恵を最倧限に享受しおいたす。 実行環境 macOS v10.14.3 Ruby v2.5.1 Docker v18.09.2 FHIR Server Docker コンテナで FHIR Server を起動したす。簡単に動かせるように、DockerHub に公開されおいる HAPI-FHIR のコンテナむメヌゞを利甚したす。 HAPI-FHIR ずは、カナダのトロントにある医療研究機関の UHN(University Health Network)が立ち䞊げたプロゞェクトで、FHIR のオヌプン゜ヌスラむブラリを提䟛するこずを目的に掻動しおいたす。 GitHub - jamesagnew/hapi-fhir: 🔥 HAPI FHIR - Java API for HL7 FHIR Clients and Servers 🔥 HAPI FHIR - Java API for HL7 FHIR Clients and Servers - jamesagnew/hapi-fhir github.com hub.docker.com hub.docker.com Docker コンテナむメヌゞの取埗 $ docker pull petersonjared/hapi-fhir $ docker run -d -p 8080:8080 --name=fhir petersonjared/hapi-fhir:dstu3 $ docker exec -it fhir /docker-entrypoint.sh java -jar /usr/local/jetty/start.jar Docker をむンストヌルするのが面倒な人は、HAPI-FHIR がグロヌバルに公開しおいる テストサヌバヌ を利甚するこずも可胜です。ただし、䞖界䞭の人がテストに利甚しおいるサヌバヌですので、機埮な個人情報は登録しないよう泚意が必芁です。 FHIR Client FHIR Client は、Ruby で動かしたす。以䞋の Gem を利甚したす。 $ gem install fhir_client $ gem install fhir_models Ruby のコヌドです。Patient リ゜ヌスを䜜成しお FHIR Server に登録したす。 patient.rb require 'fhir_client' client = FHIR::Client . new ( "https://localhost:8080/baseDstu3" ) FHIR::Model . client = client patient = FHIR::Patient . new # 患者 ID identifier = FHIR::Identifier . new identifier. value = '12345678' patient. identifier = identifier # 患者氏名 human_name = FHIR::HumanName . new human_name. family = 'Kodama' human_name. given = 'Yoshinori' patient. name . push (human_name) # 性別 patient. gender = 'male' patient. create puts patient. id 䞊蚘のコヌドを実行するず、FHIR Server に Patient リ゜ヌスが登録されたす。ここでリ゜ヌスを䞀意に特定するリ゜ヌス ID が採番されたす。今回は 19953 が採番されたした。puts patient.id で確認 このリ゜ヌス ID を利甚しお、FHIR Server に HTTP リク゚ストを送りたす。 $ curl https://localhost:8080/baseDstu3/Patient/19953 そうするず、先ほど登録したリ゜ヌスが JSON 圢匏で取埗できたす。 { "resourceType" : "Patient" , "id" : "19953" , "meta" : { "versionId" : "1" , "lastUpdated" : "2019-03-21T09:12:44.660+00:00" }, "text" : { "status" : "generated" , "div" : "<div xmlns= \" https://www.w3.org/1999/xhtml \" ><div class= \" hapiHeaderText \" >Yoshinori <b>KODAMA </b></div><table class= \" hapiPropertyTable \" ><tbody><tr><td>Identifier</td><td>12345678</td></tr></tbody></table></div>" }, "identifier" : [ { "value" : "12345678" } ], "name" : [ { "family" : "Kodama" , "given" : [ "Yoshinori" ] } ], "gender" : "male" } もちろん、患者 ID など利甚しお怜玢するこずも可胜です。 $ curl https://localhost:8080/baseDstu3/Patient?identifier= 12345678 さいごに 今回の実蚌事業では、FHIR のむンタヌフェむスを掻甚するこずにより、シンプルなアヌキテクチャずシヌムレスなフロヌで、迅速に凊方箋管理システムの構築ができ、電子凊方箋の運甚評䟡を行うこずができたした。本実蚌事業の最終成果報告曞は 厚生劎働省のサむト に公開されおいたすので、詳现に぀いお興味のある方はこちらをご参照ください。 電子凊方箋 www.mhlw.go.jp メドレヌは、実蚌事業で埗られた知芋を可胜な限りオヌプンにしお電子凊方箋の普及掚進に取り組むこずはもちろん、むンタヌネットを掻甚したオヌプンな技術の普及掻動に積極的に取り組み、医療機関ず患者の双方にずっおより良い医療の実珟を目指しおたいりたす。 お知らせ 今回の電子凊方箋実蚌事業の成果ず、システム開発に掻甚した FHIR に぀いお共有するむベントを、以䞋のずおり 4 月 23 日(火)に開催したす。お時間ある方はぜひご参加ください。 FHIR Meetup Tokyo #01 @ TECH PLAY SHIBUYAIT勉匷䌚・むベントならTECH PLAYテックプレむ 2019/04/23火開催 今埌の医療ITシステムの栞ずなるであろう技術ずしお「FHIR」にフォヌカスし、FHIRの抂芁、FHIRを掻甚したテクノロゞヌ補品や事䟋の玹介、電子凊方箋実蚌事業におけるFHIR掻甚の事䟋など、開発者がFHIRを具䜓的に掻甚しおいくためのノりハりを共有しおいきたす。 techplay.jp たた、メドレヌでは医療業界に存圚する課題に IT を駆䜿しお取り組んでいきたいメンバヌを、デザむナヌ・゚ンゞニアを䞭心に党職皮絶賛募集䞭です。皆さたからのご応募お埅ちしおおりたす。 メンバヌのストヌリヌ | 株匏䌚瀟メドレヌ メンバヌのストヌリヌ 家族や友人が病気になった時に救いの手を差しのべる医療の力。... www.medley.jp
こんにちは。CLINICS 事業郚の児玉です。 今回は、メドレヌが 2018 幎 12 月に厚生劎働省から受蚗した「電子凊方箋の本栌運甚に向けた実蚌事業」で、医療情報暙準芏栌の FHIR を基盀ずした電子凊方箋管理システムを構築したしたので、その内容に぀いおご玹介したす。 FHIR ずは FHIR(Fast Healthcare Interoperability Resources)ずは、医療情報亀換の囜際暙準芏栌である HL7(Health Level 7)の䞭で最も新しい芏栌であり、むンタヌネットテクノロゞヌをベヌスずした、シンプルで効率的にシステム間での情報共有を可胜にする「 次䞖代の医療情報暙準芏栌 」ずしお䞖界各囜で泚目されおいたす。 HL7 は、䞖界に 30 以䞊の囜際支郚を有しおおり、日本では 1998 幎に 日本 HL7 協䌚 が蚭立されたした。そしお、珟圚流通しおいる HL7 芏栌には、デヌタ亀換に利甚される HL7v2 ず、医甚文曞の蚘述に利甚される CDA (Clinical Document Architecture)が存圚したす。 電子凊方箋ずは 電子凊方箋ずは、埓来の玙に印刷された凊方箋ではなく、医療機関ず調剀薬局が電子デヌタを甚いお凊方内容をやりずりする仕組みです。単玔にペヌパヌレス化するこずだけが目的ではなく、患者個人の服薬履歎を電子的に管理しお、重耇投薬の適正化を図るずいった目的もありたす。 実蚌事業の背景ず抂略 2016 幎 3 月の法什改正で、凊方箋の電子的な亀付が可胜ずなり、 運甚ガむドラむン も策定されたした。しかし、法什改正から数幎が経過した珟圚においおも、実運甚での課題が払拭できずに、電子凊方箋の党囜的な普及は進んでおりたせん。 ガむドラむンに定められた運甚フロヌ電子凊方せんの運甚ガむドラむンより転茉 元来、凊方箋には医垫の蚘名抌印、たたは眲名が必芁であるず医垫法で定められおいたす。珟行のガむドラむンは、この芏則を螏襲しお蚭蚈されおいたすので、玙の凊方箋の代替ずしお CDA で蚘述された静的ファむル を必芁ずし、蚘名抌印の代替ずしお HPKI を䜿甚した 電子眲名 が必芁ずなりたす。 たた、クラむアント端末で生成された静的ファむルが、むンタヌネットに流通するフロヌずなっおいたすので、改ざんの怜知を可胜ずするために 電子タむムスタンプ を付䞎する必芁がありたす。 このように耇雑化された運甚フロヌが、電子凊方箋の普及を阻害する芁因の 1 ぀であるず考えられたす。 こうした状況を螏たえ、珟行のガむドラむンに瞛られず、円滑な運甚ができる仕組みを怜蚎するために、実際の医療機関ず調剀薬局を䜿甚したフィヌルド実隓を実斜したした。 実蚌事業抂略 実斜目的電子凊方箋の運甚の仕組みの怜蚎・実蚌・考察 実斜期間2019 幎 2 月 4 日 - 2019 幎 3 月 17 日 実蚌゚リア東京郜枯区 協力斜蚭2 医療機関 / 6 薬局 利甚実瞟64 ä»¶ 電子凊方箋管理システムの抂芁 以䞋に瀺すのは、今回の実蚌事業で開発した評䟡システムです。本システムは「凊方箋管理システム」「医療機関システム」「薬局システム」「PHR アプリ」の 4 ぀のシステムから構成されおいたす。 システム抂芳 凊方箋管理システム 医療機関システム、薬局システム及び PHR アプリから接続され、各システムからの凊理芁求を受けお、凊方デヌタず調剀デヌタの返答、䜜成、線集、及び削陀を行う。 医療機関システム 蚺療結果ずしおの凊方デヌタを凊方箋管理システムに登録し、その結果ずしお返される凊方箋アクセスコヌドを患者に共有する。凊方箋アクセスコヌドは QR コヌドの掻甚を想定し、QR コヌドを印字した玙又は電子デヌタを患者に共有する。 「QR コヌド」は株匏䌚瀟デン゜ヌりェヌブの登録商暙です。 薬局システム 蚪問しおきた患者の本人確認を行った䞊で、凊方箋アクセスコヌドを受け取り、凊方箋管理システムにアクセスし凊方デヌタを参照する。凊方埌は調剀デヌタを凊方箋管理システムに栌玍する。 PHR アプリ 患者がオンラむン蚺療やお薬手垳の機胜を利甚するためのアプリ。凊方箋管理システムぞのアクセスが蚱可され、医療機関システムから受け取った凊方箋アクセスコヌドを元に、調剀結果を参照するこずを可胜にする。 医療機関システムは、メドレヌのクラりド電子カルテ「CLINICS カルテ」を利甚したしたが、システム連携に関わる郚分に぀いおは、他の電子カルテなどでも掻甚できるよう、疎に結合した蚭蚈を意識したした。 凊方箋管理システムは、前述の通り FHIR むンタヌフェむスを基盀ずしお構築したした。これは珟行のガむドラむンには蚘茉されおいない新たな詊みです。 HPKI を利甚した SSO(Single Sign On)による本人資栌確認 ず、FHIR むンタヌフェむスを利甚した クラりドベヌスでのデヌタフロヌ を実珟するこずが可胜であれば、耇雑化の芁因ずなっおいる静的ファむル、電子眲名、タむムスタンプは䞍芁であるず考えたした。 デヌタ蚭蚈 FHIR には「リ゜ヌス」ず呌ばれるデヌタセットが定められおいたす。リ゜ヌスは、Patient(患者)、Practitioner(斜術者)、Organization(組織)ずいった粒床で蚭蚈されおおり、リ゜ヌス単䜍でのデヌタ亀換が可胜です。 FHIR を利甚するためには、その目的に応じたリ゜ヌスの遞定ず、リ゜ヌスの䞋䜍抂念であるフィヌルドに蚭定する具䜓的な倀を定矩する必芁がありたす。 䟋えば、日本では人名を蚘述する際に、挢字氏名ずカナ氏名を䜵蚘するこずが䞀般的ですが、グロヌバル・スタンダヌドではありたせん。このような囜の事情に応じお、ロヌカラむズされた蚘述ルヌルを定める必芁がありたす。 実蚌事業で䜿甚したリ゜ヌス リ゜ヌス 説明 Patient 患者 Practitioner 斜術者凊方医薬剀垫 PractitionerRole 斜術者圹割 Organization 組織医療機関調剀薬局 MedicationRequest 投薬芁求 MedicationDispense 調剀実斜 Coverage 保険 FHIR を䜿甚した所感 FHIR の改版は on-Going で行われおいたす。実蚌事業のための開発を始めた頃は、STU3(Standard for Trial Use 3)が公匏バヌゞョンでした。しかし、あるずき急に FHIR のホヌムペヌゞが接続䞍安定になり困っおいたずころ、翌日には R4(Release 4)に曎新されおいたずいうこずもありたした。 このように、日進月歩の FHIR をプロダクトに組み蟌むには、タむミングの芋極めず、アップデヌトに远埓する「芚悟」を決めるこずが倧切だず思いたす。 2018 幎 12 月 27 日に R4 が Current Version になりたした FHIR の利点は、埓来の HL7 芏栌ず比范した 実装容易性 にあるず考えたす。REST(REpresentational State Transfer)のように、Web サヌビスでは䞀般的に普及しおいる抂念を暙準ずしお取り蟌んでいるため、**実装者は特別な知識を習埗する必芁がありたせん。**たた、FHIR を実装するためのオヌプン゜ヌスラむブラリが豊富に提䟛されおおり、これらを掻甚するこずによっお、本圓に必芁な凊理に泚力しお開発するこずが可胜ずなりたす。 臚床抂念モデルずしおの芳点では、CDA のベヌスずなっおいる HL7v3-RIM (Reference Information Model)ず比范するず、クラス、継承のようなオブゞェクト指向の抂念が廃止されおいたす。あらゆる臚床抂念をモデリング可胜ずするこずを目指した RIM ず比べるず、さすがに衚珟可胜な範囲は狭たるず思われたすが、網矅性は実甚域のレベルには達しおいるのではないでしょうか。 たた、1:1 のシステム連携におけるデヌタ亀換では、すでに皌働しおいる v2 むンタヌフェむスを、無理しお FHIR に眮き換える必芁は無いず思いたす。甚途に応じお、既存の芏栌ず共存しおいくのが倧切であるず考えたす。 実運甚ぞ向けおの課題 FHIR リ゜ヌスは、臚床抂念ずしおナニバヌサルに利甚可胜なものを䞭心に構成されおいたす。保険情報のような各囜の医療制床に応じお異なるものや、調剀技法に察する「䞀包化」や「粉砕」などの现かな指瀺情報に関しおは、ある皋床アドホックにマッピングするしかありたせんでした。実装者によるマッピングのブレが生じないようにするためには、 指暙ずなるガむドラむンの策定 が必芁になりたす。 たた、リ゜ヌスにマッピングする医薬品や甚法のマスタヌコヌドに぀いおは、 厚生劎働省暙準マスタヌ の利甚が望たれたす。しかしながら、満遍なく普及しおいるずは蚀い難い状況ですので、 暙準マスタヌ利甚の掚奚 も䜵せおガむドラむンに明蚘するこずが必芁です。 ガむドラむンは、メドレヌ 1 瀟で策定するこずが可胜なものではなく、医療情報システムの開発に関わる倚くの開発者に FHIR を利甚しおいただき、 実装方法に぀いおの議論 を亀わす必芁がありたす。しかし、珟時点での日本囜内における FHIR の掻甚事䟋は、残念ながらほずんど芋られたせん。 次にご玹介するのは、FHIR を䜿甚した簡単なコヌドのサンプルず、ロヌカル環境で FHIR Server を簡易的に動かす方法です。実装者の方が FHIR に觊れるきっかけになればず思っお曞きたしたので、ご参考にしおいただけたすず幞いです。 FHIR の実装サンプル FHIR を理解するためには、実際にコヌドを曞いお動かしおみるのが䞀番だず思いたす。ここでは、ロヌカル環境で FHIR Server を起動しお、リ゜ヌスを登録する簡単なプログラムを曞いおみたした。オヌプン゜ヌスの恩恵を最倧限に享受しおいたす。 実行環境 macOS v10.14.3 Ruby v2.5.1 Docker v18.09.2 FHIR Server Docker コンテナで FHIR Server を起動したす。簡単に動かせるように、DockerHub に公開されおいる HAPI-FHIR のコンテナむメヌゞを利甚したす。 HAPI-FHIR ずは、カナダのトロントにある医療研究機関の UHN(University Health Network)が立ち䞊げたプロゞェクトで、FHIR のオヌプン゜ヌスラむブラリを提䟛するこずを目的に掻動しおいたす。 GitHub - jamesagnew/hapi-fhir: 🔥 HAPI FHIR - Java API for HL7 FHIR Clients and Servers 🔥 HAPI FHIR - Java API for HL7 FHIR Clients and Servers - jamesagnew/hapi-fhir github.com hub.docker.com hub.docker.com Docker コンテナむメヌゞの取埗 $ docker pull petersonjared/hapi-fhir $ docker run -d -p 8080:8080 --name=fhir petersonjared/hapi-fhir:dstu3 $ docker exec -it fhir /docker-entrypoint.sh java -jar /usr/local/jetty/start.jar Docker をむンストヌルするのが面倒な人は、HAPI-FHIR がグロヌバルに公開しおいる テストサヌバヌ を利甚するこずも可胜です。ただし、䞖界䞭の人がテストに利甚しおいるサヌバヌですので、機埮な個人情報は登録しないよう泚意が必芁です。 FHIR Client FHIR Client は、Ruby で動かしたす。以䞋の Gem を利甚したす。 $ gem install fhir_client $ gem install fhir_models Ruby のコヌドです。Patient リ゜ヌスを䜜成しお FHIR Server に登録したす。 patient.rb require 'fhir_client' client = FHIR::Client . new ( "https://localhost:8080/baseDstu3" ) FHIR::Model . client = client patient = FHIR::Patient . new # 患者 ID identifier = FHIR::Identifier . new identifier. value = '12345678' patient. identifier = identifier # 患者氏名 human_name = FHIR::HumanName . new human_name. family = 'Kodama' human_name. given = 'Yoshinori' patient. name . push (human_name) # 性別 patient. gender = 'male' patient. create puts patient. id 䞊蚘のコヌドを実行するず、FHIR Server に Patient リ゜ヌスが登録されたす。ここでリ゜ヌスを䞀意に特定するリ゜ヌス ID が採番されたす。今回は 19953 が採番されたした。puts patient.id で確認 このリ゜ヌス ID を利甚しお、FHIR Server に HTTP リク゚ストを送りたす。 $ curl https://localhost:8080/baseDstu3/Patient/19953 そうするず、先ほど登録したリ゜ヌスが JSON 圢匏で取埗できたす。 { "resourceType" : "Patient" , "id" : "19953" , "meta" : { "versionId" : "1" , "lastUpdated" : "2019-03-21T09:12:44.660+00:00" }, "text" : { "status" : "generated" , "div" : "<div xmlns= \" https://www.w3.org/1999/xhtml \" ><div class= \" hapiHeaderText \" >Yoshinori <b>KODAMA </b></div><table class= \" hapiPropertyTable \" ><tbody><tr><td>Identifier</td><td>12345678</td></tr></tbody></table></div>" }, "identifier" : [ { "value" : "12345678" } ], "name" : [ { "family" : "Kodama" , "given" : [ "Yoshinori" ] } ], "gender" : "male" } もちろん、患者 ID など利甚しお怜玢するこずも可胜です。 $ curl https://localhost:8080/baseDstu3/Patient?identifier= 12345678 さいごに 今回の実蚌事業では、FHIR のむンタヌフェむスを掻甚するこずにより、シンプルなアヌキテクチャずシヌムレスなフロヌで、迅速に凊方箋管理システムの構築ができ、電子凊方箋の運甚評䟡を行うこずができたした。本実蚌事業の最終成果報告曞は 厚生劎働省のサむト に公開されおいたすので、詳现に぀いお興味のある方はこちらをご参照ください。 電子凊方箋 www.mhlw.go.jp メドレヌは、実蚌事業で埗られた知芋を可胜な限りオヌプンにしお電子凊方箋の普及掚進に取り組むこずはもちろん、むンタヌネットを掻甚したオヌプンな技術の普及掻動に積極的に取り組み、医療機関ず患者の双方にずっおより良い医療の実珟を目指しおたいりたす。 お知らせ 今回の電子凊方箋実蚌事業の成果ず、システム開発に掻甚した FHIR に぀いお共有するむベントを、以䞋のずおり 4 月 23 日(火)に開催したす。お時間ある方はぜひご参加ください。 FHIR Meetup Tokyo #01 @ TECH PLAY SHIBUYAIT勉匷䌚・むベントならTECH PLAYテックプレむ 2019/04/23火開催 今埌の医療ITシステムの栞ずなるであろう技術ずしお「FHIR」にフォヌカスし、FHIRの抂芁、FHIRを掻甚したテクノロゞヌ補品や事䟋の玹介、電子凊方箋実蚌事業におけるFHIR掻甚の事䟋など、開発者がFHIRを具䜓的に掻甚しおいくためのノりハりを共有しおいきたす。 techplay.jp たた、メドレヌでは医療業界に存圚する課題に IT を駆䜿しお取り組んでいきたいメンバヌを、デザむナヌ・゚ンゞニアを䞭心に党職皮絶賛募集䞭です。皆さたからのご応募お埅ちしおおりたす。 メンバヌのストヌリヌ | 株匏䌚瀟メドレヌ メンバヌのストヌリヌ 家族や友人が病気になった時に救いの手を差しのべる医療の力。... www.medley.jp
こんにちは。CLINICS 事業郚の児玉です。 今回は、メドレヌが 2018 幎 12 月に厚生劎働省から受蚗した「電子凊方箋の本栌運甚に向けた実蚌事業」で、医療情報暙準芏栌の FHIR を基盀ずした電子凊方箋管理システムを構築したしたので、その内容に぀いおご玹介したす。 FHIR ずは FHIR(Fast Healthcare Interoperability Resources)ずは、医療情報亀換の囜際暙準芏栌である HL7(Health Level 7)の䞭で最も新しい芏栌であり、むンタヌネットテクノロゞヌをベヌスずした、シンプルで効率的にシステム間での情報共有を可胜にする「 次䞖代の医療情報暙準芏栌 」ずしお䞖界各囜で泚目されおいたす。 HL7 は、䞖界に 30 以䞊の囜際支郚を有しおおり、日本では 1998 幎に 日本 HL7 協䌚 が蚭立されたした。そしお、珟圚流通しおいる HL7 芏栌には、デヌタ亀換に利甚される HL7v2 ず、医甚文曞の蚘述に利甚される CDA (Clinical Document Architecture)が存圚したす。 電子凊方箋ずは 電子凊方箋ずは、埓来の玙に印刷された凊方箋ではなく、医療機関ず調剀薬局が電子デヌタを甚いお凊方内容をやりずりする仕組みです。単玔にペヌパヌレス化するこずだけが目的ではなく、患者個人の服薬履歎を電子的に管理しお、重耇投薬の適正化を図るずいった目的もありたす。 実蚌事業の背景ず抂略 2016 幎 3 月の法什改正で、凊方箋の電子的な亀付が可胜ずなり、 運甚ガむドラむン も策定されたした。しかし、法什改正から数幎が経過した珟圚においおも、実運甚での課題が払拭できずに、電子凊方箋の党囜的な普及は進んでおりたせん。 ガむドラむンに定められた運甚フロヌ電子凊方せんの運甚ガむドラむンより転茉 元来、凊方箋には医垫の蚘名抌印、たたは眲名が必芁であるず医垫法で定められおいたす。珟行のガむドラむンは、この芏則を螏襲しお蚭蚈されおいたすので、玙の凊方箋の代替ずしお CDA で蚘述された静的ファむル を必芁ずし、蚘名抌印の代替ずしお HPKI を䜿甚した 電子眲名 が必芁ずなりたす。 たた、クラむアント端末で生成された静的ファむルが、むンタヌネットに流通するフロヌずなっおいたすので、改ざんの怜知を可胜ずするために 電子タむムスタンプ を付䞎する必芁がありたす。 このように耇雑化された運甚フロヌが、電子凊方箋の普及を阻害する芁因の 1 ぀であるず考えられたす。 こうした状況を螏たえ、珟行のガむドラむンに瞛られず、円滑な運甚ができる仕組みを怜蚎するために、実際の医療機関ず調剀薬局を䜿甚したフィヌルド実隓を実斜したした。 実蚌事業抂略 実斜目的電子凊方箋の運甚の仕組みの怜蚎・実蚌・考察 実斜期間2019 幎 2 月 4 日 - 2019 幎 3 月 17 日 実蚌゚リア東京郜枯区 協力斜蚭2 医療機関 / 6 薬局 利甚実瞟64 ä»¶ 電子凊方箋管理システムの抂芁 以䞋に瀺すのは、今回の実蚌事業で開発した評䟡システムです。本システムは「凊方箋管理システム」「医療機関システム」「薬局システム」「PHR アプリ」の 4 ぀のシステムから構成されおいたす。 システム抂芳 凊方箋管理システム 医療機関システム、薬局システム及び PHR アプリから接続され、各システムからの凊理芁求を受けお、凊方デヌタず調剀デヌタの返答、䜜成、線集、及び削陀を行う。 医療機関システム 蚺療結果ずしおの凊方デヌタを凊方箋管理システムに登録し、その結果ずしお返される凊方箋アクセスコヌドを患者に共有する。凊方箋アクセスコヌドは QR コヌドの掻甚を想定し、QR コヌドを印字した玙又は電子デヌタを患者に共有する。 「QR コヌド」は株匏䌚瀟デン゜ヌりェヌブの登録商暙です。 薬局システム 蚪問しおきた患者の本人確認を行った䞊で、凊方箋アクセスコヌドを受け取り、凊方箋管理システムにアクセスし凊方デヌタを参照する。凊方埌は調剀デヌタを凊方箋管理システムに栌玍する。 PHR アプリ 患者がオンラむン蚺療やお薬手垳の機胜を利甚するためのアプリ。凊方箋管理システムぞのアクセスが蚱可され、医療機関システムから受け取った凊方箋アクセスコヌドを元に、調剀結果を参照するこずを可胜にする。 医療機関システムは、メドレヌのクラりド電子カルテ「CLINICS カルテ」を利甚したしたが、システム連携に関わる郚分に぀いおは、他の電子カルテなどでも掻甚できるよう、疎に結合した蚭蚈を意識したした。 凊方箋管理システムは、前述の通り FHIR むンタヌフェむスを基盀ずしお構築したした。これは珟行のガむドラむンには蚘茉されおいない新たな詊みです。 HPKI を利甚した SSO(Single Sign On)による本人資栌確認 ず、FHIR むンタヌフェむスを利甚した クラりドベヌスでのデヌタフロヌ を実珟するこずが可胜であれば、耇雑化の芁因ずなっおいる静的ファむル、電子眲名、タむムスタンプは䞍芁であるず考えたした。 デヌタ蚭蚈 FHIR には「リ゜ヌス」ず呌ばれるデヌタセットが定められおいたす。リ゜ヌスは、Patient(患者)、Practitioner(斜術者)、Organization(組織)ずいった粒床で蚭蚈されおおり、リ゜ヌス単䜍でのデヌタ亀換が可胜です。 FHIR を利甚するためには、その目的に応じたリ゜ヌスの遞定ず、リ゜ヌスの䞋䜍抂念であるフィヌルドに蚭定する具䜓的な倀を定矩する必芁がありたす。 䟋えば、日本では人名を蚘述する際に、挢字氏名ずカナ氏名を䜵蚘するこずが䞀般的ですが、グロヌバル・スタンダヌドではありたせん。このような囜の事情に応じお、ロヌカラむズされた蚘述ルヌルを定める必芁がありたす。 実蚌事業で䜿甚したリ゜ヌス リ゜ヌス 説明 Patient 患者 Practitioner 斜術者凊方医薬剀垫 PractitionerRole 斜術者圹割 Organization 組織医療機関調剀薬局 MedicationRequest 投薬芁求 MedicationDispense 調剀実斜 Coverage 保険 FHIR を䜿甚した所感 FHIR の改版は on-Going で行われおいたす。実蚌事業のための開発を始めた頃は、STU3(Standard for Trial Use 3)が公匏バヌゞョンでした。しかし、あるずき急に FHIR のホヌムペヌゞが接続䞍安定になり困っおいたずころ、翌日には R4(Release 4)に曎新されおいたずいうこずもありたした。 このように、日進月歩の FHIR をプロダクトに組み蟌むには、タむミングの芋極めず、アップデヌトに远埓する「芚悟」を決めるこずが倧切だず思いたす。 2018 幎 12 月 27 日に R4 が Current Version になりたした FHIR の利点は、埓来の HL7 芏栌ず比范した 実装容易性 にあるず考えたす。REST(REpresentational State Transfer)のように、Web サヌビスでは䞀般的に普及しおいる抂念を暙準ずしお取り蟌んでいるため、**実装者は特別な知識を習埗する必芁がありたせん。**たた、FHIR を実装するためのオヌプン゜ヌスラむブラリが豊富に提䟛されおおり、これらを掻甚するこずによっお、本圓に必芁な凊理に泚力しお開発するこずが可胜ずなりたす。 臚床抂念モデルずしおの芳点では、CDA のベヌスずなっおいる HL7v3-RIM (Reference Information Model)ず比范するず、クラス、継承のようなオブゞェクト指向の抂念が廃止されおいたす。あらゆる臚床抂念をモデリング可胜ずするこずを目指した RIM ず比べるず、さすがに衚珟可胜な範囲は狭たるず思われたすが、網矅性は実甚域のレベルには達しおいるのではないでしょうか。 たた、1:1 のシステム連携におけるデヌタ亀換では、すでに皌働しおいる v2 むンタヌフェむスを、無理しお FHIR に眮き換える必芁は無いず思いたす。甚途に応じお、既存の芏栌ず共存しおいくのが倧切であるず考えたす。 実運甚ぞ向けおの課題 FHIR リ゜ヌスは、臚床抂念ずしおナニバヌサルに利甚可胜なものを䞭心に構成されおいたす。保険情報のような各囜の医療制床に応じお異なるものや、調剀技法に察する「䞀包化」や「粉砕」などの现かな指瀺情報に関しおは、ある皋床アドホックにマッピングするしかありたせんでした。実装者によるマッピングのブレが生じないようにするためには、 指暙ずなるガむドラむンの策定 が必芁になりたす。 たた、リ゜ヌスにマッピングする医薬品や甚法のマスタヌコヌドに぀いおは、 厚生劎働省暙準マスタヌ の利甚が望たれたす。しかしながら、満遍なく普及しおいるずは蚀い難い状況ですので、 暙準マスタヌ利甚の掚奚 も䜵せおガむドラむンに明蚘するこずが必芁です。 ガむドラむンは、メドレヌ 1 瀟で策定するこずが可胜なものではなく、医療情報システムの開発に関わる倚くの開発者に FHIR を利甚しおいただき、 実装方法に぀いおの議論 を亀わす必芁がありたす。しかし、珟時点での日本囜内における FHIR の掻甚事䟋は、残念ながらほずんど芋られたせん。 次にご玹介するのは、FHIR を䜿甚した簡単なコヌドのサンプルず、ロヌカル環境で FHIR Server を簡易的に動かす方法です。実装者の方が FHIR に觊れるきっかけになればず思っお曞きたしたので、ご参考にしおいただけたすず幞いです。 FHIR の実装サンプル FHIR を理解するためには、実際にコヌドを曞いお動かしおみるのが䞀番だず思いたす。ここでは、ロヌカル環境で FHIR Server を起動しお、リ゜ヌスを登録する簡単なプログラムを曞いおみたした。オヌプン゜ヌスの恩恵を最倧限に享受しおいたす。 実行環境 macOS v10.14.3 Ruby v2.5.1 Docker v18.09.2 FHIR Server Docker コンテナで FHIR Server を起動したす。簡単に動かせるように、DockerHub に公開されおいる HAPI-FHIR のコンテナむメヌゞを利甚したす。 HAPI-FHIR ずは、カナダのトロントにある医療研究機関の UHN(University Health Network)が立ち䞊げたプロゞェクトで、FHIR のオヌプン゜ヌスラむブラリを提䟛するこずを目的に掻動しおいたす。 GitHub - jamesagnew/hapi-fhir: 🔥 HAPI FHIR - Java API for HL7 FHIR Clients and Servers 🔥 HAPI FHIR - Java API for HL7 FHIR Clients and Servers - jamesagnew/hapi-fhir github.com hub.docker.com hub.docker.com Docker コンテナむメヌゞの取埗 $ docker pull petersonjared/hapi-fhir $ docker run -d -p 8080:8080 --name=fhir petersonjared/hapi-fhir:dstu3 $ docker exec -it fhir /docker-entrypoint.sh java -jar /usr/local/jetty/start.jar Docker をむンストヌルするのが面倒な人は、HAPI-FHIR がグロヌバルに公開しおいる テストサヌバヌ を利甚するこずも可胜です。ただし、䞖界䞭の人がテストに利甚しおいるサヌバヌですので、機埮な個人情報は登録しないよう泚意が必芁です。 FHIR Client FHIR Client は、Ruby で動かしたす。以䞋の Gem を利甚したす。 $ gem install fhir_client $ gem install fhir_models Ruby のコヌドです。Patient リ゜ヌスを䜜成しお FHIR Server に登録したす。 patient.rb require 'fhir_client' client = FHIR::Client . new ( "https://localhost:8080/baseDstu3" ) FHIR::Model . client = client patient = FHIR::Patient . new # 患者 ID identifier = FHIR::Identifier . new identifier. value = '12345678' patient. identifier = identifier # 患者氏名 human_name = FHIR::HumanName . new human_name. family = 'Kodama' human_name. given = 'Yoshinori' patient. name . push (human_name) # 性別 patient. gender = 'male' patient. create puts patient. id 䞊蚘のコヌドを実行するず、FHIR Server に Patient リ゜ヌスが登録されたす。ここでリ゜ヌスを䞀意に特定するリ゜ヌス ID が採番されたす。今回は 19953 が採番されたした。puts patient.id で確認 このリ゜ヌス ID を利甚しお、FHIR Server に HTTP リク゚ストを送りたす。 $ curl https://localhost:8080/baseDstu3/Patient/19953 そうするず、先ほど登録したリ゜ヌスが JSON 圢匏で取埗できたす。 { "resourceType" : "Patient" , "id" : "19953" , "meta" : { "versionId" : "1" , "lastUpdated" : "2019-03-21T09:12:44.660+00:00" }, "text" : { "status" : "generated" , "div" : "<div xmlns= \" https://www.w3.org/1999/xhtml \" ><div class= \" hapiHeaderText \" >Yoshinori <b>KODAMA </b></div><table class= \" hapiPropertyTable \" ><tbody><tr><td>Identifier</td><td>12345678</td></tr></tbody></table></div>" }, "identifier" : [ { "value" : "12345678" } ], "name" : [ { "family" : "Kodama" , "given" : [ "Yoshinori" ] } ], "gender" : "male" } もちろん、患者 ID など利甚しお怜玢するこずも可胜です。 $ curl https://localhost:8080/baseDstu3/Patient?identifier= 12345678 さいごに 今回の実蚌事業では、FHIR のむンタヌフェむスを掻甚するこずにより、シンプルなアヌキテクチャずシヌムレスなフロヌで、迅速に凊方箋管理システムの構築ができ、電子凊方箋の運甚評䟡を行うこずができたした。本実蚌事業の最終成果報告曞は 厚生劎働省のサむト に公開されおいたすので、詳现に぀いお興味のある方はこちらをご参照ください。 電子凊方箋 www.mhlw.go.jp メドレヌは、実蚌事業で埗られた知芋を可胜な限りオヌプンにしお電子凊方箋の普及掚進に取り組むこずはもちろん、むンタヌネットを掻甚したオヌプンな技術の普及掻動に積極的に取り組み、医療機関ず患者の双方にずっおより良い医療の実珟を目指しおたいりたす。 お知らせ 今回の電子凊方箋実蚌事業の成果ず、システム開発に掻甚した FHIR に぀いお共有するむベントを、以䞋のずおり 4 月 23 日(火)に開催したす。お時間ある方はぜひご参加ください。 FHIR Meetup Tokyo #01 @ TECH PLAY SHIBUYAIT勉匷䌚・むベントならTECH PLAYテックプレむ 2019/04/23火開催 今埌の医療ITシステムの栞ずなるであろう技術ずしお「FHIR」にフォヌカスし、FHIRの抂芁、FHIRを掻甚したテクノロゞヌ補品や事䟋の玹介、電子凊方箋実蚌事業におけるFHIR掻甚の事䟋など、開発者がFHIRを具䜓的に掻甚しおいくためのノりハりを共有しおいきたす。 techplay.jp たた、メドレヌでは医療業界に存圚する課題に IT を駆䜿しお取り組んでいきたいメンバヌを、デザむナヌ・゚ンゞニアを䞭心に党職皮絶賛募集䞭です。皆さたからのご応募お埅ちしおおりたす。 メンバヌのストヌリヌ | 株匏䌚瀟メドレヌ メンバヌのストヌリヌ 家族や友人が病気になった時に救いの手を差しのべる医療の力。... www.medley.jp
こんにちは。CLINICS 事業郚の児玉です。 今回は、メドレヌが 2018 幎 12 月に厚生劎働省から受蚗した「電子凊方箋の本栌運甚に向けた実蚌事業」で、医療情報暙準芏栌の FHIR を基盀ずした電子凊方箋管理システムを構築したしたので、その内容に぀いおご玹介したす。 FHIR ずは FHIR(Fast Healthcare Interoperability Resources)ずは、医療情報亀換の囜際暙準芏栌である HL7(Health Level 7)の䞭で最も新しい芏栌であり、むンタヌネットテクノロゞヌをベヌスずした、シンプルで効率的にシステム間での情報共有を可胜にする「 次䞖代の医療情報暙準芏栌 」ずしお䞖界各囜で泚目されおいたす。 HL7 は、䞖界に 30 以䞊の囜際支郚を有しおおり、日本では 1998 幎に 日本 HL7 協䌚 が蚭立されたした。そしお、珟圚流通しおいる HL7 芏栌には、デヌタ亀換に利甚される HL7v2 ず、医甚文曞の蚘述に利甚される CDA (Clinical Document Architecture)が存圚したす。 電子凊方箋ずは 電子凊方箋ずは、埓来の玙に印刷された凊方箋ではなく、医療機関ず調剀薬局が電子デヌタを甚いお凊方内容をやりずりする仕組みです。単玔にペヌパヌレス化するこずだけが目的ではなく、患者個人の服薬履歎を電子的に管理しお、重耇投薬の適正化を図るずいった目的もありたす。 実蚌事業の背景ず抂略 2016 幎 3 月の法什改正で、凊方箋の電子的な亀付が可胜ずなり、 運甚ガむドラむン も策定されたした。しかし、法什改正から数幎が経過した珟圚においおも、実運甚での課題が払拭できずに、電子凊方箋の党囜的な普及は進んでおりたせん。 ガむドラむンに定められた運甚フロヌ電子凊方せんの運甚ガむドラむンより転茉 元来、凊方箋には医垫の蚘名抌印、たたは眲名が必芁であるず医垫法で定められおいたす。珟行のガむドラむンは、この芏則を螏襲しお蚭蚈されおいたすので、玙の凊方箋の代替ずしお CDA で蚘述された静的ファむル を必芁ずし、蚘名抌印の代替ずしお HPKI を䜿甚した 電子眲名 が必芁ずなりたす。 たた、クラむアント端末で生成された静的ファむルが、むンタヌネットに流通するフロヌずなっおいたすので、改ざんの怜知を可胜ずするために 電子タむムスタンプ を付䞎する必芁がありたす。 このように耇雑化された運甚フロヌが、電子凊方箋の普及を阻害する芁因の 1 ぀であるず考えられたす。 こうした状況を螏たえ、珟行のガむドラむンに瞛られず、円滑な運甚ができる仕組みを怜蚎するために、実際の医療機関ず調剀薬局を䜿甚したフィヌルド実隓を実斜したした。 実蚌事業抂略 実斜目的電子凊方箋の運甚の仕組みの怜蚎・実蚌・考察 実斜期間2019 幎 2 月 4 日 - 2019 幎 3 月 17 日 実蚌゚リア東京郜枯区 協力斜蚭2 医療機関 / 6 薬局 利甚実瞟64 ä»¶ 電子凊方箋管理システムの抂芁 以䞋に瀺すのは、今回の実蚌事業で開発した評䟡システムです。本システムは「凊方箋管理システム」「医療機関システム」「薬局システム」「PHR アプリ」の 4 ぀のシステムから構成されおいたす。 システム抂芳 凊方箋管理システム 医療機関システム、薬局システム及び PHR アプリから接続され、各システムからの凊理芁求を受けお、凊方デヌタず調剀デヌタの返答、䜜成、線集、及び削陀を行う。 医療機関システム 蚺療結果ずしおの凊方デヌタを凊方箋管理システムに登録し、その結果ずしお返される凊方箋アクセスコヌドを患者に共有する。凊方箋アクセスコヌドは QR コヌドの掻甚を想定し、QR コヌドを印字した玙又は電子デヌタを患者に共有する。 「QR コヌド」は株匏䌚瀟デン゜ヌりェヌブの登録商暙です。 薬局システム 蚪問しおきた患者の本人確認を行った䞊で、凊方箋アクセスコヌドを受け取り、凊方箋管理システムにアクセスし凊方デヌタを参照する。凊方埌は調剀デヌタを凊方箋管理システムに栌玍する。 PHR アプリ 患者がオンラむン蚺療やお薬手垳の機胜を利甚するためのアプリ。凊方箋管理システムぞのアクセスが蚱可され、医療機関システムから受け取った凊方箋アクセスコヌドを元に、調剀結果を参照するこずを可胜にする。 医療機関システムは、メドレヌのクラりド電子カルテ「CLINICS カルテ」を利甚したしたが、システム連携に関わる郚分に぀いおは、他の電子カルテなどでも掻甚できるよう、疎に結合した蚭蚈を意識したした。 凊方箋管理システムは、前述の通り FHIR むンタヌフェむスを基盀ずしお構築したした。これは珟行のガむドラむンには蚘茉されおいない新たな詊みです。 HPKI を利甚した SSO(Single Sign On)による本人資栌確認 ず、FHIR むンタヌフェむスを利甚した クラりドベヌスでのデヌタフロヌ を実珟するこずが可胜であれば、耇雑化の芁因ずなっおいる静的ファむル、電子眲名、タむムスタンプは䞍芁であるず考えたした。 デヌタ蚭蚈 FHIR には「リ゜ヌス」ず呌ばれるデヌタセットが定められおいたす。リ゜ヌスは、Patient(患者)、Practitioner(斜術者)、Organization(組織)ずいった粒床で蚭蚈されおおり、リ゜ヌス単䜍でのデヌタ亀換が可胜です。 FHIR を利甚するためには、その目的に応じたリ゜ヌスの遞定ず、リ゜ヌスの䞋䜍抂念であるフィヌルドに蚭定する具䜓的な倀を定矩する必芁がありたす。 䟋えば、日本では人名を蚘述する際に、挢字氏名ずカナ氏名を䜵蚘するこずが䞀般的ですが、グロヌバル・スタンダヌドではありたせん。このような囜の事情に応じお、ロヌカラむズされた蚘述ルヌルを定める必芁がありたす。 実蚌事業で䜿甚したリ゜ヌス リ゜ヌス 説明 Patient 患者 Practitioner 斜術者凊方医薬剀垫 PractitionerRole 斜術者圹割 Organization 組織医療機関調剀薬局 MedicationRequest 投薬芁求 MedicationDispense 調剀実斜 Coverage 保険 FHIR を䜿甚した所感 FHIR の改版は on-Going で行われおいたす。実蚌事業のための開発を始めた頃は、STU3(Standard for Trial Use 3)が公匏バヌゞョンでした。しかし、あるずき急に FHIR のホヌムペヌゞが接続䞍安定になり困っおいたずころ、翌日には R4(Release 4)に曎新されおいたずいうこずもありたした。 このように、日進月歩の FHIR をプロダクトに組み蟌むには、タむミングの芋極めず、アップデヌトに远埓する「芚悟」を決めるこずが倧切だず思いたす。 2018 幎 12 月 27 日に R4 が Current Version になりたした FHIR の利点は、埓来の HL7 芏栌ず比范した 実装容易性 にあるず考えたす。REST(REpresentational State Transfer)のように、Web サヌビスでは䞀般的に普及しおいる抂念を暙準ずしお取り蟌んでいるため、**実装者は特別な知識を習埗する必芁がありたせん。**たた、FHIR を実装するためのオヌプン゜ヌスラむブラリが豊富に提䟛されおおり、これらを掻甚するこずによっお、本圓に必芁な凊理に泚力しお開発するこずが可胜ずなりたす。 臚床抂念モデルずしおの芳点では、CDA のベヌスずなっおいる HL7v3-RIM (Reference Information Model)ず比范するず、クラス、継承のようなオブゞェクト指向の抂念が廃止されおいたす。あらゆる臚床抂念をモデリング可胜ずするこずを目指した RIM ず比べるず、さすがに衚珟可胜な範囲は狭たるず思われたすが、網矅性は実甚域のレベルには達しおいるのではないでしょうか。 たた、1:1 のシステム連携におけるデヌタ亀換では、すでに皌働しおいる v2 むンタヌフェむスを、無理しお FHIR に眮き換える必芁は無いず思いたす。甚途に応じお、既存の芏栌ず共存しおいくのが倧切であるず考えたす。 実運甚ぞ向けおの課題 FHIR リ゜ヌスは、臚床抂念ずしおナニバヌサルに利甚可胜なものを䞭心に構成されおいたす。保険情報のような各囜の医療制床に応じお異なるものや、調剀技法に察する「䞀包化」や「粉砕」などの现かな指瀺情報に関しおは、ある皋床アドホックにマッピングするしかありたせんでした。実装者によるマッピングのブレが生じないようにするためには、 指暙ずなるガむドラむンの策定 が必芁になりたす。 たた、リ゜ヌスにマッピングする医薬品や甚法のマスタヌコヌドに぀いおは、 厚生劎働省暙準マスタヌ の利甚が望たれたす。しかしながら、満遍なく普及しおいるずは蚀い難い状況ですので、 暙準マスタヌ利甚の掚奚 も䜵せおガむドラむンに明蚘するこずが必芁です。 ガむドラむンは、メドレヌ 1 瀟で策定するこずが可胜なものではなく、医療情報システムの開発に関わる倚くの開発者に FHIR を利甚しおいただき、 実装方法に぀いおの議論 を亀わす必芁がありたす。しかし、珟時点での日本囜内における FHIR の掻甚事䟋は、残念ながらほずんど芋られたせん。 次にご玹介するのは、FHIR を䜿甚した簡単なコヌドのサンプルず、ロヌカル環境で FHIR Server を簡易的に動かす方法です。実装者の方が FHIR に觊れるきっかけになればず思っお曞きたしたので、ご参考にしおいただけたすず幞いです。 FHIR の実装サンプル FHIR を理解するためには、実際にコヌドを曞いお動かしおみるのが䞀番だず思いたす。ここでは、ロヌカル環境で FHIR Server を起動しお、リ゜ヌスを登録する簡単なプログラムを曞いおみたした。オヌプン゜ヌスの恩恵を最倧限に享受しおいたす。 実行環境 macOS v10.14.3 Ruby v2.5.1 Docker v18.09.2 FHIR Server Docker コンテナで FHIR Server を起動したす。簡単に動かせるように、DockerHub に公開されおいる HAPI-FHIR のコンテナむメヌゞを利甚したす。 HAPI-FHIR ずは、カナダのトロントにある医療研究機関の UHN(University Health Network)が立ち䞊げたプロゞェクトで、FHIR のオヌプン゜ヌスラむブラリを提䟛するこずを目的に掻動しおいたす。 GitHub - jamesagnew/hapi-fhir: 🔥 HAPI FHIR - Java API for HL7 FHIR Clients and Servers 🔥 HAPI FHIR - Java API for HL7 FHIR Clients and Servers - jamesagnew/hapi-fhir github.com hub.docker.com hub.docker.com Docker コンテナむメヌゞの取埗 $ docker pull petersonjared/hapi-fhir $ docker run -d -p 8080:8080 --name=fhir petersonjared/hapi-fhir:dstu3 $ docker exec -it fhir /docker-entrypoint.sh java -jar /usr/local/jetty/start.jar Docker をむンストヌルするのが面倒な人は、HAPI-FHIR がグロヌバルに公開しおいる テストサヌバヌ を利甚するこずも可胜です。ただし、䞖界䞭の人がテストに利甚しおいるサヌバヌですので、機埮な個人情報は登録しないよう泚意が必芁です。 FHIR Client FHIR Client は、Ruby で動かしたす。以䞋の Gem を利甚したす。 $ gem install fhir_client $ gem install fhir_models Ruby のコヌドです。Patient リ゜ヌスを䜜成しお FHIR Server に登録したす。 patient.rb require 'fhir_client' client = FHIR::Client . new ( "https://localhost:8080/baseDstu3" ) FHIR::Model . client = client patient = FHIR::Patient . new # 患者 ID identifier = FHIR::Identifier . new identifier. value = '12345678' patient. identifier = identifier # 患者氏名 human_name = FHIR::HumanName . new human_name. family = 'Kodama' human_name. given = 'Yoshinori' patient. name . push (human_name) # 性別 patient. gender = 'male' patient. create puts patient. id 䞊蚘のコヌドを実行するず、FHIR Server に Patient リ゜ヌスが登録されたす。ここでリ゜ヌスを䞀意に特定するリ゜ヌス ID が採番されたす。今回は 19953 が採番されたした。puts patient.id で確認 このリ゜ヌス ID を利甚しお、FHIR Server に HTTP リク゚ストを送りたす。 $ curl https://localhost:8080/baseDstu3/Patient/19953 そうするず、先ほど登録したリ゜ヌスが JSON 圢匏で取埗できたす。 { "resourceType" : "Patient" , "id" : "19953" , "meta" : { "versionId" : "1" , "lastUpdated" : "2019-03-21T09:12:44.660+00:00" }, "text" : { "status" : "generated" , "div" : "<div xmlns= \" https://www.w3.org/1999/xhtml \" ><div class= \" hapiHeaderText \" >Yoshinori <b>KODAMA </b></div><table class= \" hapiPropertyTable \" ><tbody><tr><td>Identifier</td><td>12345678</td></tr></tbody></table></div>" }, "identifier" : [ { "value" : "12345678" } ], "name" : [ { "family" : "Kodama" , "given" : [ "Yoshinori" ] } ], "gender" : "male" } もちろん、患者 ID など利甚しお怜玢するこずも可胜です。 $ curl https://localhost:8080/baseDstu3/Patient?identifier= 12345678 さいごに 今回の実蚌事業では、FHIR のむンタヌフェむスを掻甚するこずにより、シンプルなアヌキテクチャずシヌムレスなフロヌで、迅速に凊方箋管理システムの構築ができ、電子凊方箋の運甚評䟡を行うこずができたした。本実蚌事業の最終成果報告曞は 厚生劎働省のサむト に公開されおいたすので、詳现に぀いお興味のある方はこちらをご参照ください。 電子凊方箋 www.mhlw.go.jp メドレヌは、実蚌事業で埗られた知芋を可胜な限りオヌプンにしお電子凊方箋の普及掚進に取り組むこずはもちろん、むンタヌネットを掻甚したオヌプンな技術の普及掻動に積極的に取り組み、医療機関ず患者の双方にずっおより良い医療の実珟を目指しおたいりたす。 お知らせ 今回の電子凊方箋実蚌事業の成果ず、システム開発に掻甚した FHIR に぀いお共有するむベントを、以䞋のずおり 4 月 23 日(火)に開催したす。お時間ある方はぜひご参加ください。 FHIR Meetup Tokyo #01 @ TECH PLAY SHIBUYAIT勉匷䌚・むベントならTECH PLAYテックプレむ 2019/04/23火開催 今埌の医療ITシステムの栞ずなるであろう技術ずしお「FHIR」にフォヌカスし、FHIRの抂芁、FHIRを掻甚したテクノロゞヌ補品や事䟋の玹介、電子凊方箋実蚌事業におけるFHIR掻甚の事䟋など、開発者がFHIRを具䜓的に掻甚しおいくためのノりハりを共有しおいきたす。 techplay.jp たた、メドレヌでは医療業界に存圚する課題に IT を駆䜿しお取り組んでいきたいメンバヌを、デザむナヌ・゚ンゞニアを䞭心に党職皮絶賛募集䞭です。皆さたからのご応募お埅ちしおおりたす。 メンバヌのストヌリヌ | 株匏䌚瀟メドレヌ メンバヌのストヌリヌ 家族や友人が病気になった時に救いの手を差しのべる医療の力。... www.medley.jp
こんにちは。CLINICS 事業郚の児玉です。 今回は、メドレヌが 2018 幎 12 月に厚生劎働省から受蚗した「電子凊方箋の本栌運甚に向けた実蚌事業」で、医療情報暙準芏栌の FHIR を基盀ずした電子凊方箋管理システムを構築したしたので、その内容に぀いおご玹介したす。 FHIR ずは FHIR(Fast Healthcare Interoperability Resources)ずは、医療情報亀換の囜際暙準芏栌である HL7(Health Level 7)の䞭で最も新しい芏栌であり、むンタヌネットテクノロゞヌをベヌスずした、シンプルで効率的にシステム間での情報共有を可胜にする「 次䞖代の医療情報暙準芏栌 」ずしお䞖界各囜で泚目されおいたす。 HL7 は、䞖界に 30 以䞊の囜際支郚を有しおおり、日本では 1998 幎に 日本 HL7 協䌚 が蚭立されたした。そしお、珟圚流通しおいる HL7 芏栌には、デヌタ亀換に利甚される HL7v2 ず、医甚文曞の蚘述に利甚される CDA (Clinical Document Architecture)が存圚したす。 電子凊方箋ずは 電子凊方箋ずは、埓来の玙に印刷された凊方箋ではなく、医療機関ず調剀薬局が電子デヌタを甚いお凊方内容をやりずりする仕組みです。単玔にペヌパヌレス化するこずだけが目的ではなく、患者個人の服薬履歎を電子的に管理しお、重耇投薬の適正化を図るずいった目的もありたす。 実蚌事業の背景ず抂略 2016 幎 3 月の法什改正で、凊方箋の電子的な亀付が可胜ずなり、 運甚ガむドラむン も策定されたした。しかし、法什改正から数幎が経過した珟圚においおも、実運甚での課題が払拭できずに、電子凊方箋の党囜的な普及は進んでおりたせん。 ガむドラむンに定められた運甚フロヌ電子凊方せんの運甚ガむドラむンより転茉 元来、凊方箋には医垫の蚘名抌印、たたは眲名が必芁であるず医垫法で定められおいたす。珟行のガむドラむンは、この芏則を螏襲しお蚭蚈されおいたすので、玙の凊方箋の代替ずしお CDA で蚘述された静的ファむル を必芁ずし、蚘名抌印の代替ずしお HPKI を䜿甚した 電子眲名 が必芁ずなりたす。 たた、クラむアント端末で生成された静的ファむルが、むンタヌネットに流通するフロヌずなっおいたすので、改ざんの怜知を可胜ずするために 電子タむムスタンプ を付䞎する必芁がありたす。 このように耇雑化された運甚フロヌが、電子凊方箋の普及を阻害する芁因の 1 ぀であるず考えられたす。 こうした状況を螏たえ、珟行のガむドラむンに瞛られず、円滑な運甚ができる仕組みを怜蚎するために、実際の医療機関ず調剀薬局を䜿甚したフィヌルド実隓を実斜したした。 実蚌事業抂略 実斜目的電子凊方箋の運甚の仕組みの怜蚎・実蚌・考察 実斜期間2019 幎 2 月 4 日 - 2019 幎 3 月 17 日 実蚌゚リア東京郜枯区 協力斜蚭2 医療機関 / 6 薬局 利甚実瞟64 ä»¶ 電子凊方箋管理システムの抂芁 以䞋に瀺すのは、今回の実蚌事業で開発した評䟡システムです。本システムは「凊方箋管理システム」「医療機関システム」「薬局システム」「PHR アプリ」の 4 ぀のシステムから構成されおいたす。 システム抂芳 凊方箋管理システム 医療機関システム、薬局システム及び PHR アプリから接続され、各システムからの凊理芁求を受けお、凊方デヌタず調剀デヌタの返答、䜜成、線集、及び削陀を行う。 医療機関システム 蚺療結果ずしおの凊方デヌタを凊方箋管理システムに登録し、その結果ずしお返される凊方箋アクセスコヌドを患者に共有する。凊方箋アクセスコヌドは QR コヌドの掻甚を想定し、QR コヌドを印字した玙又は電子デヌタを患者に共有する。 「QR コヌド」は株匏䌚瀟デン゜ヌりェヌブの登録商暙です。 薬局システム 蚪問しおきた患者の本人確認を行った䞊で、凊方箋アクセスコヌドを受け取り、凊方箋管理システムにアクセスし凊方デヌタを参照する。凊方埌は調剀デヌタを凊方箋管理システムに栌玍する。 PHR アプリ 患者がオンラむン蚺療やお薬手垳の機胜を利甚するためのアプリ。凊方箋管理システムぞのアクセスが蚱可され、医療機関システムから受け取った凊方箋アクセスコヌドを元に、調剀結果を参照するこずを可胜にする。 医療機関システムは、メドレヌのクラりド電子カルテ「CLINICS カルテ」を利甚したしたが、システム連携に関わる郚分に぀いおは、他の電子カルテなどでも掻甚できるよう、疎に結合した蚭蚈を意識したした。 凊方箋管理システムは、前述の通り FHIR むンタヌフェむスを基盀ずしお構築したした。これは珟行のガむドラむンには蚘茉されおいない新たな詊みです。 HPKI を利甚した SSO(Single Sign On)による本人資栌確認 ず、FHIR むンタヌフェむスを利甚した クラりドベヌスでのデヌタフロヌ を実珟するこずが可胜であれば、耇雑化の芁因ずなっおいる静的ファむル、電子眲名、タむムスタンプは䞍芁であるず考えたした。 デヌタ蚭蚈 FHIR には「リ゜ヌス」ず呌ばれるデヌタセットが定められおいたす。リ゜ヌスは、Patient(患者)、Practitioner(斜術者)、Organization(組織)ずいった粒床で蚭蚈されおおり、リ゜ヌス単䜍でのデヌタ亀換が可胜です。 FHIR を利甚するためには、その目的に応じたリ゜ヌスの遞定ず、リ゜ヌスの䞋䜍抂念であるフィヌルドに蚭定する具䜓的な倀を定矩する必芁がありたす。 䟋えば、日本では人名を蚘述する際に、挢字氏名ずカナ氏名を䜵蚘するこずが䞀般的ですが、グロヌバル・スタンダヌドではありたせん。このような囜の事情に応じお、ロヌカラむズされた蚘述ルヌルを定める必芁がありたす。 実蚌事業で䜿甚したリ゜ヌス リ゜ヌス 説明 Patient 患者 Practitioner 斜術者凊方医薬剀垫 PractitionerRole 斜術者圹割 Organization 組織医療機関調剀薬局 MedicationRequest 投薬芁求 MedicationDispense 調剀実斜 Coverage 保険 FHIR を䜿甚した所感 FHIR の改版は on-Going で行われおいたす。実蚌事業のための開発を始めた頃は、STU3(Standard for Trial Use 3)が公匏バヌゞョンでした。しかし、あるずき急に FHIR のホヌムペヌゞが接続䞍安定になり困っおいたずころ、翌日には R4(Release 4)に曎新されおいたずいうこずもありたした。 このように、日進月歩の FHIR をプロダクトに組み蟌むには、タむミングの芋極めず、アップデヌトに远埓する「芚悟」を決めるこずが倧切だず思いたす。 2018 幎 12 月 27 日に R4 が Current Version になりたした FHIR の利点は、埓来の HL7 芏栌ず比范した 実装容易性 にあるず考えたす。REST(REpresentational State Transfer)のように、Web サヌビスでは䞀般的に普及しおいる抂念を暙準ずしお取り蟌んでいるため、**実装者は特別な知識を習埗する必芁がありたせん。**たた、FHIR を実装するためのオヌプン゜ヌスラむブラリが豊富に提䟛されおおり、これらを掻甚するこずによっお、本圓に必芁な凊理に泚力しお開発するこずが可胜ずなりたす。 臚床抂念モデルずしおの芳点では、CDA のベヌスずなっおいる HL7v3-RIM (Reference Information Model)ず比范するず、クラス、継承のようなオブゞェクト指向の抂念が廃止されおいたす。あらゆる臚床抂念をモデリング可胜ずするこずを目指した RIM ず比べるず、さすがに衚珟可胜な範囲は狭たるず思われたすが、網矅性は実甚域のレベルには達しおいるのではないでしょうか。 たた、1:1 のシステム連携におけるデヌタ亀換では、すでに皌働しおいる v2 むンタヌフェむスを、無理しお FHIR に眮き換える必芁は無いず思いたす。甚途に応じお、既存の芏栌ず共存しおいくのが倧切であるず考えたす。 実運甚ぞ向けおの課題 FHIR リ゜ヌスは、臚床抂念ずしおナニバヌサルに利甚可胜なものを䞭心に構成されおいたす。保険情報のような各囜の医療制床に応じお異なるものや、調剀技法に察する「䞀包化」や「粉砕」などの现かな指瀺情報に関しおは、ある皋床アドホックにマッピングするしかありたせんでした。実装者によるマッピングのブレが生じないようにするためには、 指暙ずなるガむドラむンの策定 が必芁になりたす。 たた、リ゜ヌスにマッピングする医薬品や甚法のマスタヌコヌドに぀いおは、 厚生劎働省暙準マスタヌ の利甚が望たれたす。しかしながら、満遍なく普及しおいるずは蚀い難い状況ですので、 暙準マスタヌ利甚の掚奚 も䜵せおガむドラむンに明蚘するこずが必芁です。 ガむドラむンは、メドレヌ 1 瀟で策定するこずが可胜なものではなく、医療情報システムの開発に関わる倚くの開発者に FHIR を利甚しおいただき、 実装方法に぀いおの議論 を亀わす必芁がありたす。しかし、珟時点での日本囜内における FHIR の掻甚事䟋は、残念ながらほずんど芋られたせん。 次にご玹介するのは、FHIR を䜿甚した簡単なコヌドのサンプルず、ロヌカル環境で FHIR Server を簡易的に動かす方法です。実装者の方が FHIR に觊れるきっかけになればず思っお曞きたしたので、ご参考にしおいただけたすず幞いです。 FHIR の実装サンプル FHIR を理解するためには、実際にコヌドを曞いお動かしおみるのが䞀番だず思いたす。ここでは、ロヌカル環境で FHIR Server を起動しお、リ゜ヌスを登録する簡単なプログラムを曞いおみたした。オヌプン゜ヌスの恩恵を最倧限に享受しおいたす。 実行環境 macOS v10.14.3 Ruby v2.5.1 Docker v18.09.2 FHIR Server Docker コンテナで FHIR Server を起動したす。簡単に動かせるように、DockerHub に公開されおいる HAPI-FHIR のコンテナむメヌゞを利甚したす。 HAPI-FHIR ずは、カナダのトロントにある医療研究機関の UHN(University Health Network)が立ち䞊げたプロゞェクトで、FHIR のオヌプン゜ヌスラむブラリを提䟛するこずを目的に掻動しおいたす。 https://github.com/jamesagnew/hapi-fhir https://hub.docker.com/r/petersonjared/hapi-fhir Docker コンテナむメヌゞの取埗 $ docker pull petersonjared/hapi-fhir $ docker run -d -p 8080:8080 --name=fhir petersonjared/hapi-fhir:dstu3 $ docker exec -it fhir /docker-entrypoint.sh java -jar /usr/local/jetty/start.jar Docker をむンストヌルするのが面倒な人は、HAPI-FHIR がグロヌバルに公開しおいる テストサヌバヌ を利甚するこずも可胜です。ただし、䞖界䞭の人がテストに利甚しおいるサヌバヌですので、機埮な個人情報は登録しないよう泚意が必芁です。 FHIR Client FHIR Client は、Ruby で動かしたす。以䞋の Gem を利甚したす。 $ gem install fhir_client $ gem install fhir_models Ruby のコヌドです。Patient リ゜ヌスを䜜成しお FHIR Server に登録したす。 patient.rb require 'fhir_client' client = FHIR::Client.new("https://localhost:8080/baseDstu3") FHIR::Model.client = client patient = FHIR::Patient.new # 患者 ID identifier = FHIR::Identifier.new identifier.value = '12345678' patient.identifier = identifier # 患者氏名 human_name = FHIR::HumanName.new human_name.family = 'Kodama' human_name.given = 'Yoshinori' patient.name.push(human_name) # 性別 patient.gender = 'male' patient.create puts patient.id 䞊蚘のコヌドを実行するず、FHIR Server に Patient リ゜ヌスが登録されたす。ここでリ゜ヌスを䞀意に特定するリ゜ヌス ID が採番されたす。今回は 19953 が採番されたした。puts patient.id で確認 このリ゜ヌス ID を利甚しお、FHIR Server に HTTP リク゚ストを送りたす。 $ curl https://localhost:8080/baseDstu3/Patient/19953 そうするず、先ほど登録したリ゜ヌスが JSON 圢匏で取埗できたす。 { "resourceType": "Patient", "id": "19953", "meta": { "versionId": "1", "lastUpdated": "2019-03-21T09:12:44.660+00:00" }, "text": { "status": "generated", "div": "<div xmlns=\"https://www.w3.org/1999/xhtml\"><div class=\"hapiHeaderText\">Yoshinori <b>KODAMA </b></div><table class=\"hapiPropertyTable\"><tbody><tr><td>Identifier</td><td>12345678</td></tr></tbody></table></div>" }, "identifier": [ { "value": "12345678" } ], "name": [ { "family": "Kodama", "given": ["Yoshinori"] } ], "gender": "male" } もちろん、患者 ID など利甚しお怜玢するこずも可胜です。 $ curl https://localhost:8080/baseDstu3/Patient?identifier=12345678 さいごに 今回の実蚌事業では、FHIR のむンタヌフェむスを掻甚するこずにより、シンプルなアヌキテクチャずシヌムレスなフロヌで、迅速に凊方箋管理システムの構築ができ、電子凊方箋の運甚評䟡を行うこずができたした。本実蚌事業の最終成果報告曞は 厚生劎働省のサむト に公開されおいたすので、詳现に぀いお興味のある方はこちらをご参照ください。 https://www.mhlw.go.jp/stf/denshishohousen.html メドレヌは、実蚌事業で埗られた知芋を可胜な限りオヌプンにしお電子凊方箋の普及掚進に取り組むこずはもちろん、むンタヌネットを掻甚したオヌプンな技術の普及掻動に積極的に取り組み、医療機関ず患者の双方にずっおより良い医療の実珟を目指しおたいりたす。 お知らせ 今回の電子凊方箋実蚌事業の成果ず、システム開発に掻甚した FHIR に぀いお共有するむベントを、以䞋のずおり 4 月 23 日(火)に開催したす。お時間ある方はぜひご参加ください。 https://techplay.jp/event/725549 たた、メドレヌでは医療業界に存圚する課題に IT を駆䜿しお取り組んでいきたいメンバヌを、デザむナヌ・゚ンゞニアを䞭心に党職皮絶賛募集䞭です。皆さたからのご応募お埅ちしおおりたす。 https://www.medley.jp/recruit/creative.html
おはこんばんちは、開発本郚゚ンゞニアの倧岡です。 先日、TechLunch ずいう瀟内勉匷䌚で「フロント゚ンゞニアが UI 蚭蚈〜実装で考えおいるこず」ずいう内容で発衚したした。UI 蚭蚈から実装の现かい話ではなくどういう気持ちで望んでるかずいう話で、基本的なこずしか曞いおいたせんが玹介させおいただければず思いたす。 UI 蚭蚈 UI 蚭蚈をデザむナヌがしお、それを゚ンゞニアが実装する堎合ず゚ンゞニアが単独で UI 蚭蚈から実装たでする堎合がありたす。今回はそれぞれのケヌスで、フロント゚ンド゚ンゞニアがどういうこずを考えおるかを玹介したす。 ずその前に、他人ず UI に぀いお話すずきに気を぀けおる蚀葉で分かりやすくたずたっおいるツむヌトがあったので玹介したす。 自分が他の人に UI デザむンの説明をするずき、あたり䜿わないようにしおいる蚀葉がいく぀かあるので、それらに぀いお描きたした。 私の䞭では、これ系の蚀葉は、 初心者䜿いがち 䞭玚者ほが䜿わない 䞊玚者たたに䜿っおる みたいな印象がありたす。 pic.twitter.com/O2URgRCVHe — シンギュラリティ (@singularity8888) December 2, 2018 普通はそうする 盎感的にわかる 䜿いやすい わかりやすい これらの蚀葉は誰にずっおなのか?やそれたでの経隓によっお意味合いが倉わっおきおしたうので察象を明確にしないず盞手ず話が噛み合わなくなるこずもあるので気を぀けおいたす。 今回䜕ヶ所か䜿っおいたすが実際 UI に぀いお話すずきは䜿わないように心がけおいたす 。 デザむナヌから画面仕様をもらう堎合 デザむナヌが優秀であればあるほど、もらった画面仕様を元に早く手を動かしたくなりたす。ですがここはグッず堪えたす。萜ち着いお以䞋のようなこずを考えおたす。 なぜこの課題がうたれたのか 解決したい課題の本質はなんなのか 他の解決策はないのか この機胜を远加しおしたうこずにより他に圱響がでおしたわないか 远加ではなく他の機胜を萜ずすこずにより解決できないのか そもそも必芁なのか など、この段階で理解できないこずはチヌムで話したりしお解決しおおきたす。次に画面仕様に目を向けたた考えたす。 䌌たようなコンポヌネントがあったら統䞀できないか より䜿いやすくできないのか 操䜜感が他ず明らかに違わないか 操䜜に察しお予想した動きになっおいるか 衚瀺されおいる情報に意味があるのか など、画面仕様からは理解できないこずや疑問点などはデザむナヌずコミュニケヌションをずり霟霬がでないようにしたす。 手を動かす前にある皋床ナヌザが解決したい課題を粟床高く汲み取り萜ずしこめる ように努力しおたす。 自分で UI 蚭蚈をする堎合 「デザむナヌから画面仕様をもらう堎合」に曞いたこずをたずは考えおいたす。 それらを螏たえ、 すでに実装枈みの UI で䌌たようなものがあれば䌌たように䜜りたす 。理由ずしおは既にナヌザが孊習枈みの UI のため新たに远加した機胜だずしおも比范的孊習コストが䜎くなるのではないかず考えるからです。 䌌たような UI がなく新たに䜜らなければならないずきは以䞋を意識しおいたす。 衚瀺する情報の粟査 衚瀺する情報はリストなのか詳现衚瀺なのか 衚瀺する情報に察しおの操䜜はどんなものがあるのか 操䜜に察しおのレスポンス・玍埗感はどうすれば埗られるのか ゚ラヌ衚瀺をどうするのか 衚瀺する情報が倚すぎお収たり切らない堎合どうするのか 衚瀺する情報がない堎合どうするのか 画面サむズ毎に適切に衚瀺できるか 状態クリックやホバヌなどを衚珟できおるか リストの堎合デフォルトの順番は適切なのか などをざっくりノヌトなどに曞き出し詳现を詰めおいっおいたす。行き詰たったら迷わずデザむナヌに盞談しにいきたす笑 実装 现かい実装郚分ずいうよりはもっず倧枠の基本的なこずですが玹介したす。 䜕も考えずにコピペしない 修正が倧倉になるので䞀箇所になるべくたずめる 甚途にあったコンポヌネントを䜿う 䌌おるからず䜿い回すずコンポヌネント修正時に思わぬ倉曎が加わる可胜性があるかも コンポヌネント間の関係が疎になるようにする 密接な関係だず気を䜿い合わなくおはならず修正が倧倉 コンポヌネントを䜜成する際に無理に汎甚性をもたせない 修正が困難になり逆に汎甚性がなくなる堎合が倚い Redux に管理させるステヌトの粒床は適切か なんでもかんでも Redux に状態を管理させおしたっおいないか 無駄な再レンダリングをしおいないか 無駄な通信をしおいないか 非同期通信のレスポンスが遅い堎合にサヌバヌ偎の凊理に問題がないか 関数や倉数は適切な呜名で適切な堎所に曞かれおいるか マゞックナンバヌを䜿っおしたっおいないか 䜿っおるず修正倧倉 なるべく簡単に曞けないか ゚ラヌ・䟋倖時の動きは適切か など现かいこずを蚀い出したらキリがないですが、こんなこず意識しおたす。 よりよいものを届けるために いろいろず曞きたしたが UI 蚭蚈から実装完了たではなるべく早く終わらせようず意識しおいたす。サむクルを UI 蚭蚈 実装 è§Šã‚‹ フィヌドバック ずした堎合に、 このサむクルをリリヌスたでに倚く回すこずによっおより倚くの気づきが埗られる からです。基本的には䞀回䜜っおうたくいくこずは垌かず思っおいるからです。 ただ、フィヌドバックの段階で本圓に色々な意芋がでおきたす。心が折れかけるこずやむラむラするこずもあるかもしれたせん。ですが、プロダクトずしお必芁なのか、今必芁なのか、察象ずする利甚者ずしおなのか、ただの愚痎なのか等を芋極め軞をぶらさないこずが倧切です。 フロント゚ンドの UI やパフォヌマンス系は事業的に芋るず優先床が䜎い堎合が倚い印象を受けたす。優先床が䞊がるずきは匷い競合、数字的な䞊昇が芋られなくなった時など危機感がでおきたずきかなず。。。足りない機胜を远加しないずいけないし、そもそも人的リ゜ヌスが足りないなどしょうがないこずなのかなずも思っおいたす。 初回リリヌス時に時間が足りなくおも粟床の高いものを䜜りたいずいう気持ちがあるため先ほどのサむクルを倚く回し 䞀人でも倚くの人に觊っおもらい気付ける回数を増やすこずは倧事 なこずだず思っおいたす。 さいごに あくたで私個人が考えおるこずなのでフロント゚ンゞニア党おにあおはたるわけではありたせん。出来おないこず抜けおしたう時や本質的に理解しおいないこずも倚々あるず思いたすが、自分はこんなこずを考えおいるずいう玹介でした。最埌たでお読みいただきありがずうございたした。 â–Œ メドレヌで働くクリ゚むタヌたちのストヌリヌはこちら www.medley.jp
おはこんばんちは、開発本郚゚ンゞニアの倧岡です。 先日、TechLunch ずいう瀟内勉匷䌚で「フロント゚ンゞニアが UI 蚭蚈〜実装で考えおいるこず」ずいう内容で発衚したした。UI 蚭蚈から実装の现かい話ではなくどういう気持ちで望んでるかずいう話で、基本的なこずしか曞いおいたせんが玹介させおいただければず思いたす。 UI 蚭蚈 UI 蚭蚈をデザむナヌがしお、それを゚ンゞニアが実装する堎合ず゚ンゞニアが単独で UI 蚭蚈から実装たでする堎合がありたす。今回はそれぞれのケヌスで、フロント゚ンド゚ンゞニアがどういうこずを考えおるかを玹介したす。 ずその前に、他人ず UI に぀いお話すずきに気を぀けおる蚀葉で分かりやすくたずたっおいるツむヌトがあったので玹介したす。 自分が他の人に UI デザむンの説明をするずき、あたり䜿わないようにしおいる蚀葉がいく぀かあるので、それらに぀いお描きたした。 私の䞭では、これ系の蚀葉は、 初心者䜿いがち 䞭玚者ほが䜿わない 䞊玚者たたに䜿っおる みたいな印象がありたす。 pic.twitter.com/O2URgRCVHe — シンギュラリティ (@singularity8888) December 2, 2018 普通はそうする 盎感的にわかる 䜿いやすい わかりやすい これらの蚀葉は誰にずっおなのか?やそれたでの経隓によっお意味合いが倉わっおきおしたうので察象を明確にしないず盞手ず話が噛み合わなくなるこずもあるので気を぀けおいたす。 今回䜕ヶ所か䜿っおいたすが実際 UI に぀いお話すずきは䜿わないように心がけおいたす 。 デザむナヌから画面仕様をもらう堎合 デザむナヌが優秀であればあるほど、もらった画面仕様を元に早く手を動かしたくなりたす。ですがここはグッず堪えたす。萜ち着いお以䞋のようなこずを考えおたす。 なぜこの課題がうたれたのか 解決したい課題の本質はなんなのか 他の解決策はないのか この機胜を远加しおしたうこずにより他に圱響がでおしたわないか 远加ではなく他の機胜を萜ずすこずにより解決できないのか そもそも必芁なのか など、この段階で理解できないこずはチヌムで話したりしお解決しおおきたす。次に画面仕様に目を向けたた考えたす。 䌌たようなコンポヌネントがあったら統䞀できないか より䜿いやすくできないのか 操䜜感が他ず明らかに違わないか 操䜜に察しお予想した動きになっおいるか 衚瀺されおいる情報に意味があるのか など、画面仕様からは理解できないこずや疑問点などはデザむナヌずコミュニケヌションをずり霟霬がでないようにしたす。 手を動かす前にある皋床ナヌザが解決したい課題を粟床高く汲み取り萜ずしこめる ように努力しおたす。 自分で UI 蚭蚈をする堎合 「デザむナヌから画面仕様をもらう堎合」に曞いたこずをたずは考えおいたす。 それらを螏たえ、 すでに実装枈みの UI で䌌たようなものがあれば䌌たように䜜りたす 。理由ずしおは既にナヌザが孊習枈みの UI のため新たに远加した機胜だずしおも比范的孊習コストが䜎くなるのではないかず考えるからです。 䌌たような UI がなく新たに䜜らなければならないずきは以䞋を意識しおいたす。 衚瀺する情報の粟査 衚瀺する情報はリストなのか詳现衚瀺なのか 衚瀺する情報に察しおの操䜜はどんなものがあるのか 操䜜に察しおのレスポンス・玍埗感はどうすれば埗られるのか ゚ラヌ衚瀺をどうするのか 衚瀺する情報が倚すぎお収たり切らない堎合どうするのか 衚瀺する情報がない堎合どうするのか 画面サむズ毎に適切に衚瀺できるか 状態クリックやホバヌなどを衚珟できおるか リストの堎合デフォルトの順番は適切なのか などをざっくりノヌトなどに曞き出し詳现を詰めおいっおいたす。行き詰たったら迷わずデザむナヌに盞談しにいきたす笑 実装 现かい実装郚分ずいうよりはもっず倧枠の基本的なこずですが玹介したす。 䜕も考えずにコピペしない 修正が倧倉になるので䞀箇所になるべくたずめる 甚途にあったコンポヌネントを䜿う 䌌おるからず䜿い回すずコンポヌネント修正時に思わぬ倉曎が加わる可胜性があるかも コンポヌネント間の関係が疎になるようにする 密接な関係だず気を䜿い合わなくおはならず修正が倧倉 コンポヌネントを䜜成する際に無理に汎甚性をもたせない 修正が困難になり逆に汎甚性がなくなる堎合が倚い Redux に管理させるステヌトの粒床は適切か なんでもかんでも Redux に状態を管理させおしたっおいないか 無駄な再レンダリングをしおいないか 無駄な通信をしおいないか 非同期通信のレスポンスが遅い堎合にサヌバヌ偎の凊理に問題がないか 関数や倉数は適切な呜名で適切な堎所に曞かれおいるか マゞックナンバヌを䜿っおしたっおいないか 䜿っおるず修正倧倉 なるべく簡単に曞けないか ゚ラヌ・䟋倖時の動きは適切か など现かいこずを蚀い出したらキリがないですが、こんなこず意識しおたす。 よりよいものを届けるために いろいろず曞きたしたが UI 蚭蚈から実装完了たではなるべく早く終わらせようず意識しおいたす。サむクルを UI 蚭蚈 実装 è§Šã‚‹ フィヌドバック ずした堎合に、 このサむクルをリリヌスたでに倚く回すこずによっおより倚くの気づきが埗られる からです。基本的には䞀回䜜っおうたくいくこずは垌かず思っおいるからです。 ただ、フィヌドバックの段階で本圓に色々な意芋がでおきたす。心が折れかけるこずやむラむラするこずもあるかもしれたせん。ですが、プロダクトずしお必芁なのか、今必芁なのか、察象ずする利甚者ずしおなのか、ただの愚痎なのか等を芋極め軞をぶらさないこずが倧切です。 フロント゚ンドの UI やパフォヌマンス系は事業的に芋るず優先床が䜎い堎合が倚い印象を受けたす。優先床が䞊がるずきは匷い競合、数字的な䞊昇が芋られなくなった時など危機感がでおきたずきかなず。。。足りない機胜を远加しないずいけないし、そもそも人的リ゜ヌスが足りないなどしょうがないこずなのかなずも思っおいたす。 初回リリヌス時に時間が足りなくおも粟床の高いものを䜜りたいずいう気持ちがあるため先ほどのサむクルを倚く回し 䞀人でも倚くの人に觊っおもらい気付ける回数を増やすこずは倧事 なこずだず思っおいたす。 さいごに あくたで私個人が考えおるこずなのでフロント゚ンゞニア党おにあおはたるわけではありたせん。出来おないこず抜けおしたう時や本質的に理解しおいないこずも倚々あるず思いたすが、自分はこんなこずを考えおいるずいう玹介でした。最埌たでお読みいただきありがずうございたした。 â–Œ メドレヌで働くクリ゚むタヌたちのストヌリヌはこちら www.medley.jp
おはこんばんちは、開発本郚゚ンゞニアの倧岡です。 先日、TechLunch ずいう瀟内勉匷䌚で「フロント゚ンゞニアが UI 蚭蚈〜実装で考えおいるこず」ずいう内容で発衚したした。UI 蚭蚈から実装の现かい話ではなくどういう気持ちで望んでるかずいう話で、基本的なこずしか曞いおいたせんが玹介させおいただければず思いたす。 UI 蚭蚈 UI 蚭蚈をデザむナヌがしお、それを゚ンゞニアが実装する堎合ず゚ンゞニアが単独で UI 蚭蚈から実装たでする堎合がありたす。今回はそれぞれのケヌスで、フロント゚ンド゚ンゞニアがどういうこずを考えおるかを玹介したす。 ずその前に、他人ず UI に぀いお話すずきに気を぀けおる蚀葉で分かりやすくたずたっおいるツむヌトがあったので玹介したす。 自分が他の人に UI デザむンの説明をするずき、あたり䜿わないようにしおいる蚀葉がいく぀かあるので、それらに぀いお描きたした。 私の䞭では、これ系の蚀葉は、 初心者䜿いがち 䞭玚者ほが䜿わない 䞊玚者たたに䜿っおる みたいな印象がありたす。 pic.twitter.com/O2URgRCVHe — シンギュラリティ (@singularity8888) December 2, 2018 普通はそうする 盎感的にわかる 䜿いやすい わかりやすい これらの蚀葉は誰にずっおなのか?やそれたでの経隓によっお意味合いが倉わっおきおしたうので察象を明確にしないず盞手ず話が噛み合わなくなるこずもあるので気を぀けおいたす。 今回䜕ヶ所か䜿っおいたすが実際 UI に぀いお話すずきは䜿わないように心がけおいたす 。 デザむナヌから画面仕様をもらう堎合 デザむナヌが優秀であればあるほど、もらった画面仕様を元に早く手を動かしたくなりたす。ですがここはグッず堪えたす。萜ち着いお以䞋のようなこずを考えおたす。 なぜこの課題がうたれたのか 解決したい課題の本質はなんなのか 他の解決策はないのか この機胜を远加しおしたうこずにより他に圱響がでおしたわないか 远加ではなく他の機胜を萜ずすこずにより解決できないのか そもそも必芁なのか など、この段階で理解できないこずはチヌムで話したりしお解決しおおきたす。次に画面仕様に目を向けたた考えたす。 䌌たようなコンポヌネントがあったら統䞀できないか より䜿いやすくできないのか 操䜜感が他ず明らかに違わないか 操䜜に察しお予想した動きになっおいるか 衚瀺されおいる情報に意味があるのか など、画面仕様からは理解できないこずや疑問点などはデザむナヌずコミュニケヌションをずり霟霬がでないようにしたす。 手を動かす前にある皋床ナヌザが解決したい課題を粟床高く汲み取り萜ずしこめる ように努力しおたす。 自分で UI 蚭蚈をする堎合 「デザむナヌから画面仕様をもらう堎合」に曞いたこずをたずは考えおいたす。 それらを螏たえ、 すでに実装枈みの UI で䌌たようなものがあれば䌌たように䜜りたす 。理由ずしおは既にナヌザが孊習枈みの UI のため新たに远加した機胜だずしおも比范的孊習コストが䜎くなるのではないかず考えるからです。 䌌たような UI がなく新たに䜜らなければならないずきは以䞋を意識しおいたす。 衚瀺する情報の粟査 衚瀺する情報はリストなのか詳现衚瀺なのか 衚瀺する情報に察しおの操䜜はどんなものがあるのか 操䜜に察しおのレスポンス・玍埗感はどうすれば埗られるのか ゚ラヌ衚瀺をどうするのか 衚瀺する情報が倚すぎお収たり切らない堎合どうするのか 衚瀺する情報がない堎合どうするのか 画面サむズ毎に適切に衚瀺できるか 状態クリックやホバヌなどを衚珟できおるか リストの堎合デフォルトの順番は適切なのか などをざっくりノヌトなどに曞き出し詳现を詰めおいっおいたす。行き詰たったら迷わずデザむナヌに盞談しにいきたす笑 実装 现かい実装郚分ずいうよりはもっず倧枠の基本的なこずですが玹介したす。 䜕も考えずにコピペしない 修正が倧倉になるので䞀箇所になるべくたずめる 甚途にあったコンポヌネントを䜿う 䌌おるからず䜿い回すずコンポヌネント修正時に思わぬ倉曎が加わる可胜性があるかも コンポヌネント間の関係が疎になるようにする 密接な関係だず気を䜿い合わなくおはならず修正が倧倉 コンポヌネントを䜜成する際に無理に汎甚性をもたせない 修正が困難になり逆に汎甚性がなくなる堎合が倚い Redux に管理させるステヌトの粒床は適切か なんでもかんでも Redux に状態を管理させおしたっおいないか 無駄な再レンダリングをしおいないか 無駄な通信をしおいないか 非同期通信のレスポンスが遅い堎合にサヌバヌ偎の凊理に問題がないか 関数や倉数は適切な呜名で適切な堎所に曞かれおいるか マゞックナンバヌを䜿っおしたっおいないか 䜿っおるず修正倧倉 なるべく簡単に曞けないか ゚ラヌ・䟋倖時の動きは適切か など现かいこずを蚀い出したらキリがないですが、こんなこず意識しおたす。 よりよいものを届けるために いろいろず曞きたしたが UI 蚭蚈から実装完了たではなるべく早く終わらせようず意識しおいたす。サむクルを UI 蚭蚈 実装 è§Šã‚‹ フィヌドバック ずした堎合に、 このサむクルをリリヌスたでに倚く回すこずによっおより倚くの気づきが埗られる からです。基本的には䞀回䜜っおうたくいくこずは垌かず思っおいるからです。 ただ、フィヌドバックの段階で本圓に色々な意芋がでおきたす。心が折れかけるこずやむラむラするこずもあるかもしれたせん。ですが、プロダクトずしお必芁なのか、今必芁なのか、察象ずする利甚者ずしおなのか、ただの愚痎なのか等を芋極め軞をぶらさないこずが倧切です。 フロント゚ンドの UI やパフォヌマンス系は事業的に芋るず優先床が䜎い堎合が倚い印象を受けたす。優先床が䞊がるずきは匷い競合、数字的な䞊昇が芋られなくなった時など危機感がでおきたずきかなず。。。足りない機胜を远加しないずいけないし、そもそも人的リ゜ヌスが足りないなどしょうがないこずなのかなずも思っおいたす。 初回リリヌス時に時間が足りなくおも粟床の高いものを䜜りたいずいう気持ちがあるため先ほどのサむクルを倚く回し 䞀人でも倚くの人に觊っおもらい気付ける回数を増やすこずは倧事 なこずだず思っおいたす。 さいごに あくたで私個人が考えおるこずなのでフロント゚ンゞニア党おにあおはたるわけではありたせん。出来おないこず抜けおしたう時や本質的に理解しおいないこずも倚々あるず思いたすが、自分はこんなこずを考えおいるずいう玹介でした。最埌たでお読みいただきありがずうございたした。 â–Œ メドレヌで働くクリ゚むタヌたちのストヌリヌはこちら www.medley.jp
おはこんばんちは、開発本郚゚ンゞニアの倧岡です。 先日、TechLunch ずいう瀟内勉匷䌚で「フロント゚ンゞニアが UI 蚭蚈〜実装で考えおいるこず」ずいう内容で発衚したした。UI 蚭蚈から実装の现かい話ではなくどういう気持ちで望んでるかずいう話で、基本的なこずしか曞いおいたせんが玹介させおいただければず思いたす。 UI 蚭蚈 UI 蚭蚈をデザむナヌがしお、それを゚ンゞニアが実装する堎合ず゚ンゞニアが単独で UI 蚭蚈から実装たでする堎合がありたす。今回はそれぞれのケヌスで、フロント゚ンド゚ンゞニアがどういうこずを考えおるかを玹介したす。 ずその前に、他人ず UI に぀いお話すずきに気を぀けおる蚀葉で分かりやすくたずたっおいるツむヌトがあったので玹介したす。 自分が他の人に UI デザむンの説明をするずき、あたり䜿わないようにしおいる蚀葉がいく぀かあるので、それらに぀いお描きたした。 私の䞭では、これ系の蚀葉は、 初心者䜿いがち 䞭玚者ほが䜿わない 䞊玚者たたに䜿っおる みたいな印象がありたす。 pic.twitter.com/O2URgRCVHe — シンギュラリティ (@singularity8888) December 2, 2018 普通はそうする 盎感的にわかる 䜿いやすい わかりやすい これらの蚀葉は誰にずっおなのか?やそれたでの経隓によっお意味合いが倉わっおきおしたうので察象を明確にしないず盞手ず話が噛み合わなくなるこずもあるので気を぀けおいたす。 今回䜕ヶ所か䜿っおいたすが実際 UI に぀いお話すずきは䜿わないように心がけおいたす 。 デザむナヌから画面仕様をもらう堎合 デザむナヌが優秀であればあるほど、もらった画面仕様を元に早く手を動かしたくなりたす。ですがここはグッず堪えたす。萜ち着いお以䞋のようなこずを考えおたす。 なぜこの課題がうたれたのか 解決したい課題の本質はなんなのか 他の解決策はないのか この機胜を远加しおしたうこずにより他に圱響がでおしたわないか 远加ではなく他の機胜を萜ずすこずにより解決できないのか そもそも必芁なのか など、この段階で理解できないこずはチヌムで話したりしお解決しおおきたす。次に画面仕様に目を向けたた考えたす。 䌌たようなコンポヌネントがあったら統䞀できないか より䜿いやすくできないのか 操䜜感が他ず明らかに違わないか 操䜜に察しお予想した動きになっおいるか 衚瀺されおいる情報に意味があるのか など、画面仕様からは理解できないこずや疑問点などはデザむナヌずコミュニケヌションをずり霟霬がでないようにしたす。 手を動かす前にある皋床ナヌザが解決したい課題を粟床高く汲み取り萜ずしこめる ように努力しおたす。 自分で UI 蚭蚈をする堎合 「デザむナヌから画面仕様をもらう堎合」に曞いたこずをたずは考えおいたす。 それらを螏たえ、 すでに実装枈みの UI で䌌たようなものがあれば䌌たように䜜りたす 。理由ずしおは既にナヌザが孊習枈みの UI のため新たに远加した機胜だずしおも比范的孊習コストが䜎くなるのではないかず考えるからです。 䌌たような UI がなく新たに䜜らなければならないずきは以䞋を意識しおいたす。 衚瀺する情報の粟査 衚瀺する情報はリストなのか詳现衚瀺なのか 衚瀺する情報に察しおの操䜜はどんなものがあるのか 操䜜に察しおのレスポンス・玍埗感はどうすれば埗られるのか ゚ラヌ衚瀺をどうするのか 衚瀺する情報が倚すぎお収たり切らない堎合どうするのか 衚瀺する情報がない堎合どうするのか 画面サむズ毎に適切に衚瀺できるか 状態クリックやホバヌなどを衚珟できおるか リストの堎合デフォルトの順番は適切なのか などをざっくりノヌトなどに曞き出し詳现を詰めおいっおいたす。行き詰たったら迷わずデザむナヌに盞談しにいきたす笑 実装 现かい実装郚分ずいうよりはもっず倧枠の基本的なこずですが玹介したす。 䜕も考えずにコピペしない 修正が倧倉になるので䞀箇所になるべくたずめる 甚途にあったコンポヌネントを䜿う 䌌おるからず䜿い回すずコンポヌネント修正時に思わぬ倉曎が加わる可胜性があるかも コンポヌネント間の関係が疎になるようにする 密接な関係だず気を䜿い合わなくおはならず修正が倧倉 コンポヌネントを䜜成する際に無理に汎甚性をもたせない 修正が困難になり逆に汎甚性がなくなる堎合が倚い Redux に管理させるステヌトの粒床は適切か なんでもかんでも Redux に状態を管理させおしたっおいないか 無駄な再レンダリングをしおいないか 無駄な通信をしおいないか 非同期通信のレスポンスが遅い堎合にサヌバヌ偎の凊理に問題がないか 関数や倉数は適切な呜名で適切な堎所に曞かれおいるか マゞックナンバヌを䜿っおしたっおいないか 䜿っおるず修正倧倉 なるべく簡単に曞けないか ゚ラヌ・䟋倖時の動きは適切か など现かいこずを蚀い出したらキリがないですが、こんなこず意識しおたす。 よりよいものを届けるために いろいろず曞きたしたが UI 蚭蚈から実装完了たではなるべく早く終わらせようず意識しおいたす。サむクルを UI 蚭蚈 実装 è§Šã‚‹ フィヌドバック ずした堎合に、 このサむクルをリリヌスたでに倚く回すこずによっおより倚くの気づきが埗られる からです。基本的には䞀回䜜っおうたくいくこずは垌かず思っおいるからです。 ただ、フィヌドバックの段階で本圓に色々な意芋がでおきたす。心が折れかけるこずやむラむラするこずもあるかもしれたせん。ですが、プロダクトずしお必芁なのか、今必芁なのか、察象ずする利甚者ずしおなのか、ただの愚痎なのか等を芋極め軞をぶらさないこずが倧切です。 フロント゚ンドの UI やパフォヌマンス系は事業的に芋るず優先床が䜎い堎合が倚い印象を受けたす。優先床が䞊がるずきは匷い競合、数字的な䞊昇が芋られなくなった時など危機感がでおきたずきかなず。。。足りない機胜を远加しないずいけないし、そもそも人的リ゜ヌスが足りないなどしょうがないこずなのかなずも思っおいたす。 初回リリヌス時に時間が足りなくおも粟床の高いものを䜜りたいずいう気持ちがあるため先ほどのサむクルを倚く回し 䞀人でも倚くの人に觊っおもらい気付ける回数を増やすこずは倧事 なこずだず思っおいたす。 さいごに あくたで私個人が考えおるこずなのでフロント゚ンゞニア党おにあおはたるわけではありたせん。出来おないこず抜けおしたう時や本質的に理解しおいないこずも倚々あるず思いたすが、自分はこんなこずを考えおいるずいう玹介でした。最埌たでお読みいただきありがずうございたした。 â–Œ メドレヌで働くクリ゚むタヌたちのストヌリヌはこちら www.medley.jp
おはこんばんちは、開発本郚゚ンゞニアの倧岡です。 先日、TechLunch ずいう瀟内勉匷䌚で「フロント゚ンゞニアが UI 蚭蚈〜実装で考えおいるこず」ずいう内容で発衚したした。UI 蚭蚈から実装の现かい話ではなくどういう気持ちで望んでるかずいう話で、基本的なこずしか曞いおいたせんが玹介させおいただければず思いたす。 UI 蚭蚈 UI 蚭蚈をデザむナヌがしお、それを゚ンゞニアが実装する堎合ず゚ンゞニアが単独で UI 蚭蚈から実装たでする堎合がありたす。今回はそれぞれのケヌスで、フロント゚ンド゚ンゞニアがどういうこずを考えおるかを玹介したす。 ずその前に、他人ず UI に぀いお話すずきに気を぀けおる蚀葉で分かりやすくたずたっおいるツむヌトがあったので玹介したす。 自分が他の人に UI デザむンの説明をするずき、あたり䜿わないようにしおいる蚀葉がいく぀かあるので、それらに぀いお描きたした。 私の䞭では、これ系の蚀葉は、 初心者䜿いがち 䞭玚者ほが䜿わない 䞊玚者たたに䜿っおる みたいな印象がありたす。 pic.twitter.com/O2URgRCVHe — シンギュラリティ (@singularity8888) December 2, 2018 普通はそうする 盎感的にわかる 䜿いやすい わかりやすい これらの蚀葉は誰にずっおなのか?やそれたでの経隓によっお意味合いが倉わっおきおしたうので察象を明確にしないず盞手ず話が噛み合わなくなるこずもあるので気を぀けおいたす。 今回䜕ヶ所か䜿っおいたすが実際 UI に぀いお話すずきは䜿わないように心がけおいたす 。 デザむナヌから画面仕様をもらう堎合 デザむナヌが優秀であればあるほど、もらった画面仕様を元に早く手を動かしたくなりたす。ですがここはグッず堪えたす。萜ち着いお以䞋のようなこずを考えおたす。 なぜこの課題がうたれたのか 解決したい課題の本質はなんなのか 他の解決策はないのか この機胜を远加しおしたうこずにより他に圱響がでおしたわないか 远加ではなく他の機胜を萜ずすこずにより解決できないのか そもそも必芁なのか など、この段階で理解できないこずはチヌムで話したりしお解決しおおきたす。次に画面仕様に目を向けたた考えたす。 䌌たようなコンポヌネントがあったら統䞀できないか より䜿いやすくできないのか 操䜜感が他ず明らかに違わないか 操䜜に察しお予想した動きになっおいるか 衚瀺されおいる情報に意味があるのか など、画面仕様からは理解できないこずや疑問点などはデザむナヌずコミュニケヌションをずり霟霬がでないようにしたす。 手を動かす前にある皋床ナヌザが解決したい課題を粟床高く汲み取り萜ずしこめる ように努力しおたす。 自分で UI 蚭蚈をする堎合 「デザむナヌから画面仕様をもらう堎合」に曞いたこずをたずは考えおいたす。 それらを螏たえ、 すでに実装枈みの UI で䌌たようなものがあれば䌌たように䜜りたす 。理由ずしおは既にナヌザが孊習枈みの UI のため新たに远加した機胜だずしおも比范的孊習コストが䜎くなるのではないかず考えるからです。 䌌たような UI がなく新たに䜜らなければならないずきは以䞋を意識しおいたす。 衚瀺する情報の粟査 衚瀺する情報はリストなのか詳现衚瀺なのか 衚瀺する情報に察しおの操䜜はどんなものがあるのか 操䜜に察しおのレスポンス・玍埗感はどうすれば埗られるのか ゚ラヌ衚瀺をどうするのか 衚瀺する情報が倚すぎお収たり切らない堎合どうするのか 衚瀺する情報がない堎合どうするのか 画面サむズ毎に適切に衚瀺できるか 状態クリックやホバヌなどを衚珟できおるか リストの堎合デフォルトの順番は適切なのか などをざっくりノヌトなどに曞き出し詳现を詰めおいっおいたす。行き詰たったら迷わずデザむナヌに盞談しにいきたす笑 実装 现かい実装郚分ずいうよりはもっず倧枠の基本的なこずですが玹介したす。 䜕も考えずにコピペしない 修正が倧倉になるので䞀箇所になるべくたずめる 甚途にあったコンポヌネントを䜿う 䌌おるからず䜿い回すずコンポヌネント修正時に思わぬ倉曎が加わる可胜性があるかも コンポヌネント間の関係が疎になるようにする 密接な関係だず気を䜿い合わなくおはならず修正が倧倉 コンポヌネントを䜜成する際に無理に汎甚性をもたせない 修正が困難になり逆に汎甚性がなくなる堎合が倚い Redux に管理させるステヌトの粒床は適切か なんでもかんでも Redux に状態を管理させおしたっおいないか 無駄な再レンダリングをしおいないか 無駄な通信をしおいないか 非同期通信のレスポンスが遅い堎合にサヌバヌ偎の凊理に問題がないか 関数や倉数は適切な呜名で適切な堎所に曞かれおいるか マゞックナンバヌを䜿っおしたっおいないか 䜿っおるず修正倧倉 なるべく簡単に曞けないか ゚ラヌ・䟋倖時の動きは適切か など现かいこずを蚀い出したらキリがないですが、こんなこず意識しおたす。 よりよいものを届けるために いろいろず曞きたしたが UI 蚭蚈から実装完了たではなるべく早く終わらせようず意識しおいたす。サむクルを UI 蚭蚈 実装 è§Šã‚‹ フィヌドバック ずした堎合に、 このサむクルをリリヌスたでに倚く回すこずによっおより倚くの気づきが埗られる からです。基本的には䞀回䜜っおうたくいくこずは垌かず思っおいるからです。 ただ、フィヌドバックの段階で本圓に色々な意芋がでおきたす。心が折れかけるこずやむラむラするこずもあるかもしれたせん。ですが、プロダクトずしお必芁なのか、今必芁なのか、察象ずする利甚者ずしおなのか、ただの愚痎なのか等を芋極め軞をぶらさないこずが倧切です。 フロント゚ンドの UI やパフォヌマンス系は事業的に芋るず優先床が䜎い堎合が倚い印象を受けたす。優先床が䞊がるずきは匷い競合、数字的な䞊昇が芋られなくなった時など危機感がでおきたずきかなず。。。足りない機胜を远加しないずいけないし、そもそも人的リ゜ヌスが足りないなどしょうがないこずなのかなずも思っおいたす。 初回リリヌス時に時間が足りなくおも粟床の高いものを䜜りたいずいう気持ちがあるため先ほどのサむクルを倚く回し 䞀人でも倚くの人に觊っおもらい気付ける回数を増やすこずは倧事 なこずだず思っおいたす。 さいごに あくたで私個人が考えおるこずなのでフロント゚ンゞニア党おにあおはたるわけではありたせん。出来おないこず抜けおしたう時や本質的に理解しおいないこずも倚々あるず思いたすが、自分はこんなこずを考えおいるずいう玹介でした。最埌たでお読みいただきありがずうございたした。 â–Œ メドレヌで働くクリ゚むタヌたちのストヌリヌはこちら www.medley.jp
おはこんばんちは、開発本郚゚ンゞニアの倧岡です。 先日、TechLunch ずいう瀟内勉匷䌚で「フロント゚ンゞニアが UI 蚭蚈〜実装で考えおいるこず」ずいう内容で発衚したした。UI 蚭蚈から実装の现かい話ではなくどういう気持ちで望んでるかずいう話で、基本的なこずしか曞いおいたせんが玹介させおいただければず思いたす。 UI 蚭蚈 UI 蚭蚈をデザむナヌがしお、それを゚ンゞニアが実装する堎合ず゚ンゞニアが単独で UI 蚭蚈から実装たでする堎合がありたす。今回はそれぞれのケヌスで、フロント゚ンド゚ンゞニアがどういうこずを考えおるかを玹介したす。 ずその前に、他人ず UI に぀いお話すずきに気を぀けおる蚀葉で分かりやすくたずたっおいるツむヌトがあったので玹介したす。 自分が他の人に UI デザむンの説明をするずき、あたり䜿わないようにしおいる蚀葉がいく぀かあるので、それらに぀いお描きたした。 私の䞭では、これ系の蚀葉は、 初心者䜿いがち 䞭玚者ほが䜿わない 䞊玚者たたに䜿っおる みたいな印象がありたす。 pic.twitter.com/O2URgRCVHe — シンギュラリティ (@singularity8888) December 2, 2018 普通はそうする 盎感的にわかる 䜿いやすい わかりやすい これらの蚀葉は誰にずっおなのか?やそれたでの経隓によっお意味合いが倉わっおきおしたうので察象を明確にしないず盞手ず話が噛み合わなくなるこずもあるので気を぀けおいたす。 今回䜕ヶ所か䜿っおいたすが実際 UI に぀いお話すずきは䜿わないように心がけおいたす 。 デザむナヌから画面仕様をもらう堎合 デザむナヌが優秀であればあるほど、もらった画面仕様を元に早く手を動かしたくなりたす。ですがここはグッず堪えたす。萜ち着いお以䞋のようなこずを考えおたす。 なぜこの課題がうたれたのか 解決したい課題の本質はなんなのか 他の解決策はないのか この機胜を远加しおしたうこずにより他に圱響がでおしたわないか 远加ではなく他の機胜を萜ずすこずにより解決できないのか そもそも必芁なのか など、この段階で理解できないこずはチヌムで話したりしお解決しおおきたす。次に画面仕様に目を向けたた考えたす。 䌌たようなコンポヌネントがあったら統䞀できないか より䜿いやすくできないのか 操䜜感が他ず明らかに違わないか 操䜜に察しお予想した動きになっおいるか 衚瀺されおいる情報に意味があるのか など、画面仕様からは理解できないこずや疑問点などはデザむナヌずコミュニケヌションをずり霟霬がでないようにしたす。 手を動かす前にある皋床ナヌザが解決したい課題を粟床高く汲み取り萜ずしこめる ように努力しおたす。 自分で UI 蚭蚈をする堎合 「デザむナヌから画面仕様をもらう堎合」に曞いたこずをたずは考えおいたす。 それらを螏たえ、 すでに実装枈みの UI で䌌たようなものがあれば䌌たように䜜りたす 。理由ずしおは既にナヌザが孊習枈みの UI のため新たに远加した機胜だずしおも比范的孊習コストが䜎くなるのではないかず考えるからです。 䌌たような UI がなく新たに䜜らなければならないずきは以䞋を意識しおいたす。 衚瀺する情報の粟査 衚瀺する情報はリストなのか詳现衚瀺なのか 衚瀺する情報に察しおの操䜜はどんなものがあるのか 操䜜に察しおのレスポンス・玍埗感はどうすれば埗られるのか ゚ラヌ衚瀺をどうするのか 衚瀺する情報が倚すぎお収たり切らない堎合どうするのか 衚瀺する情報がない堎合どうするのか 画面サむズ毎に適切に衚瀺できるか 状態クリックやホバヌなどを衚珟できおるか リストの堎合デフォルトの順番は適切なのか などをざっくりノヌトなどに曞き出し詳现を詰めおいっおいたす。行き詰たったら迷わずデザむナヌに盞談しにいきたす笑 実装 现かい実装郚分ずいうよりはもっず倧枠の基本的なこずですが玹介したす。 䜕も考えずにコピペしない 修正が倧倉になるので䞀箇所になるべくたずめる 甚途にあったコンポヌネントを䜿う 䌌おるからず䜿い回すずコンポヌネント修正時に思わぬ倉曎が加わる可胜性があるかも コンポヌネント間の関係が疎になるようにする 密接な関係だず気を䜿い合わなくおはならず修正が倧倉 コンポヌネントを䜜成する際に無理に汎甚性をもたせない 修正が困難になり逆に汎甚性がなくなる堎合が倚い Redux に管理させるステヌトの粒床は適切か なんでもかんでも Redux に状態を管理させおしたっおいないか 無駄な再レンダリングをしおいないか 無駄な通信をしおいないか 非同期通信のレスポンスが遅い堎合にサヌバヌ偎の凊理に問題がないか 関数や倉数は適切な呜名で適切な堎所に曞かれおいるか マゞックナンバヌを䜿っおしたっおいないか 䜿っおるず修正倧倉 なるべく簡単に曞けないか ゚ラヌ・䟋倖時の動きは適切か など现かいこずを蚀い出したらキリがないですが、こんなこず意識しおたす。 よりよいものを届けるために いろいろず曞きたしたが UI 蚭蚈から実装完了たではなるべく早く終わらせようず意識しおいたす。サむクルを UI 蚭蚈 実装 è§Šã‚‹ フィヌドバック ずした堎合に、 このサむクルをリリヌスたでに倚く回すこずによっおより倚くの気づきが埗られる からです。基本的には䞀回䜜っおうたくいくこずは垌かず思っおいるからです。 ただ、フィヌドバックの段階で本圓に色々な意芋がでおきたす。心が折れかけるこずやむラむラするこずもあるかもしれたせん。ですが、プロダクトずしお必芁なのか、今必芁なのか、察象ずする利甚者ずしおなのか、ただの愚痎なのか等を芋極め軞をぶらさないこずが倧切です。 フロント゚ンドの UI やパフォヌマンス系は事業的に芋るず優先床が䜎い堎合が倚い印象を受けたす。優先床が䞊がるずきは匷い競合、数字的な䞊昇が芋られなくなった時など危機感がでおきたずきかなず。。。足りない機胜を远加しないずいけないし、そもそも人的リ゜ヌスが足りないなどしょうがないこずなのかなずも思っおいたす。 初回リリヌス時に時間が足りなくおも粟床の高いものを䜜りたいずいう気持ちがあるため先ほどのサむクルを倚く回し 䞀人でも倚くの人に觊っおもらい気付ける回数を増やすこずは倧事 なこずだず思っおいたす。 さいごに あくたで私個人が考えおるこずなのでフロント゚ンゞニア党おにあおはたるわけではありたせん。出来おないこず抜けおしたう時や本質的に理解しおいないこずも倚々あるず思いたすが、自分はこんなこずを考えおいるずいう玹介でした。最埌たでお読みいただきありがずうございたした。 â–Œ メドレヌで働くクリ゚むタヌたちのストヌリヌはこちら www.medley.jp
おはこんばんちは、開発本郚゚ンゞニアの倧岡です。 先日、TechLunch ずいう瀟内勉匷䌚で「フロント゚ンゞニアが UI 蚭蚈〜実装で考えおいるこず」ずいう内容で発衚したした。UI 蚭蚈から実装の现かい話ではなくどういう気持ちで望んでるかずいう話で、基本的なこずしか曞いおいたせんが玹介させおいただければず思いたす。 UI 蚭蚈 UI 蚭蚈をデザむナヌがしお、それを゚ンゞニアが実装する堎合ず゚ンゞニアが単独で UI 蚭蚈から実装たでする堎合がありたす。今回はそれぞれのケヌスで、フロント゚ンド゚ンゞニアがどういうこずを考えおるかを玹介したす。 ずその前に、他人ず UI に぀いお話すずきに気を぀けおる蚀葉で分かりやすくたずたっおいるツむヌトがあったので玹介したす。 自分が他の人に UI デザむンの説明をするずき、あたり䜿わないようにしおいる蚀葉がいく぀かあるので、それらに぀いお描きたした。 私の䞭では、これ系の蚀葉は、 初心者䜿いがち 䞭玚者ほが䜿わない 䞊玚者たたに䜿っおる みたいな印象がありたす。 pic.twitter.com/O2URgRCVHe — シンギュラリティ (@singularity8888) December 2, 2018 普通はそうする 盎感的にわかる 䜿いやすい わかりやすい これらの蚀葉は誰にずっおなのか?やそれたでの経隓によっお意味合いが倉わっおきおしたうので察象を明確にしないず盞手ず話が噛み合わなくなるこずもあるので気を぀けおいたす。 今回䜕ヶ所か䜿っおいたすが実際 UI に぀いお話すずきは䜿わないように心がけおいたす 。 デザむナヌから画面仕様をもらう堎合 デザむナヌが優秀であればあるほど、もらった画面仕様を元に早く手を動かしたくなりたす。ですがここはグッず堪えたす。萜ち着いお以䞋のようなこずを考えおたす。 なぜこの課題がうたれたのか 解決したい課題の本質はなんなのか 他の解決策はないのか この機胜を远加しおしたうこずにより他に圱響がでおしたわないか 远加ではなく他の機胜を萜ずすこずにより解決できないのか そもそも必芁なのか など、この段階で理解できないこずはチヌムで話したりしお解決しおおきたす。次に画面仕様に目を向けたた考えたす。 䌌たようなコンポヌネントがあったら統䞀できないか より䜿いやすくできないのか 操䜜感が他ず明らかに違わないか 操䜜に察しお予想した動きになっおいるか 衚瀺されおいる情報に意味があるのか など、画面仕様からは理解できないこずや疑問点などはデザむナヌずコミュニケヌションをずり霟霬がでないようにしたす。 手を動かす前にある皋床ナヌザが解決したい課題を粟床高く汲み取り萜ずしこめる ように努力しおたす。 自分で UI 蚭蚈をする堎合 「デザむナヌから画面仕様をもらう堎合」に曞いたこずをたずは考えおいたす。 それらを螏たえ、 すでに実装枈みの UI で䌌たようなものがあれば䌌たように䜜りたす 。理由ずしおは既にナヌザが孊習枈みの UI のため新たに远加した機胜だずしおも比范的孊習コストが䜎くなるのではないかず考えるからです。 䌌たような UI がなく新たに䜜らなければならないずきは以䞋を意識しおいたす。 衚瀺する情報の粟査 衚瀺する情報はリストなのか詳现衚瀺なのか 衚瀺する情報に察しおの操䜜はどんなものがあるのか 操䜜に察しおのレスポンス・玍埗感はどうすれば埗られるのか ゚ラヌ衚瀺をどうするのか 衚瀺する情報が倚すぎお収たり切らない堎合どうするのか 衚瀺する情報がない堎合どうするのか 画面サむズ毎に適切に衚瀺できるか 状態クリックやホバヌなどを衚珟できおるか リストの堎合デフォルトの順番は適切なのか などをざっくりノヌトなどに曞き出し詳现を詰めおいっおいたす。行き詰たったら迷わずデザむナヌに盞談しにいきたす笑 実装 现かい実装郚分ずいうよりはもっず倧枠の基本的なこずですが玹介したす。 䜕も考えずにコピペしない 修正が倧倉になるので䞀箇所になるべくたずめる 甚途にあったコンポヌネントを䜿う 䌌おるからず䜿い回すずコンポヌネント修正時に思わぬ倉曎が加わる可胜性があるかも コンポヌネント間の関係が疎になるようにする 密接な関係だず気を䜿い合わなくおはならず修正が倧倉 コンポヌネントを䜜成する際に無理に汎甚性をもたせない 修正が困難になり逆に汎甚性がなくなる堎合が倚い Redux に管理させるステヌトの粒床は適切か なんでもかんでも Redux に状態を管理させおしたっおいないか 無駄な再レンダリングをしおいないか 無駄な通信をしおいないか 非同期通信のレスポンスが遅い堎合にサヌバヌ偎の凊理に問題がないか 関数や倉数は適切な呜名で適切な堎所に曞かれおいるか マゞックナンバヌを䜿っおしたっおいないか 䜿っおるず修正倧倉 なるべく簡単に曞けないか ゚ラヌ・䟋倖時の動きは適切か など现かいこずを蚀い出したらキリがないですが、こんなこず意識しおたす。 よりよいものを届けるために いろいろず曞きたしたが UI 蚭蚈から実装完了たではなるべく早く終わらせようず意識しおいたす。サむクルを UI 蚭蚈 実装 è§Šã‚‹ フィヌドバック ずした堎合に、 このサむクルをリリヌスたでに倚く回すこずによっおより倚くの気づきが埗られる からです。基本的には䞀回䜜っおうたくいくこずは垌かず思っおいるからです。 ただ、フィヌドバックの段階で本圓に色々な意芋がでおきたす。心が折れかけるこずやむラむラするこずもあるかもしれたせん。ですが、プロダクトずしお必芁なのか、今必芁なのか、察象ずする利甚者ずしおなのか、ただの愚痎なのか等を芋極め軞をぶらさないこずが倧切です。 フロント゚ンドの UI やパフォヌマンス系は事業的に芋るず優先床が䜎い堎合が倚い印象を受けたす。優先床が䞊がるずきは匷い競合、数字的な䞊昇が芋られなくなった時など危機感がでおきたずきかなず。。。足りない機胜を远加しないずいけないし、そもそも人的リ゜ヌスが足りないなどしょうがないこずなのかなずも思っおいたす。 初回リリヌス時に時間が足りなくおも粟床の高いものを䜜りたいずいう気持ちがあるため先ほどのサむクルを倚く回し 䞀人でも倚くの人に觊っおもらい気付ける回数を増やすこずは倧事 なこずだず思っおいたす。 さいごに あくたで私個人が考えおるこずなのでフロント゚ンゞニア党おにあおはたるわけではありたせん。出来おないこず抜けおしたう時や本質的に理解しおいないこずも倚々あるず思いたすが、自分はこんなこずを考えおいるずいう玹介でした。最埌たでお読みいただきありがずうございたした。 â–Œ メドレヌで働くクリ゚むタヌたちのストヌリヌはこちら www.medley.jp
おはこんばんちは、開発本郚゚ンゞニアの倧岡です。 先日、TechLunch ずいう瀟内勉匷䌚で「フロント゚ンゞニアが UI 蚭蚈〜実装で考えおいるこず」ずいう内容で発衚したした。UI 蚭蚈から実装の现かい話ではなくどういう気持ちで望んでるかずいう話で、基本的なこずしか曞いおいたせんが玹介させおいただければず思いたす。 UI 蚭蚈 UI 蚭蚈をデザむナヌがしお、それを゚ンゞニアが実装する堎合ず゚ンゞニアが単独で UI 蚭蚈から実装たでする堎合がありたす。今回はそれぞれのケヌスで、フロント゚ンド゚ンゞニアがどういうこずを考えおるかを玹介したす。 ずその前に、他人ず UI に぀いお話すずきに気を぀けおる蚀葉で分かりやすくたずたっおいるツむヌトがあったので玹介したす。 自分が他の人に UI デザむンの説明をするずき、あたり䜿わないようにしおいる蚀葉がいく぀かあるので、それらに぀いお描きたした。 私の䞭では、これ系の蚀葉は、 初心者䜿いがち 䞭玚者ほが䜿わない 䞊玚者たたに䜿っおる みたいな印象がありたす。 pic.twitter.com/O2URgRCVHe — シンギュラリティ (@singularity8888) December 2, 2018 普通はそうする 盎感的にわかる 䜿いやすい わかりやすい これらの蚀葉は誰にずっおなのか?やそれたでの経隓によっお意味合いが倉わっおきおしたうので察象を明確にしないず盞手ず話が噛み合わなくなるこずもあるので気を぀けおいたす。 今回䜕ヶ所か䜿っおいたすが実際 UI に぀いお話すずきは䜿わないように心がけおいたす 。 デザむナヌから画面仕様をもらう堎合 デザむナヌが優秀であればあるほど、もらった画面仕様を元に早く手を動かしたくなりたす。ですがここはグッず堪えたす。萜ち着いお以䞋のようなこずを考えおたす。 なぜこの課題がうたれたのか 解決したい課題の本質はなんなのか 他の解決策はないのか この機胜を远加しおしたうこずにより他に圱響がでおしたわないか 远加ではなく他の機胜を萜ずすこずにより解決できないのか そもそも必芁なのか など、この段階で理解できないこずはチヌムで話したりしお解決しおおきたす。次に画面仕様に目を向けたた考えたす。 䌌たようなコンポヌネントがあったら統䞀できないか より䜿いやすくできないのか 操䜜感が他ず明らかに違わないか 操䜜に察しお予想した動きになっおいるか 衚瀺されおいる情報に意味があるのか など、画面仕様からは理解できないこずや疑問点などはデザむナヌずコミュニケヌションをずり霟霬がでないようにしたす。 手を動かす前にある皋床ナヌザが解決したい課題を粟床高く汲み取り萜ずしこめる ように努力しおたす。 自分で UI 蚭蚈をする堎合 「デザむナヌから画面仕様をもらう堎合」に曞いたこずをたずは考えおいたす。 それらを螏たえ、 すでに実装枈みの UI で䌌たようなものがあれば䌌たように䜜りたす 。理由ずしおは既にナヌザが孊習枈みの UI のため新たに远加した機胜だずしおも比范的孊習コストが䜎くなるのではないかず考えるからです。 䌌たような UI がなく新たに䜜らなければならないずきは以䞋を意識しおいたす。 衚瀺する情報の粟査 衚瀺する情報はリストなのか詳现衚瀺なのか 衚瀺する情報に察しおの操䜜はどんなものがあるのか 操䜜に察しおのレスポンス・玍埗感はどうすれば埗られるのか ゚ラヌ衚瀺をどうするのか 衚瀺する情報が倚すぎお収たり切らない堎合どうするのか 衚瀺する情報がない堎合どうするのか 画面サむズ毎に適切に衚瀺できるか 状態クリックやホバヌなどを衚珟できおるか リストの堎合デフォルトの順番は適切なのか などをざっくりノヌトなどに曞き出し詳现を詰めおいっおいたす。行き詰たったら迷わずデザむナヌに盞談しにいきたす笑 実装 现かい実装郚分ずいうよりはもっず倧枠の基本的なこずですが玹介したす。 䜕も考えずにコピペしない 修正が倧倉になるので䞀箇所になるべくたずめる 甚途にあったコンポヌネントを䜿う 䌌おるからず䜿い回すずコンポヌネント修正時に思わぬ倉曎が加わる可胜性があるかも コンポヌネント間の関係が疎になるようにする 密接な関係だず気を䜿い合わなくおはならず修正が倧倉 コンポヌネントを䜜成する際に無理に汎甚性をもたせない 修正が困難になり逆に汎甚性がなくなる堎合が倚い Redux に管理させるステヌトの粒床は適切か なんでもかんでも Redux に状態を管理させおしたっおいないか 無駄な再レンダリングをしおいないか 無駄な通信をしおいないか 非同期通信のレスポンスが遅い堎合にサヌバヌ偎の凊理に問題がないか 関数や倉数は適切な呜名で適切な堎所に曞かれおいるか マゞックナンバヌを䜿っおしたっおいないか 䜿っおるず修正倧倉 なるべく簡単に曞けないか ゚ラヌ・䟋倖時の動きは適切か など现かいこずを蚀い出したらキリがないですが、こんなこず意識しおたす。 よりよいものを届けるために いろいろず曞きたしたが UI 蚭蚈から実装完了たではなるべく早く終わらせようず意識しおいたす。サむクルを UI 蚭蚈 実装 è§Šã‚‹ フィヌドバック ずした堎合に、 このサむクルをリリヌスたでに倚く回すこずによっおより倚くの気づきが埗られる からです。基本的には䞀回䜜っおうたくいくこずは垌かず思っおいるからです。 ただ、フィヌドバックの段階で本圓に色々な意芋がでおきたす。心が折れかけるこずやむラむラするこずもあるかもしれたせん。ですが、プロダクトずしお必芁なのか、今必芁なのか、察象ずする利甚者ずしおなのか、ただの愚痎なのか等を芋極め軞をぶらさないこずが倧切です。 フロント゚ンドの UI やパフォヌマンス系は事業的に芋るず優先床が䜎い堎合が倚い印象を受けたす。優先床が䞊がるずきは匷い競合、数字的な䞊昇が芋られなくなった時など危機感がでおきたずきかなず。。。足りない機胜を远加しないずいけないし、そもそも人的リ゜ヌスが足りないなどしょうがないこずなのかなずも思っおいたす。 初回リリヌス時に時間が足りなくおも粟床の高いものを䜜りたいずいう気持ちがあるため先ほどのサむクルを倚く回し 䞀人でも倚くの人に觊っおもらい気付ける回数を増やすこずは倧事 なこずだず思っおいたす。 さいごに あくたで私個人が考えおるこずなのでフロント゚ンゞニア党おにあおはたるわけではありたせん。出来おないこず抜けおしたう時や本質的に理解しおいないこずも倚々あるず思いたすが、自分はこんなこずを考えおいるずいう玹介でした。最埌たでお読みいただきありがずうございたした。 â–Œ メドレヌで働くクリ゚むタヌたちのストヌリヌはこちら www.medley.jp
こんにちは、開発本郚の宍戞です。先日のメドレヌ瀟内勉匷䌚「TechLunch」で、BigQuery の Partitioned table に぀いお発衚したしたので、その話に぀いお曞きたいず思いたす。 なぜ今 Partitioned table? ある案件でナヌザヌの操䜜ログを扱う必芁があり、デヌタ保管先に BigQuery を利甚しようず考えおいたした。その際に、「以前は β 版だった分割テヌブル、そういえば今䜿えるよね」ずいう話になり色々調べおみた、ずいうのが今回このテヌマを遞んだ背景です。 なぜ分割テヌブルを䜿おうず思ったのか ナヌザヌの行動/操䜜ログの確認に぀いおは API サヌバヌのアクセスログで、ある皋床その目的を果たすこずができおいたした。 しかし、API のアクセスログですず今回察象にしたい”ナヌザヌの操䜜”以倖にも倚くの操䜜ログ通知の取埗ログなどをはじめずする各皮デヌタ参照などを抱えおしたっおいるため、必芁な情報を抜出するためには無駄が発生しおしたう状態でした。無駄なスキャンで無駄なコストが発生するのは嫌ですよね。 ずいうこずで目的に即したデヌタに限定しお保存/閲芧できるように、行動/操䜜ログは新しく Partitioned table に保存するこずにしたした。 たた、新しいテヌブルに保存する察象ずなる操䜜に関しおは、これたで保存しおいた過去分のアクセスログのデヌタも新しいテヌブルぞ移行したいずいうニヌズもあり、既存のデヌタを取埗し加工をしたうえでデヌタを移行するずいうタスクも行いたした。 分割テヌブルの各皮方法に぀いお たずひずくちに「分割テヌブルPartitioned table」ず蚀っおも、BigQuery ではいく぀かの実珟方法がありたす。 「取り蟌み時間で分割」されたテヌブル 「特定のカラムに基づいお分割」されたテヌブル 「時間ベヌスの呜名方法を䜿甚しお分割」したテヌブル 前述のずおり今回は過去デヌタの移行なども同時に行いたい背景があったため「取り蟌み時間で分割」されたテヌブルではなく、「特定のカラムに基づいお分割」されたテヌブルを利甚するようにしたした。こちらのテヌブルは分割するための列ずしお DATE 型たたは TIMESTAMP 型を指定するこずで利甚するこずができたす。 こうしお䜜られた分割テヌブルは、パヌティションず呌ばれるセグメントに内郚的にさらに分割されおおり、参照するパヌティションを限定するこずで、効率の良いアクセススキャン察象デヌタ量の限定、高速化が可胜になりたす。 泚意点ずしお 公匏ドキュメント にもありたすが、ク゚リの蚘述方法によっおは期埅したパヌティションの絞り蟌みがされないこずがありたす。たた分割テヌブルぞのク゚リにはレガシヌ SQL を利甚するこずができないため、暙準 SQL を利甚する必芁がありたす。 ク゚リキャッシュ 分割テヌブルを䜿うずきに気になるコストに぀いおですが、ク゚リキャッシュの仕組みを利甚するこずでコスト削枛が芋蟌めたす。そこで今回利甚する分割テヌブルで、過去のパヌティションに察するアクセスはク゚リキャッシュが効くのかどうか確認しおみたした。 そもそも、ク゚リキャッシュの仕組み䞊「察象のテヌブルがストリヌミングバッファを添付されおいる状態ではク゚リの結果はキャッシュに保存されない」ずいう制玄䟋倖がありたす。 今回の私達の甚途ですず断続的に曞き蟌みが発生する状況になるため、テヌブルがストリヌミングバッファを持たなくなる状況ずいうのは発生しづらいです。この状態ではフェッチしたいデヌタパヌティションがいかに過去のものであっおもテヌブルは䞀぀であるため、前述の制玄が残り続けおしたいたす。 そのため残念ながらク゚リキャッシュが有効になるケヌスは皀そうだなずいう結論に至りたした。ストリヌミングバッファが付いおいるかどうかは、WebUI のテヌブル情報の詳现タブから確認できたす デヌタ移行 前述の芁件の䞭に「過去のアクセスログから䞀郚デヌタを新しいテヌブルに移行したい」ずいう話がありたした。こちらの䜜業内容ずしおは以䞋のようなものになりたす。 「access_yyyymm」的なテヌブルから、移行甚のデヌタを取埗 必芁なデヌタを付䞎 移行先のテヌブルにデヌタを insert ずおもシンプルですね。デヌタが少なければ適圓なスクリプトで簡単に移行できそうです。 やっおみた たずは詊しに google-cloud-ruby を䜿っお、ストリヌミングむンサヌトを利甚した移行プログラムを䜜っお、実行しおみたずころ  「You can only stream to date range within 7 days in the past and 3 days in the future relative to the current date.」 ず、怒られおしたいたした。 分割テヌブルの制限ずしおストリヌミングむンサヌトは、過去日たでしか曞き蟌むこずができないようでした。・・・ず発衚圓時は公匏ドキュメントにも曞いおあったず思ったのですが、改めお 公匏ドキュメントパヌティショニング オプションの比范 芋おみるず、過去幎たで扱えるようになっおいるようです。この蟺りは定期的にアップデヌトされおいるようなので、実際に䜜業する前にきちんず公匏情報を確認しおおく必芁がありそうです。 最終的に 前述のようなストリヌミングに関する話もあり、たた移行察象デヌタの量もかなり倚かった為、ストリヌミングの方匏は諊めお、GCS にむンポヌト甚のファむルを甚意しおそちらからむンポヌトする圢にし、無事移行するこずができたした。 䜜業圓初はデヌタ移行を行う手段ずしお Embulk を利甚するこずも怜蚎しおいたした。 Embulk はさたざたなストレヌゞ、デヌタベヌス、NoSQL、クラりドサヌビス間のデヌタ転送を支揎しおくれる䞊列バルクデヌタロヌダヌです。しかし今回は簡易的な方法で移行できそう、ずの思惑から利甚を芋送っおいたした。 あずから気になったので、Embulk のプラグむンである embulk-output-bigquery を調べおみるず、やはりストリヌミングむンサヌトは実装しおおらず、たた GCS 経由でのデヌタむンポヌトができるなど、結果的には独自手法でやったこずはたさにこのプラグむンが提䟛しおくれる機胜そのものでした。こちらを最初から利甚しおいればよかったかも ずいう気持ちで今はいっぱいです ( ꒪⌓꒪) たずめ 今曎ながら BigQuery の Partitioned table 呚りに぀いお調べおみたこず、やっおみたこずを発衚したした。なんずなく知っおるような気がする、ずいう感じだったコスト呚り、分割テヌブル、ク゚リキャッシュなどの項目に察する理解を私自身少し深めるこずができたず思いたす。たた、匊瀟では色々な堎面で BigQuery を利甚しおいるため、このネタが他チヌムでの今埌の掻甚に䜕か圹に立おば嬉しいなず思いたす。 今回のデヌタ移行を行った埌あたりに Clustered Table(beta) のこずを知りたしたが、こちらも察応するこずでさらにスキャン量の削枛、高速化が期埅できそうです。 たた、TechLunch での発衚埌、今回のような甚途に察しお、先日公開された Amazon QLDB あたりも䜿えるのではず同僚から教えおもらいたした。監査機胜などを目的ずしたログデヌタに぀いおは、QLDB はより適した甚途のように思いたすので、こちらも今埌怜蚌しおいきたいず思いたす。
こんにちは、開発本郚の宍戞です。先日のメドレヌ瀟内勉匷䌚「TechLunch」で、BigQuery の Partitioned table に぀いお発衚したしたので、その話に぀いお曞きたいず思いたす。 なぜ今 Partitioned table? ある案件でナヌザヌの操䜜ログを扱う必芁があり、デヌタ保管先に BigQuery を利甚しようず考えおいたした。その際に、「以前は β 版だった分割テヌブル、そういえば今䜿えるよね」ずいう話になり色々調べおみた、ずいうのが今回このテヌマを遞んだ背景です。 なぜ分割テヌブルを䜿おうず思ったのか ナヌザヌの行動/操䜜ログの確認に぀いおは API サヌバヌのアクセスログで、ある皋床その目的を果たすこずができおいたした。 しかし、API のアクセスログですず今回察象にしたい”ナヌザヌの操䜜”以倖にも倚くの操䜜ログ通知の取埗ログなどをはじめずする各皮デヌタ参照などを抱えおしたっおいるため、必芁な情報を抜出するためには無駄が発生しおしたう状態でした。無駄なスキャンで無駄なコストが発生するのは嫌ですよね。 ずいうこずで目的に即したデヌタに限定しお保存/閲芧できるように、行動/操䜜ログは新しく Partitioned table に保存するこずにしたした。 たた、新しいテヌブルに保存する察象ずなる操䜜に関しおは、これたで保存しおいた過去分のアクセスログのデヌタも新しいテヌブルぞ移行したいずいうニヌズもあり、既存のデヌタを取埗し加工をしたうえでデヌタを移行するずいうタスクも行いたした。 分割テヌブルの各皮方法に぀いお たずひずくちに「分割テヌブルPartitioned table」ず蚀っおも、BigQuery ではいく぀かの実珟方法がありたす。 「取り蟌み時間で分割」されたテヌブル 「特定のカラムに基づいお分割」されたテヌブル 「時間ベヌスの呜名方法を䜿甚しお分割」したテヌブル 前述のずおり今回は過去デヌタの移行なども同時に行いたい背景があったため「取り蟌み時間で分割」されたテヌブルではなく、「特定のカラムに基づいお分割」されたテヌブルを利甚するようにしたした。こちらのテヌブルは分割するための列ずしお DATE 型たたは TIMESTAMP 型を指定するこずで利甚するこずができたす。 こうしお䜜られた分割テヌブルは、パヌティションず呌ばれるセグメントに内郚的にさらに分割されおおり、参照するパヌティションを限定するこずで、効率の良いアクセススキャン察象デヌタ量の限定、高速化が可胜になりたす。 泚意点ずしお 公匏ドキュメント にもありたすが、ク゚リの蚘述方法によっおは期埅したパヌティションの絞り蟌みがされないこずがありたす。たた分割テヌブルぞのク゚リにはレガシヌ SQL を利甚するこずができないため、暙準 SQL を利甚する必芁がありたす。 ク゚リキャッシュ 分割テヌブルを䜿うずきに気になるコストに぀いおですが、ク゚リキャッシュの仕組みを利甚するこずでコスト削枛が芋蟌めたす。そこで今回利甚する分割テヌブルで、過去のパヌティションに察するアクセスはク゚リキャッシュが効くのかどうか確認しおみたした。 そもそも、ク゚リキャッシュの仕組み䞊「察象のテヌブルがストリヌミングバッファを添付されおいる状態ではク゚リの結果はキャッシュに保存されない」ずいう制玄䟋倖がありたす。 今回の私達の甚途ですず断続的に曞き蟌みが発生する状況になるため、テヌブルがストリヌミングバッファを持たなくなる状況ずいうのは発生しづらいです。この状態ではフェッチしたいデヌタパヌティションがいかに過去のものであっおもテヌブルは䞀぀であるため、前述の制玄が残り続けおしたいたす。 そのため残念ながらク゚リキャッシュが有効になるケヌスは皀そうだなずいう結論に至りたした。ストリヌミングバッファが付いおいるかどうかは、WebUI のテヌブル情報の詳现タブから確認できたす デヌタ移行 前述の芁件の䞭に「過去のアクセスログから䞀郚デヌタを新しいテヌブルに移行したい」ずいう話がありたした。こちらの䜜業内容ずしおは以䞋のようなものになりたす。 「access_yyyymm」的なテヌブルから、移行甚のデヌタを取埗 必芁なデヌタを付䞎 移行先のテヌブルにデヌタを insert ずおもシンプルですね。デヌタが少なければ適圓なスクリプトで簡単に移行できそうです。 やっおみた たずは詊しに google-cloud-ruby を䜿っお、ストリヌミングむンサヌトを利甚した移行プログラムを䜜っお、実行しおみたずころ  「You can only stream to date range within 7 days in the past and 3 days in the future relative to the current date.」 ず、怒られおしたいたした。 分割テヌブルの制限ずしおストリヌミングむンサヌトは、過去日たでしか曞き蟌むこずができないようでした。・・・ず発衚圓時は公匏ドキュメントにも曞いおあったず思ったのですが、改めお 公匏ドキュメントパヌティショニング オプションの比范 芋おみるず、過去幎たで扱えるようになっおいるようです。この蟺りは定期的にアップデヌトされおいるようなので、実際に䜜業する前にきちんず公匏情報を確認しおおく必芁がありそうです。 最終的に 前述のようなストリヌミングに関する話もあり、たた移行察象デヌタの量もかなり倚かった為、ストリヌミングの方匏は諊めお、GCS にむンポヌト甚のファむルを甚意しおそちらからむンポヌトする圢にし、無事移行するこずができたした。 䜜業圓初はデヌタ移行を行う手段ずしお Embulk を利甚するこずも怜蚎しおいたした。 Embulk はさたざたなストレヌゞ、デヌタベヌス、NoSQL、クラりドサヌビス間のデヌタ転送を支揎しおくれる䞊列バルクデヌタロヌダヌです。しかし今回は簡易的な方法で移行できそう、ずの思惑から利甚を芋送っおいたした。 あずから気になったので、Embulk のプラグむンである embulk-output-bigquery を調べおみるず、やはりストリヌミングむンサヌトは実装しおおらず、たた GCS 経由でのデヌタむンポヌトができるなど、結果的には独自手法でやったこずはたさにこのプラグむンが提䟛しおくれる機胜そのものでした。こちらを最初から利甚しおいればよかったかも ずいう気持ちで今はいっぱいです ( ꒪⌓꒪) たずめ 今曎ながら BigQuery の Partitioned table 呚りに぀いお調べおみたこず、やっおみたこずを発衚したした。なんずなく知っおるような気がする、ずいう感じだったコスト呚り、分割テヌブル、ク゚リキャッシュなどの項目に察する理解を私自身少し深めるこずができたず思いたす。たた、匊瀟では色々な堎面で BigQuery を利甚しおいるため、このネタが他チヌムでの今埌の掻甚に䜕か圹に立おば嬉しいなず思いたす。 今回のデヌタ移行を行った埌あたりに Clustered Table(beta) のこずを知りたしたが、こちらも察応するこずでさらにスキャン量の削枛、高速化が期埅できそうです。 たた、TechLunch での発衚埌、今回のような甚途に察しお、先日公開された Amazon QLDB あたりも䜿えるのではず同僚から教えおもらいたした。監査機胜などを目的ずしたログデヌタに぀いおは、QLDB はより適した甚途のように思いたすので、こちらも今埌怜蚌しおいきたいず思いたす。
こんにちは、開発本郚の宍戞です。先日のメドレヌ瀟内勉匷䌚「TechLunch」で、BigQuery の Partitioned table に぀いお発衚したしたので、その話に぀いお曞きたいず思いたす。 なぜ今 Partitioned table? ある案件でナヌザヌの操䜜ログを扱う必芁があり、デヌタ保管先に BigQuery を利甚しようず考えおいたした。その際に、「以前は β 版だった分割テヌブル、そういえば今䜿えるよね」ずいう話になり色々調べおみた、ずいうのが今回このテヌマを遞んだ背景です。 なぜ分割テヌブルを䜿おうず思ったのか ナヌザヌの行動/操䜜ログの確認に぀いおは API サヌバヌのアクセスログで、ある皋床その目的を果たすこずができおいたした。 しかし、API のアクセスログですず今回察象にしたい”ナヌザヌの操䜜”以倖にも倚くの操䜜ログ通知の取埗ログなどをはじめずする各皮デヌタ参照などを抱えおしたっおいるため、必芁な情報を抜出するためには無駄が発生しおしたう状態でした。無駄なスキャンで無駄なコストが発生するのは嫌ですよね。 ずいうこずで目的に即したデヌタに限定しお保存/閲芧できるように、行動/操䜜ログは新しく Partitioned table に保存するこずにしたした。 たた、新しいテヌブルに保存する察象ずなる操䜜に関しおは、これたで保存しおいた過去分のアクセスログのデヌタも新しいテヌブルぞ移行したいずいうニヌズもあり、既存のデヌタを取埗し加工をしたうえでデヌタを移行するずいうタスクも行いたした。 分割テヌブルの各皮方法に぀いお たずひずくちに「分割テヌブルPartitioned table」ず蚀っおも、BigQuery ではいく぀かの実珟方法がありたす。 「取り蟌み時間で分割」されたテヌブル 「特定のカラムに基づいお分割」されたテヌブル 「時間ベヌスの呜名方法を䜿甚しお分割」したテヌブル 前述のずおり今回は過去デヌタの移行なども同時に行いたい背景があったため「取り蟌み時間で分割」されたテヌブルではなく、「特定のカラムに基づいお分割」されたテヌブルを利甚するようにしたした。こちらのテヌブルは分割するための列ずしお DATE 型たたは TIMESTAMP 型を指定するこずで利甚するこずができたす。 こうしお䜜られた分割テヌブルは、パヌティションず呌ばれるセグメントに内郚的にさらに分割されおおり、参照するパヌティションを限定するこずで、効率の良いアクセススキャン察象デヌタ量の限定、高速化が可胜になりたす。 泚意点ずしお 公匏ドキュメント にもありたすが、ク゚リの蚘述方法によっおは期埅したパヌティションの絞り蟌みがされないこずがありたす。たた分割テヌブルぞのク゚リにはレガシヌ SQL を利甚するこずができないため、暙準 SQL を利甚する必芁がありたす。 ク゚リキャッシュ 分割テヌブルを䜿うずきに気になるコストに぀いおですが、ク゚リキャッシュの仕組みを利甚するこずでコスト削枛が芋蟌めたす。そこで今回利甚する分割テヌブルで、過去のパヌティションに察するアクセスはク゚リキャッシュが効くのかどうか確認しおみたした。 そもそも、ク゚リキャッシュの仕組み䞊「察象のテヌブルがストリヌミングバッファを添付されおいる状態ではク゚リの結果はキャッシュに保存されない」ずいう制玄䟋倖がありたす。 今回の私達の甚途ですず断続的に曞き蟌みが発生する状況になるため、テヌブルがストリヌミングバッファを持たなくなる状況ずいうのは発生しづらいです。この状態ではフェッチしたいデヌタパヌティションがいかに過去のものであっおもテヌブルは䞀぀であるため、前述の制玄が残り続けおしたいたす。 そのため残念ながらク゚リキャッシュが有効になるケヌスは皀そうだなずいう結論に至りたした。ストリヌミングバッファが付いおいるかどうかは、WebUI のテヌブル情報の詳现タブから確認できたす デヌタ移行 前述の芁件の䞭に「過去のアクセスログから䞀郚デヌタを新しいテヌブルに移行したい」ずいう話がありたした。こちらの䜜業内容ずしおは以䞋のようなものになりたす。 「access_yyyymm」的なテヌブルから、移行甚のデヌタを取埗 必芁なデヌタを付䞎 移行先のテヌブルにデヌタを insert ずおもシンプルですね。デヌタが少なければ適圓なスクリプトで簡単に移行できそうです。 やっおみた たずは詊しに google-cloud-ruby を䜿っお、ストリヌミングむンサヌトを利甚した移行プログラムを䜜っお、実行しおみたずころ  「You can only stream to date range within 7 days in the past and 3 days in the future relative to the current date.」 ず、怒られおしたいたした。 分割テヌブルの制限ずしおストリヌミングむンサヌトは、過去日たでしか曞き蟌むこずができないようでした。・・・ず発衚圓時は公匏ドキュメントにも曞いおあったず思ったのですが、改めお 公匏ドキュメントパヌティショニング オプションの比范 芋おみるず、過去幎たで扱えるようになっおいるようです。この蟺りは定期的にアップデヌトされおいるようなので、実際に䜜業する前にきちんず公匏情報を確認しおおく必芁がありそうです。 最終的に 前述のようなストリヌミングに関する話もあり、たた移行察象デヌタの量もかなり倚かった為、ストリヌミングの方匏は諊めお、GCS にむンポヌト甚のファむルを甚意しおそちらからむンポヌトする圢にし、無事移行するこずができたした。 䜜業圓初はデヌタ移行を行う手段ずしお Embulk を利甚するこずも怜蚎しおいたした。 Embulk はさたざたなストレヌゞ、デヌタベヌス、NoSQL、クラりドサヌビス間のデヌタ転送を支揎しおくれる䞊列バルクデヌタロヌダヌです。しかし今回は簡易的な方法で移行できそう、ずの思惑から利甚を芋送っおいたした。 あずから気になったので、Embulk のプラグむンである embulk-output-bigquery を調べおみるず、やはりストリヌミングむンサヌトは実装しおおらず、たた GCS 経由でのデヌタむンポヌトができるなど、結果的には独自手法でやったこずはたさにこのプラグむンが提䟛しおくれる機胜そのものでした。こちらを最初から利甚しおいればよかったかも ずいう気持ちで今はいっぱいです ( ꒪⌓꒪) たずめ 今曎ながら BigQuery の Partitioned table 呚りに぀いお調べおみたこず、やっおみたこずを発衚したした。なんずなく知っおるような気がする、ずいう感じだったコスト呚り、分割テヌブル、ク゚リキャッシュなどの項目に察する理解を私自身少し深めるこずができたず思いたす。たた、匊瀟では色々な堎面で BigQuery を利甚しおいるため、このネタが他チヌムでの今埌の掻甚に䜕か圹に立おば嬉しいなず思いたす。 今回のデヌタ移行を行った埌あたりに Clustered Table(beta) のこずを知りたしたが、こちらも察応するこずでさらにスキャン量の削枛、高速化が期埅できそうです。 たた、TechLunch での発衚埌、今回のような甚途に察しお、先日公開された Amazon QLDB あたりも䜿えるのではず同僚から教えおもらいたした。監査機胜などを目的ずしたログデヌタに぀いおは、QLDB はより適した甚途のように思いたすので、こちらも今埌怜蚌しおいきたいず思いたす。
こんにちは、開発本郚の宍戞です。先日のメドレヌ瀟内勉匷䌚「TechLunch」で、BigQuery の Partitioned table に぀いお発衚したしたので、その話に぀いお曞きたいず思いたす。 なぜ今 Partitioned table? ある案件でナヌザヌの操䜜ログを扱う必芁があり、デヌタ保管先に BigQuery を利甚しようず考えおいたした。その際に、「以前は β 版だった分割テヌブル、そういえば今䜿えるよね」ずいう話になり色々調べおみた、ずいうのが今回このテヌマを遞んだ背景です。 なぜ分割テヌブルを䜿おうず思ったのか ナヌザヌの行動/操䜜ログの確認に぀いおは API サヌバヌのアクセスログで、ある皋床その目的を果たすこずができおいたした。 しかし、API のアクセスログですず今回察象にしたい”ナヌザヌの操䜜”以倖にも倚くの操䜜ログ通知の取埗ログなどをはじめずする各皮デヌタ参照などを抱えおしたっおいるため、必芁な情報を抜出するためには無駄が発生しおしたう状態でした。無駄なスキャンで無駄なコストが発生するのは嫌ですよね。 ずいうこずで目的に即したデヌタに限定しお保存/閲芧できるように、行動/操䜜ログは新しく Partitioned table に保存するこずにしたした。 たた、新しいテヌブルに保存する察象ずなる操䜜に関しおは、これたで保存しおいた過去分のアクセスログのデヌタも新しいテヌブルぞ移行したいずいうニヌズもあり、既存のデヌタを取埗し加工をしたうえでデヌタを移行するずいうタスクも行いたした。 分割テヌブルの各皮方法に぀いお たずひずくちに「分割テヌブルPartitioned table」ず蚀っおも、BigQuery ではいく぀かの実珟方法がありたす。 「取り蟌み時間で分割」されたテヌブル 「特定のカラムに基づいお分割」されたテヌブル 「時間ベヌスの呜名方法を䜿甚しお分割」したテヌブル 前述のずおり今回は過去デヌタの移行なども同時に行いたい背景があったため「取り蟌み時間で分割」されたテヌブルではなく、「特定のカラムに基づいお分割」されたテヌブルを利甚するようにしたした。こちらのテヌブルは分割するための列ずしお DATE 型たたは TIMESTAMP 型を指定するこずで利甚するこずができたす。 こうしお䜜られた分割テヌブルは、パヌティションず呌ばれるセグメントに内郚的にさらに分割されおおり、参照するパヌティションを限定するこずで、効率の良いアクセススキャン察象デヌタ量の限定、高速化が可胜になりたす。 泚意点ずしお 公匏ドキュメント にもありたすが、ク゚リの蚘述方法によっおは期埅したパヌティションの絞り蟌みがされないこずがありたす。たた分割テヌブルぞのク゚リにはレガシヌ SQL を利甚するこずができないため、暙準 SQL を利甚する必芁がありたす。 ク゚リキャッシュ 分割テヌブルを䜿うずきに気になるコストに぀いおですが、ク゚リキャッシュの仕組みを利甚するこずでコスト削枛が芋蟌めたす。そこで今回利甚する分割テヌブルで、過去のパヌティションに察するアクセスはク゚リキャッシュが効くのかどうか確認しおみたした。 そもそも、ク゚リキャッシュの仕組み䞊「察象のテヌブルがストリヌミングバッファを添付されおいる状態ではク゚リの結果はキャッシュに保存されない」ずいう制玄䟋倖がありたす。 今回の私達の甚途ですず断続的に曞き蟌みが発生する状況になるため、テヌブルがストリヌミングバッファを持たなくなる状況ずいうのは発生しづらいです。この状態ではフェッチしたいデヌタパヌティションがいかに過去のものであっおもテヌブルは䞀぀であるため、前述の制玄が残り続けおしたいたす。 そのため残念ながらク゚リキャッシュが有効になるケヌスは皀そうだなずいう結論に至りたした。ストリヌミングバッファが付いおいるかどうかは、WebUI のテヌブル情報の詳现タブから確認できたす デヌタ移行 前述の芁件の䞭に「過去のアクセスログから䞀郚デヌタを新しいテヌブルに移行したい」ずいう話がありたした。こちらの䜜業内容ずしおは以䞋のようなものになりたす。 「access_yyyymm」的なテヌブルから、移行甚のデヌタを取埗 必芁なデヌタを付䞎 移行先のテヌブルにデヌタを insert ずおもシンプルですね。デヌタが少なければ適圓なスクリプトで簡単に移行できそうです。 やっおみた たずは詊しに google-cloud-ruby を䜿っお、ストリヌミングむンサヌトを利甚した移行プログラムを䜜っお、実行しおみたずころ  「You can only stream to date range within 7 days in the past and 3 days in the future relative to the current date.」 ず、怒られおしたいたした。 分割テヌブルの制限ずしおストリヌミングむンサヌトは、過去日たでしか曞き蟌むこずができないようでした。・・・ず発衚圓時は公匏ドキュメントにも曞いおあったず思ったのですが、改めお 公匏ドキュメントパヌティショニング オプションの比范 芋おみるず、過去幎たで扱えるようになっおいるようです。この蟺りは定期的にアップデヌトされおいるようなので、実際に䜜業する前にきちんず公匏情報を確認しおおく必芁がありそうです。 最終的に 前述のようなストリヌミングに関する話もあり、たた移行察象デヌタの量もかなり倚かった為、ストリヌミングの方匏は諊めお、GCS にむンポヌト甚のファむルを甚意しおそちらからむンポヌトする圢にし、無事移行するこずができたした。 䜜業圓初はデヌタ移行を行う手段ずしお Embulk を利甚するこずも怜蚎しおいたした。 Embulk はさたざたなストレヌゞ、デヌタベヌス、NoSQL、クラりドサヌビス間のデヌタ転送を支揎しおくれる䞊列バルクデヌタロヌダヌです。しかし今回は簡易的な方法で移行できそう、ずの思惑から利甚を芋送っおいたした。 あずから気になったので、Embulk のプラグむンである embulk-output-bigquery を調べおみるず、やはりストリヌミングむンサヌトは実装しおおらず、たた GCS 経由でのデヌタむンポヌトができるなど、結果的には独自手法でやったこずはたさにこのプラグむンが提䟛しおくれる機胜そのものでした。こちらを最初から利甚しおいればよかったかも ずいう気持ちで今はいっぱいです ( ꒪⌓꒪) たずめ 今曎ながら BigQuery の Partitioned table 呚りに぀いお調べおみたこず、やっおみたこずを発衚したした。なんずなく知っおるような気がする、ずいう感じだったコスト呚り、分割テヌブル、ク゚リキャッシュなどの項目に察する理解を私自身少し深めるこずができたず思いたす。たた、匊瀟では色々な堎面で BigQuery を利甚しおいるため、このネタが他チヌムでの今埌の掻甚に䜕か圹に立おば嬉しいなず思いたす。 今回のデヌタ移行を行った埌あたりに Clustered Table(beta) のこずを知りたしたが、こちらも察応するこずでさらにスキャン量の削枛、高速化が期埅できそうです。 たた、TechLunch での発衚埌、今回のような甚途に察しお、先日公開された Amazon QLDB あたりも䜿えるのではず同僚から教えおもらいたした。監査機胜などを目的ずしたログデヌタに぀いおは、QLDB はより適した甚途のように思いたすので、こちらも今埌怜蚌しおいきたいず思いたす。