こんにちは! こちらの記事は カケハシ Advent Calendar 2022 の9日目の記事になります。 2022/10/17からカケハシにJoinした兼平です。 Musubi AI在庫管理を開発しているチームで開発ディレクター(スクラムマスター)として、 ビジネスと開発が協働して医薬業界に最大の価値を出していくために色々やっていきます。 これを書いてるのは入社2ヶ月弱のタイミングなのですが、 私がなぜ転職をしようとしたのか、なぜカケハシを選んだのか、実際に入ってどう感じたのかをシェアさせていただこうと思います。 なぜ転職しようとしたのか 筋トレ、してますか? シェアと言いながらいきなり質…
こちらの記事は カケハシ Advent Calendar 2022 の 8 日目の記事になります。 こんにちは。Musubi AI 在庫管理のフロントエンドの開発を担当している大村です。 私は普段の開発で Visual Studio Code (以下 VSCode) を使っています。 VSCode は非常に高機能なエディタで、開発に役立つ多くの機能が提供されており、その中には Git 関連の機能も含まれています。 私自身、以前は Git の CLI ツールを使っていましたが、VSCode の Git 機能を知るうちに利便性を感じることが増え、VSCode 上で操作することが多くなりました。 今…
こちらの記事は カケハシ Advent Calendar 2022 の 7日目の記事になります。 https://adventar.org/calendars/7444 この記事のモチベーション カケハシでAI在庫管理というプロダクトのバックエンド開発をやっている金子です。 代数的データ構造というデータ構造について聞いたことはありますでしょうか。 私ははあります。が、それが何なのか、なぜ「代数的」と呼ばれるのか良く分かっていません。 そこで、この記事では代数的データ構造のことを良くわかっていない私が、代数的データ構造のことを知らない人に向けて、代数的データ構造について説明してみる、という無謀な…
こちらの記事は カケハシ Advent Calendar 2022 の 2 日目の記事になります。 https://adventar.org/calendars/7444 はじめに こんにちは、おくすり連絡帳 Pocket Musubiというサービスを開発している石井です。 私は主にアプリケーションのサーバーレスなインフラとバックエンドを開発をしております。サーバレスとなると必然的に Lambda を利用することがほとんどです。 そこで Lambda の開発を簡単にしてくれる AWS Lambda Powertools for Python (以下:Lambda Powertools)というラ…
AWSで使ってみたいサービスといえば? もちろんGround Station 🛰️ですが、AWSのサービスで過小評価されているものを一つ選ぶとしたら、AWS ConfigのAdvanced Queryが候補に挙がります。 AWSリソースを設定から検索するなら、クエリで検索できるAdvanced Queryが便利です。 ユースケース: バージョンが古いLambda Runtimeを特定する 画面上でサンプルクエリが提供されています。便利! サンプルをNode.js 12以下を検索するクエリに加工してみました。前方一致が利用可能です。 SELECT accountID, resourceId, c…
こんにちは、株式会社カケハシでおくすり連絡帳 Pocket Musubiの開発を担当している渡辺です。 プランニングポーカーをご存知でしょうか? アジャイル開発における規模の見積もり手法の1つです。やり方は、それぞれメンバーが数字のカードを持ち、対象のタスク(もしくはユーザーストーリー)に対して、自分が考えた規模の数字カードを出し合います。一致すればその数字、一致しない場合は、なぜその差分が生じたのかを議論します。 弊社では、見積もりするタスクのゴールを定義し、知見のある人や担当する予定の人にHowの部分を説明いただきます。そこで議論をした後、自分が思うタスクのポイントを出します。ポイントはフ…
KAKEHASHI でバックエンドエンジニアをしている横田です。 今回は、一般的にクローラーを使って作成するであろう、データカタログのテーブルを Spark だけで実現する方法について紹介できればと思います。 背景・目的 MusubiInsight のプロダクトでは、薬剤師さんや薬局のマネージャーさん向けに業務実績データの可視化を行っています 可視化するデータは、夜間にバッチ処理で計算しています データ量としては数十 ~ 数百 GB あるので、集計処理基盤として AWS Glue の Spark Job を使っています Spark Job の結果を AWS Glue の Hive メタストア互…
はじめに こんにちは、LINE上で動くおくすり連絡帳 Pocket Musubi というサービスを開発している種岡です 早いもので入社してから3年が経ちました 会社の成長と共に取り扱うサービスも増え、今では12以上の開発グループが存在しています 誰がどのチームなのかを把握するのが非常に難しい、また、どのチームがどのサービスを担当するのか把握できないという声が寄せられ、チーム間のコミュニケーションの障害になっているという課題感が浮かび上がりました この課題に対して、チーム毎のポータルページを社内Wikiで作成するという運動が始まりました そこで、チームポータルページを社内WikiではなくAmpl…
本番サービスイン後、不思議な条件で起きるエラーが出てきませんか?調べても調べてもわからない...時間が過ぎるばかりですが、突然ハッと思いつきます。 💡あっ!タイムアウトだ! 見聞きする限り、ほぼ確実にこのパターンが発生しています。信頼性を上げ、不毛な障害対応を減らし、ユーザーに届ける価値を下げたくないなら、タイムアウトの設定を必修科目にしましょう 堅牢なアプリやサービスか診断するときには、タイムアウトとリトライについて確認すると良いでしょう。 タイムアウトを設定するメリット ユーザー体験の向上(の可能性) 終わりが見えずただ待つのは辛い...無駄に待っている可能性があります 無駄なリソースの節…
こんにちは。 カケハシでMusibi Insightのバックエンドエンジニアをしている高田です。 Musubi Insightとは、薬局の経営改善に役立つさまざまなデータを可視化しているプロダクトであり、そのデータはAirflowとAWS Glueを利用した日次の夜間バッチ処理によって生成されています。 バッチ処理に使っている技術や仕組み等は、以下の記事で紹介させていただいています。 そんなバッチ処理を、パフォーマンス改善や新たな機能追加のための準備としてリファクタリング行なうことがあります。 ただ、バッチ処理のリファクタリングはテストがしづらかったり、思いもよらぬ形で後続の処理に影響を与えて…
こんにちは、株式会社カケハシでおくすり連絡帳 Pocket Musubiの開発を担当している渡辺です。 RxJS RxJSはリアクティブプログラミングのライブラリです。 リアクティブプログラミングって何かと言いますと、 データを受け取るたびに反応(リアクション)をするプログラムです。 たとえば、 of(1, 2, 3).subscribe({ next: (value) => console.log(value), }); とすると、1, 2, 3の順番にデータを受け取り、受け取ったデータごとにnextが反応します。 このデータの流れをStreamと呼びます。 Streamを購読(subscr…
初めまして、カケハシのデータ基盤チームでデータエンジニアしている大木と申します。 この度カケハシでは、全社的なデータ活用基盤のプラットフォームとしてDatabricksを採用し、2022/07より本格導入することとなりました。 当記事では、カケハシがDatabricksを採用するに至った技術選定の背景について紹介させていただきます。 ※カケハシのデータ基盤の組成のお話はこちらの記事で詳しく紹介されておりますので良ければご覧ください。 カケハシのデータ基盤アーキテクチャと課題 まずカケハシのデータ基盤のアーキテクチャと抱えている課題について紹介します。 Databricks導入に伴い現在は一部変…
こんにちは、カケハシでMusubi Insightのバックエンドエンジニアをしている末松です。 夜間などに動くバッチ処理を開発・メンテしているエンジニアの方ならきっと共感していただけると思うのですが、夜間バッチって心配になりますよね。 朝早起きして結果を確認したり、夜更かししてリアルタイムで張り込みをしたり... 数名いる Musubi Insight のバックエンドエンジニア陣も同様で、バッチ処理に何かしらの変更を加えた夜は結果が気になってしまいあまり熟睡できなかった、ということもしばしば。 この記事では、そんなエンジニア陣の救世主となったバッチ処理のE2Eテスト(※)環境を作ったお話になり…
はじめに こんにちは、LINE上で動くおくすり連絡帳 Pocket Musubi というサービスを開発している種岡です。 日頃もくもくと開発作業に勤しむ傍ら、ときどきユーザーからの生の声(良くも悪くも)が届くのは嬉しいものです。 サービスが成長している1つの証である一方で、ふと「サーバーへの負荷大丈夫なんだろうか?」と頭をよぎり心配になります。 この記事では、AWSが提案している負荷テストソリューションの使い方を紹介し、ボトルネックを早期発見および、安定的な運用につながればと思い筆を取りました。 AWSの分散負荷テストソリューションとは AWSの公式より全体構成を抜粋しています。 AWSが用意…
概要 こんにちは!私はカケハシにて薬局と患者様の関係を向上させるためのオペレーションツールである 患者リスト の開発を担当している小室と申します。患者リストの立ち上げから担当させて頂いており、技術選定などのお話は先日はTechPlayでも登壇させて頂きました。( 登壇資料 ) 本記事ではそんな 患者リスト から、弊社のメインプロダクトとなる Musubi へDeepLinkで連携した際の知見をまとめたいと思います。 背景 そもそもなぜDeepLinkが必要になったかというと、患者リスト では患者様をリストアップする機能があるのですが、その患者様が薬局に来局された際の処方内容や服薬指導内容等の詳…
はじめに こんにちは、LINE上で動くおくすり連絡帳 Pocket Musubi というサービスを開発している種岡です。 弊社では、ソフトウェアエンジニアそれぞれが得意分野をリードしながらも、フロントエンド、バックエンド、インフラを横断的に見ているケースが多いです。 プロダクトデリバリーに対して裁量が多く、やりがいが大きい一方で、安定運用に対しても責任が伴います。 とくに、薬局の薬剤師さんや患者さんが利用するというプロダクトの性質上、個人情報や機微な情報を取り扱うため、セキュリティに関しては開発時から意識せざるを得ません。 この課題に対して、チームでは開発中の段階から OWASP ZAP とい…
はじめに こんにちは、Pocket Musubi エンジニアの関(@sekikazu01)と申します。 「あ〜アイコン大量に増えた時逐一画像を書き出して Icon コンポーネントに反映させるのめんどくせ〜〜〜」 そんな風に思った事はないでしょうか。私は思いました。 ので Figma のアイコンコンポーネントからコードに反映するまでのパイプラインを作りましたので、そのコードを公開していきます。 この記事はアイコンの生成の話ですが、一回作っておくと他にも画像だったりコンポーネントだったり諸々の生成パイプラインを作る時にも役立つと思います。 また、敬意を表すべくこのパイプラインを作るにあたって参考に…
はじめに こんにちは、KAKEHASHIのMusubiInsightチームでエンジニアをしている高田です。 MusubiInsightとは、薬剤師さんの業務データを可視化するBIツールになります。 そんなMusubiInsightにおいて、表示の高速化を狙いにServiceWorkerという技術を導入したので、紹介したいと思います。 MusubiInsightの課題 ServiceWorkerが何か、という話をする前に、MusubiInsightの課題について触れておきます。 ありがたいことに、MusubiInsightのユーザー数は堅調に増加していますが、それに伴いパフォーマンス低下の課題が…
概要 薬局運営のデータ分析サービスである Musubi Insight のフロントエンド開発をしております米山と申します。 Musubi Insight のフロントエンドは Angular で開発されており、テストフレームワークには jasmine/karma を利用していました。 この度、jasmine/karma から Jest に移行しましたので、移行の記録を書いていきます。 移行理由 jasmine/karma は Angular のデフォルトのテストフレームワークです。 しかし、JavaScript のテストフレームワークとして、jasmine/karma の利用人口が減少傾向にある…
こんにちは、あるいはこんばんは(アーニャ声)。 突然ですが認証認可周りの設計・実装は毎回全然違った要件に沿って違った感じでやっていく感じになるのでおもしろいですよね。 この記事では、先日Musubi Insightチームが社内向けに作成したコンソールの設計・実装について認証認可周りに絞ってまとめたいと思います。 認証認可はCognito User Groupベースで実装したのですが、意外とネットの情報が少なかったので参考になれば幸いです! なおブログ中に登場する画面のスクショについてなのですが、普段フロントエンドをほぼ触らない筆者がサクッと作ったものですので、デザインなどあれな部分もあるかと思…