Slide 1

Slide 1 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 Startup Angular #2 KAKEHASHIでAngularを利用すること Satoshi Watanabe@株式会社カケハシ 2021/11/26

Slide 2

Slide 2 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 本日の内容 Startup Angularということで、 スタートアップ企業としてのカケハシがAngularをどのように活用して いったのかというお話をできればと思っています。

Slide 3

Slide 3 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 自己紹介 渡辺悟史 (わたなべ さとし) 株式会社カケハシ エンジニア 担当はPocket Musubi開発 主にフロントエンドをメインに担当 twitter: @sassy_watson

Slide 4

Slide 4 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 株式会社カケハシ 創業5年のスタートアップ 「日本の医療体験を、しなやかに。」のミッションのもと テクノロジーで日本の患者体験・薬局体験の向上に取り組む 日本の医療体験を、しなやかに。

Slide 5

Slide 5 text

約 6万 店 (コンビニの数:約5.3万店) 約 7億 回 調剤薬局の数 患者さんと薬剤師の1年間の会話数 処方された薬を受け取るところ 処方された薬について説明するところ 薬について相談するところ 自分の薬の重複や相互作用を確認するところ 自分の薬や体質の情報を管理するところ 薬を減らしたり、飲みやすくするところ 薬以外のことについて相談するところ 一般医薬品や介護用品を購入するところ 自宅を訪問して薬の管理・指導をするところ 患者さんがもつ薬局への印象 薬局業界を取り巻く環境 5 5 出典:処方箋受取率の推計_https://www.nichiyaku.or.jp/assets/uploads/activities/bungyo/s/R2suikei.pdf

Slide 6

Slide 6 text

厚生労働省は、薬局に変革を促している 6 対物業務 対人業務 出所: 厚生労働省 患者のための薬局ビジョン(https://www.mhlw.go.jp/stf/seisakunitsuite/bunya/kenkou_iryou/iyakuhin/yakkyoku_yakuzai/index.html) 6

Slide 7

Slide 7 text

7 患者さんへの提供価値を妨げている要因 創業後、400人以上の薬剤師へのインタビューで見えてきた課題 対人以外の業務が多く、 心と時間の余裕がない 処方箋だけでは患者さんの ニーズがわからない (患者コミュニケーションへの不安) 対物業務が多い 各患者さんに対して 何をどう話すべきか悩ましい (患者コミュニケーションへの不安) 「効率化」の課題 「患者関係性」の課題 人によって業務の質に バラつきがある 業務の標準化が 出来ていない 「標準化」の課題

Slide 8

Slide 8 text

8  患者さんと薬剤師の“医療体験”を変革するため 調剤薬局向けSaaS「Musubi」が誕生

Slide 9

Slide 9 text

9 対物から対人へ。門前からかかりつけへ。 そして、地域医療を担う存在へ。 薬局に求められる役割が大きくなるにつれ、負担も大きくなっている。

Slide 10

Slide 10 text

患者さんのための薬局づくりのパートナーとして、 複合プロダクトで「薬局DX」をトータルサポート。 医薬品発注 管理最適化

Slide 11

Slide 11 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 AngularとReact カケハシではAngularとReactのどちらかをチームで採用している

Slide 12

Slide 12 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 Angularをどこで使っているか ● Musubi ○ Angular + Electron ● Pocket Musubi(LIFF/薬局管理画面) ○ Angular(Web) ● Musubi Insight ○ Angular(Web)

Slide 13

Slide 13 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 なぜAngularを採用したのか ● 導入時はまだAngular2が出たばかりのころ ○ ReactとAngularのシェアは当時差がほとんどなかった ● 全部入り(routerだったりHttpClientだったり)のフレームワーク ● TypeScriptを使うこと前提(静的型による開発上のメリット) ○ TypeScript対応という観点で見た時に、当時のReactはまだ不安 ○ Angularは基本TypeScriptを使う ○ 型重要!型重要!

Slide 14

Slide 14 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 なぜAngularを採用したのか ● 当時のReactはまだHooksがなかった ○ Vertual DOMをいい感じに使うためのかなり薄いフレームワーク ○ Flux的な議論やモジュール・コンポーネント切り分けのような開発規約におい て決定版と言えるようなものがなく「ぼくのかんがえたさいきょうの開発方法」 の模索で界隈が疲弊していると観測していた ● AngularはAngular Wayが極めて明確 ○ 公式の開発ガイドラインがある ○ ソフトウェアエンジニアのスキルレベルによる実装手段のセグメンテーションが 起きにくく価値創造のための実装に集中しやすい ○ 素早くリリースすることを重視!

Slide 15

Slide 15 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 まずはMusubiを開発 Musubiの知見を生かし 他のプロダクトを 高速リリース

Slide 16

Slide 16 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 公式ドキュメントで基本的な開発方法はわかる!

Slide 17

Slide 17 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 Angularの良いところ ● ロジックはServiceに書いて、ComponentにDIさせれば良い ○ できる限りロジックはServiceに書く ○ テストはServiceでテストをやる ● Componentもテンプレートとスタイル(HTML/CSS)とロジック(TypeScript)が分離さ れている ○ デザイナーと協業しやすい(HTML/CSSを別で書いてもらえる)

Slide 18

Slide 18 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 RxJSは苦労する ● リアクティブプログラミングに慣れる必要がある ● ここは、かなりの意識を変化させる必要がある(手続き型の書き方とは違う) ● streamをいかに操作し、使うかが大事

Slide 19

Slide 19 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 RxJSでいかにがんばるかがポイント ● subscribeの中の関数にはできる限りロジックは書かない ○ streamをoperatorでできる限り操作する(if文が出てきたらfilterを使う、等) ● ネストはしない(switchMapやmergeMapを使おう) ○ subscribeの中でのsubscribeも注意 ● unsubscribeを忘れない ○ テンプレートで表示するだけだったらasync pipeを使う ● がんばりすぎて読みづらくなったら注意 ○ 他の人が理解できないと結果バグの温床になる ○ チームがRxJSに成熟する必要がある ○ ペアプロ・モブプロで知見の共有を!

Slide 20

Slide 20 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 状態管理 ● プロダクトで状態管理は異なっている ● Musubiというプロダクトは内製reducer ○ 状態管理のライブラリのデファクトが当時なかった ○ といってもメンテナンスが大変 ● Pocket Musubiのフロントのような小規模だと状態管理のライブラリは使わず、 BehaviorSubjectでがんばるという選択もある ○ ngrxは too mach ○ ただ大きくなってくると状態管理のライブラリが欲しくなる ● 使う時はngrxを第1候補に

Slide 21

Slide 21 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 CSSライブラリ ● Musubiはmaterialize.cssを使う ○ しかしこれは色々やろうとすると逆に邪魔になる ○ angular2-materializeもメンテナンスされなくなる ● Pocket Musubiはその反省からCSS関連はライブラリを使ってない

Slide 22

Slide 22 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 テスト ● 単位テストは書ける範囲で書く ○ Componentのテストはコストがかかるので無理しない ● E2Eテストはコードを書くのは大変 ● E2Eテストはmabl(テスト自動化ツール)を使う ○ AngularフレームワークのE2Eテストは使わない

Slide 23

Slide 23 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 angular-cli ● angular-cliがものすごく便利 ○ WebPackでがんばってた時が嘘のよう・・・・ ● アップデートも ng updateで一発 ○ renovateでversion upしないように気をつける

Slide 24

Slide 24 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 まとめ ● KAKEHASHIでAngularで導入・活用の話をしました ● もっと話したいことはありますが、また別の機会に ● これを機会に皆様と情報交換をしたいと思っています。 ● よろしくお願いします。

Slide 25

Slide 25 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 株式会社カケハシでは エンジニア採用を行っています。 興味がある方はぜひカジュアル面談か らお願いします。 https://recruit.kakehashi.life/engineer

Slide 26

Slide 26 text

Copyright © KAKEHASHI Inc. All Rights Reserved. 
 ブログもあります 検索キーワード:カケハシ 技術ブログ

Slide 27

Slide 27 text

Copyright © KAKEHASHI Inc. All Rights Reserved.