KAKEHASHI Tech Blog

カケハシのEngineer Teamによるブログです。

バックエンド

イベント駆動処理をメンテナンスモードにするためにやったこと

はじめに こんにちは。AI在庫管理チームソフトウェアエンジニアの坂本です。 今回はこちらの記事で松本さんが紹介していたメンテナンスモードの中で、イベント駆動処理のメンテナンスモードを開発するためにやったことを少し詳しく紹介できればと思います。 …

テーブル駆動方式が与える開発インパクト

コードを書くとき、テーブル駆動方式は過小評価されています。非常に強力なテクニックなので、事例とそのインパクトを説明します。 概略サンプル if age < 10: return price / 2 elif age < 20: return price / 3 elif age < 50: return price / 5 else: ret…

Airflow Zombie Task への対処法

こんにちは。AI 在庫管理チーム ソフトウェアエンジニアの坂本です。 今回は AI 在庫管理のバッチ処理で利用しているワークフローツール Airflow (MWAA) の Zombie Task に苦労したケースとその対処法について紹介しようと思います。 概要 Airflow で動かし…

PythonのLinter & Formatter(Flake8 + isort + Black)をRuffに置き換えたら爆速でした

こんにちは、カケハシで Musubi 開発チームのバックエンドエンジニアをしている関です。 Musubi 開発では、 Python の Linter と Formatter に Flake8、isort、Black を使用しておりました。しかし Rust で書かれた Ruff という高性能なツールが出たというこ…

PyCon APAC 2023を聴講してきました

PyConをエンジニア目線でレポート 弊社はPyConでプラチナスポンサーとしても参加させて頂いていますが、今回の記事はエンジニア目線で参加してきたPyConをレポートしようと思います! PyConに関係する記事として以下のような記事を公開しています。合わせて…

PyConAPACで登壇したスナップショットテストの話の続き

PyConAPAC 2023 で登壇してきました 株式会社カケハシのバックエンドエンジニアの横田です。 二日目(10/28(土))の LT 会で「Python でスナップショットテスト」というタイトルで登壇してきました。 PyCon には二日目の途中から参加し、登壇までは主にスポン…

dbxを使用してDatabricks Workflowをデプロイする

こんにちは、カケハシのデータ基盤チームでデータエンジニアをしている伊藤と申します。 カケハシでは全社的なデータ活用基盤のプラットフォームとしてDatabricksを採用し、運用して1年以上経過しました。 我々のチームではバッチ/ストリーム処理のDatabric…

PyCon APAC 2023 に参加します!

プラチナスポンサーとして参加します! 我々株式会社カケハシは、2023年10月26日(木)から10月29日(日)にTOC有明コンベンションホールで開催される PyCon APAC 2023 に、プラチナスポンサーとして参加することとなりました! 2023-apac.pycon.jp 当日はカケハ…

クロスアカウントアクセスでAppSync Private APIを使う話

はじめに こんにちは、LINE上で動くおくすり連絡帳 Pocket Musubi というサービスを開発している種岡です . 社内でプライベートAPIを開発する要件があり、タイミング良くAppSyncでプライベートAPIが使えるようになったため試してみました 全体像 以下システ…

CDK の node と少しだけ仲良くなる

こんにちは、おくすり連絡帳 Pocket Musubiというサービスを開発している石井です。 私たちのチームはフロントエンド担当とかバックエンド担当とか敷居を区切らずに、エンジニアのモチベーションでフロントもバックエンドも実装するフルスタックよりなエンジ…

Redash(Presto)とDarabricksのDMLの構文違いについてまとめてみた

こんにちは、カケハシのデータ基盤チームで開発ディレクターをしている松田です。最近、歳のせいか疲れが溜まりやすくなっており、毎週サウナに通っています。 カケハシでは今までRedashを利用して全社にデータ提供をしていましたが、去年の7月からDatabrick…

DatabricksのAutoLoaderを利用してプロダクトの監査ログを取得した

初めまして、カケハシのデータ基盤チームでデータエンジニアをしている伊藤と申します。 最近の悩みは、二郎ラーメンを食べていないのに「二郎ラーメンの匂い(臭い?)がする」と同居人に言われることです。私のニュースは置いといて、カケハシでは全社的なデ…

データアナリストと協業してデータ分析基盤を構築した際に感じたDatabricksの良さ

こちらの記事はDatabricks Advent Calendar 2022の25日目の記事になります。 こんにちは、カケハシでMusubi Insightという薬局向けBIツールのバックエンドエンジニアをしている高田と申します。 BIツールを開発しているということもあり日常的にETL処理の実…

pandasユーザーがPandas API on Sparkでつまづいたあれこれ

こちらの記事はDatabricks Advent Calendar 2022の24日目の記事です。 はじめに 初めまして。カケハシでデータサイエンティストをしている赤池です。 弊社はフルリモートで業務できるため今年9月から地元の仙台市で業務していますが、本格的な冬の到来を前に…

マイクロサービスを考慮した認可の設計

この記事は、カケハシ Advent Calendar 2022 の 24 日目 の記事になります。 こんにちは、木村です。(@kimutyam) 医薬品発注管理最適化領域の新規事業のテックリード兼エリアPO、プラットフォームドメイン全体のアーキテクト、データ基盤チームのアーキテク…

Databricks導入でデータ分析における苦しみや悩みが消え、夢も叶った話

こちらの記事はDatabricks Advent Calendar 2022の23日目の記事です。 はじめに 初めまして。カケハシにてデータサイエンティストをしている赤池です。 業種的に、自己紹介の際に統計学のビッグネームとの関係性を聞かれることがたまにありますが全く関係あ…

Databricksでのデータ権限管理方針について

こちらの記事はDatabricks Advent Calendar 2022の23日目の記事です。 カケハシのデータ基盤チームの松田です。カケハシでは今年の7月からDatabricksを利用しており、そろそろ半年ぐらい経とうとしています。Databricksを採用した背景については、以下の記事…

Lambdaを助けるのに理由がいるかい?(スロットリングの話)

こちらの記事は カケハシ Advent Calendar 2022 の19日目の記事になります。 あっという間に2022年も終わりますね⛄️ プラットフォームチームの石黒です。 今年は遅ればせながらFF9をプレイしまして、トロフィーをゲットするためにフィールド上でモーグリのモ…

データサイエンスでもっと型ヒントの恩恵を受けるための簡単なpandas拡張

こんにちは。Musubi AI 在庫管理の開発チームで機械学習エンジニアをしている保坂です。 こちらの記事はカケハシ Advent Calendar 2022 の 15 日目の記事になります。 今日はMusubi AI在庫管理の需要予測や発注おすすめ作成といったデータサイエンスロジック…

Poetry と Streamlit で Web アプリ開発

こちらの記事は カケハシ Advent Calendar 2022 の 12日目の記事になります。 https://adventar.org/calendars/7444 Poetry と Streamlit で Web アプリ開発 はじめに はじめまして。Musubi の開発チームでフロントエンドを主に担当しております、井上です。…

Prophetが新型ウイルス感染者数予測に適していない2つの理由

こちらの記事は カケハシ Advent Calendar 2022 の11日目の記事になります。 今年10月からAI在庫管理の機械学習エンジニアをやっております中野です。 今回は新型ウイルス感染者数予測を例に取ってProphetの性質について見ていきます。 そもそも新型ウイルス…

リストを題材にして代数的データ構造に入門してみる

こちらの記事は カケハシ Advent Calendar 2022 の 7日目の記事になります。 https://adventar.org/calendars/7444 この記事のモチベーション カケハシでAI在庫管理というプロダクトのバックエンド開発をやっている金子です。 代数的データ構造というデータ…

サンプル付き!AWSリソースをかんたんに検索するならAWS ConfigのAdvanced Queryで

AWSで使ってみたいサービスといえば? もちろんGround Station ️ですが、AWSのサービスで過小評価されているものを一つ選ぶとしたら、AWS ConfigのAdvanced Queryが候補に挙がります。 AWSリソースを設定から検索するなら、クエリで検索できるAdvanced Query…

バッチ処理のリファクタリングも恐くない!Musubi Insightでのテスト事例をご紹介!

こんにちは。 カケハシでMusibi Insightのバックエンドエンジニアをしている高田です。 Musubi Insightとは、薬局の経営改善に役立つさまざまなデータを可視化しているプロダクトであり、そのデータはAirflowとAWS Glueを利用した日次の夜間バッチ処理によっ…

【Airflow】夜間バッチが心配で夜も眠れない...なら夕方にも動かせるバッチ処理のE2Eテスト環境を作ってしまおう!

こんにちは、カケハシでMusubi Insightのバックエンドエンジニアをしている末松です。 夜間などに動くバッチ処理を開発・メンテしているエンジニアの方ならきっと共感していただけると思うのですが、夜間バッチって心配になりますよね。 朝早起きして結果を…

【開発者でもできる!】OWASP ZAPを利用したGraphQLアプリケーションへの脆弱性診断

はじめに こんにちは、LINE上で動くおくすり連絡帳 Pocket Musubi というサービスを開発している種岡です。 弊社では、ソフトウェアエンジニアそれぞれが得意分野をリードしながらも、フロントエンド、バックエンド、インフラを横断的に見ているケースが多い…

Presigned URLを利用したS3へのファイルアップロード

はじめに こんにちは、LINE上で動くおくすり連絡帳 Pocket Musubi というサービスを開発している種岡です。 社内システムからS3にファイルをアップロードする機能を開発することになり、Presigned URLを利用して開発を試みたものの、想定以上に時間がかかっ…

なぜバックエンドTypeScriptか?技術選定背景と実践例を紹介します

カケハシの医薬品発注管理最適化領域の新規事業の開発を担当している木村です。今回は新しいサービスを構築する上で行った技術選定と実践方法の話をします。 技術選定に関しては、インフラ関連やライブラリなど選定した技術は多岐にわたるのですが、その中で…

Amazon CognitoでSingle Sign Onを実現してみた

KAKEHASHI の Musubi Insight チームでエンジニアをしている横田です。 KAKEHASHI では薬剤師さん向けに Musubi という業務システムや、BI ツールの Musubi Insight という Web アプリケーションなどを提供しています。 それらは toB のサービスなので 一般…

サーバーサイドもバリデーションで楽しよう!

こんにちは プラットフォームチームの石黒です。 こちらは株式会社カケハシ x TypeScriptアドベントカレンダー2021 17日目の記事です。 今回はajvによるJSON Schemaを用いた入力値のバリデーションについてご紹介します。 ajvとは? APIなどから渡された入力…