PharmaXテックブログのフィード

https://zenn.dev/p/pharmax

PharmaXエンジニアチームのテックブログです。エンジニアメンバーが、PharmaXの事業を通じて得た技術的な知見や、チームマネジメントについての知見を共有します。 PharmaXエンジニアチームやメンバーの雰囲気が分かるような記事は、note(https://note.com

フィード

記事のアイキャッチ画像
bundler-auditとGitHub Actionsを使ってRubyのgemの脆弱性を定期チェックする
PharmaXテックブログのフィード
こんにちは、PharmaX エンジニアの尾崎(@FooOzaki)です。本記事ではRubyのgemの脆弱性をbundler-auditを利用してチェックする手法をご紹介します。また、併せてGitHub Actionsでスケジュール実行する方法もご紹介します。 bundler-auditについてbundler-auditはGemfile.lockを脆弱性データベースと照合し、gemに既知の脆弱性が見つかると警告をしてくれます。具体的には以下のような形で脆弱性があるgemをリストアップしてくれます。$ bundle exec bundler-auditName: gem_fi...
4日前
記事のアイキャッチ画像
RubyでGoogle Cloud Identity Platformのパスワードポリシーを設定する
PharmaXテックブログのフィード
こんにちは、エンジニアの加藤(@tomo_k09)です。PharmaXの一部サービスでは、Google CloudのIdentity Platformのマルチテナンシーの機能を使い、テナントごとにユーザー管理を行っています。Identity Platformのマルチテナンシー機能を使うことによって、テナントごとにパスワードポリシーの設定が可能です。この記事では、Google Cloud Identity Platform(以下Identity Platform)のマルチテナンシー機能を利用しているアプリケーションにおけるパスワードポリシーの設定処理をRubyで実装する方法について紹...
8日前
記事のアイキャッチ画像
SchemaSpyを使用してRDBからER図を自動生成する
はてなブックマークアイコン 1
PharmaXテックブログのフィード
こんにちは、PharmaX エンジニアの尾崎(@FooOzaki)です。本記事ではSchemaSpyというツールを使ってRDBからER図を自動生成する方法をご紹介します。SchemaSpyのDocker実行環境を準備し、ER図の自動生成&閲覧まで順を追ってご紹介するのでぜひ手軽に試してもらえればと思います。使用感は後述の公式sampleで触ってみるのが一番わかりやすいと思うので、本記事では具体のセットアップ手順を主に紹介します。 SchemaSpyとはhttps://schemaspy.org/SchemaSpyはデータベースのメタデータからER図を自動生成してくれるオープ...
12日前
記事のアイキャッチ画像
技術書典で本を出展するまでにやって良かったこと・やっておけば良かったこと
PharmaXテックブログのフィード
こんにちは、エンジニアの加藤(@tomo_k09)です。少し前に開催された技術書典15で、『LINE botを題材にRustでのアプリケーション開発』という本をPharmaXエンジニアチームの有志メンバーで執筆し出展しました!!(パチパチ)*電子版のみの販売ですhttps://techbookfest.org/product/fri4ZSJrecWpUUbjN4Errz技術書典で本を出展というのはPharmaXにとって初めての試みだったので、出展までの過程に反省点がたくさんありました。そこでこの記事では、今回の出展で出てきた反省点をふりかえろうと思います。「これから技術書典...
12日前
記事のアイキャッチ画像
LLMのAPIを活用したバックエンドアーキテクチャの事例を紹介します
PharmaXテックブログのフィード
この記事の概要こんにちは。PharmaX でエンジニアをしている諸岡(@hakoten)です。この記事では、YOJO事業部で使用しているバックエンドアプリケーション(Ruby on Rails)において、LLM(Large Language Models)のAPIをどのように取り扱っているのかについて、システム構成の観点から解説しています。LLMを用いて実現している具体的な機能については詳しく触れていませんので、その点ご理解ください。 YOJOにおけるLLMを活用した機能の概要まず、簡単ではありますが、YOJOというサービスの概要とYOJOにおけるLLMの立ち位置を説明し...
15日前
記事のアイキャッチ画像
Google Cloud Identity Platformから送るパスワードの再設定メールを日本語化する
PharmaXテックブログのフィード
こんにちは、エンジニアの加藤(@tomo_k09)です。PharmaXの一部サービスでは、Google CloudのIdentity Platform(以下Identity Platform)のマルチテナンシー構成でユーザーの管理を認証をしています。パスワードを忘れたユーザー向けに、パスワードの再設定メールを送信する機能を実装したのですが、メールの内容を日本語化するのに少しハマりどころがありました。そこで、この記事では日本語でパスワードリセット案内メールを送る方法についてご紹介します。 本記事の前提Identity Plaformでマルチテナンシー構成を採用していることI...
16日前
記事のアイキャッチ画像
Fitbitから読み解くヘルスケアスマートウォッチデバイスで取得可能な情報
PharmaXテックブログのフィード
こんにちは、PharmaX エンジニアの尾崎(@FooOzaki)です!この記事では、Google Fitbitを題材に、スマートウォッチデバイスで取得可能なヘルスケアデータにどのようなものがあるかをご紹介したいと思います。 はじめに弊社は有志でGoogle Cloudの公式ユーザ会のJagu'e'rの分科会運営に携わっており、私自身もヘルスケア分科会の立ち上げや運営に携わらせていただいています。https://jaguer.jp/ヘルスケア分科会の中でFitbitの活用事例のシェアも活発に行われており、近年のスマートウォッチデバイスの進化や医療分野への活用・研究事例の増加を...
18日前
記事のアイキャッチ画像
これからRustを勉強したいエンジニアにおすすめしたい参考書や教材を紹介します
PharmaXテックブログのフィード
こんにちは、加藤(@tomo_k09)です。PharmaXではバックエンド・フロントエンド開発やスクラムマスターなどをやっています。PharmaXが提供しているサービスでは、バックエンド開発に主にRuby on Railsが使われていますが、一部の機能はRustで開発されています。このような理由からRustの経験が浅かった私もコツコツとRustの勉強をしており、少しずつ学習方法に関する知見が溜まってきました。そこでこの記事では、Rustをこれから学びたいという方向けに、おすすめの書籍や教材について紹介します。 新しいプログラミング言語はどのように学ぶと良いか私は新しい言語...
22日前
記事のアイキャッチ画像
LLMアプリケーションの評価の運用についてまとめてみた
PharmaXテックブログのフィード
こんにちは。PharmaX共同創業者の上野(@ueeeeniki)です!過去の記事で、PharmaXで行っているLLMアプリケーションの実験管理のプラクティスについてご紹介しました。https://zenn.dev/pharmax/articles/27915681d4ba57https://zenn.dev/pharmax/articles/d31c1068450cd5今回は実験管理とセットで語られることの多い評価の運用プラクティスをご紹介します。LLMアプリケーションを実運用している企業の評価に関するノウハウはあまり公開されていないと感じています。PharmaXでは、実験...
22日前
記事のアイキャッチ画像
Vysorを導入してスマホ画面の共有ができるようになったらスプリントレビューが捗るにようになった話
PharmaXテックブログのフィード
こんにちは、加藤(@tomo_k09)です。PharmaXではバックエンド・フロントエンド開発やスクラムマスターなどをやっています。今回はスプリントレビューにVysorというスマホ画面をミラーリングするためのツールを導入したら、スプリントレビューをより円滑に行えるようになったので、そのレポートをシェアできればと思います。 Vysorを導入することになった背景PharmaXでは、スマートフォンで薬剤師からお薬の説明を受けられ、ご自宅や職場までお薬を配送するというサービスを提供しています。https://speakerdeck.com/pharma_x/pharmax-compa...
22日前
記事のアイキャッチ画像
LLMアプリケーションの実験管理の運用をまとめてみた〜PromptLayerを使った本番運用〜
PharmaXテックブログのフィード
こんにちは。PharmaX共同創業者の上野(@ueeeeniki)です!LLMアプリケーションの実験管理サービスであるPromptLayerの使い方をご紹介したところ、非常に多くの方にお読みいただき、LLMの実験管理で検索してもかなり上位に出てくる記事になりました。https://zenn.dev/pharmax/articles/27915681d4ba57そこで今回は、発展編としてPromptLayerの使い方だけではなく、PharmaXでの実験管理のリアルなプラクティスを徹底解説したいと思います。PharmaXで行っている実験管理のプラクティスは下記のように何度か発表してい...
25日前
記事のアイキャッチ画像
大規模なロジックをリファクタリングしてみての学んだこと3つ
PharmaXテックブログのフィード
こんにちは、PharmaXでエンジニアインターンをしている川端です。PharmaXでは主にフロントエンドの開発を担当しています。 この記事の概要この記事では、大規模なロジックをリファクタリングして学んだことを3つ紹介します。本記事の流れは以下のような流れになっています。リファクタリング対象の機能の紹介リファクタリングのbefore・afterリファクタリングを通して学んだこと どんな機能を作っているのかPharmaXでは、オンラインでお薬の受け取りができるサービスを開発しています。そのうちの機能の一つとして、「問診」と呼ばれる機能があります。「問診」とは、以下...
1ヶ月前
記事のアイキャッチ画像
[Ant Design] DatePickerのTestの書き方
PharmaXテックブログのフィード
TL;DRDatePickerを使ったcompoenntのUnit Testの書き方change eventが動かないならユーザーの操作通り要素をclickで発火していくsample repositorycodeimport { expect, it, describe, vi } from 'vitest'import { render, screen } from '@testing-library/react'import { DatePickerSample } from './DatePickerSample'import userEvent from ...
1ヶ月前
記事のアイキャッチ画像
Rails 7.1 + Ruby 3.3 で YJIT を有効化してパフォーマンス改善を行った結果
PharmaXテックブログのフィード
この記事の概要こんにちは。PharmaX でエンジニアをしている諸岡(@hakoten)です。この記事では、薬局DX事業部のバックエンドで採用しているRuby on Railsのアプリケーションについて、Rubyバージョンを3.3にアップグレードし、YJITを有効化した結果、どのようにパフォーマンスが向上したかをご紹介します。現在のRuby on Railsのバージョンは、「7.1.3」になります。 YJITについての簡単な説明YJITとは、CRuby内部に組み込まれた軽量のJIT機能で、遅延コード生成を行い、必要なメソッドを部分的にコンパイルすることで高速化を図る仕組み...
1ヶ月前
記事のアイキャッチ画像
Github Actionsを活用してrelaseブランチ作成、GitHubリリースとタグ作成を自動化する
PharmaXテックブログのフィード
この記事の概要こんにちは。PharmaX でエンジニアをしている諸岡(@hakoten)です。本記事では、PharmaXのYOJO事業部においてリリース時に活用しているGitHub Actionsの運用方法について紹介します。YOJO事業部では、リリース時のフローとしてreleaseブランチの作成を行います。これは、いわゆるgit-flowの運用に則ったものです。リリース作業をできるだけ簡素化し、リリースサイクルを迅速化するために、ブランチの作成やマージ後のタグ作成処理をGitHub Actionsを通じて自動化しています。この記事では、その具体的なフローについてご紹介します...
2ヶ月前
記事のアイキャッチ画像
コードレビューで個人的に意識していること
PharmaXテックブログのフィード
こんにちは。PharmaX でエンジニアをしている諸岡(@hakoten)です。 この記事の概要この記事では、私が普段コードレビューで意識していることを紹介しています。コードレビューのルールというより、個人としてのルーティンや意識していることについて書いています。※ チーム自体の「レビュールール」は別で存在していますので、ルールに沿った上でのルーティーンや心構えという認識で読んでいただければと思います!レビュールールの運用やルール自体については触れていませんので、ご了承ください。 自身のキャリアどのような経歴のエンジニアからの話なのかを知っていただくと、内容を想像しや...
2ヶ月前
記事のアイキャッチ画像
既にあるRailsプロジェクトにBulletを導入してN+1を検知する
PharmaXテックブログのフィード
こんにちは。PharmaX でエンジニアをしている諸岡(@hakoten)です。 この記事の概要Ruby on Railsのアプリケーションで「N+1」というパフォーマンス問題を自動で検知する方法として、「Bullet」という大変便利なツールがあります。https://github.com/flyerhzm/bulletこの記事では、開発初期の段階でBulletを導入していなかったRailsアプリケーションに、後からBulletを導入した際の運用事例をご紹介します。※ この記事では、「N+1問題」の詳しい内容については、触れていませんのでご了承ください。 Bulletで...
2ヶ月前
記事のアイキャッチ画像
Cloud SQL for MySQL8.0にリードオンリーユーザーを作成する
PharmaXテックブログのフィード
こんにちは、エンジニアの加藤(@tomo_k09)です。PharmaXの薬局DX事業部で主にバックエンドの開発を担当をしています。CloudSQLで使っているMySQL8.0にリードオンリーユーザーを作成する際に少しハマりどころがあったので、この記事ではリードオンリーユーザーの作成方法についてまとめました。 CloudSQLのコンソール画面からではリードオンリーユーザーを作れない結論、CloudSQLのMySQL8.0データベース内に読み取り権限のみを持ったユーザーを作成するには、cloudsqlsuperuserロールを持つユーザーでデータベースにログインした上で、データベース...
3ヶ月前
記事のアイキャッチ画像
負荷テストツール「k6」入門
PharmaXテックブログのフィード
こんにちは。PharmaX でエンジニアをしている諸岡(@hakoten)です。 この記事の概要APIの負荷テストツールにGrafana Labs社が開発している「k6」というツールがあります。k6はオープンソースのCLIツールですが、 「Grafana Cloud k6」というクラウドベースSaaSツールも提供されている便利なツールです。https://k6.io/https://grafana.com/products/cloud/k6/ローカルのk6は、負荷テストの時に使ったことはあったのですが、真面目に負荷テストの設計をするにあたり、ちゃんと理解したかったため、改...
3ヶ月前
記事のアイキャッチ画像
既にあるRailsプロジェクトにSorbetの静的型チェックを導入しました
PharmaXテックブログのフィード
こんにちは。PharmaX でエンジニアをしている諸岡(@hakoten)です。 この記事の概要この記事では、次の対応を行ったときのプロセスやハマりポイントなどを書いています。① sorbet-rails から tapiocaへのマイグレーション② 既存のRailsアプリケーションにSorbetの静的チェック(srb tc)を導入この記事を読む前に、そもそもSorbetとtapiocaがどんなものかを知りたい方は、次の記事も一読ください。https://zenn.dev/pharmax/articles/6e3acb8c10c87c 背景PharmaXのバックエ...
3ヶ月前