サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
GPT-4o
kakehashi-dev.hatenablog.com
開発コストのうちGitHub Actions料金が占める割合は小さい傾向にありますが、組織規模によっては削減の必要があるでしょう。 この記事では、主にDatadogを利用した可視化による特定方法と、一般的なコスト削減のヒントを述べます。 前提:パフォーマンスを改善する 従量課金のアプリケーションではパフォーマンス ≒ コストです。まずは実行時間から改善しましょう。 カケハシでは以下のような事例があります。 以下の記事も観点洗い出しができるのでおすすめです。 この記事では実行時間以外のコスト観点で解説します。 実行時間と課金時間の違いを学ぶ GitHub Actionsの最低課金時間(billable time)は1分です。 1秒実行(Run time)でも1分分の料金になりますし、1分2秒なら課金時間は2分です。 実行時間が長いものに料金がかかるのは当然として、仕組み上、細かいものでも実行
請求明細書を見てお嘆きの皆様へ。 前回の記事では、すぐにコスト削減の成果を出したい人向けに比較的簡単な方法を解説しました。 この記事では、時間がかかっても良いので根本的に原価をなんとかしたい人を対象としています。 請求明細書(Billing)やCost Explorerの参照権限を広く付ける 開発者がコストを意識するところから、すべては始まります。 意識しようにも、そもそもいくらかかっているかわからないことがあります。見ようとしても現場レベルで直接参照する権限がないことがあります。情報対称性の意味でも、初期設定で権限を付与しておきましょう。デフォルトAllow、やむを得ない事情があればDenyという方式がよいです。 AWSの請求は日次で更新されるため、当日行った作業結果が翌日翌々日には反映されます。フィードバックループを回せるよう、まずはデータを入手できるようにしましょう。 横断してコスト
本記事は カケハシ Advent Calendar 2022 10 日目の記事です。 Musubi 開発チームの加藤です。1 年ぶり ですね。 今回は「私の開発環境 2022 冬」をお送りしようと思ったのですが、今年はリポジトリをたくさんセットアップしたので、 「リポジトリを作成したら最初にすること」をお送りします1。 はじめに プロジェクトなり個人開発なりでリポジトリを作成する際、組織や開発者の中で共通して使用するツールやその設定ファイルがあると思います。 2022 年を通じて自分の中である程度型ができてきたので、それをご紹介しようと思います。 前提 Python で実装したコードを Serverless Framework で AWS Lambda にデプロイするケースをモデルとして、リポジトリを設定していきます。 初期状態は、GitHub リポジトリを作成直後のリポジトリ名が入った
みなさんは、技術とは何か、考えたことはあるでしょうか。 ここでは、技術哲学の立場から考えるための参考として、ハイデガーの技術論を取り上げます。 技術論のタイプ A.フィーンバーグの技術: クリティカル・セオリーの分類によれば、 これまでの技術論は2つの立場に分けることができる、と考えられています。 道具説 自立的存在説 道具説は、世の中に広く受け入れられている見方で、 技術とは「中立的」であり、利用者の目的に奉仕する道具と考えます。 逆に、技術の中立性を否定する見方として、自立的存在説という見方もあります。 この説では、技術とはそれ自体が社会のすべてを管理の対象物として作り変えようとする、と考えます。 ハイデガーの技術論は、この説の代表的な考え方になります。 ハイデガーの技術論 技術への問い ハイデガーはその著書、技術への問いで、 技術について問うことを、以下のように述べています。 われわ
AWSコストをいますぐ最適化しませんか? キャッシュフロー、ユニットエコノミクス、改善しませんか? この記事では、とにかくいますぐなんとかしたい方向けの方法を金額面で大きい傾向にあるサービスごとに26個紹介します。 以下各見出し内の💰はコスト削減度、⚡はおまけでパフォーマンス改善度を指します。 (1) 💰💰💰 CloudWatch Logs: とにかくログを出さないこと、まとめること AWS料金のうち、CloudWatch Logsが上位を占める傾向にあります。保存期間が無期限だから費用がかかる...と見せかけて、実際はログ出力自体の料金が大半です。 レガシーWebアプリケーションのログは1リクエストにつき何回も何行も出力する傾向があります。フレームワーク特有の不要なログも付いてきます。勝手に出力されるログは放置せず整理して、リクエスト単位でイベントとしてまとめましょう。 参考記事
こんにちは、株式会社カケハシでおくすり連絡帳 Pocket Musubiの開発を担当している渡辺です。 今回は文字コードについての記事を書きました。 Pocket Musubiではお薬手帳用QRコードを読み込み、デコードした結果を利用します。ここでデコードするときにうまくいかないケースがあり、そこでの知見です。 文字コードについて 蛇足ですが、文字コードについて簡単におさらいします。 文字コードとは、文字をコンピューターで扱うために、文字ごと割り当てた数字のことです。 文字コードの対応表に基づいて、文字を数字に割り当てることを文字エンコードと言います。 文字コードの対応表には、ASCIIやUTF-8のような規格があります。 たとえば、アルファベットを扱うASCII文字だと'a' は97番、'b'は98番と割り当てられています。 ASCII 先ほども出てきた「ASCII」とは、文字コードの標
はじめに こんにちは、LINE上で動くおくすり連絡帳 Pocket Musubi というサービスを開発している種岡です。 ある日チーム内メンバーから CI実行時間がとても長くなり困っている というアラートが発せられました。 実際に確認しに行くと、開発初期の頃は5分ぐらいだったテストが、いつの間にか 20分 以上にもなっていました。 待ち時間は、DX体験を損なうだけでなく、本来できたはずである付加価値を生む開発時間を奪う側面も持ち合わせており、即刻対処すべき案件と捉えテストを早くするタスクに取り掛かりました。 結果、当サービス比ではありますが、3倍ほど早くすることができました。 そこで備忘録がてらこちらにまとめてみることにしました。 やったこと 全体の概要図は以下のようになります。 不要なステップの削除 サービスコンテナの利用 マトリクスを使ったテストの並列化 actions/cacheの利
はじめに こんにちは。Musubi の機能開発チームでフロントエンドを主に担当しております、井上です。どうぞよろしくお願い致します。 カケハシではスクラムによる開発を推進しており、その運用はあるていど各チームの裁量に任されています。 今回は私が所属しておりますチームがスクラムを運用をしていく中で使用している GitHub Projects について触れていきます。 どうぞお付き合いのほど、よろしくお願い致します。 ご注意 上記でも触れておりますが、本記事における GitHub Projects の運用は Musubi の機能開発チームにスコープしたものです カケハシ全体で GitHub Projects を用いたスクラム運用を行っているものではありません GitHub Projects とは GitHub が提供するプロジェクト運用のためのツールです。 ドキュメント では次の記載があります
お金は好きですか? コストを削減したいみなさん、ようこそ。 原価を低減したいみなさん、ようこそ。 サーバレスのビジネスでの優位性は多数ありますが、今回はその中でもコスト最適化の面から説明します。 やればやるだけ成果が見える: 努力が必ず報われる物語 レイテンシを1ms削るようなリリースができたとしましょう。(ネットワーク系のコストは同等と仮定します) 従来の開発では、CPUやメモリ利用量が若干減った程度では、コストは変わりませんでした。利用率が100%にならないようバッファを持たせており、多少削ってもサーバーの台数削減につながらないからです。あえてリソースを減らすとしても、利用率100%のリスクを取ることになります。 サーバレスコストの世界は違います。従量課金であり、使った分だけ課金されるということは、改善をリリースした瞬間から支払金額が削減されます。リクエスト数を減らせば、パフォーマンス
はいさい!カケハシの新米メンバー、オースティンと申します。 沖縄から参上しております! 概要 RxJS のmergeMapとswitchMapの違いと使い方について解説します。 背景 Observableを使っていると、必ず直面する問題があります。それは、複数のObservableをどうやって一緒に実行できるか、という問題です。 とあるObservableの処理が終わった後に、そのデータを元に、別のObservableでさらに非同期処理をすることは開発者として多々あります。 Promiseのthenでまた別のPromiseを返してチェーンしていくのと同じことです。 しかし、RxJS では、Promiseと違ってObservableを直列にチェーンするのに使うpipeのOperatorFunctionが複数存在します。代表的なのは、mergeMap、mergeWith、およびswitchMa
こんにちは!カケハシにて薬局と患者の関係性を向上させるためのツールである 患者リスト というWEB業務アプリケーションを開発している小室と申します。 本プロダクトのフロントエンドの開発環境としては、React + esbuildを採用しており、採用の経緯や実践している環境構築方法などは以下の通り、TechPlayやQiitaなどに記事を投稿してきました。 TechPlay: 新規事業プロダクト開発時の技術選定どうやった? スライド Qiita: esbuild + React(TS) で実現する超軽量な開発環境 しかしながら、esbuildは標準でsassに対応しておらず、今までの環境ではCSSを利用していたのですが、プロダクトの成長と共にCSSで書き続けることが苦痛になってきました。 そこで、本記事では React + esbuildの爆速開発環境に、さらに sass を導入していく方法
こちらの記事は カケハシ Advent Calendar 2022 の17日目の記事になります。 こんにちは、カケハシで Musubi Insight のバックエンドエンジニアをしている末松です。 Musubi Insight に表示するデータは夜間の日次バッチで集計しているのですが、テスト・品質担保・パフォーマンスなどなど悩みが絶えません... 以前もバッチ処理のテストに関するブログを掲載しましたが、今回はパフォーマンスに関する記事になります! https://kakehashi-dev.hatenablog.com/entry/2022/08/12/094856 Musubi Insight データ集計の歴史 Musubi Insight プロダクトリリース時からデータ集計は AWS の Glue Job で作られていましたが、最初は Python Shell が中心でした。 利用薬局
こちらの記事は、カケハシ Advent Calendar 2022の25日目の記事になります。 こんにちは、四番隊隊長とは声が低いこと以外何一つ共通点がないCTOの海老原です。 すみません、タイトルは釣りタイトルです。何故こんな釣りをアドベントカレンダーのラストに持ってきたかですが…しばしばスタートアップの経営陣の最大のミッション・役割の一つとして採用が挙げられますが、ご多分に漏れず私も日常の時間のかなり多くの部分をソフトウェアエンジニアやデザイナー、プロダクトマネージャーのような開発系職種のカジュアル面談での事業説明やオファー面談に割いています。 その中でよく候補者の方からご質問を頂くわけですが、会社として外に発信している内容の特徴的な部分に関する質問になるため共通の質問も多く頂きます。それらについて、特に頻出且つ重要な事柄について記事化することで事前に会社・組織に関する考え方を知って頂
こちらの記事はDatabricks Advent Calendar 2022の24日目の記事です。 はじめに 初めまして。カケハシでデータサイエンティストをしている赤池です。 弊社はフルリモートで業務できるため今年9月から地元の仙台市で業務していますが、本格的な冬の到来を前に戦々恐々しています。(寒い。雪。路面凍結。) さて、あなたは「Pandas API on Spark」を知っていますか? これは「pandasと同じ書き方でSpark上で処理を実行できる」という代物で、pandasでは処理に時間がかかる or そもそも扱えないような大規模データを、ほとんどpandasと同じ感覚で処理できる というものです。 私はそう信じ、いつものpandasと同じ感覚でPandas API on SparkのDataFrameを操作してみたら・・・あら不思議。何度もつまずきました。 今回は私のTry
この記事は、カケハシ Advent Calendar 2022 の 18 日目 の記事になります。 はじめまして、こんにちは。 おくすり連絡帳「Pocket Musubi」というプロダクトで、エンジニアリングマネージャーをしています @hisasann と申します。 人にフォーカスした開発組織作りに力を入れ、楽しい技術集団を作り上げることに日々奮闘しております。 ぼくは、 20 年近く Web の業界でいて、ソフトウェアエンジニアとして開発をしてきました。 今でも第一線ではないですが、なるべくコードは書いていて、それは好きというのがそもそもですが、日々テクノロジーの変化を楽しんでいます。 特にフロントエンドの分野が好きで、新入社員のころから JavaScript を書いているので、もうかれこれ 20 年近く JavaScript を書いていることになります。 そんなぼくが今回は、エンジニア
こちらの記事はカケハシ Advent Calendar 2022 の 13 日目の記事になります。 https://adventar.org/calendars/7444 こんにちは。Musubi AI 在庫管理のフロントエンド開発を担当している鳥海です。 上記プロダクトのフロントエンドチームでは、私がチームにジョインした時(2022/9/1)と同時期から MSW が導入され、開発で用いるようになりました。 今回は、この MSW (とその周辺パッケージ)がすごく便利で感激したので、簡単にご紹介したいと思います。 この記事で紹介するもの この記事では、下記項目についての説明をしていきたいと思います。 基本的に触りのみ紹介しますので、詳細についてはそれぞれのドキュメントをご確認いただけると幸いです。 MSW graphql-codegen-typescript-mock-data msw-st
KAKEHASHI でバックエンドエンジニアをしている横田です。 今回は、一般的にクローラーを使って作成するであろう、データカタログのテーブルを Spark だけで実現する方法について紹介できればと思います。 背景・目的 MusubiInsight のプロダクトでは、薬剤師さんや薬局のマネージャーさん向けに業務実績データの可視化を行っています 可視化するデータは、夜間にバッチ処理で計算しています データ量としては数十 ~ 数百 GB あるので、集計処理基盤として AWS Glue の Spark Job を使っています Spark Job の結果を AWS Glue の Hive メタストア互換のマネージドのデータカタログと連携すると、ワークフローがシンプルになったので、その方法について共有します データカタログとは 概要 AWS Glue には、Hive メタストア互換のマネージドのデー
はじめに こんにちは、LINE上で動くおくすり連絡帳 Pocket Musubi というサービスを開発している種岡です 早いもので入社してから3年が経ちました 会社の成長と共に取り扱うサービスも増え、今では12以上の開発グループが存在しています 誰がどのチームなのかを把握するのが非常に難しい、また、どのチームがどのサービスを担当するのか把握できないという声が寄せられ、チーム間のコミュニケーションの障害になっているという課題感が浮かび上がりました この課題に対して、チーム毎のポータルページを社内Wikiで作成するという運動が始まりました そこで、チームポータルページを社内WikiではなくAmplify Studioを使って作れたら面白そうだなと思い立ち筆をとりました ゴール チームポータルとしては以下のようなReactベースのウェブページを作成することができました 準備 Amplify St
本番サービスイン後、不思議な条件で起きるエラーが出てきませんか?調べても調べてもわからない...時間が過ぎるばかりですが、突然ハッと思いつきます。 💡あっ!タイムアウトだ! 見聞きする限り、ほぼ確実にこのパターンが発生しています。信頼性を上げ、不毛な障害対応を減らし、ユーザーに届ける価値を下げたくないなら、タイムアウトの設定を必修科目にしましょう 堅牢なアプリやサービスか診断するときには、タイムアウトとリトライについて確認すると良いでしょう。 タイムアウトを設定するメリット ユーザー体験の向上(の可能性) 終わりが見えずただ待つのは辛い...無駄に待っている可能性があります 無駄なリソースの節約 結局エラーになるなら早めに切断したいところ。節電です 障害の予防 特に重いときにリクエストが積み重なると厳しいですね。カスケード障害を防ぎましょう タイムアウトを設定するコツ 前段ほど長くし、後
初めまして、カケハシのデータ基盤チームでデータエンジニアしている大木と申します。 この度カケハシでは、全社的なデータ活用基盤のプラットフォームとしてDatabricksを採用し、2022/07より本格導入することとなりました。 当記事では、カケハシがDatabricksを採用するに至った技術選定の背景について紹介させていただきます。 ※カケハシのデータ基盤の組成のお話はこちらの記事で詳しく紹介されておりますので良ければご覧ください。 カケハシのデータ基盤アーキテクチャと課題 まずカケハシのデータ基盤のアーキテクチャと抱えている課題について紹介します。 Databricks導入に伴い現在は一部変更が入りつつあるのですが、導入前のアーキテクチャとしては以下のような構成になっていました。 様々なデータソースから収集した生データをAWSのS3に集約 Glue、Athena等のETLサービス、分散処
はじめに こんにちは、LINE上で動くおくすり連絡帳 Pocket Musubi というサービスを開発している種岡です。 日頃もくもくと開発作業に勤しむ傍ら、ときどきユーザーからの生の声(良くも悪くも)が届くのは嬉しいものです。 サービスが成長している1つの証である一方で、ふと「サーバーへの負荷大丈夫なんだろうか?」と頭をよぎり心配になります。 この記事では、AWSが提案している負荷テストソリューションの使い方を紹介し、ボトルネックを早期発見および、安定的な運用につながればと思い筆を取りました。 AWSの分散負荷テストソリューションとは AWSの公式より全体構成を抜粋しています。 AWSが用意するCloudFormationを利用すると上記のソリューションが数分でデプロイされ、すぐにテストを実施できる環境が用意できるという代物です。 ざっくりとまとめると以下のようになります。 負荷テストの
概要 こんにちは!私はカケハシにて薬局と患者様の関係を向上させるためのオペレーションツールである 患者リスト の開発を担当している小室と申します。患者リストの立ち上げから担当させて頂いており、技術選定などのお話は先日はTechPlayでも登壇させて頂きました。( 登壇資料 ) 本記事ではそんな 患者リスト から、弊社のメインプロダクトとなる Musubi へDeepLinkで連携した際の知見をまとめたいと思います。 背景 そもそもなぜDeepLinkが必要になったかというと、患者リスト では患者様をリストアップする機能があるのですが、その患者様が薬局に来局された際の処方内容や服薬指導内容等の詳細なログは薬歴業務システムである Musubi で閲覧する事ができます。Musubiは、Electronで作成されたDesktopアプリケーションになりますので、Musubiの患者詳細ページにDeep
はじめに こんにちは、LINE上で動くおくすり連絡帳 Pocket Musubi というサービスを開発している種岡です。 弊社では、ソフトウェアエンジニアそれぞれが得意分野をリードしながらも、フロントエンド、バックエンド、インフラを横断的に見ているケースが多いです。 プロダクトデリバリーに対して裁量が多く、やりがいが大きい一方で、安定運用に対しても責任が伴います。 とくに、薬局の薬剤師さんや患者さんが利用するというプロダクトの性質上、個人情報や機微な情報を取り扱うため、セキュリティに関しては開発時から意識せざるを得ません。 この課題に対して、チームでは開発中の段階から OWASP ZAP という脆弱性診断ツールを利用しています。 そこで、本記事ではOWASP ZAPツールの操作方法を紹介します。 OWASP ZAPについて OWASP ZAPは脆弱性診断ツールで、以下のような特長があります
はじめに こんにちは、Pocket Musubi エンジニアの関(@sekikazu01)と申します。 「あ〜アイコン大量に増えた時逐一画像を書き出して Icon コンポーネントに反映させるのめんどくせ〜〜〜」 そんな風に思った事はないでしょうか。私は思いました。 ので Figma のアイコンコンポーネントからコードに反映するまでのパイプラインを作りましたので、そのコードを公開していきます。 この記事はアイコンの生成の話ですが、一回作っておくと他にも画像だったりコンポーネントだったり諸々の生成パイプラインを作る時にも役立つと思います。 また、敬意を表すべくこのパイプラインを作るにあたって参考にさせていただいた先人の記事を紹介しておきます。 やっていることは 9 割方同じなのですが、デザイナーがアップデートした時に Figma から変更通知できるような Widget を作ってみたのが、この記
はじめに こんにちは、KAKEHASHIのMusubiInsightチームでエンジニアをしている高田です。 MusubiInsightとは、薬剤師さんの業務データを可視化するBIツールになります。 そんなMusubiInsightにおいて、表示の高速化を狙いにServiceWorkerという技術を導入したので、紹介したいと思います。 MusubiInsightの課題 ServiceWorkerが何か、という話をする前に、MusubiInsightの課題について触れておきます。 ありがたいことに、MusubiInsightのユーザー数は堅調に増加していますが、それに伴いパフォーマンス低下の課題が浮き彫りになってきました。 特に、薬局数や薬剤師数の多い法人様では1リクエストでのAPIの計算量が大きく、なかなかレスポンスが返ってこないために、ユーザー体験を損なってしまっていました。 そこで、チー
概要 薬局運営のデータ分析サービスである Musubi Insight のフロントエンド開発をしております米山と申します。 Musubi Insight のフロントエンドは Angular で開発されており、テストフレームワークには jasmine/karma を利用していました。 この度、jasmine/karma から Jest に移行しましたので、移行の記録を書いていきます。 移行理由 jasmine/karma は Angular のデフォルトのテストフレームワークです。 しかし、JavaScript のテストフレームワークとして、jasmine/karma の利用人口が減少傾向にあることが気になっていました。 (state of js 2021 より) という理由が1点。 さらに、データ分析サービスである Musubi Insight では、巨大な JSON データを扱うことがよ
こんにちは、あるいはこんばんは(アーニャ声)。 突然ですが認証認可周りの設計・実装は毎回全然違った要件に沿って違った感じでやっていく感じになるのでおもしろいですよね。 この記事では、先日Musubi Insightチームが社内向けに作成したコンソールの設計・実装について認証認可周りに絞ってまとめたいと思います。 認証認可はCognito User Groupベースで実装したのですが、意外とネットの情報が少なかったので参考になれば幸いです! なおブログ中に登場する画面のスクショについてなのですが、普段フロントエンドをほぼ触らない筆者がサクッと作ったものですので、デザインなどあれな部分もあるかと思います。ご容赦くださいませ(アーニャ声でごまかす) 背景 この社内コンソール(以下、Kizuki Consoleとよびます。Kizukiはチームの名前です。)が作られた理由は、Musubi Insig
概要 こんにちは。PocketMusubiチームの南光です。 今回は、ローコードツールを利用してアプリを開発した際に工夫した内容を記事としてまとめました。 ローコードツールの開発知見記事はあまりみない気がするので、興味を持っている方やこれから利用を検討している方の参考になれば幸いです。 ローコードツールとは ローコードツールの定義が曖昧な方も少なくないのではと思うので、一応wikiの抜粋を記載しておきます。 ローコード開発プラットフォーム (英: low-code development platform, LCDP) (ローコード(英: LowCode)とも言う)は、従来の手書きのコンピュータ・プログラミングの代わりに、グラフィカル・ユーザ・インタフェースと設定を通じてアプリケーション・ソフトウェアを作成するために使用される開発環境を提供するソフトウェアである。ローコードモデルにより、様
こんにちは、カケハシでデータ基盤チームの開発ディレクターをしている松田です。 2022年に、「カケハシはデータについて本気で取り組んでいくぞ!」と意気込み、 全社横断的な組織としてデータ基盤チームを組成しました。 今回はそのデータ基盤チームについてと今後の取り組む重点的課題について紹介して、 本気度を感じてもらえればと思っています。 全社横断的なデータ基盤チームfumidonoの誕生 今までのデータ基盤チームは、Musubi Insightを開発するプロダクトチームと同じチームに属しており、Musubi Insightにデータ提供をすることがメイン業務でした。その傍らで全社的なデータ利活用の支援観点でRedashの運用をしていました。 当初は、顧客にBIツールを提供しているチームのもとでデータ処理に責務を持ちバリューを発揮していたのですが、全社的なデータ利活用推進にほとんど力を避けていない
次のページ
このページを最初にブックマークしてみませんか?
『KAKEHASHI Tech Blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く