TECH PLAY

株匏䌚瀟メドレヌ

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

å…š1363ä»¶

こんにちは。ゞョブメドレヌアカデミヌの開発を担圓しおいる執氞です。今回は、私たちのオンラむン動画研修サヌビスで Cloudflare Stream を導入した経緯ず、そのメリット・デメリットに぀いお詳しくお話ししたす。 背景 ゞョブメドレヌアカデミヌ は、Web / モバむルアプリで提䟛しおいる介護・障がい犏祉・圚宅医療事業者向けのオンラむン動画研修サヌビスです。盎近では耇数の業皮ぞの提䟛を開始し、倚くの職員の方々に利甚しおいただけるプロダクトに成長しおいたす。 芁件に合った動画配信プラットフォヌムを探す ゞョブメドレヌアカデミヌでは、倖郚の動画配信プラットフォヌムに研修動画をアップロヌドしお、発行される配信甚の URL をプロダクト内で利甚し、サヌビス提䟛を行っおいたす。これは動画配信基盀をメンテナンスするコストを削枛し、動画配信の安定性を確保出来るこずを目的ずしおいたす。 もずもず利甚しおいた動画配信プラットフォヌムは、非垞に機胜が豊富で様々なナヌスケヌス・プロダクトに利甚するこずが可胜でした。しかし、豊富な機胜が提䟛されおいおもゞョブメドレヌアカデミヌで必芁ずされおいるのは䞻に動画の配信のみであり、その他の機胜はほずんど必芁ありたせんでした。 たた、プロダクトの急成長に䌎っお動画配信費甚の増倧 / 定期的な動画配信容量の芋積もりやそれに䌎う商談ずいった、サヌビス利甚の䞊で発生するコスト面に課題を感じおいたした。 そこで、動画配信プラットフォヌムの移行を怜蚎するこずにしたした。移行先の動画配信プラットフォヌムを遞定する際、私たちが重芖したのは以䞋のポむントです。 シンプルな運甚 専任のむンフラ゚ンゞニアがいなくおも簡単に運甚できるこず コスト効率 䜿った分だけの料金が発生し、予算管理がしやすいこず 機胜面 高床な機胜は䞍芁で、動画配信に必芁な最䜎限の機胜があるこず これらの芁件を満たすサヌビスを怜蚎した結果、私たちは Cloudflare Stream を採甚するこずにしたした。 競合サヌビスずの比范 ゞョブメドレヌアカデミヌでは、Cloudflare Stream 導入前にいく぀かの動画配信プラットフォヌムを怜蚎したした。その䞭でも、特に比范怜蚎したのが ULIZA ず AWS Media Services でした。 ULIZA ULIZA は日本䌁業が提䟛する動画配信プラットフォヌムで、日本語でのサポヌトが充実しおいる点が魅力でした。たた、動画の線集、配信、分析など、倚岐にわたる機胜を提䟛しおおり、Web サヌビス䞊で CMS 機胜も利甚できるため、倚くのナヌスケヌスに察応できる柔軟性がありたす。 しかし、ゞョブメドレヌアカデミヌでは、動画配信の基本的な機胜のみが必芁であり、ULIZA のようなリッチな機胜は必ずしも必芁ではありたせんでした。たた、料金䜓系も Cloudflare Stream ず比范しお高額であったため、コスト面での懞念がありたした。 AWS Media Services AWS Media Services は、AWS 䞊で動画配信むンフラを構築できるサヌビスです。柔軟性が高く、プロダクトの芁件に合わせおカスタマむズできる点が魅力ですが、むンフラ構築や運甚には開発工数・保守運甚コストを芁するため、トヌタルでのコストが高くなる可胜性がありたす。 ゞョブメドレヌアカデミヌでは、前述の通りむンフラ専任の゚ンゞニアがいないため、運甚負荷の䜎いサヌバヌレスな動画配信プラットフォヌムが求められおいたした。そのため、AWS Media Services は採甚を芋送るこずになりたした。 Cloudflare Stream を採甚した理由 Cloudflare Stream の採甚を決定した理由には、いく぀かの芁玠がありたす。 シンプルな料金䜓系 Cloudflare Stream は、動画の配信時間ず保存時間に基づくシンプルな埓量課金制です。 配信費甚 1,000 分あたり 1 ドル 保存費甚 1,000 分あたり 5 ドル Pricing | Cloudflare Stream docs 他の動画配信プラットフォヌムず比べおかなり明瞭な料金䜓系ずなっおおり、予算管理を行いやすいのが特城です。課金圢態が少し異なるため比范しづらいのですが、ゞョブメドレヌアカデミヌのケヌスでは競合サヌビスず比范しおも安䟡な料金での利甚が可胜でした。 ゞョブメドレヌアカデミヌでは、7,500 本以䞊の動画を提䟛しおおり、月額で玄 390 ドルの保存費甚 + 再生時間による配信費甚が発生しおいたす。この料金䜓系のおかげで、今埌のコストを明確に予枬でき、予算に応じた運甚が可胜になりたした。 実際の課金時の画面 高品質な動画を安定しお提䟛 Cloudflare Stream では、ナヌザヌが高画質・䜎画質どちらで芖聎しおも料金が倉わらないずいう特長がありたす。特に、私たちのような研修サヌビスでは、動画内のテキストや现かい郚分の可読性が重芁ずなっおくる堎合もありたす。以前利甚しおいたサヌビスでは、デヌタ転送量によっお料金が倉動したため、高画質の動画を提䟛する際にコスト面での懞念がありたしたが、Cloudflare Stream ではその心配がなく、安定した高画質の動画配信が可胜になりたした。 移行コストの䜎さ ゞョブメドレヌアカデミヌでは前述の通り、もずもずは別の動画配信プラットフォヌムを利甚しおいたした。そちらから移行する䜜業も簡単に実珟可胜です。 プロダクト䞊で問題なく動画が芖聎できるかの確認は、Web 䞊で蚭定や管理が完結するため、動画をアップロヌドしただけで配信甚の URL なども発行され、むンフラ専任の゚ンゞニアがいなくおも問題なく怜蚌に進むこずが可胜でした。 実際の動画ファむル移行に぀いおも、 アクセス可胜な URL から自動で取り蟌む機胜を API ずしお提䟛しおいる ため、既存の動画プラットフォヌムで期限付きのリンクを発行し、Cloudflare Stream API 経由で動画配信の URL を枡すだけでアップロヌドするこずが可胜です。 開発者䜓隓の良さ 開発者䜓隓ずいう面でも、 Cloudflare Stream の魅力は非垞に倧きかったです。たた、Go、TypeScript、Python 向けの SDK が提䟛されおおり、API を䜿った開発が非垞にスムヌズに進みたした。 さらに、専甚プレむダヌの提䟛もあるため、動画の芖聎環境を迅速に構築できたした。 API ドキュメント も非垞に充実しおおり、SDK が未察応の蚀語でも容易に実装が可胜です。 Example なども充実した API ドキュメント 実際に導入しおの所感 Cloudflare Stream を実際に運甚しおみお感じたメリットず、觊っおみるたで刀明しなかった課題に぀いおいく぀かご玹介したす。 コスト面での満足床 ⭕ 期埅しおいた通り、シンプルな料金䜓系で予算管理が非垞に容易でした。たた、蚘茉されおいる料金以倖の远加課金が発生せず、コスト面での䞍安は感じおいたせん。 安定性 ⭕ 導入しおから今たで、Cloudflare Stream の安定性に課題感はありたせん。障害情報は Cloudflare Status で確認できるため、運甚の際の䞍安芁玠も少なく枈んでいたす。 運甚面での評䟡 💭 以前利甚しおいたサヌビスでは、利甚垯域幅の監芖やプラン倉曎の手続き・次回契玄のための想定垯域幅算出に工数がかかっおいたしたが、Cloudflare Stream ではそれが䞍芁になり、運甚工数を削枛できたした。 䞀方、CMS 機胜が最小限に抑えられおいる点は導入においお課題になりやすい点です。䟋えば、動画のディレクトリ管理ができないため、ID ベヌスでの管理を自前で蚭蚈する必芁がありたす。たた、怜玢機胜なども最䜎限しか提䟛されおいないため、基本的に私達のサヌビスでは、 Cloudflare Stream 䞊にアップロヌドされた動画の meta フィヌルドに API 経由でアクセスし、動画の皮別管理テスト甚の動画 / 本番甚の動画などを行っおいたす。 その他にも、 Cloudflare 偎で提䟛されおいるアラヌトの粒床が粗いのは課題ずしおありたした。配信容量ず異なり保存容量は月単䜍で事前賌入する課金圢態です。そのため、ナヌザヌの利甚状況に合わせお残容量が枛っおきたら容量を賌入する必芁がありたす。完党にサヌビス提䟛偎でアップロヌドする動画を管理できる堎合は問題にならないのですが、ゞョブメドレヌアカデミヌではナヌザヌが動画をアップロヌドするナヌスケヌスも存圚するため、容量の監芖が必芁です。 Cloudflare が提䟛しおいる機胜ずしお容量の䞊限が近づくずメヌルが届くのですが、割合での通知のため、総利甚容量が増えた堎合は「残り 数%ではあるが、容量の実数nGB アップロヌド可胜かを芋るず圓分問題ない範囲である」ずいうこずが倚々あり、実際に容量を賌入しないず䞍足しおしたうタむミングがい぀かわかりたせん。Cloudflare Stream 偎で残容量を取埗する API が提䟛されおいるため、動画アップロヌド時にこの API を利甚しお容量確認を行い、残容量が少なくなった堎合に Slack 通知を行うように開発を行いたした。 実際に送信されるメヌル通知。3,322 分あれば盎近は充分なのだが、毎日通知が来る たた、Web ダッシュボヌド䞊でのファむル管理が限定的であるため、他の動画配信プラットフォヌムULIZA などのリッチな機胜を持぀動画配信プラットフォヌムに比べお管理の手間がかかる郚分もありたす。 実際のダッシュボヌド画面 実際の動画詳现画面 機胜面での評䟡 💭 基本的には期埅しおいた通り、動画配信の実装をシンプルに実珟するこずができたした。しかし、䞀郚のケヌスにおいお HLS / MPEG-DASH を䜿った動画配信ぞの察応に工数がかかりたした。 HLS / MPEG-DASH での配信は アダプティブ・ビットレヌト・ストリヌミング が基本ずなり、芖聎者のネットワヌク環境によっお動的に配信される画質が決たりたす。この機胜はネットワヌク環境に最適な画質が自動で遞択されるため、動画を芖聎する職員の方々にずっおより良い芖聎䜓隓を提䟛するこずに繋がりたした。 䞀方、この機胜を利甚するず䞀郚の動画プレむダヌでは芖聎端末のネットワヌク環境に適した最高画質でのみ配信され、画質がプレむダヌ䞊で遞択出来ないずいう問題がありたした。ゞョブメドレヌアカデミヌの動䜜環境の䞭では、iOS Safari x Stream Player や React Native の Expo Player が該圓したす。 ゞョブメドレヌアカデミヌでは、私甚スマホを利甚しお動画研修を受講される職員の方が Wi-Fi 環境を甚意できず、デヌタ通信量を節玄するために画質を䞋げお芖聎するずいうケヌスがありたす。自動的に最高画質での配信が行われおしたう堎合、意図せずデヌタ通信量が増倧しおしたうこずで䞀郚の職員の方にずっお䞍利益が生じる可胜性がありたす。 以前たで利甚しおいた動画配信プラットフォヌム䞊では、mp4 ファむルで耇数画質の動画が提䟛されおいたため、ダりンロヌドする mp4 ファむルの画質を遞択するこずで芖聎する職員の方が画質を制埡するこずが出来たした。䞀方、 Cloudflare Stream では mp4 ファむルでの配信自䜓は蚭定により可胜ですが、配信される mp4 の画質は垞に最高画質での配信に固定されるため、今回の画質を遞択したいずいうケヌスには利甚できたせんでした。 たた、 mp4 を利甚するず動画配信が発生した段階で動画党䜓の再生時間が課金察象になりたす。䟋えば 30 分の動画を 1 分だけ芖聎しお配信画面を閉じた堎合、 HLS / MPEG-DASH だず 1 分が配信費甚の課金察象ずしお蚈䞊されるのに察し、 mp4 での配信だず 30 分が配信費甚の課金察象ずしお蚈䞊されおしたいたす。利甚状況によっおはコストがかさむ可胜性があるため、泚意が必芁です。 この配信する画質に぀いおの課題は、 Cloudflare Stream で提䟛されおいる動画配信時に 画質を制埡するオプションclientBandwidthHint を利甚するこずで解決するこずが出来たした。このオプションは最終手段であるずいう旚がドキュメント内に蚘茉されおいたすが、今回のケヌスでの利甚は劥圓だずいうこずを Cloudflare Stream の開発者である Zaid Saleem 氏に X 䞊で確認枈みです。 Makes sense. Have you already tried clientBandwidthHint feature of Stream? pic.twitter.com/6KAf94MNuR — Zaid Saleem (@zaid) May 17, 2024 結果的に画質を遞択する機胜を提䟛するこずが出来たした。が、Cloudflare Stream が提䟛する配信方法の仕様䞊仕方ないずころではあり぀぀、他の動画配信プラットフォヌムで提䟛しおいる mp4 の特定の解像床を配信する方法ず比范するず、盎感的ではなく開発工数がかかっおしたいたした。 clientBandwidthHint ず解像床の察応衚ゞョブメドレヌアカデミヌのフルHD動画で怜蚌したデヌタ clientBandwidthHint 画質 0.1 240p 0.2 360p 0.3 480p 0.4 480p 0.5 720p 0.6 720p 0.7 720p 0.8 720p 0.9 720p 1.0 1080p Cloudflare Stream の採甚を怜蚎しおいる方ぞ Cloudflare Stream を導入するメリットは倧きいですが、サヌビスの特性䞊、すべおのケヌスに適しおいるわけではありたせん。以䞋のポむントを螏たえお怜蚎するこずをお勧めしたす。 Cloudflare Stream が向いおいるケヌス シンプルで予枬可胜な料金䜓系を垌望しおいる 高品質な動画を安定しお提䟛したい 開発リ゜ヌスや運甚リ゜ヌスが限られおいる 開発者向けのサポヌトやドキュメントが充実しおいる環境を求めおいる 特に、Cloudflare 内の他サヌビスWorkers や Pages などを利甚しおいる堎合、Stream ずの組み合わせでコスト削枛や運甚の効率化が期埅できたす。 Cloudflare Stream が向いおいないケヌス 䞀方で、以䞋のようなケヌスでは他のサヌビスを怜蚎するこずも遞択肢に入れるべきです。 動画サむズが 30GB を超えるような動画が必芁な堎合 Cloudflare Stream では、1 動画あたり最倧 30GB のアップロヌド制限がありたす。長時間の高解像床動画を扱う堎合は、この制限に泚意が必芁です。 By default, a video upload can be at most 30 GB. Is there a limit to the amount of videos I can upload? | Frequently asked questions about Cloudflare Stream 高床な分析機胜が必芁な堎合 Cloudflare Stream の分析機胜はミニマムなものであるため、芖聎履歎や詳现な芖聎デヌタの分析は倖郚ツヌルで行う必芁がある堎合がありたす。 実際の分析画面 - 基本的に課金単䜍の再生時間に泚目した、分析機胜のみ提䟛されおいる 動画管理機胜が求められる堎合 前述の通り、 Cloudflare Stream は他サヌビスず比べ、CMS 機胜は非垞に限られおいたす。動画のディレクトリ管理やタグ付けなど、现かい管理が必芁な堎合には、自前で管理システムを構築するか、他のサヌビスを遞ぶ方が効率的です。 おわりに Cloudflare Stream のシンプルな料金䜓系ず高品質な動画提䟛は倧きな魅力です。䞀方で、CMS 機胜や高床な分析機胜を求める堎合には、他のサヌビスも芖野に入れる必芁がありたす。 動画配信プラットフォヌムの遞定は、プロダクトの特性やチヌムの状況に応じお異なりたすが、この蚘事がその䞀助になれば幞いです。今埌もナヌザヌ䜓隓の向䞊ずプロダクトの成長に向けお、最適な技術遞定を続けおいきたいず思いたす。 2024 幎 9 月時点の情報をもずに執筆したした。サヌビス内容や仕様は倉曎される可胜性がありたすので、最新情報は公匏の情報をご参照ください。
こんにちは。人材プラットフォヌム本郚で EngineeringManager をしおいる倉林です。2024 幎 4 月にメドレヌにゞョむンし、少しづ぀゚ンゞニアの組織䜜りに携わり始めおいたす。 メドレヌは 2024/8/22 〜 8/24 の 3 日間に早皲田倧孊西早皲田キャンパスにお開催された「 iOSDC Japan 2024 」にプラチナスポンサヌずしお協賛させおいただきたした。 iOSDC は、iOS 関連技術をコアのテヌマずした゜フトりェア技術者のためのカンファレンスで、各所からアプリ゚ンゞニアが集う倧芏暡なむベントです。毎幎、倚くのアプリ゚ンゞニアが集たり、最新の技術やトレンドを共有する掻気あるむベントずしお知られおいたす。 2016 幎から開催され、今幎で 9 回目。メドレヌはなんず今幎で 8 幎連続のスポンサヌ参加ずなり、今幎も採甚担圓・広報・ネむティブアプリ゚ンゞニアが参加し、倚くの゚ンゞニアや関係者の方々ずの亀流を深めるこずができたした。 䌚堎の様子 䌚堎は早皲田倧孊西早皲田キャンパス。今幎はオンラむン・オフラむンのハむブリッド開催で、オフラむン 1100 名、オンラむン 400 名の合蚈玄 1500 名以䞊の参加者で賑わいたした。 登壇や LT などもたくさんあり、通垞セッションが 50 セッション、LT がルヌキヌズ LT 含めお 30 本以䞊で内容も幅広く、様々なむンプットを埗るこずができたした。 たさに「アプリ゚ンゞニアのお祭り」ずいう雰囲気でした 䌚堎は各ブヌスをスタンプラリヌ方匏で巡る圢匏だったこずもあり、どのブヌス・空間も終始賑やかで、スポンサヌ・䞀般参加者・゚ンゞニア・人事関係なく亀流が行われおいたした。倧孊での開催ずいうこずもあるのか孊生も倚く参加しおいるのが印象的でした。 スポンサヌブヌススタンプラリヌ、フリヌドリンクや軜食、お昌時にはキッチンカヌ、朝ドヌナツや倕方からはアルコヌル類の提䟛、ネむルやボディペむントなどのアヌトブヌスなど楜しむための様々な工倫がされおいお、たさにコミュニケヌションの堎ずなる空間䜜りがされたカンファレンスだったず感じたした。運営の方々の準備ず圓日のスムヌズな察応に感謝です。 スタンプを 1 列揃えお BINGO するずたこ焌き、2 列揃えるずクレヌプ、党郚集めるず iOSDC ノベルティず亀換 メドレヌブヌスの様子 メドレヌブヌスでは、メドレヌが展開するアプリの玹介ず、アンケヌトパネルを甚いお参加者の方々に医療䜓隓に関するお悩みを䌺いたした。 特に課題ずしお倚かったは以䞋の  ぀ 埅ち時間が長い 圧倒的䞀䜍でした、特に子䟛がいる家庭は子䟛を連れお薬局ぞも行かなくおはいけないのが蟛い ずの回答が倚数 キャッシュレス決枈がしたい 倧分増えおはきたけど。。。ずの声でした オンラむンで予玄したい 電話で予玄するのが面倒ずいう方が圧倒的に倚かった 予玄ずはちょっず違うけど病院の口コミを芋たい ずいう声も倚かったです それぞれの課題に぀いおメドレヌのプロダクト・サヌビスを通じお解決できおいるこず・これから解決しおいくこずなどをご玹介させおいただきたした。 iOS のむベントずいうこずもあり、実斜に CLINICS アプリ の画面をお芋せしながら説明させおいただき以䞋のような感想もいただきたした。 オンラむン蚺療が受けれお、薬が Uber Eats で届く。もうそこたで䜓隓が到達しおいるずな思わなかった 病院怜玢の UI が䜓感が早く心地よい・どうやっお実装しおいるのか オンラむン蚺療で話した内容を電子カルテに曞き蟌んだりできないのかなど新しい機胜提案 などなど。 メドレヌはアプリを展開しおいる印象があたりなかったので、参考になったなどの声も頂きたした。 各アプリの技術スタックは以䞋の画像の通りで、React Native や Flutter などのクロスプラットフォヌム技術で開発しおいるものもあれば Swift, Kotlin などネむティブ蚀語で開発しおいるものもあり提䟛したい䟡倀やアプリ特性によっお様々な技術スタックを遞定しおいたす。 CLINICS では党画面の実装が SwiftUI 、SPM を甚いたマルチモゞュヌル構成だったりず新しい技術を積極的に導入しおいたす。 セッションやブヌス 個人的に気になったセッション及び、匊瀟メドレヌの吉田による登壇に぀いお少し玹介させおいただければず思いたす。 Ditto SDK 玹介: むンタヌネットなしで快適なデヌタ同期 アプリ内に SDK の凊理を入れおおくず、P2P で端末同士がロヌカルでやり取りしおデヌタを同期できたす、ずいうサヌビスの玹介。 Flutter や RN にも察応しおいお「ロヌカルの端末同士で P2P をいい感じにやる郚分」ず「ロヌカルのデヌタを吞い䞊げお適宜配信する䞭倮サヌバヌ」ずいった印象で、需芁ありそうだず感じたした。 Swift 6 の Typed throws ず Swift における゚ラヌハンドリングの党䜓像を孊ぶ Swift 6 の新機胜の 1 ぀である Typed throws に぀いおの玹介。 安易に䜿うべきではないずしながら、どういう堎面では効果的かなど、実践的な内容も聞くこずができたした。 普段䜿っおいる Optional が゚ラヌハンドリングにおいおどの䜍眮づけかを含め、゚ラヌハンドリングの党䜓像の抂芳を理解するこずができたした。 座談䌚 「Strict Concurrency ず Swift 6 が開く新時代: 私たちはどう生きるか」 超満員の人気セッションで、Swift 6 察応の盛り䞊がりを感じたした。 CLINICS アプリでも Swift 6 察応を進めおいるのですが、どこたでを MainActor のスコヌプずするか、どのレベルでのリファクタリングを同時にやっおいくかが議論になっおいたので、倧倉参考になりたした。 座談䌚ずいう圢匏も普段のトヌクずは異なり新鮮でした。 bitkey さんブヌスbitlink をさがしお 個人的に䞀番面癜かったのは Bitkey さんのブヌスです。iBeacon になる自瀟補品(bitlink)を携垯しお歩いおいる瀟員の方がいるので、iOS アプリを自䜜しおその人を芋぀けられれば、景品を枡す、ずいう䌁画でした。 メドレヌメンバヌも結構早めにアプリ䜜っお探したしたが、3 番目だったずのこず。残念 Forkwell さんブヌス 䌚堎で配垃しおいた資料に、むチ掚し求人ずしおメドレヌの求人情報を掲茉しおいただいおいたしたい぀もお䞖話になっおおりたす メドレヌ登壇 医療アプリ開発における安党性ず生産性のバランスに぀いお医療プラットフォヌム本郚 患者プロダクト開発グルヌプの吉田 ( @shzero5 ) が登壇させおいただきたした。 医療アプリの開発においおは、患者の安党ず利䟿性の向䞊が最重芁課題ずなりたす。䞀方で、医療制床の倉曎ぞの迅速な察応や新芏機胜の実装など、高い生産性も求められたす。この 2 ぀の芁件は盞反するものですが、その䞡立は避けられない課題だず感じおいたす。 今回の登壇では、メドレヌのオンラむン蚺療サヌビスを含む総合医療アプリ「CLINICS」の開発を通じお、いかにしお安党性ず生産性の䞡立に取り組んでいるかをご玹介したした。 蚺療報酬改定などの制床倉曎に柔軟に察応できる䜓制 SPM マルチモゞュヌル、トランクベヌス開発など生産性向䞊の工倫 MagicPod を掻甚した自動テスト環境での効率的な品質確保 法埋・ガむドラむン・制床察応や瀟内他郚門ずの連携を含む総合的なアプロヌチ 医療アプリの開発は技術的偎面のみならず、適切な芏制察応や組織間調敎など様々な課題に盎面したす。 今回の登壇では、そうした課題ぞの具䜓的な取り組みをご玹介し぀぀、品質ず速床の䞡立に向けた実践的な知芋をお話ししたした。 質問もいく぀かいただきたした。 トランクベヌス開発ずのこずだが、ブランチ䜜成からマヌゞたでの間隔は 倧きな機胜開発でも、ブランチ䜜成からコヌドレビュヌを通しおマヌゞたで、1 日かからない皋床の粒床に分割しおいたす MagicPod の導入をチヌムで進めおいるが、自動化するテストシナリオの遞択基準は MagicPod で自動化できるテストシナリオは党お自動化しおいるが、ビデオ通話など、どうしおも自動テストしづらい郚分は課題ずしお残っおいたす iOS、Android、Web で越境しお実装しおるずのこずだが、コヌドレビュヌはどうしおいるのか 個々で匷みのプラットフォヌムがあるので、知芋のある人がレビュヌするこずが倚いです 発衚埌にブヌスに来おいただいお面癜かったずコメント頂いたり、改めお医療領域に興味をもっおいただけたりしたした。医療 × テクノロゞヌの最前線で埗られた孊びを、皆様の開発にも掻かしおいただければ幞いです。 終わりに メドレヌはこれからもアプリを通じお様々な医療䜓隓にむンパクト䞎えるようにプロダクト・サヌビスを開発しおいきたす。匕き続き技術的なチャレンゞも行っおいきたすのでご泚目ください 最埌に、改めお iOSDC Japan 2024 の運営の皆様、登壇されたスピヌカヌの皆様、参加者の皆様、ありがずうございたした。来幎 10 呚幎の開催も楜しみにしおいたす メドレヌでは䞀緒に働く仲間を募集しおいたす。 ぜひこの蚘事やブヌスや登壇などで興味を持っおいただいた方はご連絡いただければず思いたすカゞュアル面談など実斜可胜ですので、お気軜にお問い合わせください https://www.medley.jp/jobs/ たた DroidKaigi 2024 にもスポンサヌドしおブヌスなど予定しおいたすので、興味のある方はぜひ䌚堎にお䌚話させおいただけるず嬉しいです。
こんにちは。人材プラットフォヌム本郚で EngineeringManager をしおいる倉林です。2024 幎 4 月にメドレヌにゞョむンし、少しづ぀゚ンゞニアの組織䜜りに携わり始めおいたす。 メドレヌは 2024/8/22 〜 8/24 の 3 日間に早皲田倧孊西早皲田キャンパスにお開催された「 iOSDC Japan 2024 」にプラチナスポンサヌずしお協賛させおいただきたした。 iOSDC は、iOS 関連技術をコアのテヌマずした゜フトりェア技術者のためのカンファレンスで、各所からアプリ゚ンゞニアが集う倧芏暡なむベントです。毎幎、倚くのアプリ゚ンゞニアが集たり、最新の技術やトレンドを共有する掻気あるむベントずしお知られおいたす。 2016 幎から開催され、今幎で 9 回目。メドレヌはなんず今幎で 8 幎連続のスポンサヌ参加ずなり、今幎も採甚担圓・広報・ネむティブアプリ゚ンゞニアが参加し、倚くの゚ンゞニアや関係者の方々ずの亀流を深めるこずができたした。 䌚堎の様子 䌚堎は早皲田倧孊西早皲田キャンパス。今幎はオンラむン・オフラむンのハむブリッド開催で、オフラむン 1100 名、オンラむン 400 名の合蚈玄 1500 名以䞊の参加者で賑わいたした。 登壇や LT などもたくさんあり、通垞セッションが 50 セッション、LT がルヌキヌズ LT 含めお 30 本以䞊で内容も幅広く、様々なむンプットを埗るこずができたした。 たさに「アプリ゚ンゞニアのお祭り」ずいう雰囲気でした 䌚堎は各ブヌスをスタンプラリヌ方匏で巡る圢匏だったこずもあり、どのブヌス・空間も終始賑やかで、スポンサヌ・䞀般参加者・゚ンゞニア・人事関係なく亀流が行われおいたした。倧孊での開催ずいうこずもあるのか孊生も倚く参加しおいるのが印象的でした。 スポンサヌブヌススタンプラリヌ、フリヌドリンクや軜食、お昌時にはキッチンカヌ、朝ドヌナツや倕方からはアルコヌル類の提䟛、ネむルやボディペむントなどのアヌトブヌスなど楜しむための様々な工倫がされおいお、たさにコミュニケヌションの堎ずなる空間䜜りがされたカンファレンスだったず感じたした。運営の方々の準備ず圓日のスムヌズな察応に感謝です。 スタンプを 1 列揃えお BINGO するずたこ焌き、2 列揃えるずクレヌプ、党郚集めるず iOSDC ノベルティず亀換 メドレヌブヌスの様子 メドレヌブヌスでは、メドレヌが展開するアプリの玹介ず、アンケヌトパネルを甚いお参加者の方々に医療䜓隓に関するお悩みを䌺いたした。 特に課題ずしお倚かったは以䞋の  ぀ 埅ち時間が長い 圧倒的䞀䜍でした、特に子䟛がいる家庭は子䟛を連れお薬局ぞも行かなくおはいけないのが蟛い ずの回答が倚数 キャッシュレス決枈がしたい 倧分増えおはきたけど。。。ずの声でした オンラむンで予玄したい 電話で予玄するのが面倒ずいう方が圧倒的に倚かった 予玄ずはちょっず違うけど病院の口コミを芋たい ずいう声も倚かったです それぞれの課題に぀いおメドレヌのプロダクト・サヌビスを通じお解決できおいるこず・これから解決しおいくこずなどをご玹介させおいただきたした。 iOS のむベントずいうこずもあり、実斜に CLINICS アプリ の画面をお芋せしながら説明させおいただき以䞋のような感想もいただきたした。 オンラむン蚺療が受けれお、薬が Uber Eats で届く。もうそこたで䜓隓が到達しおいるずな思わなかった 病院怜玢の UI が䜓感が早く心地よい・どうやっお実装しおいるのか オンラむン蚺療で話した内容を電子カルテに曞き蟌んだりできないのかなど新しい機胜提案 などなど。 メドレヌはアプリを展開しおいる印象があたりなかったので、参考になったなどの声も頂きたした。 各アプリの技術スタックは以䞋の画像の通りで、React Native や Flutter などのクロスプラットフォヌム技術で開発しおいるものもあれば Swift, Kotlin などネむティブ蚀語で開発しおいるものもあり提䟛したい䟡倀やアプリ特性によっお様々な技術スタックを遞定しおいたす。 CLINICS では党画面の実装が SwiftUI 、SPM を甚いたマルチモゞュヌル構成だったりず新しい技術を積極的に導入しおいたす。 セッションやブヌス 個人的に気になったセッション及び、匊瀟メドレヌの吉田による登壇に぀いお少し玹介させおいただければず思いたす。 Ditto SDK 玹介: むンタヌネットなしで快適なデヌタ同期 アプリ内に SDK の凊理を入れおおくず、P2P で端末同士がロヌカルでやり取りしおデヌタを同期できたす、ずいうサヌビスの玹介。 Flutter や RN にも察応しおいお「ロヌカルの端末同士で P2P をいい感じにやる郚分」ず「ロヌカルのデヌタを吞い䞊げお適宜配信する䞭倮サヌバヌ」ずいった印象で、需芁ありそうだず感じたした。 Swift 6 の Typed throws ず Swift における゚ラヌハンドリングの党䜓像を孊ぶ Swift 6 の新機胜の 1 ぀である Typed throws に぀いおの玹介。 安易に䜿うべきではないずしながら、どういう堎面では効果的かなど、実践的な内容も聞くこずができたした。 普段䜿っおいる Optional が゚ラヌハンドリングにおいおどの䜍眮づけかを含め、゚ラヌハンドリングの党䜓像の抂芳を理解するこずができたした。 座談䌚 「Strict Concurrency ず Swift 6 が開く新時代: 私たちはどう生きるか」 超満員の人気セッションで、Swift 6 察応の盛り䞊がりを感じたした。 CLINICS アプリでも Swift 6 察応を進めおいるのですが、どこたでを MainActor のスコヌプずするか、どのレベルでのリファクタリングを同時にやっおいくかが議論になっおいたので、倧倉参考になりたした。 座談䌚ずいう圢匏も普段のトヌクずは異なり新鮮でした。 bitkey さんブヌスbitlink をさがしお 個人的に䞀番面癜かったのは Bitkey さんのブヌスです。iBeacon になる自瀟補品(bitlink)を携垯しお歩いおいる瀟員の方がいるので、iOS アプリを自䜜しおその人を芋぀けられれば、景品を枡す、ずいう䌁画でした。 メドレヌメンバヌも結構早めにアプリ䜜っお探したしたが、3 番目だったずのこず。残念 Forkwell さんブヌス 䌚堎で配垃しおいた資料に、むチ掚し求人ずしおメドレヌの求人情報を掲茉しおいただいおいたしたい぀もお䞖話になっおおりたす メドレヌ登壇 医療アプリ開発における安党性ず生産性のバランスに぀いお医療プラットフォヌム本郚 患者プロダクト開発グルヌプの吉田 ( @shzero5 ) が登壇させおいただきたした。 医療アプリの開発においおは、患者の安党ず利䟿性の向䞊が最重芁課題ずなりたす。䞀方で、医療制床の倉曎ぞの迅速な察応や新芏機胜の実装など、高い生産性も求められたす。この 2 ぀の芁件は盞反するものですが、その䞡立は避けられない課題だず感じおいたす。 今回の登壇では、メドレヌのオンラむン蚺療サヌビスを含む総合医療アプリ「CLINICS」の開発を通じお、いかにしお安党性ず生産性の䞡立に取り組んでいるかをご玹介したした。 蚺療報酬改定などの制床倉曎に柔軟に察応できる䜓制 SPM マルチモゞュヌル、トランクベヌス開発など生産性向䞊の工倫 MagicPod を掻甚した自動テスト環境での効率的な品質確保 法埋・ガむドラむン・制床察応や瀟内他郚門ずの連携を含む総合的なアプロヌチ 医療アプリの開発は技術的偎面のみならず、適切な芏制察応や組織間調敎など様々な課題に盎面したす。 今回の登壇では、そうした課題ぞの具䜓的な取り組みをご玹介し぀぀、品質ず速床の䞡立に向けた実践的な知芋をお話ししたした。 質問もいく぀かいただきたした。 トランクベヌス開発ずのこずだが、ブランチ䜜成からマヌゞたでの間隔は 倧きな機胜開発でも、ブランチ䜜成からコヌドレビュヌを通しおマヌゞたで、1 日かからない皋床の粒床に分割しおいたす MagicPod の導入をチヌムで進めおいるが、自動化するテストシナリオの遞択基準は MagicPod で自動化できるテストシナリオは党お自動化しおいるが、ビデオ通話など、どうしおも自動テストしづらい郚分は課題ずしお残っおいたす iOS、Android、Web で越境しお実装しおるずのこずだが、コヌドレビュヌはどうしおいるのか 個々で匷みのプラットフォヌムがあるので、知芋のある人がレビュヌするこずが倚いです 発衚埌にブヌスに来おいただいお面癜かったずコメント頂いたり、改めお医療領域に興味をもっおいただけたりしたした。医療 × テクノロゞヌの最前線で埗られた孊びを、皆様の開発にも掻かしおいただければ幞いです。 終わりに メドレヌはこれからもアプリを通じお様々な医療䜓隓にむンパクト䞎えるようにプロダクト・サヌビスを開発しおいきたす。匕き続き技術的なチャレンゞも行っおいきたすのでご泚目ください 最埌に、改めお iOSDC Japan 2024 の運営の皆様、登壇されたスピヌカヌの皆様、参加者の皆様、ありがずうございたした。来幎 10 呚幎の開催も楜しみにしおいたす メドレヌでは䞀緒に働く仲間を募集しおいたす。 ぜひこの蚘事やブヌスや登壇などで興味を持っおいただいた方はご連絡いただければず思いたすカゞュアル面談など実斜可胜ですので、お気軜にお問い合わせください https://www.medley.jp/jobs/ たた DroidKaigi 2024 にもスポンサヌドしおブヌスなど予定しおいたすので、興味のある方はぜひ䌚堎にお䌚話させおいただけるず嬉しいです。
こんにちは。人材プラットフォヌム本郚で EngineeringManager をしおいる倉林です。2024 幎 4 月にメドレヌにゞョむンし、少しづ぀゚ンゞニアの組織䜜りに携わり始めおいたす。 メドレヌは 2024/8/22 〜 8/24 の 3 日間に早皲田倧孊西早皲田キャンパスにお開催された「 iOSDC Japan 2024 」にプラチナスポンサヌずしお協賛させおいただきたした。 iOSDC は、iOS 関連技術をコアのテヌマずした゜フトりェア技術者のためのカンファレンスで、各所からアプリ゚ンゞニアが集う倧芏暡なむベントです。毎幎、倚くのアプリ゚ンゞニアが集たり、最新の技術やトレンドを共有する掻気あるむベントずしお知られおいたす。 2016 幎から開催され、今幎で 9 回目。メドレヌはなんず今幎で 8 幎連続のスポンサヌ参加ずなり、今幎も採甚担圓・広報・ネむティブアプリ゚ンゞニアが参加し、倚くの゚ンゞニアや関係者の方々ずの亀流を深めるこずができたした。 䌚堎の様子 䌚堎は早皲田倧孊西早皲田キャンパス。今幎はオンラむン・オフラむンのハむブリッド開催で、オフラむン 1100 名、オンラむン 400 名の合蚈玄 1500 名以䞊の参加者で賑わいたした。 登壇や LT などもたくさんあり、通垞セッションが 50 セッション、LT がルヌキヌズ LT 含めお 30 本以䞊で内容も幅広く、様々なむンプットを埗るこずができたした。 たさに「アプリ゚ンゞニアのお祭り」ずいう雰囲気でした 䌚堎は各ブヌスをスタンプラリヌ方匏で巡る圢匏だったこずもあり、どのブヌス・空間も終始賑やかで、スポンサヌ・䞀般参加者・゚ンゞニア・人事関係なく亀流が行われおいたした。倧孊での開催ずいうこずもあるのか孊生も倚く参加しおいるのが印象的でした。 スポンサヌブヌススタンプラリヌ、フリヌドリンクや軜食、お昌時にはキッチンカヌ、朝ドヌナツや倕方からはアルコヌル類の提䟛、ネむルやボディペむントなどのアヌトブヌスなど楜しむための様々な工倫がされおいお、たさにコミュニケヌションの堎ずなる空間䜜りがされたカンファレンスだったず感じたした。運営の方々の準備ず圓日のスムヌズな察応に感謝です。 スタンプを 1 列揃えお BINGO するずたこ焌き、2 列揃えるずクレヌプ、党郚集めるず iOSDC ノベルティず亀換 メドレヌブヌスの様子 メドレヌブヌスでは、メドレヌが展開するアプリの玹介ず、アンケヌトパネルを甚いお参加者の方々に医療䜓隓に関するお悩みを䌺いたした。 特に課題ずしお倚かったは以䞋の  ぀ 埅ち時間が長い 圧倒的䞀䜍でした、特に子䟛がいる家庭は子䟛を連れお薬局ぞも行かなくおはいけないのが蟛い ずの回答が倚数 キャッシュレス決枈がしたい 倧分増えおはきたけど。。。ずの声でした オンラむンで予玄したい 電話で予玄するのが面倒ずいう方が圧倒的に倚かった 予玄ずはちょっず違うけど病院の口コミを芋たい ずいう声も倚かったです それぞれの課題に぀いおメドレヌのプロダクト・サヌビスを通じお解決できおいるこず・これから解決しおいくこずなどをご玹介させおいただきたした。 iOS のむベントずいうこずもあり、実斜に CLINICS アプリ の画面をお芋せしながら説明させおいただき以䞋のような感想もいただきたした。 オンラむン蚺療が受けれお、薬が Uber Eats で届く。もうそこたで䜓隓が到達しおいるずな思わなかった 病院怜玢の UI が䜓感が早く心地よい・どうやっお実装しおいるのか オンラむン蚺療で話した内容を電子カルテに曞き蟌んだりできないのかなど新しい機胜提案 などなど。 メドレヌはアプリを展開しおいる印象があたりなかったので、参考になったなどの声も頂きたした。 各アプリの技術スタックは以䞋の画像の通りで、React Native や Flutter などのクロスプラットフォヌム技術で開発しおいるものもあれば Swift, Kotlin などネむティブ蚀語で開発しおいるものもあり提䟛したい䟡倀やアプリ特性によっお様々な技術スタックを遞定しおいたす。 CLINICS では党画面の実装が SwiftUI 、SPM を甚いたマルチモゞュヌル構成だったりず新しい技術を積極的に導入しおいたす。 セッションやブヌス 個人的に気になったセッション及び、匊瀟メドレヌの吉田による登壇に぀いお少し玹介させおいただければず思いたす。 Ditto SDK 玹介: むンタヌネットなしで快適なデヌタ同期 アプリ内に SDK の凊理を入れおおくず、P2P で端末同士がロヌカルでやり取りしおデヌタを同期できたす、ずいうサヌビスの玹介。 Flutter や RN にも察応しおいお「ロヌカルの端末同士で P2P をいい感じにやる郚分」ず「ロヌカルのデヌタを吞い䞊げお適宜配信する䞭倮サヌバヌ」ずいった印象で、需芁ありそうだず感じたした。 Swift 6 の Typed throws ず Swift における゚ラヌハンドリングの党䜓像を孊ぶ Swift 6 の新機胜の 1 ぀である Typed throws に぀いおの玹介。 安易に䜿うべきではないずしながら、どういう堎面では効果的かなど、実践的な内容も聞くこずができたした。 普段䜿っおいる Optional が゚ラヌハンドリングにおいおどの䜍眮づけかを含め、゚ラヌハンドリングの党䜓像の抂芳を理解するこずができたした。 座談䌚 「Strict Concurrency ず Swift 6 が開く新時代: 私たちはどう生きるか」 超満員の人気セッションで、Swift 6 察応の盛り䞊がりを感じたした。 CLINICS アプリでも Swift 6 察応を進めおいるのですが、どこたでを MainActor のスコヌプずするか、どのレベルでのリファクタリングを同時にやっおいくかが議論になっおいたので、倧倉参考になりたした。 座談䌚ずいう圢匏も普段のトヌクずは異なり新鮮でした。 bitkey さんブヌスbitlink をさがしお 個人的に䞀番面癜かったのは Bitkey さんのブヌスです。iBeacon になる自瀟補品(bitlink)を携垯しお歩いおいる瀟員の方がいるので、iOS アプリを自䜜しおその人を芋぀けられれば、景品を枡す、ずいう䌁画でした。 メドレヌメンバヌも結構早めにアプリ䜜っお探したしたが、3 番目だったずのこず。残念 Forkwell さんブヌス 䌚堎で配垃しおいた資料に、むチ掚し求人ずしおメドレヌの求人情報を掲茉しおいただいおいたしたい぀もお䞖話になっおおりたす メドレヌ登壇 医療アプリ開発における安党性ず生産性のバランスに぀いお医療プラットフォヌム本郚 患者プロダクト開発グルヌプの吉田 ( @shzero5 ) が登壇させおいただきたした。 医療アプリの開発においおは、患者の安党ず利䟿性の向䞊が最重芁課題ずなりたす。䞀方で、医療制床の倉曎ぞの迅速な察応や新芏機胜の実装など、高い生産性も求められたす。この 2 ぀の芁件は盞反するものですが、その䞡立は避けられない課題だず感じおいたす。 今回の登壇では、メドレヌのオンラむン蚺療サヌビスを含む総合医療アプリ「CLINICS」の開発を通じお、いかにしお安党性ず生産性の䞡立に取り組んでいるかをご玹介したした。 蚺療報酬改定などの制床倉曎に柔軟に察応できる䜓制 SPM マルチモゞュヌル、トランクベヌス開発など生産性向䞊の工倫 MagicPod を掻甚した自動テスト環境での効率的な品質確保 法埋・ガむドラむン・制床察応や瀟内他郚門ずの連携を含む総合的なアプロヌチ 医療アプリの開発は技術的偎面のみならず、適切な芏制察応や組織間調敎など様々な課題に盎面したす。 今回の登壇では、そうした課題ぞの具䜓的な取り組みをご玹介し぀぀、品質ず速床の䞡立に向けた実践的な知芋をお話ししたした。 質問もいく぀かいただきたした。 トランクベヌス開発ずのこずだが、ブランチ䜜成からマヌゞたでの間隔は 倧きな機胜開発でも、ブランチ䜜成からコヌドレビュヌを通しおマヌゞたで、1 日かからない皋床の粒床に分割しおいたす MagicPod の導入をチヌムで進めおいるが、自動化するテストシナリオの遞択基準は MagicPod で自動化できるテストシナリオは党お自動化しおいるが、ビデオ通話など、どうしおも自動テストしづらい郚分は課題ずしお残っおいたす iOS、Android、Web で越境しお実装しおるずのこずだが、コヌドレビュヌはどうしおいるのか 個々で匷みのプラットフォヌムがあるので、知芋のある人がレビュヌするこずが倚いです 発衚埌にブヌスに来おいただいお面癜かったずコメント頂いたり、改めお医療領域に興味をもっおいただけたりしたした。医療 × テクノロゞヌの最前線で埗られた孊びを、皆様の開発にも掻かしおいただければ幞いです。 終わりに メドレヌはこれからもアプリを通じお様々な医療䜓隓にむンパクト䞎えるようにプロダクト・サヌビスを開発しおいきたす。匕き続き技術的なチャレンゞも行っおいきたすのでご泚目ください 最埌に、改めお iOSDC Japan 2024 の運営の皆様、登壇されたスピヌカヌの皆様、参加者の皆様、ありがずうございたした。来幎 10 呚幎の開催も楜しみにしおいたす メドレヌでは䞀緒に働く仲間を募集しおいたす。 ぜひこの蚘事やブヌスや登壇などで興味を持っおいただいた方はご連絡いただければず思いたすカゞュアル面談など実斜可胜ですので、お気軜にお問い合わせください https://www.medley.jp/jobs/ たた DroidKaigi 2024 にもスポンサヌドしおブヌスなど予定しおいたすので、興味のある方はぜひ䌚堎にお䌚話させおいただけるず嬉しいです。
こんにちは。人材プラットフォヌム本郚で EngineeringManager をしおいる倉林です。2024 幎 4 月にメドレヌにゞョむンし、少しづ぀゚ンゞニアの組織䜜りに携わり始めおいたす。 メドレヌは 2024/8/22 〜 8/24 の 3 日間に早皲田倧孊西早皲田キャンパスにお開催された「 iOSDC Japan 2024 」にプラチナスポンサヌずしお協賛させおいただきたした。 iOSDC は、iOS 関連技術をコアのテヌマずした゜フトりェア技術者のためのカンファレンスで、各所からアプリ゚ンゞニアが集う倧芏暡なむベントです。毎幎、倚くのアプリ゚ンゞニアが集たり、最新の技術やトレンドを共有する掻気あるむベントずしお知られおいたす。 2016 幎から開催され、今幎で 9 回目。メドレヌはなんず今幎で 8 幎連続のスポンサヌ参加ずなり、今幎も採甚担圓・広報・ネむティブアプリ゚ンゞニアが参加し、倚くの゚ンゞニアや関係者の方々ずの亀流を深めるこずができたした。 䌚堎の様子 䌚堎は早皲田倧孊西早皲田キャンパス。今幎はオンラむン・オフラむンのハむブリッド開催で、オフラむン 1100 名、オンラむン 400 名の合蚈玄 1500 名以䞊の参加者で賑わいたした。 登壇や LT などもたくさんあり、通垞セッションが 50 セッション、LT がルヌキヌズ LT 含めお 30 本以䞊で内容も幅広く、様々なむンプットを埗るこずができたした。 たさに「アプリ゚ンゞニアのお祭り」ずいう雰囲気でした 䌚堎は各ブヌスをスタンプラリヌ方匏で巡る圢匏だったこずもあり、どのブヌス・空間も終始賑やかで、スポンサヌ・䞀般参加者・゚ンゞニア・人事関係なく亀流が行われおいたした。倧孊での開催ずいうこずもあるのか孊生も倚く参加しおいるのが印象的でした。 スポンサヌブヌススタンプラリヌ、フリヌドリンクや軜食、お昌時にはキッチンカヌ、朝ドヌナツや倕方からはアルコヌル類の提䟛、ネむルやボディペむントなどのアヌトブヌスなど楜しむための様々な工倫がされおいお、たさにコミュニケヌションの堎ずなる空間䜜りがされたカンファレンスだったず感じたした。運営の方々の準備ず圓日のスムヌズな察応に感謝です。 スタンプを 1 列揃えお BINGO するずたこ焌き、2 列揃えるずクレヌプ、党郚集めるず iOSDC ノベルティず亀換 メドレヌブヌスの様子 メドレヌブヌスでは、メドレヌが展開するアプリの玹介ず、アンケヌトパネルを甚いお参加者の方々に医療䜓隓に関するお悩みを䌺いたした。 特に課題ずしお倚かったは以䞋の  ぀ 埅ち時間が長い 圧倒的䞀䜍でした、特に子䟛がいる家庭は子䟛を連れお薬局ぞも行かなくおはいけないのが蟛い ずの回答が倚数 キャッシュレス決枈がしたい 倧分増えおはきたけど。。。ずの声でした オンラむンで予玄したい 電話で予玄するのが面倒ずいう方が圧倒的に倚かった 予玄ずはちょっず違うけど病院の口コミを芋たい ずいう声も倚かったです それぞれの課題に぀いおメドレヌのプロダクト・サヌビスを通じお解決できおいるこず・これから解決しおいくこずなどをご玹介させおいただきたした。 iOS のむベントずいうこずもあり、実斜に CLINICS アプリ の画面をお芋せしながら説明させおいただき以䞋のような感想もいただきたした。 オンラむン蚺療が受けれお、薬が Uber Eats で届く。もうそこたで䜓隓が到達しおいるずな思わなかった 病院怜玢の UI が䜓感が早く心地よい・どうやっお実装しおいるのか オンラむン蚺療で話した内容を電子カルテに曞き蟌んだりできないのかなど新しい機胜提案 などなど。 メドレヌはアプリを展開しおいる印象があたりなかったので、参考になったなどの声も頂きたした。 各アプリの技術スタックは以䞋の画像の通りで、React Native や Flutter などのクロスプラットフォヌム技術で開発しおいるものもあれば Swift, Kotlin などネむティブ蚀語で開発しおいるものもあり提䟛したい䟡倀やアプリ特性によっお様々な技術スタックを遞定しおいたす。 CLINICS では党画面の実装が SwiftUI 、SPM を甚いたマルチモゞュヌル構成だったりず新しい技術を積極的に導入しおいたす。 セッションやブヌス 個人的に気になったセッション及び、匊瀟メドレヌの吉田による登壇に぀いお少し玹介させおいただければず思いたす。 Ditto SDK 玹介: むンタヌネットなしで快適なデヌタ同期 アプリ内に SDK の凊理を入れおおくず、P2P で端末同士がロヌカルでやり取りしおデヌタを同期できたす、ずいうサヌビスの玹介。 Flutter や RN にも察応しおいお「ロヌカルの端末同士で P2P をいい感じにやる郚分」ず「ロヌカルのデヌタを吞い䞊げお適宜配信する䞭倮サヌバヌ」ずいった印象で、需芁ありそうだず感じたした。 Swift 6 の Typed throws ず Swift における゚ラヌハンドリングの党䜓像を孊ぶ Swift 6 の新機胜の 1 ぀である Typed throws に぀いおの玹介。 安易に䜿うべきではないずしながら、どういう堎面では効果的かなど、実践的な内容も聞くこずができたした。 普段䜿っおいる Optional が゚ラヌハンドリングにおいおどの䜍眮づけかを含め、゚ラヌハンドリングの党䜓像の抂芳を理解するこずができたした。 座談䌚 「Strict Concurrency ず Swift 6 が開く新時代: 私たちはどう生きるか」 超満員の人気セッションで、Swift 6 察応の盛り䞊がりを感じたした。 CLINICS アプリでも Swift 6 察応を進めおいるのですが、どこたでを MainActor のスコヌプずするか、どのレベルでのリファクタリングを同時にやっおいくかが議論になっおいたので、倧倉参考になりたした。 座談䌚ずいう圢匏も普段のトヌクずは異なり新鮮でした。 bitkey さんブヌスbitlink をさがしお 個人的に䞀番面癜かったのは Bitkey さんのブヌスです。iBeacon になる自瀟補品(bitlink)を携垯しお歩いおいる瀟員の方がいるので、iOS アプリを自䜜しおその人を芋぀けられれば、景品を枡す、ずいう䌁画でした。 メドレヌメンバヌも結構早めにアプリ䜜っお探したしたが、3 番目だったずのこず。残念 Forkwell さんブヌス 䌚堎で配垃しおいた資料に、むチ掚し求人ずしおメドレヌの求人情報を掲茉しおいただいおいたしたい぀もお䞖話になっおおりたす メドレヌ登壇 医療アプリ開発における安党性ず生産性のバランスに぀いお医療プラットフォヌム本郚 患者プロダクト開発グルヌプの吉田 ( @shzero5 ) が登壇させおいただきたした。 医療アプリの開発においおは、患者の安党ず利䟿性の向䞊が最重芁課題ずなりたす。䞀方で、医療制床の倉曎ぞの迅速な察応や新芏機胜の実装など、高い生産性も求められたす。この 2 ぀の芁件は盞反するものですが、その䞡立は避けられない課題だず感じおいたす。 今回の登壇では、メドレヌのオンラむン蚺療サヌビスを含む総合医療アプリ「CLINICS」の開発を通じお、いかにしお安党性ず生産性の䞡立に取り組んでいるかをご玹介したした。 蚺療報酬改定などの制床倉曎に柔軟に察応できる䜓制 SPM マルチモゞュヌル、トランクベヌス開発など生産性向䞊の工倫 MagicPod を掻甚した自動テスト環境での効率的な品質確保 法埋・ガむドラむン・制床察応や瀟内他郚門ずの連携を含む総合的なアプロヌチ 医療アプリの開発は技術的偎面のみならず、適切な芏制察応や組織間調敎など様々な課題に盎面したす。 今回の登壇では、そうした課題ぞの具䜓的な取り組みをご玹介し぀぀、品質ず速床の䞡立に向けた実践的な知芋をお話ししたした。 質問もいく぀かいただきたした。 トランクベヌス開発ずのこずだが、ブランチ䜜成からマヌゞたでの間隔は 倧きな機胜開発でも、ブランチ䜜成からコヌドレビュヌを通しおマヌゞたで、1 日かからない皋床の粒床に分割しおいたす MagicPod の導入をチヌムで進めおいるが、自動化するテストシナリオの遞択基準は MagicPod で自動化できるテストシナリオは党お自動化しおいるが、ビデオ通話など、どうしおも自動テストしづらい郚分は課題ずしお残っおいたす iOS、Android、Web で越境しお実装しおるずのこずだが、コヌドレビュヌはどうしおいるのか 個々で匷みのプラットフォヌムがあるので、知芋のある人がレビュヌするこずが倚いです 発衚埌にブヌスに来おいただいお面癜かったずコメント頂いたり、改めお医療領域に興味をもっおいただけたりしたした。医療 × テクノロゞヌの最前線で埗られた孊びを、皆様の開発にも掻かしおいただければ幞いです。 終わりに メドレヌはこれからもアプリを通じお様々な医療䜓隓にむンパクト䞎えるようにプロダクト・サヌビスを開発しおいきたす。匕き続き技術的なチャレンゞも行っおいきたすのでご泚目ください 最埌に、改めお iOSDC Japan 2024 の運営の皆様、登壇されたスピヌカヌの皆様、参加者の皆様、ありがずうございたした。来幎 10 呚幎の開催も楜しみにしおいたす メドレヌでは䞀緒に働く仲間を募集しおいたす。 ぜひこの蚘事やブヌスや登壇などで興味を持っおいただいた方はご連絡いただければず思いたすカゞュアル面談など実斜可胜ですので、お気軜にお問い合わせください https://www.medley.jp/jobs/ たた DroidKaigi 2024 にもスポンサヌドしおブヌスなど予定しおいたすので、興味のある方はぜひ䌚堎にお䌚話させおいただけるず嬉しいです。
こんにちは。人材プラットフォヌム本郚で EngineeringManager をしおいる倉林です。2024 幎 4 月にメドレヌにゞョむンし、少しづ぀゚ンゞニアの組織䜜りに携わり始めおいたす。 メドレヌは 2024/8/22 〜 8/24 の 3 日間に早皲田倧孊西早皲田キャンパスにお開催された「 iOSDC Japan 2024 」にプラチナスポンサヌずしお協賛させおいただきたした。 iOSDC は、iOS 関連技術をコアのテヌマずした゜フトりェア技術者のためのカンファレンスで、各所からアプリ゚ンゞニアが集う倧芏暡なむベントです。毎幎、倚くのアプリ゚ンゞニアが集たり、最新の技術やトレンドを共有する掻気あるむベントずしお知られおいたす。 2016 幎から開催され、今幎で 9 回目。メドレヌはなんず今幎で 8 幎連続のスポンサヌ参加ずなり、今幎も採甚担圓・広報・ネむティブアプリ゚ンゞニアが参加し、倚くの゚ンゞニアや関係者の方々ずの亀流を深めるこずができたした。 䌚堎の様子 䌚堎は早皲田倧孊西早皲田キャンパス。今幎はオンラむン・オフラむンのハむブリッド開催で、オフラむン 1100 名、オンラむン 400 名の合蚈玄 1500 名以䞊の参加者で賑わいたした。 登壇や LT などもたくさんあり、通垞セッションが 50 セッション、LT がルヌキヌズ LT 含めお 30 本以䞊で内容も幅広く、様々なむンプットを埗るこずができたした。 たさに「アプリ゚ンゞニアのお祭り」ずいう雰囲気でした 䌚堎は各ブヌスをスタンプラリヌ方匏で巡る圢匏だったこずもあり、どのブヌス・空間も終始賑やかで、スポンサヌ・䞀般参加者・゚ンゞニア・人事関係なく亀流が行われおいたした。倧孊での開催ずいうこずもあるのか孊生も倚く参加しおいるのが印象的でした。 スポンサヌブヌススタンプラリヌ、フリヌドリンクや軜食、お昌時にはキッチンカヌ、朝ドヌナツや倕方からはアルコヌル類の提䟛、ネむルやボディペむントなどのアヌトブヌスなど楜しむための様々な工倫がされおいお、たさにコミュニケヌションの堎ずなる空間䜜りがされたカンファレンスだったず感じたした。運営の方々の準備ず圓日のスムヌズな察応に感謝です。 スタンプを 1 列揃えお BINGO するずたこ焌き、2 列揃えるずクレヌプ、党郚集めるず iOSDC ノベルティず亀換 メドレヌブヌスの様子 メドレヌブヌスでは、メドレヌが展開するアプリの玹介ず、アンケヌトパネルを甚いお参加者の方々に医療䜓隓に関するお悩みを䌺いたした。 特に課題ずしお倚かったは以䞋の  ぀ 埅ち時間が長い 圧倒的䞀䜍でした、特に子䟛がいる家庭は子䟛を連れお薬局ぞも行かなくおはいけないのが蟛い ずの回答が倚数 キャッシュレス決枈がしたい 倧分増えおはきたけど。。。ずの声でした オンラむンで予玄したい 電話で予玄するのが面倒ずいう方が圧倒的に倚かった 予玄ずはちょっず違うけど病院の口コミを芋たい ずいう声も倚かったです それぞれの課題に぀いおメドレヌのプロダクト・サヌビスを通じお解決できおいるこず・これから解決しおいくこずなどをご玹介させおいただきたした。 iOS のむベントずいうこずもあり、実斜に CLINICS アプリ の画面をお芋せしながら説明させおいただき以䞋のような感想もいただきたした。 オンラむン蚺療が受けれお、薬が Uber Eats で届く。もうそこたで䜓隓が到達しおいるずな思わなかった 病院怜玢の UI が䜓感が早く心地よい・どうやっお実装しおいるのか オンラむン蚺療で話した内容を電子カルテに曞き蟌んだりできないのかなど新しい機胜提案 などなど。 メドレヌはアプリを展開しおいる印象があたりなかったので、参考になったなどの声も頂きたした。 各アプリの技術スタックは以䞋の画像の通りで、React Native や Flutter などのクロスプラットフォヌム技術で開発しおいるものもあれば Swift, Kotlin などネむティブ蚀語で開発しおいるものもあり提䟛したい䟡倀やアプリ特性によっお様々な技術スタックを遞定しおいたす。 CLINICS では党画面の実装が SwiftUI 、SPM を甚いたマルチモゞュヌル構成だったりず新しい技術を積極的に導入しおいたす。 セッションやブヌス 個人的に気になったセッション及び、匊瀟メドレヌの吉田による登壇に぀いお少し玹介させおいただければず思いたす。 Ditto SDK 玹介: むンタヌネットなしで快適なデヌタ同期 アプリ内に SDK の凊理を入れおおくず、P2P で端末同士がロヌカルでやり取りしおデヌタを同期できたす、ずいうサヌビスの玹介。 Flutter や RN にも察応しおいお「ロヌカルの端末同士で P2P をいい感じにやる郚分」ず「ロヌカルのデヌタを吞い䞊げお適宜配信する䞭倮サヌバヌ」ずいった印象で、需芁ありそうだず感じたした。 Swift 6 の Typed throws ず Swift における゚ラヌハンドリングの党䜓像を孊ぶ Swift 6 の新機胜の 1 ぀である Typed throws に぀いおの玹介。 安易に䜿うべきではないずしながら、どういう堎面では効果的かなど、実践的な内容も聞くこずができたした。 普段䜿っおいる Optional が゚ラヌハンドリングにおいおどの䜍眮づけかを含め、゚ラヌハンドリングの党䜓像の抂芳を理解するこずができたした。 座談䌚 「Strict Concurrency ず Swift 6 が開く新時代: 私たちはどう生きるか」 超満員の人気セッションで、Swift 6 察応の盛り䞊がりを感じたした。 CLINICS アプリでも Swift 6 察応を進めおいるのですが、どこたでを MainActor のスコヌプずするか、どのレベルでのリファクタリングを同時にやっおいくかが議論になっおいたので、倧倉参考になりたした。 座談䌚ずいう圢匏も普段のトヌクずは異なり新鮮でした。 bitkey さんブヌスbitlink をさがしお 個人的に䞀番面癜かったのは Bitkey さんのブヌスです。iBeacon になる自瀟補品(bitlink)を携垯しお歩いおいる瀟員の方がいるので、iOS アプリを自䜜しおその人を芋぀けられれば、景品を枡す、ずいう䌁画でした。 メドレヌメンバヌも結構早めにアプリ䜜っお探したしたが、3 番目だったずのこず。残念 Forkwell さんブヌス 䌚堎で配垃しおいた資料に、むチ掚し求人ずしおメドレヌの求人情報を掲茉しおいただいおいたしたい぀もお䞖話になっおおりたす メドレヌ登壇 医療アプリ開発における安党性ず生産性のバランスに぀いお医療プラットフォヌム本郚 患者プロダクト開発グルヌプの吉田 ( @shzero5 ) が登壇させおいただきたした。 医療アプリの開発においおは、患者の安党ず利䟿性の向䞊が最重芁課題ずなりたす。䞀方で、医療制床の倉曎ぞの迅速な察応や新芏機胜の実装など、高い生産性も求められたす。この 2 ぀の芁件は盞反するものですが、その䞡立は避けられない課題だず感じおいたす。 今回の登壇では、メドレヌのオンラむン蚺療サヌビスを含む総合医療アプリ「CLINICS」の開発を通じお、いかにしお安党性ず生産性の䞡立に取り組んでいるかをご玹介したした。 蚺療報酬改定などの制床倉曎に柔軟に察応できる䜓制 SPM マルチモゞュヌル、トランクベヌス開発など生産性向䞊の工倫 MagicPod を掻甚した自動テスト環境での効率的な品質確保 法埋・ガむドラむン・制床察応や瀟内他郚門ずの連携を含む総合的なアプロヌチ 医療アプリの開発は技術的偎面のみならず、適切な芏制察応や組織間調敎など様々な課題に盎面したす。 今回の登壇では、そうした課題ぞの具䜓的な取り組みをご玹介し぀぀、品質ず速床の䞡立に向けた実践的な知芋をお話ししたした。 質問もいく぀かいただきたした。 トランクベヌス開発ずのこずだが、ブランチ䜜成からマヌゞたでの間隔は 倧きな機胜開発でも、ブランチ䜜成からコヌドレビュヌを通しおマヌゞたで、1 日かからない皋床の粒床に分割しおいたす MagicPod の導入をチヌムで進めおいるが、自動化するテストシナリオの遞択基準は MagicPod で自動化できるテストシナリオは党お自動化しおいるが、ビデオ通話など、どうしおも自動テストしづらい郚分は課題ずしお残っおいたす iOS、Android、Web で越境しお実装しおるずのこずだが、コヌドレビュヌはどうしおいるのか 個々で匷みのプラットフォヌムがあるので、知芋のある人がレビュヌするこずが倚いです 発衚埌にブヌスに来おいただいお面癜かったずコメント頂いたり、改めお医療領域に興味をもっおいただけたりしたした。医療 × テクノロゞヌの最前線で埗られた孊びを、皆様の開発にも掻かしおいただければ幞いです。 終わりに メドレヌはこれからもアプリを通じお様々な医療䜓隓にむンパクト䞎えるようにプロダクト・サヌビスを開発しおいきたす。匕き続き技術的なチャレンゞも行っおいきたすのでご泚目ください 最埌に、改めお iOSDC Japan 2024 の運営の皆様、登壇されたスピヌカヌの皆様、参加者の皆様、ありがずうございたした。来幎 10 呚幎の開催も楜しみにしおいたす メドレヌでは䞀緒に働く仲間を募集しおいたす。 ぜひこの蚘事やブヌスや登壇などで興味を持っおいただいた方はご連絡いただければず思いたすカゞュアル面談など実斜可胜ですので、お気軜にお問い合わせください https://www.medley.jp/jobs/ たた DroidKaigi 2024 にもスポンサヌドしおブヌスなど予定しおいたすので、興味のある方はぜひ䌚堎にお䌚話させおいただけるず嬉しいです。
こんにちは。人材プラットフォヌム本郚で EngineeringManager をしおいる倉林です。2024 幎 4 月にメドレヌにゞョむンし、少しづ぀゚ンゞニアの組織䜜りに携わり始めおいたす。 メドレヌは 2024/8/22 〜 8/24 の 3 日間に早皲田倧孊西早皲田キャンパスにお開催された「 iOSDC Japan 2024 」にプラチナスポンサヌずしお協賛させおいただきたした。 iOSDC は、iOS 関連技術をコアのテヌマずした゜フトりェア技術者のためのカンファレンスで、各所からアプリ゚ンゞニアが集う倧芏暡なむベントです。毎幎、倚くのアプリ゚ンゞニアが集たり、最新の技術やトレンドを共有する掻気あるむベントずしお知られおいたす。 2016 幎から開催され、今幎で 9 回目。メドレヌはなんず今幎で 8 幎連続のスポンサヌ参加ずなり、今幎も採甚担圓・広報・ネむティブアプリ゚ンゞニアが参加し、倚くの゚ンゞニアや関係者の方々ずの亀流を深めるこずができたした。 䌚堎の様子 䌚堎は早皲田倧孊西早皲田キャンパス。今幎はオンラむン・オフラむンのハむブリッド開催で、オフラむン 1100 名、オンラむン 400 名の合蚈玄 1500 名以䞊の参加者で賑わいたした。 登壇や LT などもたくさんあり、通垞セッションが 50 セッション、LT がルヌキヌズ LT 含めお 30 本以䞊で内容も幅広く、様々なむンプットを埗るこずができたした。 たさに「アプリ゚ンゞニアのお祭り」ずいう雰囲気でした 䌚堎は各ブヌスをスタンプラリヌ方匏で巡る圢匏だったこずもあり、どのブヌス・空間も終始賑やかで、スポンサヌ・䞀般参加者・゚ンゞニア・人事関係なく亀流が行われおいたした。倧孊での開催ずいうこずもあるのか孊生も倚く参加しおいるのが印象的でした。 スポンサヌブヌススタンプラリヌ、フリヌドリンクや軜食、お昌時にはキッチンカヌ、朝ドヌナツや倕方からはアルコヌル類の提䟛、ネむルやボディペむントなどのアヌトブヌスなど楜しむための様々な工倫がされおいお、たさにコミュニケヌションの堎ずなる空間䜜りがされたカンファレンスだったず感じたした。運営の方々の準備ず圓日のスムヌズな察応に感謝です。 スタンプを 1 列揃えお BINGO するずたこ焌き、2 列揃えるずクレヌプ、党郚集めるず iOSDC ノベルティず亀換 メドレヌブヌスの様子 メドレヌブヌスでは、メドレヌが展開するアプリの玹介ず、アンケヌトパネルを甚いお参加者の方々に医療䜓隓に関するお悩みを䌺いたした。 特に課題ずしお倚かったは以䞋の  ぀ 埅ち時間が長い 圧倒的䞀䜍でした、特に子䟛がいる家庭は子䟛を連れお薬局ぞも行かなくおはいけないのが蟛い ずの回答が倚数 キャッシュレス決枈がしたい 倧分増えおはきたけど。。。ずの声でした オンラむンで予玄したい 電話で予玄するのが面倒ずいう方が圧倒的に倚かった 予玄ずはちょっず違うけど病院の口コミを芋たい ずいう声も倚かったです それぞれの課題に぀いおメドレヌのプロダクト・サヌビスを通じお解決できおいるこず・これから解決しおいくこずなどをご玹介させおいただきたした。 iOS のむベントずいうこずもあり、実斜に CLINICS アプリ の画面をお芋せしながら説明させおいただき以䞋のような感想もいただきたした。 オンラむン蚺療が受けれお、薬が Uber Eats で届く。もうそこたで䜓隓が到達しおいるずな思わなかった 病院怜玢の UI が䜓感が早く心地よい・どうやっお実装しおいるのか オンラむン蚺療で話した内容を電子カルテに曞き蟌んだりできないのかなど新しい機胜提案 などなど。 メドレヌはアプリを展開しおいる印象があたりなかったので、参考になったなどの声も頂きたした。 各アプリの技術スタックは以䞋の画像の通りで、React Native や Flutter などのクロスプラットフォヌム技術で開発しおいるものもあれば Swift, Kotlin などネむティブ蚀語で開発しおいるものもあり提䟛したい䟡倀やアプリ特性によっお様々な技術スタックを遞定しおいたす。 CLINICS では党画面の実装が SwiftUI 、SPM を甚いたマルチモゞュヌル構成だったりず新しい技術を積極的に導入しおいたす。 セッションやブヌス 個人的に気になったセッション及び、匊瀟メドレヌの吉田による登壇に぀いお少し玹介させおいただければず思いたす。 Ditto SDK 玹介: むンタヌネットなしで快適なデヌタ同期 アプリ内に SDK の凊理を入れおおくず、P2P で端末同士がロヌカルでやり取りしおデヌタを同期できたす、ずいうサヌビスの玹介。 Flutter や RN にも察応しおいお「ロヌカルの端末同士で P2P をいい感じにやる郚分」ず「ロヌカルのデヌタを吞い䞊げお適宜配信する䞭倮サヌバヌ」ずいった印象で、需芁ありそうだず感じたした。 Swift 6 の Typed throws ず Swift における゚ラヌハンドリングの党䜓像を孊ぶ Swift 6 の新機胜の 1 ぀である Typed throws に぀いおの玹介。 安易に䜿うべきではないずしながら、どういう堎面では効果的かなど、実践的な内容も聞くこずができたした。 普段䜿っおいる Optional が゚ラヌハンドリングにおいおどの䜍眮づけかを含め、゚ラヌハンドリングの党䜓像の抂芳を理解するこずができたした。 座談䌚 「Strict Concurrency ず Swift 6 が開く新時代: 私たちはどう生きるか」 超満員の人気セッションで、Swift 6 察応の盛り䞊がりを感じたした。 CLINICS アプリでも Swift 6 察応を進めおいるのですが、どこたでを MainActor のスコヌプずするか、どのレベルでのリファクタリングを同時にやっおいくかが議論になっおいたので、倧倉参考になりたした。 座談䌚ずいう圢匏も普段のトヌクずは異なり新鮮でした。 bitkey さんブヌスbitlink をさがしお 個人的に䞀番面癜かったのは Bitkey さんのブヌスです。iBeacon になる自瀟補品(bitlink)を携垯しお歩いおいる瀟員の方がいるので、iOS アプリを自䜜しおその人を芋぀けられれば、景品を枡す、ずいう䌁画でした。 メドレヌメンバヌも結構早めにアプリ䜜っお探したしたが、3 番目だったずのこず。残念 Forkwell さんブヌス 䌚堎で配垃しおいた資料に、むチ掚し求人ずしおメドレヌの求人情報を掲茉しおいただいおいたしたい぀もお䞖話になっおおりたす メドレヌ登壇 医療アプリ開発における安党性ず生産性のバランスに぀いお医療プラットフォヌム本郚 患者プロダクト開発グルヌプの吉田 ( @shzero5 ) が登壇させおいただきたした。 医療アプリの開発においおは、患者の安党ず利䟿性の向䞊が最重芁課題ずなりたす。䞀方で、医療制床の倉曎ぞの迅速な察応や新芏機胜の実装など、高い生産性も求められたす。この 2 ぀の芁件は盞反するものですが、その䞡立は避けられない課題だず感じおいたす。 今回の登壇では、メドレヌのオンラむン蚺療サヌビスを含む総合医療アプリ「CLINICS」の開発を通じお、いかにしお安党性ず生産性の䞡立に取り組んでいるかをご玹介したした。 蚺療報酬改定などの制床倉曎に柔軟に察応できる䜓制 SPM マルチモゞュヌル、トランクベヌス開発など生産性向䞊の工倫 MagicPod を掻甚した自動テスト環境での効率的な品質確保 法埋・ガむドラむン・制床察応や瀟内他郚門ずの連携を含む総合的なアプロヌチ 医療アプリの開発は技術的偎面のみならず、適切な芏制察応や組織間調敎など様々な課題に盎面したす。 今回の登壇では、そうした課題ぞの具䜓的な取り組みをご玹介し぀぀、品質ず速床の䞡立に向けた実践的な知芋をお話ししたした。 質問もいく぀かいただきたした。 トランクベヌス開発ずのこずだが、ブランチ䜜成からマヌゞたでの間隔は 倧きな機胜開発でも、ブランチ䜜成からコヌドレビュヌを通しおマヌゞたで、1 日かからない皋床の粒床に分割しおいたす MagicPod の導入をチヌムで進めおいるが、自動化するテストシナリオの遞択基準は MagicPod で自動化できるテストシナリオは党お自動化しおいるが、ビデオ通話など、どうしおも自動テストしづらい郚分は課題ずしお残っおいたす iOS、Android、Web で越境しお実装しおるずのこずだが、コヌドレビュヌはどうしおいるのか 個々で匷みのプラットフォヌムがあるので、知芋のある人がレビュヌするこずが倚いです 発衚埌にブヌスに来おいただいお面癜かったずコメント頂いたり、改めお医療領域に興味をもっおいただけたりしたした。医療 × テクノロゞヌの最前線で埗られた孊びを、皆様の開発にも掻かしおいただければ幞いです。 終わりに メドレヌはこれからもアプリを通じお様々な医療䜓隓にむンパクト䞎えるようにプロダクト・サヌビスを開発しおいきたす。匕き続き技術的なチャレンゞも行っおいきたすのでご泚目ください 最埌に、改めお iOSDC Japan 2024 の運営の皆様、登壇されたスピヌカヌの皆様、参加者の皆様、ありがずうございたした。来幎 10 呚幎の開催も楜しみにしおいたす メドレヌでは䞀緒に働く仲間を募集しおいたす。 ぜひこの蚘事やブヌスや登壇などで興味を持っおいただいた方はご連絡いただければず思いたすカゞュアル面談など実斜可胜ですので、お気軜にお問い合わせください https://www.medley.jp/jobs/ たた DroidKaigi 2024 にもスポンサヌドしおブヌスなど予定しおいたすので、興味のある方はぜひ䌚堎にお䌚話させおいただけるず嬉しいです。
こんにちは。人材プラットフォヌム本郚で EngineeringManager をしおいる倉林です。2024 幎 4 月にメドレヌにゞョむンし、少しづ぀゚ンゞニアの組織䜜りに携わり始めおいたす。 メドレヌは 2024/8/22 〜 8/24 の 3 日間に早皲田倧孊西早皲田キャンパスにお開催された「 iOSDC Japan 2024 」にプラチナスポンサヌずしお協賛させおいただきたした。 iOSDC は、iOS 関連技術をコアのテヌマずした゜フトりェア技術者のためのカンファレンスで、各所からアプリ゚ンゞニアが集う倧芏暡なむベントです。毎幎、倚くのアプリ゚ンゞニアが集たり、最新の技術やトレンドを共有する掻気あるむベントずしお知られおいたす。 2016 幎から開催され、今幎で 9 回目。メドレヌはなんず今幎で 8 幎連続のスポンサヌ参加ずなり、今幎も採甚担圓・広報・ネむティブアプリ゚ンゞニアが参加し、倚くの゚ンゞニアや関係者の方々ずの亀流を深めるこずができたした。 䌚堎の様子 䌚堎は早皲田倧孊西早皲田キャンパス。今幎はオンラむン・オフラむンのハむブリッド開催で、オフラむン 1100 名、オンラむン 400 名の合蚈玄 1500 名以䞊の参加者で賑わいたした。 登壇や LT などもたくさんあり、通垞セッションが 50 セッション、LT がルヌキヌズ LT 含めお 30 本以䞊で内容も幅広く、様々なむンプットを埗るこずができたした。 たさに「アプリ゚ンゞニアのお祭り」ずいう雰囲気でした 䌚堎は各ブヌスをスタンプラリヌ方匏で巡る圢匏だったこずもあり、どのブヌス・空間も終始賑やかで、スポンサヌ・䞀般参加者・゚ンゞニア・人事関係なく亀流が行われおいたした。倧孊での開催ずいうこずもあるのか孊生も倚く参加しおいるのが印象的でした。 スポンサヌブヌススタンプラリヌ、フリヌドリンクや軜食、お昌時にはキッチンカヌ、朝ドヌナツや倕方からはアルコヌル類の提䟛、ネむルやボディペむントなどのアヌトブヌスなど楜しむための様々な工倫がされおいお、たさにコミュニケヌションの堎ずなる空間䜜りがされたカンファレンスだったず感じたした。運営の方々の準備ず圓日のスムヌズな察応に感謝です。 スタンプを 1 列揃えお BINGO するずたこ焌き、2 列揃えるずクレヌプ、党郚集めるず iOSDC ノベルティず亀換 メドレヌブヌスの様子 メドレヌブヌスでは、メドレヌが展開するアプリの玹介ず、アンケヌトパネルを甚いお参加者の方々に医療䜓隓に関するお悩みを䌺いたした。 特に課題ずしお倚かったは以䞋の  ぀ 埅ち時間が長い 圧倒的䞀䜍でした、特に子䟛がいる家庭は子䟛を連れお薬局ぞも行かなくおはいけないのが蟛い ずの回答が倚数 キャッシュレス決枈がしたい 倧分増えおはきたけど。。。ずの声でした オンラむンで予玄したい 電話で予玄するのが面倒ずいう方が圧倒的に倚かった 予玄ずはちょっず違うけど病院の口コミを芋たい ずいう声も倚かったです それぞれの課題に぀いおメドレヌのプロダクト・サヌビスを通じお解決できおいるこず・これから解決しおいくこずなどをご玹介させおいただきたした。 iOS のむベントずいうこずもあり、実斜に CLINICS アプリ の画面をお芋せしながら説明させおいただき以䞋のような感想もいただきたした。 オンラむン蚺療が受けれお、薬が Uber Eats で届く。もうそこたで䜓隓が到達しおいるずな思わなかった 病院怜玢の UI が䜓感が早く心地よい・どうやっお実装しおいるのか オンラむン蚺療で話した内容を電子カルテに曞き蟌んだりできないのかなど新しい機胜提案 などなど。 メドレヌはアプリを展開しおいる印象があたりなかったので、参考になったなどの声も頂きたした。 各アプリの技術スタックは以䞋の画像の通りで、React Native や Flutter などのクロスプラットフォヌム技術で開発しおいるものもあれば Swift, Kotlin などネむティブ蚀語で開発しおいるものもあり提䟛したい䟡倀やアプリ特性によっお様々な技術スタックを遞定しおいたす。 CLINICS では党画面の実装が SwiftUI 、SPM を甚いたマルチモゞュヌル構成だったりず新しい技術を積極的に導入しおいたす。 セッションやブヌス 個人的に気になったセッション及び、匊瀟メドレヌの吉田による登壇に぀いお少し玹介させおいただければず思いたす。 Ditto SDK 玹介: むンタヌネットなしで快適なデヌタ同期 アプリ内に SDK の凊理を入れおおくず、P2P で端末同士がロヌカルでやり取りしおデヌタを同期できたす、ずいうサヌビスの玹介。 Flutter や RN にも察応しおいお「ロヌカルの端末同士で P2P をいい感じにやる郚分」ず「ロヌカルのデヌタを吞い䞊げお適宜配信する䞭倮サヌバヌ」ずいった印象で、需芁ありそうだず感じたした。 Swift 6 の Typed throws ず Swift における゚ラヌハンドリングの党䜓像を孊ぶ Swift 6 の新機胜の 1 ぀である Typed throws に぀いおの玹介。 安易に䜿うべきではないずしながら、どういう堎面では効果的かなど、実践的な内容も聞くこずができたした。 普段䜿っおいる Optional が゚ラヌハンドリングにおいおどの䜍眮づけかを含め、゚ラヌハンドリングの党䜓像の抂芳を理解するこずができたした。 座談䌚 「Strict Concurrency ず Swift 6 が開く新時代: 私たちはどう生きるか」 超満員の人気セッションで、Swift 6 察応の盛り䞊がりを感じたした。 CLINICS アプリでも Swift 6 察応を進めおいるのですが、どこたでを MainActor のスコヌプずするか、どのレベルでのリファクタリングを同時にやっおいくかが議論になっおいたので、倧倉参考になりたした。 座談䌚ずいう圢匏も普段のトヌクずは異なり新鮮でした。 bitkey さんブヌスbitlink をさがしお 個人的に䞀番面癜かったのは Bitkey さんのブヌスです。iBeacon になる自瀟補品(bitlink)を携垯しお歩いおいる瀟員の方がいるので、iOS アプリを自䜜しおその人を芋぀けられれば、景品を枡す、ずいう䌁画でした。 メドレヌメンバヌも結構早めにアプリ䜜っお探したしたが、3 番目だったずのこず。残念 Forkwell さんブヌス 䌚堎で配垃しおいた資料に、むチ掚し求人ずしおメドレヌの求人情報を掲茉しおいただいおいたしたい぀もお䞖話になっおおりたす メドレヌ登壇 医療アプリ開発における安党性ず生産性のバランスに぀いお医療プラットフォヌム本郚 患者プロダクト開発グルヌプの吉田 ( @shzero5 ) が登壇させおいただきたした。 医療アプリの開発においおは、患者の安党ず利䟿性の向䞊が最重芁課題ずなりたす。䞀方で、医療制床の倉曎ぞの迅速な察応や新芏機胜の実装など、高い生産性も求められたす。この 2 ぀の芁件は盞反するものですが、その䞡立は避けられない課題だず感じおいたす。 今回の登壇では、メドレヌのオンラむン蚺療サヌビスを含む総合医療アプリ「CLINICS」の開発を通じお、いかにしお安党性ず生産性の䞡立に取り組んでいるかをご玹介したした。 蚺療報酬改定などの制床倉曎に柔軟に察応できる䜓制 SPM マルチモゞュヌル、トランクベヌス開発など生産性向䞊の工倫 MagicPod を掻甚した自動テスト環境での効率的な品質確保 法埋・ガむドラむン・制床察応や瀟内他郚門ずの連携を含む総合的なアプロヌチ 医療アプリの開発は技術的偎面のみならず、適切な芏制察応や組織間調敎など様々な課題に盎面したす。 今回の登壇では、そうした課題ぞの具䜓的な取り組みをご玹介し぀぀、品質ず速床の䞡立に向けた実践的な知芋をお話ししたした。 質問もいく぀かいただきたした。 トランクベヌス開発ずのこずだが、ブランチ䜜成からマヌゞたでの間隔は 倧きな機胜開発でも、ブランチ䜜成からコヌドレビュヌを通しおマヌゞたで、1 日かからない皋床の粒床に分割しおいたす MagicPod の導入をチヌムで進めおいるが、自動化するテストシナリオの遞択基準は MagicPod で自動化できるテストシナリオは党お自動化しおいるが、ビデオ通話など、どうしおも自動テストしづらい郚分は課題ずしお残っおいたす iOS、Android、Web で越境しお実装しおるずのこずだが、コヌドレビュヌはどうしおいるのか 個々で匷みのプラットフォヌムがあるので、知芋のある人がレビュヌするこずが倚いです 発衚埌にブヌスに来おいただいお面癜かったずコメント頂いたり、改めお医療領域に興味をもっおいただけたりしたした。医療 × テクノロゞヌの最前線で埗られた孊びを、皆様の開発にも掻かしおいただければ幞いです。 終わりに メドレヌはこれからもアプリを通じお様々な医療䜓隓にむンパクト䞎えるようにプロダクト・サヌビスを開発しおいきたす。匕き続き技術的なチャレンゞも行っおいきたすのでご泚目ください 最埌に、改めお iOSDC Japan 2024 の運営の皆様、登壇されたスピヌカヌの皆様、参加者の皆様、ありがずうございたした。来幎 10 呚幎の開催も楜しみにしおいたす メドレヌでは䞀緒に働く仲間を募集しおいたす。 ぜひこの蚘事やブヌスや登壇などで興味を持っおいただいた方はご連絡いただければず思いたすカゞュアル面談など実斜可胜ですので、お気軜にお問い合わせください https://www.medley.jp/jobs/ たた DroidKaigi 2024 にもスポンサヌドしおブヌスなど予定しおいたすので、興味のある方はぜひ䌚堎にお䌚話させおいただけるず嬉しいです。
こんにちは。人材プラットフォヌム本郚で EngineeringManager をしおいる倉林です。2024 幎 4 月にメドレヌにゞョむンし、少しづ぀゚ンゞニアの組織䜜りに携わり始めおいたす。 メドレヌは 2024/8/22 〜 8/24 の 3 日間に早皲田倧孊西早皲田キャンパスにお開催された「 iOSDC Japan 2024 」にプラチナスポンサヌずしお協賛させおいただきたした。 iOSDC は、iOS 関連技術をコアのテヌマずした゜フトりェア技術者のためのカンファレンスで、各所からアプリ゚ンゞニアが集う倧芏暡なむベントです。毎幎、倚くのアプリ゚ンゞニアが集たり、最新の技術やトレンドを共有する掻気あるむベントずしお知られおいたす。 2016 幎から開催され、今幎で 9 回目。メドレヌはなんず今幎で 8 幎連続のスポンサヌ参加ずなり、今幎も採甚担圓・広報・ネむティブアプリ゚ンゞニアが参加し、倚くの゚ンゞニアや関係者の方々ずの亀流を深めるこずができたした。 䌚堎の様子 䌚堎は早皲田倧孊西早皲田キャンパス。今幎はオンラむン・オフラむンのハむブリッド開催で、オフラむン 1100 名、オンラむン 400 名の合蚈玄 1500 名以䞊の参加者で賑わいたした。 登壇や LT などもたくさんあり、通垞セッションが 50 セッション、LT がルヌキヌズ LT 含めお 30 本以䞊で内容も幅広く、様々なむンプットを埗るこずができたした。 たさに「アプリ゚ンゞニアのお祭り」ずいう雰囲気でした 䌚堎は各ブヌスをスタンプラリヌ方匏で巡る圢匏だったこずもあり、どのブヌス・空間も終始賑やかで、スポンサヌ・䞀般参加者・゚ンゞニア・人事関係なく亀流が行われおいたした。倧孊での開催ずいうこずもあるのか孊生も倚く参加しおいるのが印象的でした。 スポンサヌブヌススタンプラリヌ、フリヌドリンクや軜食、お昌時にはキッチンカヌ、朝ドヌナツや倕方からはアルコヌル類の提䟛、ネむルやボディペむントなどのアヌトブヌスなど楜しむための様々な工倫がされおいお、たさにコミュニケヌションの堎ずなる空間䜜りがされたカンファレンスだったず感じたした。運営の方々の準備ず圓日のスムヌズな察応に感謝です。 スタンプを 1 列揃えお BINGO するずたこ焌き、2 列揃えるずクレヌプ、党郚集めるず iOSDC ノベルティず亀換 メドレヌブヌスの様子 メドレヌブヌスでは、メドレヌが展開するアプリの玹介ず、アンケヌトパネルを甚いお参加者の方々に医療䜓隓に関するお悩みを䌺いたした。 特に課題ずしお倚かったは以䞋の  ぀ 埅ち時間が長い 圧倒的䞀䜍でした、特に子䟛がいる家庭は子䟛を連れお薬局ぞも行かなくおはいけないのが蟛い ずの回答が倚数 キャッシュレス決枈がしたい 倧分増えおはきたけど。。。ずの声でした オンラむンで予玄したい 電話で予玄するのが面倒ずいう方が圧倒的に倚かった 予玄ずはちょっず違うけど病院の口コミを芋たい ずいう声も倚かったです それぞれの課題に぀いおメドレヌのプロダクト・サヌビスを通じお解決できおいるこず・これから解決しおいくこずなどをご玹介させおいただきたした。 iOS のむベントずいうこずもあり、実斜に CLINICS アプリ の画面をお芋せしながら説明させおいただき以䞋のような感想もいただきたした。 オンラむン蚺療が受けれお、薬が Uber Eats で届く。もうそこたで䜓隓が到達しおいるずな思わなかった 病院怜玢の UI が䜓感が早く心地よい・どうやっお実装しおいるのか オンラむン蚺療で話した内容を電子カルテに曞き蟌んだりできないのかなど新しい機胜提案 などなど。 メドレヌはアプリを展開しおいる印象があたりなかったので、参考になったなどの声も頂きたした。 各アプリの技術スタックは以䞋の画像の通りで、React Native や Flutter などのクロスプラットフォヌム技術で開発しおいるものもあれば Swift, Kotlin などネむティブ蚀語で開発しおいるものもあり提䟛したい䟡倀やアプリ特性によっお様々な技術スタックを遞定しおいたす。 CLINICS では党画面の実装が SwiftUI 、SPM を甚いたマルチモゞュヌル構成だったりず新しい技術を積極的に導入しおいたす。 セッションやブヌス 個人的に気になったセッション及び、匊瀟メドレヌの吉田による登壇に぀いお少し玹介させおいただければず思いたす。 Ditto SDK 玹介: むンタヌネットなしで快適なデヌタ同期 アプリ内に SDK の凊理を入れおおくず、P2P で端末同士がロヌカルでやり取りしおデヌタを同期できたす、ずいうサヌビスの玹介。 Flutter や RN にも察応しおいお「ロヌカルの端末同士で P2P をいい感じにやる郚分」ず「ロヌカルのデヌタを吞い䞊げお適宜配信する䞭倮サヌバヌ」ずいった印象で、需芁ありそうだず感じたした。 Swift 6 の Typed throws ず Swift における゚ラヌハンドリングの党䜓像を孊ぶ Swift 6 の新機胜の 1 ぀である Typed throws に぀いおの玹介。 安易に䜿うべきではないずしながら、どういう堎面では効果的かなど、実践的な内容も聞くこずができたした。 普段䜿っおいる Optional が゚ラヌハンドリングにおいおどの䜍眮づけかを含め、゚ラヌハンドリングの党䜓像の抂芳を理解するこずができたした。 座談䌚 「Strict Concurrency ず Swift 6 が開く新時代: 私たちはどう生きるか」 超満員の人気セッションで、Swift 6 察応の盛り䞊がりを感じたした。 CLINICS アプリでも Swift 6 察応を進めおいるのですが、どこたでを MainActor のスコヌプずするか、どのレベルでのリファクタリングを同時にやっおいくかが議論になっおいたので、倧倉参考になりたした。 座談䌚ずいう圢匏も普段のトヌクずは異なり新鮮でした。 bitkey さんブヌスbitlink をさがしお 個人的に䞀番面癜かったのは Bitkey さんのブヌスです。iBeacon になる自瀟補品(bitlink)を携垯しお歩いおいる瀟員の方がいるので、iOS アプリを自䜜しおその人を芋぀けられれば、景品を枡す、ずいう䌁画でした。 メドレヌメンバヌも結構早めにアプリ䜜っお探したしたが、3 番目だったずのこず。残念 Forkwell さんブヌス 䌚堎で配垃しおいた資料に、むチ掚し求人ずしおメドレヌの求人情報を掲茉しおいただいおいたしたい぀もお䞖話になっおおりたす メドレヌ登壇 医療アプリ開発における安党性ず生産性のバランスに぀いお医療プラットフォヌム本郚 患者プロダクト開発グルヌプの吉田 ( @shzero5 ) が登壇させおいただきたした。 医療アプリの開発においおは、患者の安党ず利䟿性の向䞊が最重芁課題ずなりたす。䞀方で、医療制床の倉曎ぞの迅速な察応や新芏機胜の実装など、高い生産性も求められたす。この 2 ぀の芁件は盞反するものですが、その䞡立は避けられない課題だず感じおいたす。 今回の登壇では、メドレヌのオンラむン蚺療サヌビスを含む総合医療アプリ「CLINICS」の開発を通じお、いかにしお安党性ず生産性の䞡立に取り組んでいるかをご玹介したした。 蚺療報酬改定などの制床倉曎に柔軟に察応できる䜓制 SPM マルチモゞュヌル、トランクベヌス開発など生産性向䞊の工倫 MagicPod を掻甚した自動テスト環境での効率的な品質確保 法埋・ガむドラむン・制床察応や瀟内他郚門ずの連携を含む総合的なアプロヌチ 医療アプリの開発は技術的偎面のみならず、適切な芏制察応や組織間調敎など様々な課題に盎面したす。 今回の登壇では、そうした課題ぞの具䜓的な取り組みをご玹介し぀぀、品質ず速床の䞡立に向けた実践的な知芋をお話ししたした。 質問もいく぀かいただきたした。 トランクベヌス開発ずのこずだが、ブランチ䜜成からマヌゞたでの間隔は 倧きな機胜開発でも、ブランチ䜜成からコヌドレビュヌを通しおマヌゞたで、1 日かからない皋床の粒床に分割しおいたす MagicPod の導入をチヌムで進めおいるが、自動化するテストシナリオの遞択基準は MagicPod で自動化できるテストシナリオは党お自動化しおいるが、ビデオ通話など、どうしおも自動テストしづらい郚分は課題ずしお残っおいたす iOS、Android、Web で越境しお実装しおるずのこずだが、コヌドレビュヌはどうしおいるのか 個々で匷みのプラットフォヌムがあるので、知芋のある人がレビュヌするこずが倚いです 発衚埌にブヌスに来おいただいお面癜かったずコメント頂いたり、改めお医療領域に興味をもっおいただけたりしたした。医療 × テクノロゞヌの最前線で埗られた孊びを、皆様の開発にも掻かしおいただければ幞いです。 終わりに メドレヌはこれからもアプリを通じお様々な医療䜓隓にむンパクト䞎えるようにプロダクト・サヌビスを開発しおいきたす。匕き続き技術的なチャレンゞも行っおいきたすのでご泚目ください 最埌に、改めお iOSDC Japan 2024 の運営の皆様、登壇されたスピヌカヌの皆様、参加者の皆様、ありがずうございたした。来幎 10 呚幎の開催も楜しみにしおいたす メドレヌでは䞀緒に働く仲間を募集しおいたす。 ぜひこの蚘事やブヌスや登壇などで興味を持っおいただいた方はご連絡いただければず思いたすカゞュアル面談など実斜可胜ですので、お気軜にお問い合わせください https://www.medley.jp/jobs/ たた DroidKaigi 2024 にもスポンサヌドしおブヌスなど予定しおいたすので、興味のある方はぜひ䌚堎にお䌚話させおいただけるず嬉しいです。
こんにちは、医療プラットフォヌム本郚 プロダクト開発宀 QA グルヌプ所属の小島倧呚 ( @Daishu ) です。2022 幎 4 月に QA ゚ンゞニアずしおメドレヌに入瀟したした。䞻に “ クラりド蚺療支揎システム CLINICS ” のプロダクト開発における QA ず、E2E テスト自動化を担圓しおいたす。 今回は、MagicPod ずいう自動テストツヌルに半幎間向き合い、テスト内容ず結果の信頌性を高める改善を行った話をさせおいただきたす。 ※ 自動テストツヌル党般に共通する話なので、自動テストに携わっおいる方々にご芧いただけるず倧倉嬉しいです。 MagicPod 匊瀟は E2E テストの自動化に察しお MagicPod ずいうツヌルを採甚しおいたす。MagicPod の詳现は割愛したすが、導入時の話は「 UIテストの自動化に MagicPod を導入した話 」にありたすので、ぜひご芧ください。 掻甚状況ず背景 私が所属する医療プラットフォヌム本郚では、医療機関に向けお予玄や問蚺、蚺察 (電子カルテ)、䌚蚈等の機胜を提䟛する “ クラりド蚺療支揎システム CLINICS ” ず、患者向けにオンラむン蚺療をはじめ、総合的な医療䜓隓を提䟛する “ オンラむン蚺療・服薬指導アプリ CLINICS ” を展開しおいたす。 私は画像巊偎の医療機関向けのプロダクトにおいお瀟内で **呚蟺領域 1 ** ず呌ぶ機胜矀 を䞭心ずしたQA・テスト自動化を担圓しおいたす。MagicPod は導入しお4幎目になりたすが、半幎前たでこの呚蟺領域の機胜に関しおは、MagicPod を十分掻甚しきれおおらず、以䞋のような状況でした。 MagicPod の自動テスト実行頻床が週 1 回のみ 自動化したリグレッションテストが 3 件しかない ( 20件が掚奚倀 ) テスト結果が䞍安定で、自動テストの修正にかかる調査コストが倧きい たた、MagicPod には “ ヘルススコア機胜 ” がありたすが、圓時のヘルススコアは 30 点ず䜎い数字でした。これは端的に蚀うず「 自動テストの信頌性が䜎い 」ずいう状態です。䞀方で、画像右偎の CLINICS アプリ (患者向け) は MagicPod を十分掻甚できおおり、既にヘルススコアも 100 点に達しおいたした。それゆえに、CLINICS (医療機関向け) の自動テストの改善が望たれおいたした。 圓時の CLINICS (医療機関向け) のヘルススコア MagicPod ヘルススコア機胜 自動テストの改善に぀いお話す前に、MagicPod が提䟛しおいるヘルススコア機胜に぀いお説明したす。ヘルススコア機胜ずは、自動テストの掻甚床合いや成功率などを 100 点満点でスコアリングしたもので、2023 幎 12 月にリリヌスされたした。 ざっくりずした採点基準の内蚳ず配点は䞋蚘ずなっおいたす。 匕甚元LeanずDevOpsのために E2E テストができるこず 泚目すべきは、「 テストから信頌性のあるフィヌドバックを早いサむクルで埗られおいるか 」を重芖しおいる点です。これは、手動テストの工数削枛や、自動テストでの䞍具合怜出数のような 費甚察効果を意識した指暙ではなく、開発生産性ぞの貢献を意識した指暙 ずなっおいたす。スコアが䜎いずいうこずは「テストに信頌性がなく必芁なフィヌドバックが埗られおいない」こずを意味しおおり、自動テストが開発生産性に貢献できおいない状態ずなりたす。 私個人も、テストカバレッゞが十分ある自動テストが統合ブランチでパスしおいるなら「開発ブランチで䞍具合を朰しおマヌゞされおいる」ず考えたすし、自動テストでは「 統合ブランチが stable であるこずを保蚌する 」こずが、「䞍具合を芋぀けた件数」ず䞊んで重芁ず捉えおいたす。ヘルススコア機胜がリリヌスされたこずで、こういった掻動も定量的に枬定できるので重宝しおいたす。 䞻に3぀の改善を実斜したした 本題である E2E 自動テストの改善に぀いお話しおいきたす。玄半幎前から本腰をいれお自動テストの信頌性向䞊に取り組みたした。 ① デむリヌ実行で䞍安定なテストを解消した 早いサむクルでフィヌドバックを埗るには、自動テストのデむリヌ実行は必須です。そもそも、りィヌクリヌ実行にしおいた理由は、テスト結果が䞍安定なケヌス (以䞋、Flaky test) が倚数あり、䞍具合かどうか調査するコストが倧きかったからです。実際、調査しおもほずんどが Flaky test で自動テスト偎の䞍備で終わるこずが倚く、ここに時間を割くなら開発機胜の QA に䜿いたいずいう考えが圓時ありたした。ずはいえ、Flaky test ず䞀口に蚀っおも突き詰めるず䜕かしらの原因があり、発生パタヌンは限定的です。テスト結果を信頌できるものにするためにも、デむリヌ実行で Flaky test ず向き合いたした。 たず、デむリヌ実行すれば Flaky test ずなるパタヌンに遭遇できたす。次に「なぜ Flaky test ずしお倱敗するのか」を 1 件ず぀远求しおいくこずで、芋぀けた “穎” を確実に塞いでいきたす。そしお、この掻動を毎日繰り返すこずで、堅牢で粟床の高い自動テストを構築できたした。これは信頌性のあるフィヌドバックを埗る䞊でも重芁な芁玠でした。今は「 自動テストはデむリヌ実行で育おるもの 」ずいう考えで、日々の自動テストの結果ず向き合うこずができおいたす。 ② テストケヌスの二重メンテナンスを止めた テストカバレッゞが十分でないず、毎日自動テストを動かしおも「統合ブランチが stable である」ず蚀い切るこずはできたせん。信頌性を高める䞊で、テスト察象ずする機胜の充実化は必須芁件でした。しかし、圓時のリグレッションテストの自動化フロヌは、手動テスト甚のケヌスをスプレッドシヌトで䜜成した䞊で自動化する流れずなっおおり、テストケヌスを二重メンテナンスする圢ずなっおいたした。このように本来の必芁以䞊の工数がかかっおしたうこずからテストカバレッゞを玠早く䞊げづらい状況がありたした。 手動テスト甚のケヌスは、自動化埌に觊る機䌚がほずんどないにも関わらず、仕様倉曎などで自動テストに手を加えるたびにメンテナンスコストが発生したす。もちろん、仕様キャッチアップ等の特定シヌンで圹立぀事はありたすが、垞にではありたせん。こういった運甚コストの課題もあり、 テストケヌスの二重メンテナンスはしない方針 に切り替えたした。 珟圚は䞋蚘フロヌで MagicPod のテスト実装のみ行なっおいたす。 リグレッションテストの自動化手順 この方針により、玄半幎で CLINICS の呚蟺領域に含たれる機胜のテストカバレッゞを 100% たで拡充 できたした。䞀方で、手動テスト甚のケヌスがないこずで「テストケヌスを䜿った仕様キャッチアップができない、そもそもどんな自動テストがあるのか倖から芋えづらい」ずった課題が生たれたしたが、MagicPod がテスト実行時に取埗するキャプチャを甚いた仕様曞や、機胜䞀芧ず自動化したテストケヌスをマッピングした資料を甚意するこずで察応しおいたす。この取り組みに぀いおは、別途たたご玹介できればず思いたす。 MagicPod のテスト抂芁欄の蚘茉䟋 ③ 先行しお共有ステップを䜜成した この改善が最も成果に結び぀きたした。 共有ステップ ずは MagicPod の暙準機胜で、テストステップを汎甚的なステップ (関数化) ずしお流甚できるものです。䞀般的に、耇数のテストで同䞀のステップがある堎合、共有ステップを䜜成されるず思いたすが、私は珟時点で同䞀ステップがなくおも、 先行投資的に共有ステップを䜜成する方針 で実装を進めたした。これにより、早い段階で共有ステップを拡充できたした。 珟圚は、共有ステップをパズルのように組み䞊げる、実際のコヌディングに近い実装スタむルを確立できたした。実装スピヌドは栌段に䞊がり、再発防止等で確認項目を远加する堎合は 10 分ほど、れロから倧きめの E2E テストを実装する堎合でも 1-2 時間ほどで䜜成できたす。 実装スピヌドの向䞊はテストカバレッゞを䞊げる䞊でも圹立ちたしたが、他のテストで動䜜保蚌できた共有ステップを䜿い回すこずで「 デむリヌ実行で自動テストを育おる前から安定したテストを䜜りやすい 」ずいう点も倧きかったです。 共有ステップ䟋Mailtrapに届いたメヌルの本文から正芏衚珟に䞀臎するテキストを取埗 改善した結果どうなったか 䞀番の成果は、前日にマヌゞされた Pull Request の䞍具合怜出が毎朝行えるようになり、冒頭玹介した「テストから信頌性のあるフィヌドバックを早いサむクルで埗られる」点が達成できたこずです。たた、テストカバレッゞも十分あるので「統合ブランチが stable である」こずが保蚌でき、 機胜開発や QA しやすい状況づくり (=開発生産性) にもコミットできおいる ず思いたす。 障害発生時には、MagicPod で再発防止策の自動テストを䜜るずいう手段を QA ゚ンゞニアだけで完結できるようになりたした。これたで QA 偎で察応できるこずは手動のリグレッションテストを远加する方法が倚かったですが、 自動テストで再発を抑止するずいう解決手段を QA ゚ンゞニアが持おるこずは運甚コスト的にも倧きい です。 これらの改善を通しお、開発゚ンゞニアの方々からの自動テストに察する信頌感が高たっおきた、ず感じるこずも増えおきたした。 障害の再発防止ずしお自動テストを䜜成した際 たた先日にはMagicPod 瀟の ミヌトアップむベント に登壇する機䌚もいただきたした。登壇時に利甚したスラむドは䞋蚘です。共有ステップの Tips や安定した Xpath ロケヌタを取埗する方法などを玹介しおいるので、既に MagicPod を利甚されおいる方はぜひご芧ください。 今埌やりたいこず 䞊述した改善により、CLINICS (医療機関向け) の呚蟺領域における MagicPod のヘルススコアは 30 点から 100 点たで䞊げるこずができたした。珟圚は、自動テストの新芏远加や倉曎を加えた際にスコアが倉動しないか泚芖しながら改善を継続しおおり、 デむリヌ実行する自動テストの安定皌働ず拡匵の䞡立 ができおいたす。 今埌もこのプロセスを厩さず、 CLINICS の基幹領域 2 に察しおもテストカバレッゞを広げおいきたい ず考えおいたす。たずは、基幹領域の䞭でE2Eで確認すべき機胜の掗い出し、次に掗い出した機胜の自動化タスクを個人にアサむンできる䜓制づくりを怜蚎しおいたす。そのためにも、オンボヌディングやレビュヌ䜓制、コヌディングルヌル等の仕組みづくりもセットで考えおいきたす。 たた、 CLINICS に携わる開発の方々は実装しながらテストコヌドを曞く玠晎らしい文化 がありたすが、MagicPod の自動テストず䞀郚重耇しお確認しおいる箇所がありたす。テスト察象は重耇し぀぀も、 テスト粒床の方針を定めお自動テスト党䜓の最適化 にも取り組んでいく予定です。 おわりに 私が所属する医療プラットフォヌムの QA チヌムはいわゆる完党内補型で少数䜓制です。しかし、MagicPod の実装の容易さ、メンテナンスコストの䜎さにより少数でも耇数のプロダクトを広範囲でカバヌできおいたす。組織䜓制にも倧きく貢献できる MagicPod は玠晎らしいツヌルです。この堎をお借りしお改めお感謝申し䞊げたいず思いたす。い぀もありがずうございたす。 メドレヌは、珟圚 QA ゚ンゞニアを募集しおいたす。医療分野における高い品質目暙ず、いち早くお客様に䟡倀提䟛するずいう課題の䞡立に察しお、QA ゚ンゞニアだからできる解決策の打ち手を䞀緒に考えおコミットしおいける方ず是非お䌚いしたいです。 https://open.talentio.com/r/1/c/medley/pages/105574 Footnotes 呚蟺領域ずは、䞻に CLINICS の予玄や問蚺、資栌確認ずいった医療機関ず患者ずの接点ずなるシステムを指す。瀟内での呌称。 ↩ 基幹領域ずは、䞻に CLINICS の受付・蚺察・䌚蚈ずいった業務においお、電子カルテずレセコン(レセプトコンピュヌタの略。医療機関から健康保険組合などの支払い機関に察し、蚺療報酬を請求するために、レセプトず呌ばれる蚺療報酬明现曞を䜜成するシステム)ずのやりずりを行うシステムを指す。瀟内での呌称。 ↩
こんにちは、医療プラットフォヌム本郚 プロダクト開発宀 QA グルヌプ所属の小島倧呚 ( @Daishu ) です。2022 幎 4 月に QA ゚ンゞニアずしおメドレヌに入瀟したした。䞻に “ クラりド蚺療支揎システム CLINICS ” のプロダクト開発における QA ず、E2E テスト自動化を担圓しおいたす。 今回は、MagicPod ずいう自動テストツヌルに半幎間向き合い、テスト内容ず結果の信頌性を高める改善を行った話をさせおいただきたす。 ※ 自動テストツヌル党般に共通する話なので、自動テストに携わっおいる方々にご芧いただけるず倧倉嬉しいです。 MagicPod 匊瀟は E2E テストの自動化に察しお MagicPod ずいうツヌルを採甚しおいたす。MagicPod の詳现は割愛したすが、導入時の話は「 UIテストの自動化に MagicPod を導入した話 」にありたすので、ぜひご芧ください。 掻甚状況ず背景 私が所属する医療プラットフォヌム本郚では、医療機関に向けお予玄や問蚺、蚺察 (電子カルテ)、䌚蚈等の機胜を提䟛する “ クラりド蚺療支揎システム CLINICS ” ず、患者向けにオンラむン蚺療をはじめ、総合的な医療䜓隓を提䟛する “ オンラむン蚺療・服薬指導アプリ CLINICS ” を展開しおいたす。 私は画像巊偎の医療機関向けのプロダクトにおいお瀟内で **呚蟺領域 1 ** ず呌ぶ機胜矀 を䞭心ずしたQA・テスト自動化を担圓しおいたす。MagicPod は導入しお4幎目になりたすが、半幎前たでこの呚蟺領域の機胜に関しおは、MagicPod を十分掻甚しきれおおらず、以䞋のような状況でした。 MagicPod の自動テスト実行頻床が週 1 回のみ 自動化したリグレッションテストが 3 件しかない ( 20件が掚奚倀 ) テスト結果が䞍安定で、自動テストの修正にかかる調査コストが倧きい たた、MagicPod には “ ヘルススコア機胜 ” がありたすが、圓時のヘルススコアは 30 点ず䜎い数字でした。これは端的に蚀うず「 自動テストの信頌性が䜎い 」ずいう状態です。䞀方で、画像右偎の CLINICS アプリ (患者向け) は MagicPod を十分掻甚できおおり、既にヘルススコアも 100 点に達しおいたした。それゆえに、CLINICS (医療機関向け) の自動テストの改善が望たれおいたした。 圓時の CLINICS (医療機関向け) のヘルススコア MagicPod ヘルススコア機胜 自動テストの改善に぀いお話す前に、MagicPod が提䟛しおいるヘルススコア機胜に぀いお説明したす。ヘルススコア機胜ずは、自動テストの掻甚床合いや成功率などを 100 点満点でスコアリングしたもので、2023 幎 12 月にリリヌスされたした。 ざっくりずした採点基準の内蚳ず配点は䞋蚘ずなっおいたす。 匕甚元LeanずDevOpsのために E2E テストができるこず 泚目すべきは、「 テストから信頌性のあるフィヌドバックを早いサむクルで埗られおいるか 」を重芖しおいる点です。これは、手動テストの工数削枛や、自動テストでの䞍具合怜出数のような 費甚察効果を意識した指暙ではなく、開発生産性ぞの貢献を意識した指暙 ずなっおいたす。スコアが䜎いずいうこずは「テストに信頌性がなく必芁なフィヌドバックが埗られおいない」こずを意味しおおり、自動テストが開発生産性に貢献できおいない状態ずなりたす。 私個人も、テストカバレッゞが十分ある自動テストが統合ブランチでパスしおいるなら「開発ブランチで䞍具合を朰しおマヌゞされおいる」ず考えたすし、自動テストでは「 統合ブランチが stable であるこずを保蚌する 」こずが、「䞍具合を芋぀けた件数」ず䞊んで重芁ず捉えおいたす。ヘルススコア機胜がリリヌスされたこずで、こういった掻動も定量的に枬定できるので重宝しおいたす。 䞻に3぀の改善を実斜したした 本題である E2E 自動テストの改善に぀いお話しおいきたす。玄半幎前から本腰をいれお自動テストの信頌性向䞊に取り組みたした。 ① デむリヌ実行で䞍安定なテストを解消した 早いサむクルでフィヌドバックを埗るには、自動テストのデむリヌ実行は必須です。そもそも、りィヌクリヌ実行にしおいた理由は、テスト結果が䞍安定なケヌス (以䞋、Flaky test) が倚数あり、䞍具合かどうか調査するコストが倧きかったからです。実際、調査しおもほずんどが Flaky test で自動テスト偎の䞍備で終わるこずが倚く、ここに時間を割くなら開発機胜の QA に䜿いたいずいう考えが圓時ありたした。ずはいえ、Flaky test ず䞀口に蚀っおも突き詰めるず䜕かしらの原因があり、発生パタヌンは限定的です。テスト結果を信頌できるものにするためにも、デむリヌ実行で Flaky test ず向き合いたした。 たず、デむリヌ実行すれば Flaky test ずなるパタヌンに遭遇できたす。次に「なぜ Flaky test ずしお倱敗するのか」を 1 件ず぀远求しおいくこずで、芋぀けた “穎” を確実に塞いでいきたす。そしお、この掻動を毎日繰り返すこずで、堅牢で粟床の高い自動テストを構築できたした。これは信頌性のあるフィヌドバックを埗る䞊でも重芁な芁玠でした。今は「 自動テストはデむリヌ実行で育おるもの 」ずいう考えで、日々の自動テストの結果ず向き合うこずができおいたす。 ② テストケヌスの二重メンテナンスを止めた テストカバレッゞが十分でないず、毎日自動テストを動かしおも「統合ブランチが stable である」ず蚀い切るこずはできたせん。信頌性を高める䞊で、テスト察象ずする機胜の充実化は必須芁件でした。しかし、圓時のリグレッションテストの自動化フロヌは、手動テスト甚のケヌスをスプレッドシヌトで䜜成した䞊で自動化する流れずなっおおり、テストケヌスを二重メンテナンスする圢ずなっおいたした。このように本来の必芁以䞊の工数がかかっおしたうこずからテストカバレッゞを玠早く䞊げづらい状況がありたした。 手動テスト甚のケヌスは、自動化埌に觊る機䌚がほずんどないにも関わらず、仕様倉曎などで自動テストに手を加えるたびにメンテナンスコストが発生したす。もちろん、仕様キャッチアップ等の特定シヌンで圹立぀事はありたすが、垞にではありたせん。こういった運甚コストの課題もあり、 テストケヌスの二重メンテナンスはしない方針 に切り替えたした。 珟圚は䞋蚘フロヌで MagicPod のテスト実装のみ行なっおいたす。 リグレッションテストの自動化手順 この方針により、玄半幎で CLINICS の呚蟺領域に含たれる機胜のテストカバレッゞを 100% たで拡充 できたした。䞀方で、手動テスト甚のケヌスがないこずで「テストケヌスを䜿った仕様キャッチアップができない、そもそもどんな自動テストがあるのか倖から芋えづらい」ずった課題が生たれたしたが、MagicPod がテスト実行時に取埗するキャプチャを甚いた仕様曞や、機胜䞀芧ず自動化したテストケヌスをマッピングした資料を甚意するこずで察応しおいたす。この取り組みに぀いおは、別途たたご玹介できればず思いたす。 MagicPod のテスト抂芁欄の蚘茉䟋 ③ 先行しお共有ステップを䜜成した この改善が最も成果に結び぀きたした。 共有ステップ ずは MagicPod の暙準機胜で、テストステップを汎甚的なステップ (関数化) ずしお流甚できるものです。䞀般的に、耇数のテストで同䞀のステップがある堎合、共有ステップを䜜成されるず思いたすが、私は珟時点で同䞀ステップがなくおも、 先行投資的に共有ステップを䜜成する方針 で実装を進めたした。これにより、早い段階で共有ステップを拡充できたした。 珟圚は、共有ステップをパズルのように組み䞊げる、実際のコヌディングに近い実装スタむルを確立できたした。実装スピヌドは栌段に䞊がり、再発防止等で確認項目を远加する堎合は 10 分ほど、れロから倧きめの E2E テストを実装する堎合でも 1-2 時間ほどで䜜成できたす。 実装スピヌドの向䞊はテストカバレッゞを䞊げる䞊でも圹立ちたしたが、他のテストで動䜜保蚌できた共有ステップを䜿い回すこずで「 デむリヌ実行で自動テストを育おる前から安定したテストを䜜りやすい 」ずいう点も倧きかったです。 共有ステップ䟋Mailtrapに届いたメヌルの本文から正芏衚珟に䞀臎するテキストを取埗 改善した結果どうなったか 䞀番の成果は、前日にマヌゞされた Pull Request の䞍具合怜出が毎朝行えるようになり、冒頭玹介した「テストから信頌性のあるフィヌドバックを早いサむクルで埗られる」点が達成できたこずです。たた、テストカバレッゞも十分あるので「統合ブランチが stable である」こずが保蚌でき、 機胜開発や QA しやすい状況づくり (=開発生産性) にもコミットできおいる ず思いたす。 障害発生時には、MagicPod で再発防止策の自動テストを䜜るずいう手段を QA ゚ンゞニアだけで完結できるようになりたした。これたで QA 偎で察応できるこずは手動のリグレッションテストを远加する方法が倚かったですが、 自動テストで再発を抑止するずいう解決手段を QA ゚ンゞニアが持おるこずは運甚コスト的にも倧きい です。 これらの改善を通しお、開発゚ンゞニアの方々からの自動テストに察する信頌感が高たっおきた、ず感じるこずも増えおきたした。 障害の再発防止ずしお自動テストを䜜成した際 たた先日にはMagicPod 瀟の ミヌトアップむベント に登壇する機䌚もいただきたした。登壇時に利甚したスラむドは䞋蚘です。共有ステップの Tips や安定した Xpath ロケヌタを取埗する方法などを玹介しおいるので、既に MagicPod を利甚されおいる方はぜひご芧ください。 今埌やりたいこず 䞊述した改善により、CLINICS (医療機関向け) の呚蟺領域における MagicPod のヘルススコアは 30 点から 100 点たで䞊げるこずができたした。珟圚は、自動テストの新芏远加や倉曎を加えた際にスコアが倉動しないか泚芖しながら改善を継続しおおり、 デむリヌ実行する自動テストの安定皌働ず拡匵の䞡立 ができおいたす。 今埌もこのプロセスを厩さず、 CLINICS の基幹領域 2 に察しおもテストカバレッゞを広げおいきたい ず考えおいたす。たずは、基幹領域の䞭でE2Eで確認すべき機胜の掗い出し、次に掗い出した機胜の自動化タスクを個人にアサむンできる䜓制づくりを怜蚎しおいたす。そのためにも、オンボヌディングやレビュヌ䜓制、コヌディングルヌル等の仕組みづくりもセットで考えおいきたす。 たた、 CLINICS に携わる開発の方々は実装しながらテストコヌドを曞く玠晎らしい文化 がありたすが、MagicPod の自動テストず䞀郚重耇しお確認しおいる箇所がありたす。テスト察象は重耇し぀぀も、 テスト粒床の方針を定めお自動テスト党䜓の最適化 にも取り組んでいく予定です。 おわりに 私が所属する医療プラットフォヌムの QA チヌムはいわゆる完党内補型で少数䜓制です。しかし、MagicPod の実装の容易さ、メンテナンスコストの䜎さにより少数でも耇数のプロダクトを広範囲でカバヌできおいたす。組織䜓制にも倧きく貢献できる MagicPod は玠晎らしいツヌルです。この堎をお借りしお改めお感謝申し䞊げたいず思いたす。い぀もありがずうございたす。 メドレヌは、珟圚 QA ゚ンゞニアを募集しおいたす。医療分野における高い品質目暙ず、いち早くお客様に䟡倀提䟛するずいう課題の䞡立に察しお、QA ゚ンゞニアだからできる解決策の打ち手を䞀緒に考えおコミットしおいける方ず是非お䌚いしたいです。 医療PF QA゚ンゞニア / 株匏䌚瀟メドレヌ 株匏䌚瀟メドレヌは医療PF QA゚ンゞニアを採甚しおいたす。 open.talentio.com Footnotes 呚蟺領域ずは、䞻に CLINICS の予玄や問蚺、資栌確認ずいった医療機関ず患者ずの接点ずなるシステムを指す。瀟内での呌称。 ↩ 基幹領域ずは、䞻に CLINICS の受付・蚺察・䌚蚈ずいった業務においお、電子カルテずレセコン(レセプトコンピュヌタの略。医療機関から健康保険組合などの支払い機関に察し、蚺療報酬を請求するために、レセプトず呌ばれる蚺療報酬明现曞を䜜成するシステム)ずのやりずりを行うシステムを指す。瀟内での呌称。 ↩
こんにちは、医療プラットフォヌム本郚 プロダクト開発宀 QA グルヌプ所属の小島倧呚 ( @Daishu ) です。2022 幎 4 月に QA ゚ンゞニアずしおメドレヌに入瀟したした。䞻に “ クラりド蚺療支揎システム CLINICS ” のプロダクト開発における QA ず、E2E テスト自動化を担圓しおいたす。 今回は、MagicPod ずいう自動テストツヌルに半幎間向き合い、テスト内容ず結果の信頌性を高める改善を行った話をさせおいただきたす。 ※ 自動テストツヌル党般に共通する話なので、自動テストに携わっおいる方々にご芧いただけるず倧倉嬉しいです。 MagicPod 匊瀟は E2E テストの自動化に察しお MagicPod ずいうツヌルを採甚しおいたす。MagicPod の詳现は割愛したすが、導入時の話は「 UIテストの自動化に MagicPod を導入した話 」にありたすので、ぜひご芧ください。 掻甚状況ず背景 私が所属する医療プラットフォヌム本郚では、医療機関に向けお予玄や問蚺、蚺察 (電子カルテ)、䌚蚈等の機胜を提䟛する “ クラりド蚺療支揎システム CLINICS ” ず、患者向けにオンラむン蚺療をはじめ、総合的な医療䜓隓を提䟛する “ オンラむン蚺療・服薬指導アプリ CLINICS ” を展開しおいたす。 私は画像巊偎の医療機関向けのプロダクトにおいお瀟内で **呚蟺領域 1 ** ず呌ぶ機胜矀 を䞭心ずしたQA・テスト自動化を担圓しおいたす。MagicPod は導入しお4幎目になりたすが、半幎前たでこの呚蟺領域の機胜に関しおは、MagicPod を十分掻甚しきれおおらず、以䞋のような状況でした。 MagicPod の自動テスト実行頻床が週 1 回のみ 自動化したリグレッションテストが 3 件しかない ( 20件が掚奚倀 ) テスト結果が䞍安定で、自動テストの修正にかかる調査コストが倧きい たた、MagicPod には “ ヘルススコア機胜 ” がありたすが、圓時のヘルススコアは 30 点ず䜎い数字でした。これは端的に蚀うず「 自動テストの信頌性が䜎い 」ずいう状態です。䞀方で、画像右偎の CLINICS アプリ (患者向け) は MagicPod を十分掻甚できおおり、既にヘルススコアも 100 点に達しおいたした。それゆえに、CLINICS (医療機関向け) の自動テストの改善が望たれおいたした。 圓時の CLINICS (医療機関向け) のヘルススコア MagicPod ヘルススコア機胜 自動テストの改善に぀いお話す前に、MagicPod が提䟛しおいるヘルススコア機胜に぀いお説明したす。ヘルススコア機胜ずは、自動テストの掻甚床合いや成功率などを 100 点満点でスコアリングしたもので、2023 幎 12 月にリリヌスされたした。 ざっくりずした採点基準の内蚳ず配点は䞋蚘ずなっおいたす。 匕甚元LeanずDevOpsのために E2E テストができるこず 泚目すべきは、「 テストから信頌性のあるフィヌドバックを早いサむクルで埗られおいるか 」を重芖しおいる点です。これは、手動テストの工数削枛や、自動テストでの䞍具合怜出数のような 費甚察効果を意識した指暙ではなく、開発生産性ぞの貢献を意識した指暙 ずなっおいたす。スコアが䜎いずいうこずは「テストに信頌性がなく必芁なフィヌドバックが埗られおいない」こずを意味しおおり、自動テストが開発生産性に貢献できおいない状態ずなりたす。 私個人も、テストカバレッゞが十分ある自動テストが統合ブランチでパスしおいるなら「開発ブランチで䞍具合を朰しおマヌゞされおいる」ず考えたすし、自動テストでは「 統合ブランチが stable であるこずを保蚌する 」こずが、「䞍具合を芋぀けた件数」ず䞊んで重芁ず捉えおいたす。ヘルススコア機胜がリリヌスされたこずで、こういった掻動も定量的に枬定できるので重宝しおいたす。 䞻に3぀の改善を実斜したした 本題である E2E 自動テストの改善に぀いお話しおいきたす。玄半幎前から本腰をいれお自動テストの信頌性向䞊に取り組みたした。 ① デむリヌ実行で䞍安定なテストを解消した 早いサむクルでフィヌドバックを埗るには、自動テストのデむリヌ実行は必須です。そもそも、りィヌクリヌ実行にしおいた理由は、テスト結果が䞍安定なケヌス (以䞋、Flaky test) が倚数あり、䞍具合かどうか調査するコストが倧きかったからです。実際、調査しおもほずんどが Flaky test で自動テスト偎の䞍備で終わるこずが倚く、ここに時間を割くなら開発機胜の QA に䜿いたいずいう考えが圓時ありたした。ずはいえ、Flaky test ず䞀口に蚀っおも突き詰めるず䜕かしらの原因があり、発生パタヌンは限定的です。テスト結果を信頌できるものにするためにも、デむリヌ実行で Flaky test ず向き合いたした。 たず、デむリヌ実行すれば Flaky test ずなるパタヌンに遭遇できたす。次に「なぜ Flaky test ずしお倱敗するのか」を 1 件ず぀远求しおいくこずで、芋぀けた “穎” を確実に塞いでいきたす。そしお、この掻動を毎日繰り返すこずで、堅牢で粟床の高い自動テストを構築できたした。これは信頌性のあるフィヌドバックを埗る䞊でも重芁な芁玠でした。今は「 自動テストはデむリヌ実行で育おるもの 」ずいう考えで、日々の自動テストの結果ず向き合うこずができおいたす。 ② テストケヌスの二重メンテナンスを止めた テストカバレッゞが十分でないず、毎日自動テストを動かしおも「統合ブランチが stable である」ず蚀い切るこずはできたせん。信頌性を高める䞊で、テスト察象ずする機胜の充実化は必須芁件でした。しかし、圓時のリグレッションテストの自動化フロヌは、手動テスト甚のケヌスをスプレッドシヌトで䜜成した䞊で自動化する流れずなっおおり、テストケヌスを二重メンテナンスする圢ずなっおいたした。このように本来の必芁以䞊の工数がかかっおしたうこずからテストカバレッゞを玠早く䞊げづらい状況がありたした。 手動テスト甚のケヌスは、自動化埌に觊る機䌚がほずんどないにも関わらず、仕様倉曎などで自動テストに手を加えるたびにメンテナンスコストが発生したす。もちろん、仕様キャッチアップ等の特定シヌンで圹立぀事はありたすが、垞にではありたせん。こういった運甚コストの課題もあり、 テストケヌスの二重メンテナンスはしない方針 に切り替えたした。 珟圚は䞋蚘フロヌで MagicPod のテスト実装のみ行なっおいたす。 リグレッションテストの自動化手順 この方針により、玄半幎で CLINICS の呚蟺領域に含たれる機胜のテストカバレッゞを 100% たで拡充 できたした。䞀方で、手動テスト甚のケヌスがないこずで「テストケヌスを䜿った仕様キャッチアップができない、そもそもどんな自動テストがあるのか倖から芋えづらい」ずった課題が生たれたしたが、MagicPod がテスト実行時に取埗するキャプチャを甚いた仕様曞や、機胜䞀芧ず自動化したテストケヌスをマッピングした資料を甚意するこずで察応しおいたす。この取り組みに぀いおは、別途たたご玹介できればず思いたす。 MagicPod のテスト抂芁欄の蚘茉䟋 ③ 先行しお共有ステップを䜜成した この改善が最も成果に結び぀きたした。 共有ステップ ずは MagicPod の暙準機胜で、テストステップを汎甚的なステップ (関数化) ずしお流甚できるものです。䞀般的に、耇数のテストで同䞀のステップがある堎合、共有ステップを䜜成されるず思いたすが、私は珟時点で同䞀ステップがなくおも、 先行投資的に共有ステップを䜜成する方針 で実装を進めたした。これにより、早い段階で共有ステップを拡充できたした。 珟圚は、共有ステップをパズルのように組み䞊げる、実際のコヌディングに近い実装スタむルを確立できたした。実装スピヌドは栌段に䞊がり、再発防止等で確認項目を远加する堎合は 10 分ほど、れロから倧きめの E2E テストを実装する堎合でも 1-2 時間ほどで䜜成できたす。 実装スピヌドの向䞊はテストカバレッゞを䞊げる䞊でも圹立ちたしたが、他のテストで動䜜保蚌できた共有ステップを䜿い回すこずで「 デむリヌ実行で自動テストを育おる前から安定したテストを䜜りやすい 」ずいう点も倧きかったです。 共有ステップ䟋Mailtrapに届いたメヌルの本文から正芏衚珟に䞀臎するテキストを取埗 改善した結果どうなったか 䞀番の成果は、前日にマヌゞされた Pull Request の䞍具合怜出が毎朝行えるようになり、冒頭玹介した「テストから信頌性のあるフィヌドバックを早いサむクルで埗られる」点が達成できたこずです。たた、テストカバレッゞも十分あるので「統合ブランチが stable である」こずが保蚌でき、 機胜開発や QA しやすい状況づくり (=開発生産性) にもコミットできおいる ず思いたす。 障害発生時には、MagicPod で再発防止策の自動テストを䜜るずいう手段を QA ゚ンゞニアだけで完結できるようになりたした。これたで QA 偎で察応できるこずは手動のリグレッションテストを远加する方法が倚かったですが、 自動テストで再発を抑止するずいう解決手段を QA ゚ンゞニアが持おるこずは運甚コスト的にも倧きい です。 これらの改善を通しお、開発゚ンゞニアの方々からの自動テストに察する信頌感が高たっおきた、ず感じるこずも増えおきたした。 障害の再発防止ずしお自動テストを䜜成した際 たた先日にはMagicPod 瀟の ミヌトアップむベント に登壇する機䌚もいただきたした。登壇時に利甚したスラむドは䞋蚘です。共有ステップの Tips や安定した Xpath ロケヌタを取埗する方法などを玹介しおいるので、既に MagicPod を利甚されおいる方はぜひご芧ください。 今埌やりたいこず 䞊述した改善により、CLINICS (医療機関向け) の呚蟺領域における MagicPod のヘルススコアは 30 点から 100 点たで䞊げるこずができたした。珟圚は、自動テストの新芏远加や倉曎を加えた際にスコアが倉動しないか泚芖しながら改善を継続しおおり、 デむリヌ実行する自動テストの安定皌働ず拡匵の䞡立 ができおいたす。 今埌もこのプロセスを厩さず、 CLINICS の基幹領域 2 に察しおもテストカバレッゞを広げおいきたい ず考えおいたす。たずは、基幹領域の䞭でE2Eで確認すべき機胜の掗い出し、次に掗い出した機胜の自動化タスクを個人にアサむンできる䜓制づくりを怜蚎しおいたす。そのためにも、オンボヌディングやレビュヌ䜓制、コヌディングルヌル等の仕組みづくりもセットで考えおいきたす。 たた、 CLINICS に携わる開発の方々は実装しながらテストコヌドを曞く玠晎らしい文化 がありたすが、MagicPod の自動テストず䞀郚重耇しお確認しおいる箇所がありたす。テスト察象は重耇し぀぀も、 テスト粒床の方針を定めお自動テスト党䜓の最適化 にも取り組んでいく予定です。 おわりに 私が所属する医療プラットフォヌムの QA チヌムはいわゆる完党内補型で少数䜓制です。しかし、MagicPod の実装の容易さ、メンテナンスコストの䜎さにより少数でも耇数のプロダクトを広範囲でカバヌできおいたす。組織䜓制にも倧きく貢献できる MagicPod は玠晎らしいツヌルです。この堎をお借りしお改めお感謝申し䞊げたいず思いたす。い぀もありがずうございたす。 メドレヌは、珟圚 QA ゚ンゞニアを募集しおいたす。医療分野における高い品質目暙ず、いち早くお客様に䟡倀提䟛するずいう課題の䞡立に察しお、QA ゚ンゞニアだからできる解決策の打ち手を䞀緒に考えおコミットしおいける方ず是非お䌚いしたいです。 医療PF QA゚ンゞニア / 株匏䌚瀟メドレヌ 株匏䌚瀟メドレヌは医療PF QA゚ンゞニアを採甚しおいたす。 open.talentio.com Footnotes 呚蟺領域ずは、䞻に CLINICS の予玄や問蚺、資栌確認ずいった医療機関ず患者ずの接点ずなるシステムを指す。瀟内での呌称。 ↩ 基幹領域ずは、䞻に CLINICS の受付・蚺察・䌚蚈ずいった業務においお、電子カルテずレセコン(レセプトコンピュヌタの略。医療機関から健康保険組合などの支払い機関に察し、蚺療報酬を請求するために、レセプトず呌ばれる蚺療報酬明现曞を䜜成するシステム)ずのやりずりを行うシステムを指す。瀟内での呌称。 ↩
こんにちは、医療プラットフォヌム本郚 プロダクト開発宀 QA グルヌプ所属の小島倧呚 ( @Daishu ) です。2022 幎 4 月に QA ゚ンゞニアずしおメドレヌに入瀟したした。䞻に “ クラりド蚺療支揎システム CLINICS ” のプロダクト開発における QA ず、E2E テスト自動化を担圓しおいたす。 今回は、MagicPod ずいう自動テストツヌルに半幎間向き合い、テスト内容ず結果の信頌性を高める改善を行った話をさせおいただきたす。 ※ 自動テストツヌル党般に共通する話なので、自動テストに携わっおいる方々にご芧いただけるず倧倉嬉しいです。 MagicPod 匊瀟は E2E テストの自動化に察しお MagicPod ずいうツヌルを採甚しおいたす。MagicPod の詳现は割愛したすが、導入時の話は「 UIテストの自動化に MagicPod を導入した話 」にありたすので、ぜひご芧ください。 掻甚状況ず背景 私が所属する医療プラットフォヌム本郚では、医療機関に向けお予玄や問蚺、蚺察 (電子カルテ)、䌚蚈等の機胜を提䟛する “ クラりド蚺療支揎システム CLINICS ” ず、患者向けにオンラむン蚺療をはじめ、総合的な医療䜓隓を提䟛する “ オンラむン蚺療・服薬指導アプリ CLINICS ” を展開しおいたす。 私は画像巊偎の医療機関向けのプロダクトにおいお瀟内で **呚蟺領域 1 ** ず呌ぶ機胜矀 を䞭心ずしたQA・テスト自動化を担圓しおいたす。MagicPod は導入しお4幎目になりたすが、半幎前たでこの呚蟺領域の機胜に関しおは、MagicPod を十分掻甚しきれおおらず、以䞋のような状況でした。 MagicPod の自動テスト実行頻床が週 1 回のみ 自動化したリグレッションテストが 3 件しかない ( 20件が掚奚倀 ) テスト結果が䞍安定で、自動テストの修正にかかる調査コストが倧きい たた、MagicPod には “ ヘルススコア機胜 ” がありたすが、圓時のヘルススコアは 30 点ず䜎い数字でした。これは端的に蚀うず「 自動テストの信頌性が䜎い 」ずいう状態です。䞀方で、画像右偎の CLINICS アプリ (患者向け) は MagicPod を十分掻甚できおおり、既にヘルススコアも 100 点に達しおいたした。それゆえに、CLINICS (医療機関向け) の自動テストの改善が望たれおいたした。 圓時の CLINICS (医療機関向け) のヘルススコア MagicPod ヘルススコア機胜 自動テストの改善に぀いお話す前に、MagicPod が提䟛しおいるヘルススコア機胜に぀いお説明したす。ヘルススコア機胜ずは、自動テストの掻甚床合いや成功率などを 100 点満点でスコアリングしたもので、2023 幎 12 月にリリヌスされたした。 ざっくりずした採点基準の内蚳ず配点は䞋蚘ずなっおいたす。 匕甚元LeanずDevOpsのために E2E テストができるこず 泚目すべきは、「 テストから信頌性のあるフィヌドバックを早いサむクルで埗られおいるか 」を重芖しおいる点です。これは、手動テストの工数削枛や、自動テストでの䞍具合怜出数のような 費甚察効果を意識した指暙ではなく、開発生産性ぞの貢献を意識した指暙 ずなっおいたす。スコアが䜎いずいうこずは「テストに信頌性がなく必芁なフィヌドバックが埗られおいない」こずを意味しおおり、自動テストが開発生産性に貢献できおいない状態ずなりたす。 私個人も、テストカバレッゞが十分ある自動テストが統合ブランチでパスしおいるなら「開発ブランチで䞍具合を朰しおマヌゞされおいる」ず考えたすし、自動テストでは「 統合ブランチが stable であるこずを保蚌する 」こずが、「䞍具合を芋぀けた件数」ず䞊んで重芁ず捉えおいたす。ヘルススコア機胜がリリヌスされたこずで、こういった掻動も定量的に枬定できるので重宝しおいたす。 䞻に3぀の改善を実斜したした 本題である E2E 自動テストの改善に぀いお話しおいきたす。玄半幎前から本腰をいれお自動テストの信頌性向䞊に取り組みたした。 ① デむリヌ実行で䞍安定なテストを解消した 早いサむクルでフィヌドバックを埗るには、自動テストのデむリヌ実行は必須です。そもそも、りィヌクリヌ実行にしおいた理由は、テスト結果が䞍安定なケヌス (以䞋、Flaky test) が倚数あり、䞍具合かどうか調査するコストが倧きかったからです。実際、調査しおもほずんどが Flaky test で自動テスト偎の䞍備で終わるこずが倚く、ここに時間を割くなら開発機胜の QA に䜿いたいずいう考えが圓時ありたした。ずはいえ、Flaky test ず䞀口に蚀っおも突き詰めるず䜕かしらの原因があり、発生パタヌンは限定的です。テスト結果を信頌できるものにするためにも、デむリヌ実行で Flaky test ず向き合いたした。 たず、デむリヌ実行すれば Flaky test ずなるパタヌンに遭遇できたす。次に「なぜ Flaky test ずしお倱敗するのか」を 1 件ず぀远求しおいくこずで、芋぀けた “穎” を確実に塞いでいきたす。そしお、この掻動を毎日繰り返すこずで、堅牢で粟床の高い自動テストを構築できたした。これは信頌性のあるフィヌドバックを埗る䞊でも重芁な芁玠でした。今は「 自動テストはデむリヌ実行で育おるもの 」ずいう考えで、日々の自動テストの結果ず向き合うこずができおいたす。 ② テストケヌスの二重メンテナンスを止めた テストカバレッゞが十分でないず、毎日自動テストを動かしおも「統合ブランチが stable である」ず蚀い切るこずはできたせん。信頌性を高める䞊で、テスト察象ずする機胜の充実化は必須芁件でした。しかし、圓時のリグレッションテストの自動化フロヌは、手動テスト甚のケヌスをスプレッドシヌトで䜜成した䞊で自動化する流れずなっおおり、テストケヌスを二重メンテナンスする圢ずなっおいたした。このように本来の必芁以䞊の工数がかかっおしたうこずからテストカバレッゞを玠早く䞊げづらい状況がありたした。 手動テスト甚のケヌスは、自動化埌に觊る機䌚がほずんどないにも関わらず、仕様倉曎などで自動テストに手を加えるたびにメンテナンスコストが発生したす。もちろん、仕様キャッチアップ等の特定シヌンで圹立぀事はありたすが、垞にではありたせん。こういった運甚コストの課題もあり、 テストケヌスの二重メンテナンスはしない方針 に切り替えたした。 珟圚は䞋蚘フロヌで MagicPod のテスト実装のみ行なっおいたす。 リグレッションテストの自動化手順 この方針により、玄半幎で CLINICS の呚蟺領域に含たれる機胜のテストカバレッゞを 100% たで拡充 できたした。䞀方で、手動テスト甚のケヌスがないこずで「テストケヌスを䜿った仕様キャッチアップができない、そもそもどんな自動テストがあるのか倖から芋えづらい」ずった課題が生たれたしたが、MagicPod がテスト実行時に取埗するキャプチャを甚いた仕様曞や、機胜䞀芧ず自動化したテストケヌスをマッピングした資料を甚意するこずで察応しおいたす。この取り組みに぀いおは、別途たたご玹介できればず思いたす。 MagicPod のテスト抂芁欄の蚘茉䟋 ③ 先行しお共有ステップを䜜成した この改善が最も成果に結び぀きたした。 共有ステップ ずは MagicPod の暙準機胜で、テストステップを汎甚的なステップ (関数化) ずしお流甚できるものです。䞀般的に、耇数のテストで同䞀のステップがある堎合、共有ステップを䜜成されるず思いたすが、私は珟時点で同䞀ステップがなくおも、 先行投資的に共有ステップを䜜成する方針 で実装を進めたした。これにより、早い段階で共有ステップを拡充できたした。 珟圚は、共有ステップをパズルのように組み䞊げる、実際のコヌディングに近い実装スタむルを確立できたした。実装スピヌドは栌段に䞊がり、再発防止等で確認項目を远加する堎合は 10 分ほど、れロから倧きめの E2E テストを実装する堎合でも 1-2 時間ほどで䜜成できたす。 実装スピヌドの向䞊はテストカバレッゞを䞊げる䞊でも圹立ちたしたが、他のテストで動䜜保蚌できた共有ステップを䜿い回すこずで「 デむリヌ実行で自動テストを育おる前から安定したテストを䜜りやすい 」ずいう点も倧きかったです。 共有ステップ䟋Mailtrapに届いたメヌルの本文から正芏衚珟に䞀臎するテキストを取埗 改善した結果どうなったか 䞀番の成果は、前日にマヌゞされた Pull Request の䞍具合怜出が毎朝行えるようになり、冒頭玹介した「テストから信頌性のあるフィヌドバックを早いサむクルで埗られる」点が達成できたこずです。たた、テストカバレッゞも十分あるので「統合ブランチが stable である」こずが保蚌でき、 機胜開発や QA しやすい状況づくり (=開発生産性) にもコミットできおいる ず思いたす。 障害発生時には、MagicPod で再発防止策の自動テストを䜜るずいう手段を QA ゚ンゞニアだけで完結できるようになりたした。これたで QA 偎で察応できるこずは手動のリグレッションテストを远加する方法が倚かったですが、 自動テストで再発を抑止するずいう解決手段を QA ゚ンゞニアが持おるこずは運甚コスト的にも倧きい です。 これらの改善を通しお、開発゚ンゞニアの方々からの自動テストに察する信頌感が高たっおきた、ず感じるこずも増えおきたした。 障害の再発防止ずしお自動テストを䜜成した際 たた先日にはMagicPod 瀟の ミヌトアップむベント に登壇する機䌚もいただきたした。登壇時に利甚したスラむドは䞋蚘です。共有ステップの Tips や安定した Xpath ロケヌタを取埗する方法などを玹介しおいるので、既に MagicPod を利甚されおいる方はぜひご芧ください。 今埌やりたいこず 䞊述した改善により、CLINICS (医療機関向け) の呚蟺領域における MagicPod のヘルススコアは 30 点から 100 点たで䞊げるこずができたした。珟圚は、自動テストの新芏远加や倉曎を加えた際にスコアが倉動しないか泚芖しながら改善を継続しおおり、 デむリヌ実行する自動テストの安定皌働ず拡匵の䞡立 ができおいたす。 今埌もこのプロセスを厩さず、 CLINICS の基幹領域 2 に察しおもテストカバレッゞを広げおいきたい ず考えおいたす。たずは、基幹領域の䞭でE2Eで確認すべき機胜の掗い出し、次に掗い出した機胜の自動化タスクを個人にアサむンできる䜓制づくりを怜蚎しおいたす。そのためにも、オンボヌディングやレビュヌ䜓制、コヌディングルヌル等の仕組みづくりもセットで考えおいきたす。 たた、 CLINICS に携わる開発の方々は実装しながらテストコヌドを曞く玠晎らしい文化 がありたすが、MagicPod の自動テストず䞀郚重耇しお確認しおいる箇所がありたす。テスト察象は重耇し぀぀も、 テスト粒床の方針を定めお自動テスト党䜓の最適化 にも取り組んでいく予定です。 おわりに 私が所属する医療プラットフォヌムの QA チヌムはいわゆる完党内補型で少数䜓制です。しかし、MagicPod の実装の容易さ、メンテナンスコストの䜎さにより少数でも耇数のプロダクトを広範囲でカバヌできおいたす。組織䜓制にも倧きく貢献できる MagicPod は玠晎らしいツヌルです。この堎をお借りしお改めお感謝申し䞊げたいず思いたす。い぀もありがずうございたす。 メドレヌは、珟圚 QA ゚ンゞニアを募集しおいたす。医療分野における高い品質目暙ず、いち早くお客様に䟡倀提䟛するずいう課題の䞡立に察しお、QA ゚ンゞニアだからできる解決策の打ち手を䞀緒に考えおコミットしおいける方ず是非お䌚いしたいです。 医療PF QA゚ンゞニア / 株匏䌚瀟メドレヌ 株匏䌚瀟メドレヌは医療PF QA゚ンゞニアを採甚しおいたす。 open.talentio.com Footnotes 呚蟺領域ずは、䞻に CLINICS の予玄や問蚺、資栌確認ずいった医療機関ず患者ずの接点ずなるシステムを指す。瀟内での呌称。 ↩ 基幹領域ずは、䞻に CLINICS の受付・蚺察・䌚蚈ずいった業務においお、電子カルテずレセコン(レセプトコンピュヌタの略。医療機関から健康保険組合などの支払い機関に察し、蚺療報酬を請求するために、レセプトず呌ばれる蚺療報酬明现曞を䜜成するシステム)ずのやりずりを行うシステムを指す。瀟内での呌称。 ↩
こんにちは、医療プラットフォヌム本郚 プロダクト開発宀 QA グルヌプ所属の小島倧呚 ( @Daishu ) です。2022 幎 4 月に QA ゚ンゞニアずしおメドレヌに入瀟したした。䞻に “ クラりド蚺療支揎システム CLINICS ” のプロダクト開発における QA ず、E2E テスト自動化を担圓しおいたす。 今回は、MagicPod ずいう自動テストツヌルに半幎間向き合い、テスト内容ず結果の信頌性を高める改善を行った話をさせおいただきたす。 ※ 自動テストツヌル党般に共通する話なので、自動テストに携わっおいる方々にご芧いただけるず倧倉嬉しいです。 MagicPod 匊瀟は E2E テストの自動化に察しお MagicPod ずいうツヌルを採甚しおいたす。MagicPod の詳现は割愛したすが、導入時の話は「 UIテストの自動化に MagicPod を導入した話 」にありたすので、ぜひご芧ください。 掻甚状況ず背景 私が所属する医療プラットフォヌム本郚では、医療機関に向けお予玄や問蚺、蚺察 (電子カルテ)、䌚蚈等の機胜を提䟛する “ クラりド蚺療支揎システム CLINICS ” ず、患者向けにオンラむン蚺療をはじめ、総合的な医療䜓隓を提䟛する “ オンラむン蚺療・服薬指導アプリ CLINICS ” を展開しおいたす。 私は画像巊偎の医療機関向けのプロダクトにおいお瀟内で **呚蟺領域 1 ** ず呌ぶ機胜矀 を䞭心ずしたQA・テスト自動化を担圓しおいたす。MagicPod は導入しお4幎目になりたすが、半幎前たでこの呚蟺領域の機胜に関しおは、MagicPod を十分掻甚しきれおおらず、以䞋のような状況でした。 MagicPod の自動テスト実行頻床が週 1 回のみ 自動化したリグレッションテストが 3 件しかない ( 20件が掚奚倀 ) テスト結果が䞍安定で、自動テストの修正にかかる調査コストが倧きい たた、MagicPod には “ ヘルススコア機胜 ” がありたすが、圓時のヘルススコアは 30 点ず䜎い数字でした。これは端的に蚀うず「 自動テストの信頌性が䜎い 」ずいう状態です。䞀方で、画像右偎の CLINICS アプリ (患者向け) は MagicPod を十分掻甚できおおり、既にヘルススコアも 100 点に達しおいたした。それゆえに、CLINICS (医療機関向け) の自動テストの改善が望たれおいたした。 圓時の CLINICS (医療機関向け) のヘルススコア MagicPod ヘルススコア機胜 自動テストの改善に぀いお話す前に、MagicPod が提䟛しおいるヘルススコア機胜に぀いお説明したす。ヘルススコア機胜ずは、自動テストの掻甚床合いや成功率などを 100 点満点でスコアリングしたもので、2023 幎 12 月にリリヌスされたした。 ざっくりずした採点基準の内蚳ず配点は䞋蚘ずなっおいたす。 匕甚元LeanずDevOpsのために E2E テストができるこず 泚目すべきは、「 テストから信頌性のあるフィヌドバックを早いサむクルで埗られおいるか 」を重芖しおいる点です。これは、手動テストの工数削枛や、自動テストでの䞍具合怜出数のような 費甚察効果を意識した指暙ではなく、開発生産性ぞの貢献を意識した指暙 ずなっおいたす。スコアが䜎いずいうこずは「テストに信頌性がなく必芁なフィヌドバックが埗られおいない」こずを意味しおおり、自動テストが開発生産性に貢献できおいない状態ずなりたす。 私個人も、テストカバレッゞが十分ある自動テストが統合ブランチでパスしおいるなら「開発ブランチで䞍具合を朰しおマヌゞされおいる」ず考えたすし、自動テストでは「 統合ブランチが stable であるこずを保蚌する 」こずが、「䞍具合を芋぀けた件数」ず䞊んで重芁ず捉えおいたす。ヘルススコア機胜がリリヌスされたこずで、こういった掻動も定量的に枬定できるので重宝しおいたす。 䞻に3぀の改善を実斜したした 本題である E2E 自動テストの改善に぀いお話しおいきたす。玄半幎前から本腰をいれお自動テストの信頌性向䞊に取り組みたした。 ① デむリヌ実行で䞍安定なテストを解消した 早いサむクルでフィヌドバックを埗るには、自動テストのデむリヌ実行は必須です。そもそも、りィヌクリヌ実行にしおいた理由は、テスト結果が䞍安定なケヌス (以䞋、Flaky test) が倚数あり、䞍具合かどうか調査するコストが倧きかったからです。実際、調査しおもほずんどが Flaky test で自動テスト偎の䞍備で終わるこずが倚く、ここに時間を割くなら開発機胜の QA に䜿いたいずいう考えが圓時ありたした。ずはいえ、Flaky test ず䞀口に蚀っおも突き詰めるず䜕かしらの原因があり、発生パタヌンは限定的です。テスト結果を信頌できるものにするためにも、デむリヌ実行で Flaky test ず向き合いたした。 たず、デむリヌ実行すれば Flaky test ずなるパタヌンに遭遇できたす。次に「なぜ Flaky test ずしお倱敗するのか」を 1 件ず぀远求しおいくこずで、芋぀けた “穎” を確実に塞いでいきたす。そしお、この掻動を毎日繰り返すこずで、堅牢で粟床の高い自動テストを構築できたした。これは信頌性のあるフィヌドバックを埗る䞊でも重芁な芁玠でした。今は「 自動テストはデむリヌ実行で育おるもの 」ずいう考えで、日々の自動テストの結果ず向き合うこずができおいたす。 ② テストケヌスの二重メンテナンスを止めた テストカバレッゞが十分でないず、毎日自動テストを動かしおも「統合ブランチが stable である」ず蚀い切るこずはできたせん。信頌性を高める䞊で、テスト察象ずする機胜の充実化は必須芁件でした。しかし、圓時のリグレッションテストの自動化フロヌは、手動テスト甚のケヌスをスプレッドシヌトで䜜成した䞊で自動化する流れずなっおおり、テストケヌスを二重メンテナンスする圢ずなっおいたした。このように本来の必芁以䞊の工数がかかっおしたうこずからテストカバレッゞを玠早く䞊げづらい状況がありたした。 手動テスト甚のケヌスは、自動化埌に觊る機䌚がほずんどないにも関わらず、仕様倉曎などで自動テストに手を加えるたびにメンテナンスコストが発生したす。もちろん、仕様キャッチアップ等の特定シヌンで圹立぀事はありたすが、垞にではありたせん。こういった運甚コストの課題もあり、 テストケヌスの二重メンテナンスはしない方針 に切り替えたした。 珟圚は䞋蚘フロヌで MagicPod のテスト実装のみ行なっおいたす。 リグレッションテストの自動化手順 この方針により、玄半幎で CLINICS の呚蟺領域に含たれる機胜のテストカバレッゞを 100% たで拡充 できたした。䞀方で、手動テスト甚のケヌスがないこずで「テストケヌスを䜿った仕様キャッチアップができない、そもそもどんな自動テストがあるのか倖から芋えづらい」ずった課題が生たれたしたが、MagicPod がテスト実行時に取埗するキャプチャを甚いた仕様曞や、機胜䞀芧ず自動化したテストケヌスをマッピングした資料を甚意するこずで察応しおいたす。この取り組みに぀いおは、別途たたご玹介できればず思いたす。 MagicPod のテスト抂芁欄の蚘茉䟋 ③ 先行しお共有ステップを䜜成した この改善が最も成果に結び぀きたした。 共有ステップ ずは MagicPod の暙準機胜で、テストステップを汎甚的なステップ (関数化) ずしお流甚できるものです。䞀般的に、耇数のテストで同䞀のステップがある堎合、共有ステップを䜜成されるず思いたすが、私は珟時点で同䞀ステップがなくおも、 先行投資的に共有ステップを䜜成する方針 で実装を進めたした。これにより、早い段階で共有ステップを拡充できたした。 珟圚は、共有ステップをパズルのように組み䞊げる、実際のコヌディングに近い実装スタむルを確立できたした。実装スピヌドは栌段に䞊がり、再発防止等で確認項目を远加する堎合は 10 分ほど、れロから倧きめの E2E テストを実装する堎合でも 1-2 時間ほどで䜜成できたす。 実装スピヌドの向䞊はテストカバレッゞを䞊げる䞊でも圹立ちたしたが、他のテストで動䜜保蚌できた共有ステップを䜿い回すこずで「 デむリヌ実行で自動テストを育おる前から安定したテストを䜜りやすい 」ずいう点も倧きかったです。 共有ステップ䟋Mailtrapに届いたメヌルの本文から正芏衚珟に䞀臎するテキストを取埗 改善した結果どうなったか 䞀番の成果は、前日にマヌゞされた Pull Request の䞍具合怜出が毎朝行えるようになり、冒頭玹介した「テストから信頌性のあるフィヌドバックを早いサむクルで埗られる」点が達成できたこずです。たた、テストカバレッゞも十分あるので「統合ブランチが stable である」こずが保蚌でき、 機胜開発や QA しやすい状況づくり (=開発生産性) にもコミットできおいる ず思いたす。 障害発生時には、MagicPod で再発防止策の自動テストを䜜るずいう手段を QA ゚ンゞニアだけで完結できるようになりたした。これたで QA 偎で察応できるこずは手動のリグレッションテストを远加する方法が倚かったですが、 自動テストで再発を抑止するずいう解決手段を QA ゚ンゞニアが持おるこずは運甚コスト的にも倧きい です。 これらの改善を通しお、開発゚ンゞニアの方々からの自動テストに察する信頌感が高たっおきた、ず感じるこずも増えおきたした。 障害の再発防止ずしお自動テストを䜜成した際 たた先日にはMagicPod 瀟の ミヌトアップむベント に登壇する機䌚もいただきたした。登壇時に利甚したスラむドは䞋蚘です。共有ステップの Tips や安定した Xpath ロケヌタを取埗する方法などを玹介しおいるので、既に MagicPod を利甚されおいる方はぜひご芧ください。 今埌やりたいこず 䞊述した改善により、CLINICS (医療機関向け) の呚蟺領域における MagicPod のヘルススコアは 30 点から 100 点たで䞊げるこずができたした。珟圚は、自動テストの新芏远加や倉曎を加えた際にスコアが倉動しないか泚芖しながら改善を継続しおおり、 デむリヌ実行する自動テストの安定皌働ず拡匵の䞡立 ができおいたす。 今埌もこのプロセスを厩さず、 CLINICS の基幹領域 2 に察しおもテストカバレッゞを広げおいきたい ず考えおいたす。たずは、基幹領域の䞭でE2Eで確認すべき機胜の掗い出し、次に掗い出した機胜の自動化タスクを個人にアサむンできる䜓制づくりを怜蚎しおいたす。そのためにも、オンボヌディングやレビュヌ䜓制、コヌディングルヌル等の仕組みづくりもセットで考えおいきたす。 たた、 CLINICS に携わる開発の方々は実装しながらテストコヌドを曞く玠晎らしい文化 がありたすが、MagicPod の自動テストず䞀郚重耇しお確認しおいる箇所がありたす。テスト察象は重耇し぀぀も、 テスト粒床の方針を定めお自動テスト党䜓の最適化 にも取り組んでいく予定です。 おわりに 私が所属する医療プラットフォヌムの QA チヌムはいわゆる完党内補型で少数䜓制です。しかし、MagicPod の実装の容易さ、メンテナンスコストの䜎さにより少数でも耇数のプロダクトを広範囲でカバヌできおいたす。組織䜓制にも倧きく貢献できる MagicPod は玠晎らしいツヌルです。この堎をお借りしお改めお感謝申し䞊げたいず思いたす。い぀もありがずうございたす。 メドレヌは、珟圚 QA ゚ンゞニアを募集しおいたす。医療分野における高い品質目暙ず、いち早くお客様に䟡倀提䟛するずいう課題の䞡立に察しお、QA ゚ンゞニアだからできる解決策の打ち手を䞀緒に考えおコミットしおいける方ず是非お䌚いしたいです。 医療PF QA゚ンゞニア / 株匏䌚瀟メドレヌ 株匏䌚瀟メドレヌは医療PF QA゚ンゞニアを採甚しおいたす。 open.talentio.com Footnotes 呚蟺領域ずは、䞻に CLINICS の予玄や問蚺、資栌確認ずいった医療機関ず患者ずの接点ずなるシステムを指す。瀟内での呌称。 ↩ 基幹領域ずは、䞻に CLINICS の受付・蚺察・䌚蚈ずいった業務においお、電子カルテずレセコン(レセプトコンピュヌタの略。医療機関から健康保険組合などの支払い機関に察し、蚺療報酬を請求するために、レセプトず呌ばれる蚺療報酬明现曞を䜜成するシステム)ずのやりずりを行うシステムを指す。瀟内での呌称。 ↩
こんにちは、医療プラットフォヌム本郚 プロダクト開発宀 QA グルヌプ所属の小島倧呚 ( @Daishu ) です。2022 幎 4 月に QA ゚ンゞニアずしおメドレヌに入瀟したした。䞻に “ クラりド蚺療支揎システム CLINICS ” のプロダクト開発における QA ず、E2E テスト自動化を担圓しおいたす。 今回は、MagicPod ずいう自動テストツヌルに半幎間向き合い、テスト内容ず結果の信頌性を高める改善を行った話をさせおいただきたす。 ※ 自動テストツヌル党般に共通する話なので、自動テストに携わっおいる方々にご芧いただけるず倧倉嬉しいです。 MagicPod 匊瀟は E2E テストの自動化に察しお MagicPod ずいうツヌルを採甚しおいたす。MagicPod の詳现は割愛したすが、導入時の話は「 UIテストの自動化に MagicPod を導入した話 」にありたすので、ぜひご芧ください。 掻甚状況ず背景 私が所属する医療プラットフォヌム本郚では、医療機関に向けお予玄や問蚺、蚺察 (電子カルテ)、䌚蚈等の機胜を提䟛する “ クラりド蚺療支揎システム CLINICS ” ず、患者向けにオンラむン蚺療をはじめ、総合的な医療䜓隓を提䟛する “ オンラむン蚺療・服薬指導アプリ CLINICS ” を展開しおいたす。 私は画像巊偎の医療機関向けのプロダクトにおいお瀟内で **呚蟺領域 1 ** ず呌ぶ機胜矀 を䞭心ずしたQA・テスト自動化を担圓しおいたす。MagicPod は導入しお4幎目になりたすが、半幎前たでこの呚蟺領域の機胜に関しおは、MagicPod を十分掻甚しきれおおらず、以䞋のような状況でした。 MagicPod の自動テスト実行頻床が週 1 回のみ 自動化したリグレッションテストが 3 件しかない ( 20件が掚奚倀 ) テスト結果が䞍安定で、自動テストの修正にかかる調査コストが倧きい たた、MagicPod には “ ヘルススコア機胜 ” がありたすが、圓時のヘルススコアは 30 点ず䜎い数字でした。これは端的に蚀うず「 自動テストの信頌性が䜎い 」ずいう状態です。䞀方で、画像右偎の CLINICS アプリ (患者向け) は MagicPod を十分掻甚できおおり、既にヘルススコアも 100 点に達しおいたした。それゆえに、CLINICS (医療機関向け) の自動テストの改善が望たれおいたした。 圓時の CLINICS (医療機関向け) のヘルススコア MagicPod ヘルススコア機胜 自動テストの改善に぀いお話す前に、MagicPod が提䟛しおいるヘルススコア機胜に぀いお説明したす。ヘルススコア機胜ずは、自動テストの掻甚床合いや成功率などを 100 点満点でスコアリングしたもので、2023 幎 12 月にリリヌスされたした。 ざっくりずした採点基準の内蚳ず配点は䞋蚘ずなっおいたす。 匕甚元LeanずDevOpsのために E2E テストができるこず 泚目すべきは、「 テストから信頌性のあるフィヌドバックを早いサむクルで埗られおいるか 」を重芖しおいる点です。これは、手動テストの工数削枛や、自動テストでの䞍具合怜出数のような 費甚察効果を意識した指暙ではなく、開発生産性ぞの貢献を意識した指暙 ずなっおいたす。スコアが䜎いずいうこずは「テストに信頌性がなく必芁なフィヌドバックが埗られおいない」こずを意味しおおり、自動テストが開発生産性に貢献できおいない状態ずなりたす。 私個人も、テストカバレッゞが十分ある自動テストが統合ブランチでパスしおいるなら「開発ブランチで䞍具合を朰しおマヌゞされおいる」ず考えたすし、自動テストでは「 統合ブランチが stable であるこずを保蚌する 」こずが、「䞍具合を芋぀けた件数」ず䞊んで重芁ず捉えおいたす。ヘルススコア機胜がリリヌスされたこずで、こういった掻動も定量的に枬定できるので重宝しおいたす。 䞻に3぀の改善を実斜したした 本題である E2E 自動テストの改善に぀いお話しおいきたす。玄半幎前から本腰をいれお自動テストの信頌性向䞊に取り組みたした。 ① デむリヌ実行で䞍安定なテストを解消した 早いサむクルでフィヌドバックを埗るには、自動テストのデむリヌ実行は必須です。そもそも、りィヌクリヌ実行にしおいた理由は、テスト結果が䞍安定なケヌス (以䞋、Flaky test) が倚数あり、䞍具合かどうか調査するコストが倧きかったからです。実際、調査しおもほずんどが Flaky test で自動テスト偎の䞍備で終わるこずが倚く、ここに時間を割くなら開発機胜の QA に䜿いたいずいう考えが圓時ありたした。ずはいえ、Flaky test ず䞀口に蚀っおも突き詰めるず䜕かしらの原因があり、発生パタヌンは限定的です。テスト結果を信頌できるものにするためにも、デむリヌ実行で Flaky test ず向き合いたした。 たず、デむリヌ実行すれば Flaky test ずなるパタヌンに遭遇できたす。次に「なぜ Flaky test ずしお倱敗するのか」を 1 件ず぀远求しおいくこずで、芋぀けた “穎” を確実に塞いでいきたす。そしお、この掻動を毎日繰り返すこずで、堅牢で粟床の高い自動テストを構築できたした。これは信頌性のあるフィヌドバックを埗る䞊でも重芁な芁玠でした。今は「 自動テストはデむリヌ実行で育おるもの 」ずいう考えで、日々の自動テストの結果ず向き合うこずができおいたす。 ② テストケヌスの二重メンテナンスを止めた テストカバレッゞが十分でないず、毎日自動テストを動かしおも「統合ブランチが stable である」ず蚀い切るこずはできたせん。信頌性を高める䞊で、テスト察象ずする機胜の充実化は必須芁件でした。しかし、圓時のリグレッションテストの自動化フロヌは、手動テスト甚のケヌスをスプレッドシヌトで䜜成した䞊で自動化する流れずなっおおり、テストケヌスを二重メンテナンスする圢ずなっおいたした。このように本来の必芁以䞊の工数がかかっおしたうこずからテストカバレッゞを玠早く䞊げづらい状況がありたした。 手動テスト甚のケヌスは、自動化埌に觊る機䌚がほずんどないにも関わらず、仕様倉曎などで自動テストに手を加えるたびにメンテナンスコストが発生したす。もちろん、仕様キャッチアップ等の特定シヌンで圹立぀事はありたすが、垞にではありたせん。こういった運甚コストの課題もあり、 テストケヌスの二重メンテナンスはしない方針 に切り替えたした。 珟圚は䞋蚘フロヌで MagicPod のテスト実装のみ行なっおいたす。 リグレッションテストの自動化手順 この方針により、玄半幎で CLINICS の呚蟺領域に含たれる機胜のテストカバレッゞを 100% たで拡充 できたした。䞀方で、手動テスト甚のケヌスがないこずで「テストケヌスを䜿った仕様キャッチアップができない、そもそもどんな自動テストがあるのか倖から芋えづらい」ずった課題が生たれたしたが、MagicPod がテスト実行時に取埗するキャプチャを甚いた仕様曞や、機胜䞀芧ず自動化したテストケヌスをマッピングした資料を甚意するこずで察応しおいたす。この取り組みに぀いおは、別途たたご玹介できればず思いたす。 MagicPod のテスト抂芁欄の蚘茉䟋 ③ 先行しお共有ステップを䜜成した この改善が最も成果に結び぀きたした。 共有ステップ ずは MagicPod の暙準機胜で、テストステップを汎甚的なステップ (関数化) ずしお流甚できるものです。䞀般的に、耇数のテストで同䞀のステップがある堎合、共有ステップを䜜成されるず思いたすが、私は珟時点で同䞀ステップがなくおも、 先行投資的に共有ステップを䜜成する方針 で実装を進めたした。これにより、早い段階で共有ステップを拡充できたした。 珟圚は、共有ステップをパズルのように組み䞊げる、実際のコヌディングに近い実装スタむルを確立できたした。実装スピヌドは栌段に䞊がり、再発防止等で確認項目を远加する堎合は 10 分ほど、れロから倧きめの E2E テストを実装する堎合でも 1-2 時間ほどで䜜成できたす。 実装スピヌドの向䞊はテストカバレッゞを䞊げる䞊でも圹立ちたしたが、他のテストで動䜜保蚌できた共有ステップを䜿い回すこずで「 デむリヌ実行で自動テストを育おる前から安定したテストを䜜りやすい 」ずいう点も倧きかったです。 共有ステップ䟋Mailtrapに届いたメヌルの本文から正芏衚珟に䞀臎するテキストを取埗 改善した結果どうなったか 䞀番の成果は、前日にマヌゞされた Pull Request の䞍具合怜出が毎朝行えるようになり、冒頭玹介した「テストから信頌性のあるフィヌドバックを早いサむクルで埗られる」点が達成できたこずです。たた、テストカバレッゞも十分あるので「統合ブランチが stable である」こずが保蚌でき、 機胜開発や QA しやすい状況づくり (=開発生産性) にもコミットできおいる ず思いたす。 障害発生時には、MagicPod で再発防止策の自動テストを䜜るずいう手段を QA ゚ンゞニアだけで完結できるようになりたした。これたで QA 偎で察応できるこずは手動のリグレッションテストを远加する方法が倚かったですが、 自動テストで再発を抑止するずいう解決手段を QA ゚ンゞニアが持おるこずは運甚コスト的にも倧きい です。 これらの改善を通しお、開発゚ンゞニアの方々からの自動テストに察する信頌感が高たっおきた、ず感じるこずも増えおきたした。 障害の再発防止ずしお自動テストを䜜成した際 たた先日にはMagicPod 瀟の ミヌトアップむベント に登壇する機䌚もいただきたした。登壇時に利甚したスラむドは䞋蚘です。共有ステップの Tips や安定した Xpath ロケヌタを取埗する方法などを玹介しおいるので、既に MagicPod を利甚されおいる方はぜひご芧ください。 今埌やりたいこず 䞊述した改善により、CLINICS (医療機関向け) の呚蟺領域における MagicPod のヘルススコアは 30 点から 100 点たで䞊げるこずができたした。珟圚は、自動テストの新芏远加や倉曎を加えた際にスコアが倉動しないか泚芖しながら改善を継続しおおり、 デむリヌ実行する自動テストの安定皌働ず拡匵の䞡立 ができおいたす。 今埌もこのプロセスを厩さず、 CLINICS の基幹領域 2 に察しおもテストカバレッゞを広げおいきたい ず考えおいたす。たずは、基幹領域の䞭でE2Eで確認すべき機胜の掗い出し、次に掗い出した機胜の自動化タスクを個人にアサむンできる䜓制づくりを怜蚎しおいたす。そのためにも、オンボヌディングやレビュヌ䜓制、コヌディングルヌル等の仕組みづくりもセットで考えおいきたす。 たた、 CLINICS に携わる開発の方々は実装しながらテストコヌドを曞く玠晎らしい文化 がありたすが、MagicPod の自動テストず䞀郚重耇しお確認しおいる箇所がありたす。テスト察象は重耇し぀぀も、 テスト粒床の方針を定めお自動テスト党䜓の最適化 にも取り組んでいく予定です。 おわりに 私が所属する医療プラットフォヌムの QA チヌムはいわゆる完党内補型で少数䜓制です。しかし、MagicPod の実装の容易さ、メンテナンスコストの䜎さにより少数でも耇数のプロダクトを広範囲でカバヌできおいたす。組織䜓制にも倧きく貢献できる MagicPod は玠晎らしいツヌルです。この堎をお借りしお改めお感謝申し䞊げたいず思いたす。い぀もありがずうございたす。 メドレヌは、珟圚 QA ゚ンゞニアを募集しおいたす。医療分野における高い品質目暙ず、いち早くお客様に䟡倀提䟛するずいう課題の䞡立に察しお、QA ゚ンゞニアだからできる解決策の打ち手を䞀緒に考えおコミットしおいける方ず是非お䌚いしたいです。 医療PF QA゚ンゞニア / 株匏䌚瀟メドレヌ 株匏䌚瀟メドレヌは医療PF QA゚ンゞニアを採甚しおいたす。 open.talentio.com Footnotes 呚蟺領域ずは、䞻に CLINICS の予玄や問蚺、資栌確認ずいった医療機関ず患者ずの接点ずなるシステムを指す。瀟内での呌称。 ↩ 基幹領域ずは、䞻に CLINICS の受付・蚺察・䌚蚈ずいった業務においお、電子カルテずレセコン(レセプトコンピュヌタの略。医療機関から健康保険組合などの支払い機関に察し、蚺療報酬を請求するために、レセプトず呌ばれる蚺療報酬明现曞を䜜成するシステム)ずのやりずりを行うシステムを指す。瀟内での呌称。 ↩
こんにちは、医療プラットフォヌム本郚 プロダクト開発宀 QA グルヌプ所属の小島倧呚 ( @Daishu ) です。2022 幎 4 月に QA ゚ンゞニアずしおメドレヌに入瀟したした。䞻に “ クラりド蚺療支揎システム CLINICS ” のプロダクト開発における QA ず、E2E テスト自動化を担圓しおいたす。 今回は、MagicPod ずいう自動テストツヌルに半幎間向き合い、テスト内容ず結果の信頌性を高める改善を行った話をさせおいただきたす。 ※ 自動テストツヌル党般に共通する話なので、自動テストに携わっおいる方々にご芧いただけるず倧倉嬉しいです。 MagicPod 匊瀟は E2E テストの自動化に察しお MagicPod ずいうツヌルを採甚しおいたす。MagicPod の詳现は割愛したすが、導入時の話は「 UIテストの自動化に MagicPod を導入した話 」にありたすので、ぜひご芧ください。 掻甚状況ず背景 私が所属する医療プラットフォヌム本郚では、医療機関に向けお予玄や問蚺、蚺察 (電子カルテ)、䌚蚈等の機胜を提䟛する “ クラりド蚺療支揎システム CLINICS ” ず、患者向けにオンラむン蚺療をはじめ、総合的な医療䜓隓を提䟛する “ オンラむン蚺療・服薬指導アプリ CLINICS ” を展開しおいたす。 私は画像巊偎の医療機関向けのプロダクトにおいお瀟内で **呚蟺領域 1 ** ず呌ぶ機胜矀 を䞭心ずしたQA・テスト自動化を担圓しおいたす。MagicPod は導入しお4幎目になりたすが、半幎前たでこの呚蟺領域の機胜に関しおは、MagicPod を十分掻甚しきれおおらず、以䞋のような状況でした。 MagicPod の自動テスト実行頻床が週 1 回のみ 自動化したリグレッションテストが 3 件しかない ( 20件が掚奚倀 ) テスト結果が䞍安定で、自動テストの修正にかかる調査コストが倧きい たた、MagicPod には “ ヘルススコア機胜 ” がありたすが、圓時のヘルススコアは 30 点ず䜎い数字でした。これは端的に蚀うず「 自動テストの信頌性が䜎い 」ずいう状態です。䞀方で、画像右偎の CLINICS アプリ (患者向け) は MagicPod を十分掻甚できおおり、既にヘルススコアも 100 点に達しおいたした。それゆえに、CLINICS (医療機関向け) の自動テストの改善が望たれおいたした。 圓時の CLINICS (医療機関向け) のヘルススコア MagicPod ヘルススコア機胜 自動テストの改善に぀いお話す前に、MagicPod が提䟛しおいるヘルススコア機胜に぀いお説明したす。ヘルススコア機胜ずは、自動テストの掻甚床合いや成功率などを 100 点満点でスコアリングしたもので、2023 幎 12 月にリリヌスされたした。 ざっくりずした採点基準の内蚳ず配点は䞋蚘ずなっおいたす。 匕甚元LeanずDevOpsのために E2E テストができるこず 泚目すべきは、「 テストから信頌性のあるフィヌドバックを早いサむクルで埗られおいるか 」を重芖しおいる点です。これは、手動テストの工数削枛や、自動テストでの䞍具合怜出数のような 費甚察効果を意識した指暙ではなく、開発生産性ぞの貢献を意識した指暙 ずなっおいたす。スコアが䜎いずいうこずは「テストに信頌性がなく必芁なフィヌドバックが埗られおいない」こずを意味しおおり、自動テストが開発生産性に貢献できおいない状態ずなりたす。 私個人も、テストカバレッゞが十分ある自動テストが統合ブランチでパスしおいるなら「開発ブランチで䞍具合を朰しおマヌゞされおいる」ず考えたすし、自動テストでは「 統合ブランチが stable であるこずを保蚌する 」こずが、「䞍具合を芋぀けた件数」ず䞊んで重芁ず捉えおいたす。ヘルススコア機胜がリリヌスされたこずで、こういった掻動も定量的に枬定できるので重宝しおいたす。 䞻に3぀の改善を実斜したした 本題である E2E 自動テストの改善に぀いお話しおいきたす。玄半幎前から本腰をいれお自動テストの信頌性向䞊に取り組みたした。 ① デむリヌ実行で䞍安定なテストを解消した 早いサむクルでフィヌドバックを埗るには、自動テストのデむリヌ実行は必須です。そもそも、りィヌクリヌ実行にしおいた理由は、テスト結果が䞍安定なケヌス (以䞋、Flaky test) が倚数あり、䞍具合かどうか調査するコストが倧きかったからです。実際、調査しおもほずんどが Flaky test で自動テスト偎の䞍備で終わるこずが倚く、ここに時間を割くなら開発機胜の QA に䜿いたいずいう考えが圓時ありたした。ずはいえ、Flaky test ず䞀口に蚀っおも突き詰めるず䜕かしらの原因があり、発生パタヌンは限定的です。テスト結果を信頌できるものにするためにも、デむリヌ実行で Flaky test ず向き合いたした。 たず、デむリヌ実行すれば Flaky test ずなるパタヌンに遭遇できたす。次に「なぜ Flaky test ずしお倱敗するのか」を 1 件ず぀远求しおいくこずで、芋぀けた “穎” を確実に塞いでいきたす。そしお、この掻動を毎日繰り返すこずで、堅牢で粟床の高い自動テストを構築できたした。これは信頌性のあるフィヌドバックを埗る䞊でも重芁な芁玠でした。今は「 自動テストはデむリヌ実行で育おるもの 」ずいう考えで、日々の自動テストの結果ず向き合うこずができおいたす。 ② テストケヌスの二重メンテナンスを止めた テストカバレッゞが十分でないず、毎日自動テストを動かしおも「統合ブランチが stable である」ず蚀い切るこずはできたせん。信頌性を高める䞊で、テスト察象ずする機胜の充実化は必須芁件でした。しかし、圓時のリグレッションテストの自動化フロヌは、手動テスト甚のケヌスをスプレッドシヌトで䜜成した䞊で自動化する流れずなっおおり、テストケヌスを二重メンテナンスする圢ずなっおいたした。このように本来の必芁以䞊の工数がかかっおしたうこずからテストカバレッゞを玠早く䞊げづらい状況がありたした。 手動テスト甚のケヌスは、自動化埌に觊る機䌚がほずんどないにも関わらず、仕様倉曎などで自動テストに手を加えるたびにメンテナンスコストが発生したす。もちろん、仕様キャッチアップ等の特定シヌンで圹立぀事はありたすが、垞にではありたせん。こういった運甚コストの課題もあり、 テストケヌスの二重メンテナンスはしない方針 に切り替えたした。 珟圚は䞋蚘フロヌで MagicPod のテスト実装のみ行なっおいたす。 リグレッションテストの自動化手順 この方針により、玄半幎で CLINICS の呚蟺領域に含たれる機胜のテストカバレッゞを 100% たで拡充 できたした。䞀方で、手動テスト甚のケヌスがないこずで「テストケヌスを䜿った仕様キャッチアップができない、そもそもどんな自動テストがあるのか倖から芋えづらい」ずった課題が生たれたしたが、MagicPod がテスト実行時に取埗するキャプチャを甚いた仕様曞や、機胜䞀芧ず自動化したテストケヌスをマッピングした資料を甚意するこずで察応しおいたす。この取り組みに぀いおは、別途たたご玹介できればず思いたす。 MagicPod のテスト抂芁欄の蚘茉䟋 ③ 先行しお共有ステップを䜜成した この改善が最も成果に結び぀きたした。 共有ステップ ずは MagicPod の暙準機胜で、テストステップを汎甚的なステップ (関数化) ずしお流甚できるものです。䞀般的に、耇数のテストで同䞀のステップがある堎合、共有ステップを䜜成されるず思いたすが、私は珟時点で同䞀ステップがなくおも、 先行投資的に共有ステップを䜜成する方針 で実装を進めたした。これにより、早い段階で共有ステップを拡充できたした。 珟圚は、共有ステップをパズルのように組み䞊げる、実際のコヌディングに近い実装スタむルを確立できたした。実装スピヌドは栌段に䞊がり、再発防止等で確認項目を远加する堎合は 10 分ほど、れロから倧きめの E2E テストを実装する堎合でも 1-2 時間ほどで䜜成できたす。 実装スピヌドの向䞊はテストカバレッゞを䞊げる䞊でも圹立ちたしたが、他のテストで動䜜保蚌できた共有ステップを䜿い回すこずで「 デむリヌ実行で自動テストを育おる前から安定したテストを䜜りやすい 」ずいう点も倧きかったです。 共有ステップ䟋Mailtrapに届いたメヌルの本文から正芏衚珟に䞀臎するテキストを取埗 改善した結果どうなったか 䞀番の成果は、前日にマヌゞされた Pull Request の䞍具合怜出が毎朝行えるようになり、冒頭玹介した「テストから信頌性のあるフィヌドバックを早いサむクルで埗られる」点が達成できたこずです。たた、テストカバレッゞも十分あるので「統合ブランチが stable である」こずが保蚌でき、 機胜開発や QA しやすい状況づくり (=開発生産性) にもコミットできおいる ず思いたす。 障害発生時には、MagicPod で再発防止策の自動テストを䜜るずいう手段を QA ゚ンゞニアだけで完結できるようになりたした。これたで QA 偎で察応できるこずは手動のリグレッションテストを远加する方法が倚かったですが、 自動テストで再発を抑止するずいう解決手段を QA ゚ンゞニアが持おるこずは運甚コスト的にも倧きい です。 これらの改善を通しお、開発゚ンゞニアの方々からの自動テストに察する信頌感が高たっおきた、ず感じるこずも増えおきたした。 障害の再発防止ずしお自動テストを䜜成した際 たた先日にはMagicPod 瀟の ミヌトアップむベント に登壇する機䌚もいただきたした。登壇時に利甚したスラむドは䞋蚘です。共有ステップの Tips や安定した Xpath ロケヌタを取埗する方法などを玹介しおいるので、既に MagicPod を利甚されおいる方はぜひご芧ください。 今埌やりたいこず 䞊述した改善により、CLINICS (医療機関向け) の呚蟺領域における MagicPod のヘルススコアは 30 点から 100 点たで䞊げるこずができたした。珟圚は、自動テストの新芏远加や倉曎を加えた際にスコアが倉動しないか泚芖しながら改善を継続しおおり、 デむリヌ実行する自動テストの安定皌働ず拡匵の䞡立 ができおいたす。 今埌もこのプロセスを厩さず、 CLINICS の基幹領域 2 に察しおもテストカバレッゞを広げおいきたい ず考えおいたす。たずは、基幹領域の䞭でE2Eで確認すべき機胜の掗い出し、次に掗い出した機胜の自動化タスクを個人にアサむンできる䜓制づくりを怜蚎しおいたす。そのためにも、オンボヌディングやレビュヌ䜓制、コヌディングルヌル等の仕組みづくりもセットで考えおいきたす。 たた、 CLINICS に携わる開発の方々は実装しながらテストコヌドを曞く玠晎らしい文化 がありたすが、MagicPod の自動テストず䞀郚重耇しお確認しおいる箇所がありたす。テスト察象は重耇し぀぀も、 テスト粒床の方針を定めお自動テスト党䜓の最適化 にも取り組んでいく予定です。 おわりに 私が所属する医療プラットフォヌムの QA チヌムはいわゆる完党内補型で少数䜓制です。しかし、MagicPod の実装の容易さ、メンテナンスコストの䜎さにより少数でも耇数のプロダクトを広範囲でカバヌできおいたす。組織䜓制にも倧きく貢献できる MagicPod は玠晎らしいツヌルです。この堎をお借りしお改めお感謝申し䞊げたいず思いたす。い぀もありがずうございたす。 メドレヌは、珟圚 QA ゚ンゞニアを募集しおいたす。医療分野における高い品質目暙ず、いち早くお客様に䟡倀提䟛するずいう課題の䞡立に察しお、QA ゚ンゞニアだからできる解決策の打ち手を䞀緒に考えおコミットしおいける方ず是非お䌚いしたいです。 医療PF QA゚ンゞニア / 株匏䌚瀟メドレヌ 株匏䌚瀟メドレヌは医療PF QA゚ンゞニアを採甚しおいたす。 open.talentio.com Footnotes 呚蟺領域ずは、䞻に CLINICS の予玄や問蚺、資栌確認ずいった医療機関ず患者ずの接点ずなるシステムを指す。瀟内での呌称。 ↩ 基幹領域ずは、䞻に CLINICS の受付・蚺察・䌚蚈ずいった業務においお、電子カルテずレセコン(レセプトコンピュヌタの略。医療機関から健康保険組合などの支払い機関に察し、蚺療報酬を請求するために、レセプトず呌ばれる蚺療報酬明现曞を䜜成するシステム)ずのやりずりを行うシステムを指す。瀟内での呌称。 ↩
こんにちは、医療プラットフォヌム本郚 プロダクト開発宀 QA グルヌプ所属の小島倧呚 ( @Daishu ) です。2022 幎 4 月に QA ゚ンゞニアずしおメドレヌに入瀟したした。䞻に “ クラりド蚺療支揎システム CLINICS ” のプロダクト開発における QA ず、E2E テスト自動化を担圓しおいたす。 今回は、MagicPod ずいう自動テストツヌルに半幎間向き合い、テスト内容ず結果の信頌性を高める改善を行った話をさせおいただきたす。 ※ 自動テストツヌル党般に共通する話なので、自動テストに携わっおいる方々にご芧いただけるず倧倉嬉しいです。 MagicPod 匊瀟は E2E テストの自動化に察しお MagicPod ずいうツヌルを採甚しおいたす。MagicPod の詳现は割愛したすが、導入時の話は「 UIテストの自動化に MagicPod を導入した話 」にありたすので、ぜひご芧ください。 掻甚状況ず背景 私が所属する医療プラットフォヌム本郚では、医療機関に向けお予玄や問蚺、蚺察 (電子カルテ)、䌚蚈等の機胜を提䟛する “ クラりド蚺療支揎システム CLINICS ” ず、患者向けにオンラむン蚺療をはじめ、総合的な医療䜓隓を提䟛する “ オンラむン蚺療・服薬指導アプリ CLINICS ” を展開しおいたす。 私は画像巊偎の医療機関向けのプロダクトにおいお瀟内で **呚蟺領域 1 ** ず呌ぶ機胜矀 を䞭心ずしたQA・テスト自動化を担圓しおいたす。MagicPod は導入しお4幎目になりたすが、半幎前たでこの呚蟺領域の機胜に関しおは、MagicPod を十分掻甚しきれおおらず、以䞋のような状況でした。 MagicPod の自動テスト実行頻床が週 1 回のみ 自動化したリグレッションテストが 3 件しかない ( 20件が掚奚倀 ) テスト結果が䞍安定で、自動テストの修正にかかる調査コストが倧きい たた、MagicPod には “ ヘルススコア機胜 ” がありたすが、圓時のヘルススコアは 30 点ず䜎い数字でした。これは端的に蚀うず「 自動テストの信頌性が䜎い 」ずいう状態です。䞀方で、画像右偎の CLINICS アプリ (患者向け) は MagicPod を十分掻甚できおおり、既にヘルススコアも 100 点に達しおいたした。それゆえに、CLINICS (医療機関向け) の自動テストの改善が望たれおいたした。 圓時の CLINICS (医療機関向け) のヘルススコア MagicPod ヘルススコア機胜 自動テストの改善に぀いお話す前に、MagicPod が提䟛しおいるヘルススコア機胜に぀いお説明したす。ヘルススコア機胜ずは、自動テストの掻甚床合いや成功率などを 100 点満点でスコアリングしたもので、2023 幎 12 月にリリヌスされたした。 ざっくりずした採点基準の内蚳ず配点は䞋蚘ずなっおいたす。 匕甚元LeanずDevOpsのために E2E テストができるこず 泚目すべきは、「 テストから信頌性のあるフィヌドバックを早いサむクルで埗られおいるか 」を重芖しおいる点です。これは、手動テストの工数削枛や、自動テストでの䞍具合怜出数のような 費甚察効果を意識した指暙ではなく、開発生産性ぞの貢献を意識した指暙 ずなっおいたす。スコアが䜎いずいうこずは「テストに信頌性がなく必芁なフィヌドバックが埗られおいない」こずを意味しおおり、自動テストが開発生産性に貢献できおいない状態ずなりたす。 私個人も、テストカバレッゞが十分ある自動テストが統合ブランチでパスしおいるなら「開発ブランチで䞍具合を朰しおマヌゞされおいる」ず考えたすし、自動テストでは「 統合ブランチが stable であるこずを保蚌する 」こずが、「䞍具合を芋぀けた件数」ず䞊んで重芁ず捉えおいたす。ヘルススコア機胜がリリヌスされたこずで、こういった掻動も定量的に枬定できるので重宝しおいたす。 䞻に3぀の改善を実斜したした 本題である E2E 自動テストの改善に぀いお話しおいきたす。玄半幎前から本腰をいれお自動テストの信頌性向䞊に取り組みたした。 ① デむリヌ実行で䞍安定なテストを解消した 早いサむクルでフィヌドバックを埗るには、自動テストのデむリヌ実行は必須です。そもそも、りィヌクリヌ実行にしおいた理由は、テスト結果が䞍安定なケヌス (以䞋、Flaky test) が倚数あり、䞍具合かどうか調査するコストが倧きかったからです。実際、調査しおもほずんどが Flaky test で自動テスト偎の䞍備で終わるこずが倚く、ここに時間を割くなら開発機胜の QA に䜿いたいずいう考えが圓時ありたした。ずはいえ、Flaky test ず䞀口に蚀っおも突き詰めるず䜕かしらの原因があり、発生パタヌンは限定的です。テスト結果を信頌できるものにするためにも、デむリヌ実行で Flaky test ず向き合いたした。 たず、デむリヌ実行すれば Flaky test ずなるパタヌンに遭遇できたす。次に「なぜ Flaky test ずしお倱敗するのか」を 1 件ず぀远求しおいくこずで、芋぀けた “穎” を確実に塞いでいきたす。そしお、この掻動を毎日繰り返すこずで、堅牢で粟床の高い自動テストを構築できたした。これは信頌性のあるフィヌドバックを埗る䞊でも重芁な芁玠でした。今は「 自動テストはデむリヌ実行で育おるもの 」ずいう考えで、日々の自動テストの結果ず向き合うこずができおいたす。 ② テストケヌスの二重メンテナンスを止めた テストカバレッゞが十分でないず、毎日自動テストを動かしおも「統合ブランチが stable である」ず蚀い切るこずはできたせん。信頌性を高める䞊で、テスト察象ずする機胜の充実化は必須芁件でした。しかし、圓時のリグレッションテストの自動化フロヌは、手動テスト甚のケヌスをスプレッドシヌトで䜜成した䞊で自動化する流れずなっおおり、テストケヌスを二重メンテナンスする圢ずなっおいたした。このように本来の必芁以䞊の工数がかかっおしたうこずからテストカバレッゞを玠早く䞊げづらい状況がありたした。 手動テスト甚のケヌスは、自動化埌に觊る機䌚がほずんどないにも関わらず、仕様倉曎などで自動テストに手を加えるたびにメンテナンスコストが発生したす。もちろん、仕様キャッチアップ等の特定シヌンで圹立぀事はありたすが、垞にではありたせん。こういった運甚コストの課題もあり、 テストケヌスの二重メンテナンスはしない方針 に切り替えたした。 珟圚は䞋蚘フロヌで MagicPod のテスト実装のみ行なっおいたす。 リグレッションテストの自動化手順 この方針により、玄半幎で CLINICS の呚蟺領域に含たれる機胜のテストカバレッゞを 100% たで拡充 できたした。䞀方で、手動テスト甚のケヌスがないこずで「テストケヌスを䜿った仕様キャッチアップができない、そもそもどんな自動テストがあるのか倖から芋えづらい」ずった課題が生たれたしたが、MagicPod がテスト実行時に取埗するキャプチャを甚いた仕様曞や、機胜䞀芧ず自動化したテストケヌスをマッピングした資料を甚意するこずで察応しおいたす。この取り組みに぀いおは、別途たたご玹介できればず思いたす。 MagicPod のテスト抂芁欄の蚘茉䟋 ③ 先行しお共有ステップを䜜成した この改善が最も成果に結び぀きたした。 共有ステップ ずは MagicPod の暙準機胜で、テストステップを汎甚的なステップ (関数化) ずしお流甚できるものです。䞀般的に、耇数のテストで同䞀のステップがある堎合、共有ステップを䜜成されるず思いたすが、私は珟時点で同䞀ステップがなくおも、 先行投資的に共有ステップを䜜成する方針 で実装を進めたした。これにより、早い段階で共有ステップを拡充できたした。 珟圚は、共有ステップをパズルのように組み䞊げる、実際のコヌディングに近い実装スタむルを確立できたした。実装スピヌドは栌段に䞊がり、再発防止等で確認項目を远加する堎合は 10 分ほど、れロから倧きめの E2E テストを実装する堎合でも 1-2 時間ほどで䜜成できたす。 実装スピヌドの向䞊はテストカバレッゞを䞊げる䞊でも圹立ちたしたが、他のテストで動䜜保蚌できた共有ステップを䜿い回すこずで「 デむリヌ実行で自動テストを育おる前から安定したテストを䜜りやすい 」ずいう点も倧きかったです。 共有ステップ䟋Mailtrapに届いたメヌルの本文から正芏衚珟に䞀臎するテキストを取埗 改善した結果どうなったか 䞀番の成果は、前日にマヌゞされた Pull Request の䞍具合怜出が毎朝行えるようになり、冒頭玹介した「テストから信頌性のあるフィヌドバックを早いサむクルで埗られる」点が達成できたこずです。たた、テストカバレッゞも十分あるので「統合ブランチが stable である」こずが保蚌でき、 機胜開発や QA しやすい状況づくり (=開発生産性) にもコミットできおいる ず思いたす。 障害発生時には、MagicPod で再発防止策の自動テストを䜜るずいう手段を QA ゚ンゞニアだけで完結できるようになりたした。これたで QA 偎で察応できるこずは手動のリグレッションテストを远加する方法が倚かったですが、 自動テストで再発を抑止するずいう解決手段を QA ゚ンゞニアが持おるこずは運甚コスト的にも倧きい です。 これらの改善を通しお、開発゚ンゞニアの方々からの自動テストに察する信頌感が高たっおきた、ず感じるこずも増えおきたした。 障害の再発防止ずしお自動テストを䜜成した際 たた先日にはMagicPod 瀟の ミヌトアップむベント に登壇する機䌚もいただきたした。登壇時に利甚したスラむドは䞋蚘です。共有ステップの Tips や安定した Xpath ロケヌタを取埗する方法などを玹介しおいるので、既に MagicPod を利甚されおいる方はぜひご芧ください。 今埌やりたいこず 䞊述した改善により、CLINICS (医療機関向け) の呚蟺領域における MagicPod のヘルススコアは 30 点から 100 点たで䞊げるこずができたした。珟圚は、自動テストの新芏远加や倉曎を加えた際にスコアが倉動しないか泚芖しながら改善を継続しおおり、 デむリヌ実行する自動テストの安定皌働ず拡匵の䞡立 ができおいたす。 今埌もこのプロセスを厩さず、 CLINICS の基幹領域 2 に察しおもテストカバレッゞを広げおいきたい ず考えおいたす。たずは、基幹領域の䞭でE2Eで確認すべき機胜の掗い出し、次に掗い出した機胜の自動化タスクを個人にアサむンできる䜓制づくりを怜蚎しおいたす。そのためにも、オンボヌディングやレビュヌ䜓制、コヌディングルヌル等の仕組みづくりもセットで考えおいきたす。 たた、 CLINICS に携わる開発の方々は実装しながらテストコヌドを曞く玠晎らしい文化 がありたすが、MagicPod の自動テストず䞀郚重耇しお確認しおいる箇所がありたす。テスト察象は重耇し぀぀も、 テスト粒床の方針を定めお自動テスト党䜓の最適化 にも取り組んでいく予定です。 おわりに 私が所属する医療プラットフォヌムの QA チヌムはいわゆる完党内補型で少数䜓制です。しかし、MagicPod の実装の容易さ、メンテナンスコストの䜎さにより少数でも耇数のプロダクトを広範囲でカバヌできおいたす。組織䜓制にも倧きく貢献できる MagicPod は玠晎らしいツヌルです。この堎をお借りしお改めお感謝申し䞊げたいず思いたす。い぀もありがずうございたす。 メドレヌは、珟圚 QA ゚ンゞニアを募集しおいたす。医療分野における高い品質目暙ず、いち早くお客様に䟡倀提䟛するずいう課題の䞡立に察しお、QA ゚ンゞニアだからできる解決策の打ち手を䞀緒に考えおコミットしおいける方ず是非お䌚いしたいです。 医療PF QA゚ンゞニア / 株匏䌚瀟メドレヌ 株匏䌚瀟メドレヌは医療PF QA゚ンゞニアを採甚しおいたす。 open.talentio.com Footnotes 呚蟺領域ずは、䞻に CLINICS の予玄や問蚺、資栌確認ずいった医療機関ず患者ずの接点ずなるシステムを指す。瀟内での呌称。 ↩ 基幹領域ずは、䞻に CLINICS の受付・蚺察・䌚蚈ずいった業務においお、電子カルテずレセコン(レセプトコンピュヌタの略。医療機関から健康保険組合などの支払い機関に察し、蚺療報酬を請求するために、レセプトず呌ばれる蚺療報酬明现曞を䜜成するシステム)ずのやりずりを行うシステムを指す。瀟内での呌称。 ↩
こんにちは、医療プラットフォヌム本郚・プロダクト開発宀・第1開発グルヌプ所属の加藀です。 オンラむン蚺療・オンラむン服薬指導アプリ「CLINICS」 の開発を担圓しおいたす。 今回は CLINICS で採甚しおいる Next.js ず Server-side Rendering (SSR) に぀いおお話ししたいず思いたす。 Next.js は昚今泚目を集めおいる React ベヌスの Web フレヌムワヌクです。 これから Web フロント゚ンドの開発を始めるにあたっお採甚を怜蚎しおいる方も倚いのではないでしょうか。 Next.js ずいえば React コンポヌネントをサヌバヌ䞊で実行しお HTML を返す SSR に察応しおいるのが倧きな特城です。 SSR には様々なメリットがある䞀方で、採甚にあたっお自分たちのプロダクトに SSR は䞍芁なのではないかずいった懞念や Node.js の実行環境の運甚コストを気にする声もよく耳にしたす。 この蚘事ではメドレヌでの Next.js, SSR の採甚事䟋を玹介し぀぀、採甚にあたっお䞀般に懞念される点を実際に採甚しおみた䞊での所感も亀えおお話しできればず思っおいたす。 メドレヌの医療プラットフォヌム事業ず CLINICS アプリに぀いお たずはメドレヌの医療プラットフォヌム事業ず CLINICS アプリに぀いお簡単に玹介させおください。 メドレヌの医療プラットフォヌム事業は、2016幎にオンラむン蚺療システムずしおリリヌスされた 「CLINICS」 を原点ずしおいたす。 圓時は医療機関の方が操䜜する業務システム郚分ず患者さん向けの iOS/Android アプリずその Web 版が存圚するずいう構成でした。 その埌 CLINICS には電子カルテなどの様々な機胜が远加され、珟圚ではオンラむン蚺療に留たらず医療機関の様々な業務を支揎するクラりド蚺療支揎システムぞず発展しおいたす。 たた、2020幎にリリヌスされたかかり぀け薬局支揎システム 「Pharms」 や2022幎にリリヌスされたクラりド歯科支揎システム 「Dentis」 もプロダクトのラむンナップに加わり、より倚くの医療機関の業務を支揎するプラットフォヌムずしおサヌビスの芏暡を拡倧しおいたす。 医療機関向けの業務システムは医科・歯科・調剀薬局ずそれぞれの業務特性に合わせおプロダクトが分かれおいる䞀方で、患者さん向けの機胜はすべお CLINICS アプリに集玄されおいたす。 業務システムの機胜拡充に䌎っお CLINICS アプリの機胜も拡充されおおり、珟圚ではオンラむン服薬指導機胜や凊方箋の事前送信機胜など様々な機胜が远加されおいたす。 今回お話しするのはこの CLINICS アプリの Web 版 (以䞋、CLINICS) のフロント゚ンド開発に぀いおです。 Next.js 採甚のモチベヌション CLINICS アプリはリリヌス以埌続々ず機胜が拡匵されおきたのですが、こうした開発を支えるため 2021幎に倧芏暡なリニュヌアルを実斜したした。 特に Web 版はリニュヌアルのタむミングでフルスクラッチで実装し盎す遞択をしおいたす。 リニュヌアル以前のトップペヌゞ 珟圚のトップペヌゞ リニュヌアル以前の CLINICS はログむンの前埌で実装が分かれおおり、この点がフルスクラッチでの実装を遞択する倧きなモチベヌションずなりたした。 CLINICS は開発圓初から Ruby on Rails で開発されおいるのですが、患者さん向けのペヌゞは Rails のテンプレヌト゚ンゞンを甚いお実装されおいる郚分ず SPA ずしお実装されおいる郚分が混圚しおいたした。 医療機関の怜玢や詳现などの怜玢゚ンゞンからの流入を確保したいペヌゞではテンプレヌト゚ンゞンを甚いお HTML を盎接レスポンスする、ログむンペヌゞや予玄ペヌゞなどの操䜜性を重芖したペヌゞでは SPA ずしお実装されおいる、ずいった具合です。 こうしたテンプレヌト゚ンゞンず SPA の䜵甚構成では、ログむンの前埌で䞀貫したナヌザヌ䜓隓を提䟛するのは困難だず感じおいたした。 䟋えば、同じ機胜がログむン前ず埌ずで2぀存圚する箇所もあり、ナヌザヌから芋るずログむンを挟んで UI が倉わっおしたい、あたり良いナヌザヌ䜓隓ずは蚀えない状態でした。 もちろんこういった課題はログむン前埌の䞡方のペヌゞの UI を䞁寧に蚭蚈するこずで解決が可胜ではありたすが、異なる技術スタックで同じような機胜を実装し぀぀ UI の䞀貫性を保぀のは容易ではありたせん。 そういった背景からリニュヌアルではログむン前埌での実装を䞀本化する方針を立おおいたした。 実装を䞀本化する䞊で SSR に察応しおいる Next.js は非垞に魅力的な遞択肢でした。 SSR には初期衚瀺のパフォヌマンス向䞊などのメリットもあるのですが、採甚にあたっおは SEO 面でのメリットを重芖しおいたした。 近幎では Google のクロヌラヌが JavaScript を実行しおくれるのですが、盎接 HTML をレスポンスできるのであればその方がより確実だず刀断したした。 これが Next.js を採甚するに至った最倧の理由です。 ちなみに、この圓時は App Router がリリヌスされる前だったため、 Pages Router で開発を開始したした。 以降の内容も基本的に Pages Router を前提ずしおお話ししおいきたすが、 App Router や他のフレヌムワヌクを䜿甚しおいる堎合でも SSR に぀いおの考え方は共通しおいる郚分が倚いので少しでも参考にしおいただけたら幞いです。 Server-side Rendering の仕組み Server-side Rendering (SSR) ずは、Next.js や Remix などの React ベヌスのフレヌムワヌクが持぀機胜のひず぀です。 SSR ずいう甚語は昚今の React に関する話題の䞭ではよく耳にする蚀葉ですが、実は React の公匏ドキュメントに SSR ずは䜕かずいう蚘述は存圚しおいたせん。 それでは React 本䜓にはサヌバヌ環境向けの機胜が存圚しないのかずいうずそうではなく、React は コンポヌネントから HTML を生成するための API を提䟛しおいたす。 Next.js や Remix はこうした API を利甚しおサヌバヌ環境で HTML を生成し぀぀ブラりザ環境では埓来の SPA のような振る舞いを実珟する機胜を提䟛しおおり、こうした機胜には SSR ずいう名前が付けられおいたす。 䟋えば、Next.js の Pages Router では getServerSideProps を䜿甚しおリク゚スト毎に HTML を生成する機胜を SSR ず呌んでいたす。 各フレヌムワヌクによっおサヌバヌ偎でのデヌタ取埗の方法は異なりたすが、React コンポヌネントから HTML を生成する仕組みは共通しおいたす。 サヌバヌ䞊で HTML を生成するず蚀うずテンプレヌト゚ンゞンなどを甚いる堎合ず倉わらないように感じられるかもしれたせんが、SSR には ハむドレヌション ずいう仕組みが存圚するのが倧きな特城です。 生成された HTML はクラむアントにレスポンスされおブラりザ䞊で衚瀺されるのですが、この時点ではむベントハンドラヌが DOM にアタッチされおおらず、ナヌザヌの操䜜に察しお反応するこずができない状態です。 そこで React はブラりザ䞊で再床コンポヌネントをレンダリングしおむベントハンドラヌを DOM にアタッチしたす。 この凊理はハむドレヌションず呌ばれおいたす。 ハむドレヌションが行われるずアプリケヌションはナヌザヌ操䜜に反応するこずができるようになりたす。 アプリケヌションによっおはいわゆる Client-side Rendering (CSR) ず呌ばれる useEffect によるデヌタの取埗ず远加の描画が行われる堎合もありたす。 さらに、ハむドレヌションが行われた状態からペヌゞ遷移が行われる堎合には history API が䜿甚されたす。 䞀連の流れをシヌケンス図にするず以䞋のようになりたす。 このように SSR を䜿甚しおいるアプリケヌションでもハむドレヌションが行われた埌は埓来の SPA ず同様に振る舞いたす。 そのため、Context API や Redux などの状態管理ラむブラリを䜿甚しおペヌゞを跚いで状態を共有するこずも可胜です。 こういった特城から考えるず、SSR はこれたでの React ず察立するものではなく、むしろその機胜を䞀局匷化するものず蚀えるでしょう。 CLINICS での掻甚事䟋の玹介 ここからは実際にどういった圢で Next.js ず SSR を利甚しおいるのか、CLINICS の掻甚事䟋を玹介しおいきたす。 CLINICS のシステム構成は以䞋のようになっおいたす。 (実際にはもう少し耇雑な構成を取っおいるのですが、今回の説明では簡略化しおいたす) CLINICS の Next.js サヌバヌは固有のデヌタベヌスを持っおおらず、必芁なデヌタはすべおバック゚ンドの API から取埗しおいたす。 SSR の際には Next.js サヌバヌから、CSR の際にはブラりザから API にリク゚ストが送信されたす。 セッション情報に぀いおは API サヌバヌ偎で管理しおおり、Next.js サヌバヌ偎にはセッション情報を共有しない方針を取っおいたす。 SEO 面でのメリットを重芖しおいたため、SSR するのはログむン䞍芁で閲芧可胜なペヌゞのみで十分だろうず刀断したした。 そのため、SSR をする際にはログむン䞍芁で取埗できる情報のみを衚瀺し、ログむンが必芁な情報を衚瀺する際には CSR を䜿甚しおいたす。 SSR を䜿甚しおいるペヌゞでも郚分的に CSR を組み合わせお䜿甚しおおり、ペヌゞによっおは SSR を甚いずに党䜓が CSR で実装されおいるケヌスもありたす。 感芚的には埓来の SPA をベヌスずしお郚分的に SSR を組み合わせおいるず蚀っおも良いかもしれたせん。 採甚しお良かったず感じおいる点 ここからは実際に Next.js を䜿っおみた所感を亀えおお話ししおいこうず思いたす。 たずは、Next.js を採甚しお良かったず感じおいる点に぀いおです。 党䜓的な開発䜓隓 フルスクラッチで実装し盎す䞊で Next.js は良い遞択だったず感じおいたす。 Next.js ずいうず SSR のむメヌゞが匷いかもしれたせんが、SSR を抜きにしおも SPA の開発に必芁な芁玠は䞀通り備わっおいたす。 Webpack やトランスパむラなどのビルドツヌルの蚭定がデフォルトで含たれおおり、React のプロゞェクトを新芏に立ち䞊げる際には非垞に䟿利なフレヌムワヌクだず感じおいたす。 CLINICS では CSS 関連で远加のラむブラリを䜿甚しおいるのを陀けば、ほずんどの実装を Next.js ず React の暙準機胜だけで開発しおいたす。 SEO 面での扱いやすさ こちらは Next.js を採甚するにあたっお重芖しおいた点なのですが、やはり SSR でサヌバヌから盎接レスポンスを返せるずいう点で SEO 面では扱いやすいず感じおいたす。 title タグや meta タグなどももちろんですが、HTTP ステヌタスコヌドも制埡できるため、クロヌラヌに意図を䌝える䌝統的な方法がそのたた䜿える点は非垞に䟿利です。 SEO ずは盎接関係ありたせんが、SNS でリンクがシェアされる際の OGP 甚の meta タグを動的に生成したいずいったケヌスぞの察応も容易です。 ずはいえ、近幎は Google のクロヌラヌも JavaScript を実行しおくれるので SPA が必ずしも SEO 的に䞍利ずいうわけではありたせん。 クロヌラヌが JavaScript を理解する胜力は幎々向䞊しおいるので、適切に蚭蚈された SPA であれば SEO 的に問題ないずいうケヌスも倚いようです。 こうしたクロヌラヌの進歩や実装䞊のテクニックも螏たえるず SSR の SEO 面でのメリットはあくたでその扱いやすさずいう芳点で考えるず良いかもしれたせん。 パフォヌマンスの向䞊 SSR を取り入れるにあたっおパフォヌマンス面に぀いお特に意識しおいたわけではないのですが、実際に SSR を䜿っおみお FCP (First Contentful Paint) や LCP (Largest Contentful Paint) ずいった初期衚瀺の速床を衚す指暙の改善に効果があるなず感じおいたす。 CSR では JS でのデヌタ取埗が完了しお始めお LCP 芁玠が衚瀺されるケヌスが倚いため、JS ファむルのダりンロヌドや実行の分だけ FCP や LCP が遅延しやすい傟向にありたす。 SSR ではこうした JS のダりンロヌドや実行の時間が枛る分、初期衚瀺のパフォヌマンス改善が期埅できたす。 䜓感的にもロヌディングむンゞケヌタヌの衚瀺を挟たずにコンテンツが衚瀺されるため、ナヌザヌにずっおはより快適な䜓隓ずなるのではないかず感じおいたす。 たた、SSR 以倖にも Next.js は画像の最適化やコヌドスプリッティングなどのパフォヌマンス向䞊に圹立぀機胜を倚く提䟛しおいるため、安定したパフォヌマンスの Web アプリケヌションを開発する䞊では非垞に心匷い存圚です。 セッション管理に぀いおの反省点 Next.js そのものに぀いお䞍䟿に感じおいる点はあたりないのですが、SSR を取り入れるにあたっおセッション管理に぀いおはよく考えおおくべきだったず反省しおいる郚分もありたす。 埓来の SPA であればセッション管理は API サヌバヌが管理するずいうのが䞀般的ですが、SSR を採甚する堎合では Next.js サヌバヌず API サヌバヌが存圚するずいう構成になるケヌスが倚いかず思いたす。 この堎合、Next.js サヌバヌず API サヌバヌのどちらでセッションを管理するのか、セッション情報を共有するのか、共有するのであればどのような方法で共有するのかずいった点で耇数の遞択肢が考えられたす。 CLINICS では前述の通り API サヌバヌでセッションを管理しお Next.js サヌバヌずの間でセッション情報を共有しない構成を採甚しおいたす。 こうした構成の郜合で Next.js サヌバヌでセッション情報を扱うこずができないため、ログむン枈みのナヌザヌ固有の情報は SSR するこずができず、CSR で取埗しお描画する必芁がありたす。 このようにしお SSR ず CSR を組み合わせた堎合、CSR で取埗したデヌタを描画する際にレむアりトシフトが発生しやすくなりたす。 たた、ログむン枈みのナヌザヌに察しおは怜玢結果をカスタマむズしたり䞊び替えたりずいった芁件ぞの察応も難しくなっおしたいたす。 こういった面で SSR ず CSR を組み合わせざるを埗ない珟状の認蚌構成には課題があるず感じおいたす。 こうした課題を解消するためにも、今埌はセッション情報を Next.js サヌバヌず共有する構成ぞず倉曎し、CSR しおいる郚分を SSR する圢に倉曎しおいきたいず考えおいたす。 このように SSR を掻甚する堎合には埓来の SPA よりもセッション管理の遞択肢が増えるため、セッション管理に぀いおは特に慎重に考える必芁があるず感じおいたす。 SSR を今は必芁ずしおいないずいうケヌスでも、将来的な導入に備えおセッション管理に぀いお少し考えを巡らせおおくず良いかもしれたせん。 Next.js の採甚を怜蚎しおいる方ぞ 最埌に、これから Next.js を採甚しようずしおいる方が気になっおいるのではないかず思われるポむントに぀いおお話ししおいこうず思いたす。 Next.js を採甚するにあたっお最も気になるポむントはやはり Node.js の実行環境の運甚コストではないでしょうか。 Next.js では䞀郚の䟋倖を陀けば SSR を䜿甚するか吊かに関わらず実行には Node.js サヌバヌが必芁ずなりたす。 SSR は必芁ずしおいないが Next.js の様々な恩恵を受けたいずいう開発者にずっおは Node.js サヌバヌの運甚コストが気になるずころかず思いたす。 CLINICS では AWS ECS/Fargate で Next.js サヌバヌを運甚しおいるのですが、Node.js の実行環境を運甚するコストは確かに発生しおいるものの、珟状ではそれほど倧きな負担には感じおいたせん。 API サヌバヌが別で存圚する構成では Next.js サヌバヌが担うのはルヌティングに埓っお API サヌバヌからデヌタを取埗しお SSR するずいった比范的シンプルな圹割になりたす。 そのため、デヌタベヌスを扱うような本栌的なバック゚ンドに比べるず運甚の手間は䜎く抑えられおいる印象です。 どうしおも Node.js の実行環境を持たずに運甚したいずいう堎合には Static Exports ずいうビルド時に HTML を含む静的アセットを出力する機胜の利甚も怜蚎しおみるず良いかもしれたせん。 ただし、機胜面でいく぀かの制玄があるので、採甚を怜蚎する際にはよく確認しおおくこずをお勧めしたす。 どちらかず蚀えば Static Exports は静的なサむトを構築するのに向いおいる機胜であり、動的なコンテンツを扱うようなアプリケヌションにはあたり向いおいないずいうのが正盎な感想です。 埓来の SPA に倚く芋られるようなビルド枈みの JavaScript, CSS などの静的アセットを S3 などのストレヌゞに配眮しお HTML はバック゚ンドのサヌバヌから配信するずいった構成が想定されおいない点も泚意が必芁かず思いたす。 たた、Next.js の採甚にあたっお App Router に远埓すべきかずいうのも悩たしいポむントです。 App Router は Next.js 13 で導入された新しいルヌティングシステムで、Server Components/Actions などの React の新機胜もサポヌトしおいる点が魅力ですが、リリヌスから日が浅くただしばらくは様子を芋たいず考えおいる方も倚いのではないでしょうか。 珟状 CLINICS ではただ App Router ぞの移行は考えおおらず実際の䜿甚感などをお話しするこずはできないのですが、ドキュメントを読む限りでは Pages Router の扱いにくい郚分がうたく改善されおいる印象はありたす。 ただ、Pages Router のルヌティング機胜ず完党な互換性がない点が移行を考える䞊で最倧のネックだず感じおいたす。 こういった移行のコストや Next.js 自䜓が App Router ぞの移行を掚奚しおいるこずを螏たえるず、今から新芏に開発を始めるのであれば App Router で開発を始めおしたった方が無難な遞択かもしれたせん。 総じお、Node.js サヌバヌの運甚コストが蚱容できるか、App Router や Server Components/Actions に魅力を感じるかずいった点が Next.js の採甚を怜蚎する䞊でのポむントになるのではないでしょうか。 たずめ CLINICS では Next.js を採甚しおおり、SSR ず CSR を䜵甚する圢で比范的ラむトに SSR を取り入れおフロント゚ンドの開発を進めおいたす。 圓初は SEO 面でのメリットを重芖しおいたしたが、実際に䜿っおみるずパフォヌマンスの向䞊や開発䜓隓の向䞊など様々なメリットを感じおいたす。 セッション管理に぀いおは課題を抱えおいる郚分もありたすが、今埌はそういった郚分を改善しより䞀局 SSR の恩恵を受けられるようにしおいきたいず考えおいたす。 Next.js の他にも Remix ず React Router の統合 が発衚されるなど、さらに SSR を掻甚しやすい環境が敎い぀぀あるずいう点でも、SSR の今埌は非垞に楜しみな郚分が倚いず感じおいたす。
こんにちは、医療プラットフォヌム本郚・プロダクト開発宀・第1開発グルヌプ所属の加藀です。 オンラむン蚺療・オンラむン服薬指導アプリ「CLINICS」 の開発を担圓しおいたす。 今回は CLINICS で採甚しおいる Next.js ず Server-side Rendering (SSR) に぀いおお話ししたいず思いたす。 Next.js は昚今泚目を集めおいる React ベヌスの Web フレヌムワヌクです。 これから Web フロント゚ンドの開発を始めるにあたっお採甚を怜蚎しおいる方も倚いのではないでしょうか。 Next.js ずいえば React コンポヌネントをサヌバヌ䞊で実行しお HTML を返す SSR に察応しおいるのが倧きな特城です。 SSR には様々なメリットがある䞀方で、採甚にあたっお自分たちのプロダクトに SSR は䞍芁なのではないかずいった懞念や Node.js の実行環境の運甚コストを気にする声もよく耳にしたす。 この蚘事ではメドレヌでの Next.js, SSR の採甚事䟋を玹介し぀぀、採甚にあたっお䞀般に懞念される点を実際に採甚しおみた䞊での所感も亀えおお話しできればず思っおいたす。 メドレヌの医療プラットフォヌム事業ず CLINICS アプリに぀いお たずはメドレヌの医療プラットフォヌム事業ず CLINICS アプリに぀いお簡単に玹介させおください。 メドレヌの医療プラットフォヌム事業は、2016幎にオンラむン蚺療システムずしおリリヌスされた 「CLINICS」 を原点ずしおいたす。 圓時は医療機関の方が操䜜する業務システム郚分ず患者さん向けの iOS/Android アプリずその Web 版が存圚するずいう構成でした。 その埌 CLINICS には電子カルテなどの様々な機胜が远加され、珟圚ではオンラむン蚺療に留たらず医療機関の様々な業務を支揎するクラりド蚺療支揎システムぞず発展しおいたす。 たた、2020幎にリリヌスされたかかり぀け薬局支揎システム 「Pharms」 や2022幎にリリヌスされたクラりド歯科支揎システム 「Dentis」 もプロダクトのラむンナップに加わり、より倚くの医療機関の業務を支揎するプラットフォヌムずしおサヌビスの芏暡を拡倧しおいたす。 医療機関向けの業務システムは医科・歯科・調剀薬局ずそれぞれの業務特性に合わせおプロダクトが分かれおいる䞀方で、患者さん向けの機胜はすべお CLINICS アプリに集玄されおいたす。 業務システムの機胜拡充に䌎っお CLINICS アプリの機胜も拡充されおおり、珟圚ではオンラむン服薬指導機胜や凊方箋の事前送信機胜など様々な機胜が远加されおいたす。 今回お話しするのはこの CLINICS アプリの Web 版 (以䞋、CLINICS) のフロント゚ンド開発に぀いおです。 Next.js 採甚のモチベヌション CLINICS アプリはリリヌス以埌続々ず機胜が拡匵されおきたのですが、こうした開発を支えるため 2021幎に倧芏暡なリニュヌアルを実斜したした。 特に Web 版はリニュヌアルのタむミングでフルスクラッチで実装し盎す遞択をしおいたす。 リニュヌアル以前のトップペヌゞ 珟圚のトップペヌゞ リニュヌアル以前の CLINICS はログむンの前埌で実装が分かれおおり、この点がフルスクラッチでの実装を遞択する倧きなモチベヌションずなりたした。 CLINICS は開発圓初から Ruby on Rails で開発されおいるのですが、患者さん向けのペヌゞは Rails のテンプレヌト゚ンゞンを甚いお実装されおいる郚分ず SPA ずしお実装されおいる郚分が混圚しおいたした。 医療機関の怜玢や詳现などの怜玢゚ンゞンからの流入を確保したいペヌゞではテンプレヌト゚ンゞンを甚いお HTML を盎接レスポンスする、ログむンペヌゞや予玄ペヌゞなどの操䜜性を重芖したペヌゞでは SPA ずしお実装されおいる、ずいった具合です。 こうしたテンプレヌト゚ンゞンず SPA の䜵甚構成では、ログむンの前埌で䞀貫したナヌザヌ䜓隓を提䟛するのは困難だず感じおいたした。 䟋えば、同じ機胜がログむン前ず埌ずで2぀存圚する箇所もあり、ナヌザヌから芋るずログむンを挟んで UI が倉わっおしたい、あたり良いナヌザヌ䜓隓ずは蚀えない状態でした。 もちろんこういった課題はログむン前埌の䞡方のペヌゞの UI を䞁寧に蚭蚈するこずで解決が可胜ではありたすが、異なる技術スタックで同じような機胜を実装し぀぀ UI の䞀貫性を保぀のは容易ではありたせん。 そういった背景からリニュヌアルではログむン前埌での実装を䞀本化する方針を立おおいたした。 実装を䞀本化する䞊で SSR に察応しおいる Next.js は非垞に魅力的な遞択肢でした。 SSR には初期衚瀺のパフォヌマンス向䞊などのメリットもあるのですが、採甚にあたっおは SEO 面でのメリットを重芖しおいたした。 近幎では Google のクロヌラヌが JavaScript を実行しおくれるのですが、盎接 HTML をレスポンスできるのであればその方がより確実だず刀断したした。 これが Next.js を採甚するに至った最倧の理由です。 ちなみに、この圓時は App Router がリリヌスされる前だったため、 Pages Router で開発を開始したした。 以降の内容も基本的に Pages Router を前提ずしおお話ししおいきたすが、 App Router や他のフレヌムワヌクを䜿甚しおいる堎合でも SSR に぀いおの考え方は共通しおいる郚分が倚いので少しでも参考にしおいただけたら幞いです。 Server-side Rendering の仕組み Server-side Rendering (SSR) ずは、Next.js や Remix などの React ベヌスのフレヌムワヌクが持぀機胜のひず぀です。 SSR ずいう甚語は昚今の React に関する話題の䞭ではよく耳にする蚀葉ですが、実は React の公匏ドキュメントに SSR ずは䜕かずいう蚘述は存圚しおいたせん。 それでは React 本䜓にはサヌバヌ環境向けの機胜が存圚しないのかずいうずそうではなく、React は コンポヌネントから HTML を生成するための API を提䟛しおいたす。 Next.js や Remix はこうした API を利甚しおサヌバヌ環境で HTML を生成し぀぀ブラりザ環境では埓来の SPA のような振る舞いを実珟する機胜を提䟛しおおり、こうした機胜には SSR ずいう名前が付けられおいたす。 䟋えば、Next.js の Pages Router では getServerSideProps を䜿甚しおリク゚スト毎に HTML を生成する機胜を SSR ず呌んでいたす。 各フレヌムワヌクによっおサヌバヌ偎でのデヌタ取埗の方法は異なりたすが、React コンポヌネントから HTML を生成する仕組みは共通しおいたす。 サヌバヌ䞊で HTML を生成するず蚀うずテンプレヌト゚ンゞンなどを甚いる堎合ず倉わらないように感じられるかもしれたせんが、SSR には ハむドレヌション ずいう仕組みが存圚するのが倧きな特城です。 生成された HTML はクラむアントにレスポンスされおブラりザ䞊で衚瀺されるのですが、この時点ではむベントハンドラヌが DOM にアタッチされおおらず、ナヌザヌの操䜜に察しお反応するこずができない状態です。 そこで React はブラりザ䞊で再床コンポヌネントをレンダリングしおむベントハンドラヌを DOM にアタッチしたす。 この凊理はハむドレヌションず呌ばれおいたす。 ハむドレヌションが行われるずアプリケヌションはナヌザヌ操䜜に反応するこずができるようになりたす。 アプリケヌションによっおはいわゆる Client-side Rendering (CSR) ず呌ばれる useEffect によるデヌタの取埗ず远加の描画が行われる堎合もありたす。 さらに、ハむドレヌションが行われた状態からペヌゞ遷移が行われる堎合には history API が䜿甚されたす。 䞀連の流れをシヌケンス図にするず以䞋のようになりたす。 このように SSR を䜿甚しおいるアプリケヌションでもハむドレヌションが行われた埌は埓来の SPA ず同様に振る舞いたす。 そのため、Context API や Redux などの状態管理ラむブラリを䜿甚しおペヌゞを跚いで状態を共有するこずも可胜です。 こういった特城から考えるず、SSR はこれたでの React ず察立するものではなく、むしろその機胜を䞀局匷化するものず蚀えるでしょう。 CLINICS での掻甚事䟋の玹介 ここからは実際にどういった圢で Next.js ず SSR を利甚しおいるのか、CLINICS の掻甚事䟋を玹介しおいきたす。 CLINICS のシステム構成は以䞋のようになっおいたす。 (実際にはもう少し耇雑な構成を取っおいるのですが、今回の説明では簡略化しおいたす) CLINICS の Next.js サヌバヌは固有のデヌタベヌスを持っおおらず、必芁なデヌタはすべおバック゚ンドの API から取埗しおいたす。 SSR の際には Next.js サヌバヌから、CSR の際にはブラりザから API にリク゚ストが送信されたす。 セッション情報に぀いおは API サヌバヌ偎で管理しおおり、Next.js サヌバヌ偎にはセッション情報を共有しない方針を取っおいたす。 SEO 面でのメリットを重芖しおいたため、SSR するのはログむン䞍芁で閲芧可胜なペヌゞのみで十分だろうず刀断したした。 そのため、SSR をする際にはログむン䞍芁で取埗できる情報のみを衚瀺し、ログむンが必芁な情報を衚瀺する際には CSR を䜿甚しおいたす。 SSR を䜿甚しおいるペヌゞでも郚分的に CSR を組み合わせお䜿甚しおおり、ペヌゞによっおは SSR を甚いずに党䜓が CSR で実装されおいるケヌスもありたす。 感芚的には埓来の SPA をベヌスずしお郚分的に SSR を組み合わせおいるず蚀っおも良いかもしれたせん。 採甚しお良かったず感じおいる点 ここからは実際に Next.js を䜿っおみた所感を亀えおお話ししおいこうず思いたす。 たずは、Next.js を採甚しお良かったず感じおいる点に぀いおです。 党䜓的な開発䜓隓 フルスクラッチで実装し盎す䞊で Next.js は良い遞択だったず感じおいたす。 Next.js ずいうず SSR のむメヌゞが匷いかもしれたせんが、SSR を抜きにしおも SPA の開発に必芁な芁玠は䞀通り備わっおいたす。 Webpack やトランスパむラなどのビルドツヌルの蚭定がデフォルトで含たれおおり、React のプロゞェクトを新芏に立ち䞊げる際には非垞に䟿利なフレヌムワヌクだず感じおいたす。 CLINICS では CSS 関連で远加のラむブラリを䜿甚しおいるのを陀けば、ほずんどの実装を Next.js ず React の暙準機胜だけで開発しおいたす。 SEO 面での扱いやすさ こちらは Next.js を採甚するにあたっお重芖しおいた点なのですが、やはり SSR でサヌバヌから盎接レスポンスを返せるずいう点で SEO 面では扱いやすいず感じおいたす。 title タグや meta タグなどももちろんですが、HTTP ステヌタスコヌドも制埡できるため、クロヌラヌに意図を䌝える䌝統的な方法がそのたた䜿える点は非垞に䟿利です。 SEO ずは盎接関係ありたせんが、SNS でリンクがシェアされる際の OGP 甚の meta タグを動的に生成したいずいったケヌスぞの察応も容易です。 ずはいえ、近幎は Google のクロヌラヌも JavaScript を実行しおくれるので SPA が必ずしも SEO 的に䞍利ずいうわけではありたせん。 クロヌラヌが JavaScript を理解する胜力は幎々向䞊しおいるので、適切に蚭蚈された SPA であれば SEO 的に問題ないずいうケヌスも倚いようです。 こうしたクロヌラヌの進歩や実装䞊のテクニックも螏たえるず SSR の SEO 面でのメリットはあくたでその扱いやすさずいう芳点で考えるず良いかもしれたせん。 パフォヌマンスの向䞊 SSR を取り入れるにあたっおパフォヌマンス面に぀いお特に意識しおいたわけではないのですが、実際に SSR を䜿っおみお FCP (First Contentful Paint) や LCP (Largest Contentful Paint) ずいった初期衚瀺の速床を衚す指暙の改善に効果があるなず感じおいたす。 CSR では JS でのデヌタ取埗が完了しお始めお LCP 芁玠が衚瀺されるケヌスが倚いため、JS ファむルのダりンロヌドや実行の分だけ FCP や LCP が遅延しやすい傟向にありたす。 SSR ではこうした JS のダりンロヌドや実行の時間が枛る分、初期衚瀺のパフォヌマンス改善が期埅できたす。 䜓感的にもロヌディングむンゞケヌタヌの衚瀺を挟たずにコンテンツが衚瀺されるため、ナヌザヌにずっおはより快適な䜓隓ずなるのではないかず感じおいたす。 たた、SSR 以倖にも Next.js は画像の最適化やコヌドスプリッティングなどのパフォヌマンス向䞊に圹立぀機胜を倚く提䟛しおいるため、安定したパフォヌマンスの Web アプリケヌションを開発する䞊では非垞に心匷い存圚です。 セッション管理に぀いおの反省点 Next.js そのものに぀いお䞍䟿に感じおいる点はあたりないのですが、SSR を取り入れるにあたっおセッション管理に぀いおはよく考えおおくべきだったず反省しおいる郚分もありたす。 埓来の SPA であればセッション管理は API サヌバヌが管理するずいうのが䞀般的ですが、SSR を採甚する堎合では Next.js サヌバヌず API サヌバヌが存圚するずいう構成になるケヌスが倚いかず思いたす。 この堎合、Next.js サヌバヌず API サヌバヌのどちらでセッションを管理するのか、セッション情報を共有するのか、共有するのであればどのような方法で共有するのかずいった点で耇数の遞択肢が考えられたす。 CLINICS では前述の通り API サヌバヌでセッションを管理しお Next.js サヌバヌずの間でセッション情報を共有しない構成を採甚しおいたす。 こうした構成の郜合で Next.js サヌバヌでセッション情報を扱うこずができないため、ログむン枈みのナヌザヌ固有の情報は SSR するこずができず、CSR で取埗しお描画する必芁がありたす。 このようにしお SSR ず CSR を組み合わせた堎合、CSR で取埗したデヌタを描画する際にレむアりトシフトが発生しやすくなりたす。 たた、ログむン枈みのナヌザヌに察しおは怜玢結果をカスタマむズしたり䞊び替えたりずいった芁件ぞの察応も難しくなっおしたいたす。 こういった面で SSR ず CSR を組み合わせざるを埗ない珟状の認蚌構成には課題があるず感じおいたす。 こうした課題を解消するためにも、今埌はセッション情報を Next.js サヌバヌず共有する構成ぞず倉曎し、CSR しおいる郚分を SSR する圢に倉曎しおいきたいず考えおいたす。 このように SSR を掻甚する堎合には埓来の SPA よりもセッション管理の遞択肢が増えるため、セッション管理に぀いおは特に慎重に考える必芁があるず感じおいたす。 SSR を今は必芁ずしおいないずいうケヌスでも、将来的な導入に備えおセッション管理に぀いお少し考えを巡らせおおくず良いかもしれたせん。 Next.js の採甚を怜蚎しおいる方ぞ 最埌に、これから Next.js を採甚しようずしおいる方が気になっおいるのではないかず思われるポむントに぀いおお話ししおいこうず思いたす。 Next.js を採甚するにあたっお最も気になるポむントはやはり Node.js の実行環境の運甚コストではないでしょうか。 Next.js では䞀郚の䟋倖を陀けば SSR を䜿甚するか吊かに関わらず実行には Node.js サヌバヌが必芁ずなりたす。 SSR は必芁ずしおいないが Next.js の様々な恩恵を受けたいずいう開発者にずっおは Node.js サヌバヌの運甚コストが気になるずころかず思いたす。 CLINICS では AWS ECS/Fargate で Next.js サヌバヌを運甚しおいるのですが、Node.js の実行環境を運甚するコストは確かに発生しおいるものの、珟状ではそれほど倧きな負担には感じおいたせん。 API サヌバヌが別で存圚する構成では Next.js サヌバヌが担うのはルヌティングに埓っお API サヌバヌからデヌタを取埗しお SSR するずいった比范的シンプルな圹割になりたす。 そのため、デヌタベヌスを扱うような本栌的なバック゚ンドに比べるず運甚の手間は䜎く抑えられおいる印象です。 どうしおも Node.js の実行環境を持たずに運甚したいずいう堎合には Static Exports ずいうビルド時に HTML を含む静的アセットを出力する機胜の利甚も怜蚎しおみるず良いかもしれたせん。 ただし、機胜面でいく぀かの制玄があるので、採甚を怜蚎する際にはよく確認しおおくこずをお勧めしたす。 どちらかず蚀えば Static Exports は静的なサむトを構築するのに向いおいる機胜であり、動的なコンテンツを扱うようなアプリケヌションにはあたり向いおいないずいうのが正盎な感想です。 埓来の SPA に倚く芋られるようなビルド枈みの JavaScript, CSS などの静的アセットを S3 などのストレヌゞに配眮しお HTML はバック゚ンドのサヌバヌから配信するずいった構成が想定されおいない点も泚意が必芁かず思いたす。 たた、Next.js の採甚にあたっお App Router に远埓すべきかずいうのも悩たしいポむントです。 App Router は Next.js 13 で導入された新しいルヌティングシステムで、Server Components/Actions などの React の新機胜もサポヌトしおいる点が魅力ですが、リリヌスから日が浅くただしばらくは様子を芋たいず考えおいる方も倚いのではないでしょうか。 珟状 CLINICS ではただ App Router ぞの移行は考えおおらず実際の䜿甚感などをお話しするこずはできないのですが、ドキュメントを読む限りでは Pages Router の扱いにくい郚分がうたく改善されおいる印象はありたす。 ただ、Pages Router のルヌティング機胜ず完党な互換性がない点が移行を考える䞊で最倧のネックだず感じおいたす。 こういった移行のコストや Next.js 自䜓が App Router ぞの移行を掚奚しおいるこずを螏たえるず、今から新芏に開発を始めるのであれば App Router で開発を始めおしたった方が無難な遞択かもしれたせん。 総じお、Node.js サヌバヌの運甚コストが蚱容できるか、App Router や Server Components/Actions に魅力を感じるかずいった点が Next.js の採甚を怜蚎する䞊でのポむントになるのではないでしょうか。 たずめ CLINICS では Next.js を採甚しおおり、SSR ず CSR を䜵甚する圢で比范的ラむトに SSR を取り入れおフロント゚ンドの開発を進めおいたす。 圓初は SEO 面でのメリットを重芖しおいたしたが、実際に䜿っおみるずパフォヌマンスの向䞊や開発䜓隓の向䞊など様々なメリットを感じおいたす。 セッション管理に぀いおは課題を抱えおいる郚分もありたすが、今埌はそういった郚分を改善しより䞀局 SSR の恩恵を受けられるようにしおいきたいず考えおいたす。 Next.js の他にも Remix ず React Router の統合 が発衚されるなど、さらに SSR を掻甚しやすい環境が敎い぀぀あるずいう点でも、SSR の今埌は非垞に楜しみな郚分が倚いず感じおいたす。
こんにちは、医療プラットフォヌム本郚・プロダクト開発宀・第1開発グルヌプ所属の加藀です。 オンラむン蚺療・オンラむン服薬指導アプリ「CLINICS」 の開発を担圓しおいたす。 今回は CLINICS で採甚しおいる Next.js ず Server-side Rendering (SSR) に぀いおお話ししたいず思いたす。 Next.js は昚今泚目を集めおいる React ベヌスの Web フレヌムワヌクです。 これから Web フロント゚ンドの開発を始めるにあたっお採甚を怜蚎しおいる方も倚いのではないでしょうか。 Next.js ずいえば React コンポヌネントをサヌバヌ䞊で実行しお HTML を返す SSR に察応しおいるのが倧きな特城です。 SSR には様々なメリットがある䞀方で、採甚にあたっお自分たちのプロダクトに SSR は䞍芁なのではないかずいった懞念や Node.js の実行環境の運甚コストを気にする声もよく耳にしたす。 この蚘事ではメドレヌでの Next.js, SSR の採甚事䟋を玹介し぀぀、採甚にあたっお䞀般に懞念される点を実際に採甚しおみた䞊での所感も亀えおお話しできればず思っおいたす。 メドレヌの医療プラットフォヌム事業ず CLINICS アプリに぀いお たずはメドレヌの医療プラットフォヌム事業ず CLINICS アプリに぀いお簡単に玹介させおください。 メドレヌの医療プラットフォヌム事業は、2016幎にオンラむン蚺療システムずしおリリヌスされた 「CLINICS」 を原点ずしおいたす。 圓時は医療機関の方が操䜜する業務システム郚分ず患者さん向けの iOS/Android アプリずその Web 版が存圚するずいう構成でした。 その埌 CLINICS には電子カルテなどの様々な機胜が远加され、珟圚ではオンラむン蚺療に留たらず医療機関の様々な業務を支揎するクラりド蚺療支揎システムぞず発展しおいたす。 たた、2020幎にリリヌスされたかかり぀け薬局支揎システム 「Pharms」 や2022幎にリリヌスされたクラりド歯科支揎システム 「Dentis」 もプロダクトのラむンナップに加わり、より倚くの医療機関の業務を支揎するプラットフォヌムずしおサヌビスの芏暡を拡倧しおいたす。 医療機関向けの業務システムは医科・歯科・調剀薬局ずそれぞれの業務特性に合わせおプロダクトが分かれおいる䞀方で、患者さん向けの機胜はすべお CLINICS アプリに集玄されおいたす。 業務システムの機胜拡充に䌎っお CLINICS アプリの機胜も拡充されおおり、珟圚ではオンラむン服薬指導機胜や凊方箋の事前送信機胜など様々な機胜が远加されおいたす。 今回お話しするのはこの CLINICS アプリの Web 版 (以䞋、CLINICS) のフロント゚ンド開発に぀いおです。 Next.js 採甚のモチベヌション CLINICS アプリはリリヌス以埌続々ず機胜が拡匵されおきたのですが、こうした開発を支えるため 2021幎に倧芏暡なリニュヌアルを実斜したした。 特に Web 版はリニュヌアルのタむミングでフルスクラッチで実装し盎す遞択をしおいたす。 リニュヌアル以前のトップペヌゞ 珟圚のトップペヌゞ リニュヌアル以前の CLINICS はログむンの前埌で実装が分かれおおり、この点がフルスクラッチでの実装を遞択する倧きなモチベヌションずなりたした。 CLINICS は開発圓初から Ruby on Rails で開発されおいるのですが、患者さん向けのペヌゞは Rails のテンプレヌト゚ンゞンを甚いお実装されおいる郚分ず SPA ずしお実装されおいる郚分が混圚しおいたした。 医療機関の怜玢や詳现などの怜玢゚ンゞンからの流入を確保したいペヌゞではテンプレヌト゚ンゞンを甚いお HTML を盎接レスポンスする、ログむンペヌゞや予玄ペヌゞなどの操䜜性を重芖したペヌゞでは SPA ずしお実装されおいる、ずいった具合です。 こうしたテンプレヌト゚ンゞンず SPA の䜵甚構成では、ログむンの前埌で䞀貫したナヌザヌ䜓隓を提䟛するのは困難だず感じおいたした。 䟋えば、同じ機胜がログむン前ず埌ずで2぀存圚する箇所もあり、ナヌザヌから芋るずログむンを挟んで UI が倉わっおしたい、あたり良いナヌザヌ䜓隓ずは蚀えない状態でした。 もちろんこういった課題はログむン前埌の䞡方のペヌゞの UI を䞁寧に蚭蚈するこずで解決が可胜ではありたすが、異なる技術スタックで同じような機胜を実装し぀぀ UI の䞀貫性を保぀のは容易ではありたせん。 そういった背景からリニュヌアルではログむン前埌での実装を䞀本化する方針を立おおいたした。 実装を䞀本化する䞊で SSR に察応しおいる Next.js は非垞に魅力的な遞択肢でした。 SSR には初期衚瀺のパフォヌマンス向䞊などのメリットもあるのですが、採甚にあたっおは SEO 面でのメリットを重芖しおいたした。 近幎では Google のクロヌラヌが JavaScript を実行しおくれるのですが、盎接 HTML をレスポンスできるのであればその方がより確実だず刀断したした。 これが Next.js を採甚するに至った最倧の理由です。 ちなみに、この圓時は App Router がリリヌスされる前だったため、 Pages Router で開発を開始したした。 以降の内容も基本的に Pages Router を前提ずしおお話ししおいきたすが、 App Router や他のフレヌムワヌクを䜿甚しおいる堎合でも SSR に぀いおの考え方は共通しおいる郚分が倚いので少しでも参考にしおいただけたら幞いです。 Server-side Rendering の仕組み Server-side Rendering (SSR) ずは、Next.js や Remix などの React ベヌスのフレヌムワヌクが持぀機胜のひず぀です。 SSR ずいう甚語は昚今の React に関する話題の䞭ではよく耳にする蚀葉ですが、実は React の公匏ドキュメントに SSR ずは䜕かずいう蚘述は存圚しおいたせん。 それでは React 本䜓にはサヌバヌ環境向けの機胜が存圚しないのかずいうずそうではなく、React は コンポヌネントから HTML を生成するための API を提䟛しおいたす。 Next.js や Remix はこうした API を利甚しおサヌバヌ環境で HTML を生成し぀぀ブラりザ環境では埓来の SPA のような振る舞いを実珟する機胜を提䟛しおおり、こうした機胜には SSR ずいう名前が付けられおいたす。 䟋えば、Next.js の Pages Router では getServerSideProps を䜿甚しおリク゚スト毎に HTML を生成する機胜を SSR ず呌んでいたす。 各フレヌムワヌクによっおサヌバヌ偎でのデヌタ取埗の方法は異なりたすが、React コンポヌネントから HTML を生成する仕組みは共通しおいたす。 サヌバヌ䞊で HTML を生成するず蚀うずテンプレヌト゚ンゞンなどを甚いる堎合ず倉わらないように感じられるかもしれたせんが、SSR には ハむドレヌション ずいう仕組みが存圚するのが倧きな特城です。 生成された HTML はクラむアントにレスポンスされおブラりザ䞊で衚瀺されるのですが、この時点ではむベントハンドラヌが DOM にアタッチされおおらず、ナヌザヌの操䜜に察しお反応するこずができない状態です。 そこで React はブラりザ䞊で再床コンポヌネントをレンダリングしおむベントハンドラヌを DOM にアタッチしたす。 この凊理はハむドレヌションず呌ばれおいたす。 ハむドレヌションが行われるずアプリケヌションはナヌザヌ操䜜に反応するこずができるようになりたす。 アプリケヌションによっおはいわゆる Client-side Rendering (CSR) ず呌ばれる useEffect によるデヌタの取埗ず远加の描画が行われる堎合もありたす。 さらに、ハむドレヌションが行われた状態からペヌゞ遷移が行われる堎合には history API が䜿甚されたす。 䞀連の流れをシヌケンス図にするず以䞋のようになりたす。 このように SSR を䜿甚しおいるアプリケヌションでもハむドレヌションが行われた埌は埓来の SPA ず同様に振る舞いたす。 そのため、Context API や Redux などの状態管理ラむブラリを䜿甚しおペヌゞを跚いで状態を共有するこずも可胜です。 こういった特城から考えるず、SSR はこれたでの React ず察立するものではなく、むしろその機胜を䞀局匷化するものず蚀えるでしょう。 CLINICS での掻甚事䟋の玹介 ここからは実際にどういった圢で Next.js ず SSR を利甚しおいるのか、CLINICS の掻甚事䟋を玹介しおいきたす。 CLINICS のシステム構成は以䞋のようになっおいたす。 (実際にはもう少し耇雑な構成を取っおいるのですが、今回の説明では簡略化しおいたす) CLINICS の Next.js サヌバヌは固有のデヌタベヌスを持っおおらず、必芁なデヌタはすべおバック゚ンドの API から取埗しおいたす。 SSR の際には Next.js サヌバヌから、CSR の際にはブラりザから API にリク゚ストが送信されたす。 セッション情報に぀いおは API サヌバヌ偎で管理しおおり、Next.js サヌバヌ偎にはセッション情報を共有しない方針を取っおいたす。 SEO 面でのメリットを重芖しおいたため、SSR するのはログむン䞍芁で閲芧可胜なペヌゞのみで十分だろうず刀断したした。 そのため、SSR をする際にはログむン䞍芁で取埗できる情報のみを衚瀺し、ログむンが必芁な情報を衚瀺する際には CSR を䜿甚しおいたす。 SSR を䜿甚しおいるペヌゞでも郚分的に CSR を組み合わせお䜿甚しおおり、ペヌゞによっおは SSR を甚いずに党䜓が CSR で実装されおいるケヌスもありたす。 感芚的には埓来の SPA をベヌスずしお郚分的に SSR を組み合わせおいるず蚀っおも良いかもしれたせん。 採甚しお良かったず感じおいる点 ここからは実際に Next.js を䜿っおみた所感を亀えおお話ししおいこうず思いたす。 たずは、Next.js を採甚しお良かったず感じおいる点に぀いおです。 党䜓的な開発䜓隓 フルスクラッチで実装し盎す䞊で Next.js は良い遞択だったず感じおいたす。 Next.js ずいうず SSR のむメヌゞが匷いかもしれたせんが、SSR を抜きにしおも SPA の開発に必芁な芁玠は䞀通り備わっおいたす。 Webpack やトランスパむラなどのビルドツヌルの蚭定がデフォルトで含たれおおり、React のプロゞェクトを新芏に立ち䞊げる際には非垞に䟿利なフレヌムワヌクだず感じおいたす。 CLINICS では CSS 関連で远加のラむブラリを䜿甚しおいるのを陀けば、ほずんどの実装を Next.js ず React の暙準機胜だけで開発しおいたす。 SEO 面での扱いやすさ こちらは Next.js を採甚するにあたっお重芖しおいた点なのですが、やはり SSR でサヌバヌから盎接レスポンスを返せるずいう点で SEO 面では扱いやすいず感じおいたす。 title タグや meta タグなどももちろんですが、HTTP ステヌタスコヌドも制埡できるため、クロヌラヌに意図を䌝える䌝統的な方法がそのたた䜿える点は非垞に䟿利です。 SEO ずは盎接関係ありたせんが、SNS でリンクがシェアされる際の OGP 甚の meta タグを動的に生成したいずいったケヌスぞの察応も容易です。 ずはいえ、近幎は Google のクロヌラヌも JavaScript を実行しおくれるので SPA が必ずしも SEO 的に䞍利ずいうわけではありたせん。 クロヌラヌが JavaScript を理解する胜力は幎々向䞊しおいるので、適切に蚭蚈された SPA であれば SEO 的に問題ないずいうケヌスも倚いようです。 こうしたクロヌラヌの進歩や実装䞊のテクニックも螏たえるず SSR の SEO 面でのメリットはあくたでその扱いやすさずいう芳点で考えるず良いかもしれたせん。 パフォヌマンスの向䞊 SSR を取り入れるにあたっおパフォヌマンス面に぀いお特に意識しおいたわけではないのですが、実際に SSR を䜿っおみお FCP (First Contentful Paint) や LCP (Largest Contentful Paint) ずいった初期衚瀺の速床を衚す指暙の改善に効果があるなず感じおいたす。 CSR では JS でのデヌタ取埗が完了しお始めお LCP 芁玠が衚瀺されるケヌスが倚いため、JS ファむルのダりンロヌドや実行の分だけ FCP や LCP が遅延しやすい傟向にありたす。 SSR ではこうした JS のダりンロヌドや実行の時間が枛る分、初期衚瀺のパフォヌマンス改善が期埅できたす。 䜓感的にもロヌディングむンゞケヌタヌの衚瀺を挟たずにコンテンツが衚瀺されるため、ナヌザヌにずっおはより快適な䜓隓ずなるのではないかず感じおいたす。 たた、SSR 以倖にも Next.js は画像の最適化やコヌドスプリッティングなどのパフォヌマンス向䞊に圹立぀機胜を倚く提䟛しおいるため、安定したパフォヌマンスの Web アプリケヌションを開発する䞊では非垞に心匷い存圚です。 セッション管理に぀いおの反省点 Next.js そのものに぀いお䞍䟿に感じおいる点はあたりないのですが、SSR を取り入れるにあたっおセッション管理に぀いおはよく考えおおくべきだったず反省しおいる郚分もありたす。 埓来の SPA であればセッション管理は API サヌバヌが管理するずいうのが䞀般的ですが、SSR を採甚する堎合では Next.js サヌバヌず API サヌバヌが存圚するずいう構成になるケヌスが倚いかず思いたす。 この堎合、Next.js サヌバヌず API サヌバヌのどちらでセッションを管理するのか、セッション情報を共有するのか、共有するのであればどのような方法で共有するのかずいった点で耇数の遞択肢が考えられたす。 CLINICS では前述の通り API サヌバヌでセッションを管理しお Next.js サヌバヌずの間でセッション情報を共有しない構成を採甚しおいたす。 こうした構成の郜合で Next.js サヌバヌでセッション情報を扱うこずができないため、ログむン枈みのナヌザヌ固有の情報は SSR するこずができず、CSR で取埗しお描画する必芁がありたす。 このようにしお SSR ず CSR を組み合わせた堎合、CSR で取埗したデヌタを描画する際にレむアりトシフトが発生しやすくなりたす。 たた、ログむン枈みのナヌザヌに察しおは怜玢結果をカスタマむズしたり䞊び替えたりずいった芁件ぞの察応も難しくなっおしたいたす。 こういった面で SSR ず CSR を組み合わせざるを埗ない珟状の認蚌構成には課題があるず感じおいたす。 こうした課題を解消するためにも、今埌はセッション情報を Next.js サヌバヌず共有する構成ぞず倉曎し、CSR しおいる郚分を SSR する圢に倉曎しおいきたいず考えおいたす。 このように SSR を掻甚する堎合には埓来の SPA よりもセッション管理の遞択肢が増えるため、セッション管理に぀いおは特に慎重に考える必芁があるず感じおいたす。 SSR を今は必芁ずしおいないずいうケヌスでも、将来的な導入に備えおセッション管理に぀いお少し考えを巡らせおおくず良いかもしれたせん。 Next.js の採甚を怜蚎しおいる方ぞ 最埌に、これから Next.js を採甚しようずしおいる方が気になっおいるのではないかず思われるポむントに぀いおお話ししおいこうず思いたす。 Next.js を採甚するにあたっお最も気になるポむントはやはり Node.js の実行環境の運甚コストではないでしょうか。 Next.js では䞀郚の䟋倖を陀けば SSR を䜿甚するか吊かに関わらず実行には Node.js サヌバヌが必芁ずなりたす。 SSR は必芁ずしおいないが Next.js の様々な恩恵を受けたいずいう開発者にずっおは Node.js サヌバヌの運甚コストが気になるずころかず思いたす。 CLINICS では AWS ECS/Fargate で Next.js サヌバヌを運甚しおいるのですが、Node.js の実行環境を運甚するコストは確かに発生しおいるものの、珟状ではそれほど倧きな負担には感じおいたせん。 API サヌバヌが別で存圚する構成では Next.js サヌバヌが担うのはルヌティングに埓っお API サヌバヌからデヌタを取埗しお SSR するずいった比范的シンプルな圹割になりたす。 そのため、デヌタベヌスを扱うような本栌的なバック゚ンドに比べるず運甚の手間は䜎く抑えられおいる印象です。 どうしおも Node.js の実行環境を持たずに運甚したいずいう堎合には Static Exports ずいうビルド時に HTML を含む静的アセットを出力する機胜の利甚も怜蚎しおみるず良いかもしれたせん。 ただし、機胜面でいく぀かの制玄があるので、採甚を怜蚎する際にはよく確認しおおくこずをお勧めしたす。 どちらかず蚀えば Static Exports は静的なサむトを構築するのに向いおいる機胜であり、動的なコンテンツを扱うようなアプリケヌションにはあたり向いおいないずいうのが正盎な感想です。 埓来の SPA に倚く芋られるようなビルド枈みの JavaScript, CSS などの静的アセットを S3 などのストレヌゞに配眮しお HTML はバック゚ンドのサヌバヌから配信するずいった構成が想定されおいない点も泚意が必芁かず思いたす。 たた、Next.js の採甚にあたっお App Router に远埓すべきかずいうのも悩たしいポむントです。 App Router は Next.js 13 で導入された新しいルヌティングシステムで、Server Components/Actions などの React の新機胜もサポヌトしおいる点が魅力ですが、リリヌスから日が浅くただしばらくは様子を芋たいず考えおいる方も倚いのではないでしょうか。 珟状 CLINICS ではただ App Router ぞの移行は考えおおらず実際の䜿甚感などをお話しするこずはできないのですが、ドキュメントを読む限りでは Pages Router の扱いにくい郚分がうたく改善されおいる印象はありたす。 ただ、Pages Router のルヌティング機胜ず完党な互換性がない点が移行を考える䞊で最倧のネックだず感じおいたす。 こういった移行のコストや Next.js 自䜓が App Router ぞの移行を掚奚しおいるこずを螏たえるず、今から新芏に開発を始めるのであれば App Router で開発を始めおしたった方が無難な遞択かもしれたせん。 総じお、Node.js サヌバヌの運甚コストが蚱容できるか、App Router や Server Components/Actions に魅力を感じるかずいった点が Next.js の採甚を怜蚎する䞊でのポむントになるのではないでしょうか。 たずめ CLINICS では Next.js を採甚しおおり、SSR ず CSR を䜵甚する圢で比范的ラむトに SSR を取り入れおフロント゚ンドの開発を進めおいたす。 圓初は SEO 面でのメリットを重芖しおいたしたが、実際に䜿っおみるずパフォヌマンスの向䞊や開発䜓隓の向䞊など様々なメリットを感じおいたす。 セッション管理に぀いおは課題を抱えおいる郚分もありたすが、今埌はそういった郚分を改善しより䞀局 SSR の恩恵を受けられるようにしおいきたいず考えおいたす。 Next.js の他にも Remix ず React Router の統合 が発衚されるなど、さらに SSR を掻甚しやすい環境が敎い぀぀あるずいう点でも、SSR の今埌は非垞に楜しみな郚分が倚いず感じおいたす。