メドピア開発者ブログ

https://tech.medpeer.co.jp/

集合知により医療を再発明しようと邁進しているヘルステックカンパニーのエンジニアブログです。読者に有用な情報発信ができるよう心がけたいので応援のほどよろしくお願いします。

フィード

記事のアイキャッチ画像
MedPeer で負荷試験基盤を構築しました - 定量的な計測のための精度の担保と自動化のコツ
はてなブックマークアイコン 2
メドピア開発者ブログ
はじめに こんにちは。サーバーサイドエンジニアの近藤です。 先日、私が担当している MedPeer (医師・医学生向け医療情報サイト) にて負荷試験環境を構築しました。 本記事ではその取り組みについてご紹介します。 はじめに 背景 開発の指針 システムの概要 全体像 各システムの構成 負荷試験環境のインフラ構成 負荷発生サーバーのインフラ構成 自動化された負荷試験ワークフロー 1. 準備 2. 実行 3. 片付け 4. 確認 シナリオファイルの作成 リクエストパターンの調査 シナリオファイルの実装 負荷試験環境の活用 おわりに 背景 MedPeer ではユーザーである医師会員向けに、薬剤情報な…
2日前
記事のアイキャッチ画像
OpenID Connect Authorization Server を Golang 実装から Rails 実装にリプレイスした話
はてなブックマークアイコン 21
メドピア開発者ブログ
皆様こんにちは、メドピアのサーバーサイドエンジニアの内藤(@naitoh)です。 社内の OpenID Connect Authorization Server を Golang 実装から Rails 実装にリプレイスしたので、技術ブログで紹介させていただきます。 前提 OpenID Connect は OAuth 2.0 認可プロセスを拡張し、認証目的で利用できるようにしたものになります。 Authorization Server は OpenID Provider (以下OP) とも呼ばれ、OpenID Connect を利用する OAuth 2.0 Client は Relying Pa…
3日前
記事のアイキャッチ画像
iOSDC Japan 2025に参加してきました!
メドピア開発者ブログ
こんにちは。メドピアでモバイルアプリエンジニアをしている王です。 先日「iOSDC Japan 2025」に参加してきました。参加は今年で4回目。毎回、新しい学びと人との出会いにワクワクします。 9/19には DroidKaigiに参加したレポートも投稿しましたが、今回はiOSDC Japanで印象に残ったセッションや現地で感じたことをレポートします。 会場と雰囲気 今年は会場が早稲田大学から有明セントラルタワーホールへ。アクセスしやすくなったこともあり、初日・2日目は現地参加しました。さらに今年は10周年という節目。受付からホールまで活気にあふれ、コミュニティの熱量を肌で感じました。 印象に…
4日前
記事のアイキャッチ画像
iOS開発者が見たDroidKaigi 2025——AIが当たり前になった日
メドピア開発者ブログ
こんにちは。メドピアでモバイルアプリエンジニアをしている王です。 今年は同僚2人と一緒に「DroidKaigi 2025」に参加してきました。会場では、AIの存在感が一段と増し、開発の進め方やスマホの中で動く賢い仕組み(オンデバイスAI)、複数OSでのアプリ開発、テストのやり方まで、さまざまな領域が前に進んでいるのを実感しました。 ふだんはiOSを中心に開発している私ですが、Androidのこれからには大きな伸びしろがある——そんな手応えを強く感じるイベントでした。 具体的なセッションの紹介は、同僚の佐藤がこちらの記事に詳しくまとめています (https://tech.medpeer.co.j…
14日前
記事のアイキャッチ画像
DroidKaigi 2025に参加してきました!
メドピア開発者ブログ
はじめに こんにちは!メドピアにてモバイルアプリエンジニアをしている佐藤です。 今年のDroidKaigiには総勢3名のモバイルアプリエンジニアがオフラインにて参加しました。 実際に足を運んだセッションの中でも特に印象に残ったセッションをご紹介します。 UIだけじゃないComposeの可能性 ━ 宣言的に奏でるメロディ usuiatさんによるセッションです。 youtu.be composeがUIを表示するまでの仕組みを体系的に学ぶことができ、runtimeの可能性を感じることが出来ました! 特に何気なく普段から活用しているComposable関数ですが、Composable関数を呼び出した際…
17日前
記事のアイキャッチ画像
SREチームで「AIエージェント縛り」をやってみた
メドピア開発者ブログ
はじめに こんにちは。SREチームの侘美です。 弊社ではLLM(大規模言語モデル)を活用したコーディング、特にDevinやClaude Codeのようなエージェント型ツールを積極活用する方針を打ち立て、各種ツールを利用できる環境を整備しています。 また、習熟やノウハウの獲得のため各チームで一定期間AIエージェント縛りで開発を行い、得られた知見や課題を共有する活動も進めています。 我々SREチームでも2週間にわたってAIエージェント縛りで開発する実証実験を行いました。 本記事では、この実証実験を通じて得られた、通常のプロダクト開発チームとは異なるSREチームならではの課題や知見を共有します。 前…
2ヶ月前
記事のアイキャッチ画像
YAML + Rakeタスクで実現する「権限漏れゼロ」なBI運用
メドピア開発者ブログ
こんにちは、サーバーサイドエンジニアの長谷川(@hasehiro25)です。 今回の『ClinPeerアプリ開発の裏側』連載では、BIツール運用の実践的なTipsをご紹介します。 tech.medpeer.co.jp BIツールの運用における課題として、「テーブルやカラムが追加された際のメンテナンスに手間がかかる」があります。 参照できるカラムをリストで管理する「許可リスト方式」では更新漏れが起きやすく、逆に参照できないカラムを管理する「拒否リスト方式」では、意図せず個人情報などのカラムが参照可能になってしまうリスクがあります。 そこでClinPeerでは、テーブルやカラムが変更された際にCI…
4ヶ月前
記事のアイキャッチ画像
Notion のタスクのメモはどこに書く?コメント機能よりも「ページ下部」がオススメな理由と実践方法
メドピア開発者ブログ
こんにちは。メドピア内 Slack チャンネル 「#club_notion」 部長の佐藤太一(@teach_kaiju)です。 今回の「ClinPeerアプリ開発の裏側連載記事」では Notion を用いたタスク管理におけるメモの取り方を紹介します。 tech.medpeer.co.jp 目次 はじめに コメント機能のよくある課題点 ページ下部へのメモの仕方 Q & A まとめ はじめに Notion はその自由度の高さから、様々な情報を集約できる万能ツールとして扱うことができます。特にタスク管理においては、詳細情報だけでなく、関連するメモやアイデア、Slack でのやりとりのリンクなどを一緒…
4ヶ月前
記事のアイキャッチ画像
SwiftUIにおけるEnvironmentの活用法
メドピア開発者ブログ
こんにちは!メドピアにてモバイルアプリエンジニアをしている王です。 今回の「ClinPeerアプリ開発の裏側連載記事」では、SwiftUIのEnvironmentについてお話しできればと思います。 tech.medpeer.co.jp SwiftUIのEnvironmentは、ビュー間でデータを共有するための強力な依存性注入(DI)の仕組みです。多くのSwiftUIプロジェクトで活用されており、ビュー間のデータ伝達を簡素化し、アプリ設計の柔軟性を高めます。ClinPeerでは、ほぼすべての画面をSwiftUIで構築しており、Environmentの活用について考察しています。 SwiftUIに…
4ヶ月前
記事のアイキャッチ画像
環境ごとの設定管理が可能な ClinPeer のフィーチャーフラグの紹介
メドピア開発者ブログ
こんにちは。サーバーサイドエンジニアの佐藤太一(@teach_kaiju)です。 今回の「ClinPeerアプリ開発の裏側連載記事」ではサーバーサイドにおける、フィーチャーフラグの実装方法を紹介します。 tech.medpeer.co.jp 目次 フィーチャーフラグとは 機能の有効化 Feature#enabled? フラグの運用 features.yml フラグの新規追加 フラグの有効・無効の切り替え フラグの削除 条件付き有効化の実装 生成AIを活用したフラグ削除 おわりに フィーチャーフラグとは フィーチャーフラグ(機能フラグ、別名フィーチャートグル)は、機能のオン・オフを制御する仕組み…
4ヶ月前
記事のアイキャッチ画像
GitHub Copilot を味方につける:AI に渡すコンテキスト整備の工夫
メドピア開発者ブログ
こんにちは。事業本部開発部 MISP グループのフロントエンドエンジニアの小林和弘(@kzhrk0430)です。 メドピアでは「AI ファーストカンパニー」を目指すことを全社で掲げています。実際に社内では、AI ツールを活用して業務を効率化する動きが活発に行われています。たとえば、Gemini を使って Google Meet の文字起こしや議事メモを作成したり、Notion AI で要件定義とテストケースの整合性を確認したり、スライド作成を AI に任せたりと、日々の業務に AI を積極的に取り入れています。 今回は、開発環境をより快適にするために GitHub Copilot(VS Cod…
5ヶ月前
記事のアイキャッチ画像
#RubyKaigi 2025 セッションレポート
メドピア開発者ブログ
皆様こんにちは、メドピアのサーバーサイドエンジニアの内藤(@naitoh)です。 RubyKaigi 2025に参加されていた皆さん、お疲れ様でした。 今回、内藤がRubyKaigi 本編に登壇しました。 発表内容の詳細は以下の記事にまとめておりますのでよろしければご覧ください。 naitoh.hatenablog.com セッションレポート RubyKaigi のセッションの中で特に印象に残ったセッションをご紹介します。 タイムテーブルは下記から確認ください。 rubykaigi.org Make Parsers Compatible Using Automata Learning ruby…
5ヶ月前
記事のアイキャッチ画像
ScrollableTabRowでスクロール状態を監視する
メドピア開発者ブログ
はじめに こんにちは!メドピアにてモバイルアプリエンジニアをしている佐藤です。 今回の「ClinPeerアプリ開発の裏側連載記事」では、ScrollableTabRowでのスクロール状態の監視方法について解説していきたいと思います。 tech.medpeer.co.jp 背景 ClinPeerアプリでは、ユーザーが関心のあるカテゴリーをタブとして動的に追加できるようにしており、追加したカテゴリーを上部のタブで表示しています。その際、右側にまだ表示しきれていないタブがあることをユーザーに伝えるため、右端にスクロール可能な場合はアイコンを表示しています。 右:スクロールできない場合はアイコンを非表…
6ヶ月前
記事のアイキャッチ画像
RubyKaigi 2025 に@naitoh が登壇します #rubykaigi
メドピア開発者ブログ
皆様こんにちは、メドピアのサーバーサイドエンジニアの内藤(@naitoh)です。 この度、2025/04/16(水)-18(金)の3日間で開催される「RubyKaigi 2025」に登壇させていただくこととなりました! タイトルは「Improvement of REXML and speed up using StringScanner」となります。 rubykaigi.org スケジュールは、 Day2 11:50 〜 12:20 / Pearls Room を予定しています。 ぜひセッションにお越しください。 登壇内容について セッションでは以下の内容をお伝えします。 REXML is a…
6ヶ月前
記事のアイキャッチ画像
Railsの「ActiveSupport::ErrorReporter」って知ってる?
メドピア開発者ブログ
こんにちは。サーバーサイドエンジニアの三村(@t_mimura39)です。 またまた「ClinPeerアプリ開発の裏側連載記事」です。 tech.medpeer.co.jp 今回はClinPeerで活用しているRailsの ActiveSupport::ErrorReporter についてご紹介します。 目次 ActiveSupport::ErrorReporter とは なぜ ActiveSupport::ErrorReporter を使うのか 実行コンテキストの注入 なぜ ActiveSupport::ErrorReporter を使うのか(本当のメリット) Rails内での利用例 Rai…
6ヶ月前
記事のアイキャッチ画像
技術顧問Matzとは、どんな話をしているの?
メドピア開発者ブログ
こんにちは、組織開発グループの榎本です。 弊社の技術顧問にはまつもとゆきひろ(通称・Matz)さんがおり、Matzさん(以下、親しみも込めてMatzと表記します)とは定期的に「Matz会」と称して、Google Meetを繋いでリモートミーティングを開催しています。 Matz会のテーマは多岐にわたりますが、「毎回Matzとどんな話をしているの?」と気になっている開発者の方もいるかもしれません。本記事では、過去のMatz会開催実績を元に、その内容の一部をお伝えできればと思います。 講演の再演 Rubyの最新機能の解説 Rubyのコア技術の解説 OSS キャリア論 Matzへプレゼン その他 さい…
6ヶ月前
記事のアイキャッチ画像
Devin AIは技術的負債解消の救世主となるか?
メドピア開発者ブログ
Answer: 救世主まではいかないが、間違いなく助けになる。 組織開発グループの榎本です。世は大AIコード生成時代、皆さんバイブコーディングしていますか? 弊社においてもDevin、Clineを試験的に導入して活用し始めていますが、本記事では「Devin AIが技術的負債の解消に役立った話」を紹介したいと思います。 Devin AIとは 技術的負債の現状 2023年時点のAI活用 2025年、Devinの活用 活用ユースケース うまくいかなかった指示の例 複雑なタスク依頼は工夫が必要 良かった点 どれくらい成果上がった? 課題 (おまけ)ACU消費量の目安 まとめ Devin AIとは De…
6ヶ月前
記事のアイキャッチ画像
ClinPeer Railsプロジェクトのオブザーバビリティ強化施策
メドピア開発者ブログ
こんにちは。サーバーサイドエンジニアの三村(@t_mimura39)です。 N番目の「ClinPeerアプリ開発の裏側連載記事」でございます(連載記事を同時執筆しているため本記事が何番目になるのかもはや不明)。 tech.medpeer.co.jp 今回はClinPeerで実践した「Railsプロジェクトのオブザーバビリティ強化施策」の紹介記事になります。少しマイナーなネタですね。 目次 オブザーバビリティとは ログ アクセスログの構造化 その他ログの構造化 実行コンテキスト リクエストログのトレースID ログ出力例 query_log_tagsの有効化 ActiveStorage+S3 ファ…
6ヶ月前
記事のアイキャッチ画像
ClinPeer Maintenance Tasks Gemの活用事例
メドピア開発者ブログ
こんにちは! サーバーサイドエンジニアの伏見です。 弊社で新しくリリースした「ClinPeer」の裏側連載。 tech.medpeer.co.jp この記事では、サーバーサイドで導入したGem Maintenance Tasks について書いていきます。 導入のモチベーション 開発初期や今後の運用の中で、データマイグレーション*1を考える場面が多くなるだろうという考えがありました。 Rails ConsoleやRake Taskで運用することがあるかと思いますが*2、以下のような懸念がありました。 本番環境のサーバーにアクセスをして実行することが必要になる、実行の権限管理の問題が生じる コンソ…
6ヶ月前
記事のアイキャッチ画像
ClinPeer Railsプロジェクトの設定値管理(2025年版)
メドピア開発者ブログ
こんにちは。サーバーサイドエンジニアの三村(@t_mimura39)です。 こちらでご案内した通り、弊社で新しくリリースした「ClinPeer」の裏側をご紹介します。 tech.medpeer.co.jp 今回は小ネタとして「Railsプロジェクトの設定値管理」についてご紹介します。 目次 設定値管理とは Railsプロジェクトでの設定値管理の選択肢 Settingslogic SettingsCabinet その他諸々Gem Rails標準 config_for config_forの活用方法(定義・参照) config_for活用方法(裏側) なぜ config.x. を使わないのか なぜ…
7ヶ月前
記事のアイキャッチ画像
ClinPeer Railsプロジェクトの技術選定(2025年版)
メドピア開発者ブログ
こんにちは。サーバーサイドエンジニアの三村(@t_mimura39)です。 こちらでご案内した通り、弊社で新しくリリースした「ClinPeer」の裏側をご紹介します。 tech.medpeer.co.jp 今回はClinPeerのバックエンドについての簡単なシステム概要と選定技術の紹介編です。 2024-2025年にrails newをした新鮮なRailsプロジェクトの様子をお楽しみください。 目次 システム概要 rails stats Gemfile 技術選定 Ruby Ruby on Rails Puma ActionPack::CloudfrontViewerAddress Trilog…
7ヶ月前
記事のアイキャッチ画像
ClinPeer Androidアプリ開発の裏側とFirebase Dynamic Links(FDL)の代替について
メドピア開発者ブログ
はじめに こんにちは!メドピアにてモバイルアプリエンジニアをしている佐藤です。 1月27日、 がん専門医のための論文キュレーションアプリ 「 ClinPeer 」 を正式にリリースしました。私はAndroidアプリエンジニアとして要件定義から参画しました。 clinpeer.medpeer.jp 今回はClinPeerアプリ開発の裏側の第一回目の記事ということで、ClinPeerでのAndroidアプリ開発の構成や採用技術、Firebase Dynamic Links(FDL)の代替としてClinPeerではAdjustを採用した為、Adjustの活用事例について書いていきたいと思います。 モ…
8ヶ月前
記事のアイキャッチ画像
Android/iOS向けアプリ「ClinPeer」をリリースしました! -ClinPeerアプリ開発の裏側連載開始のお知らせ-
メドピア開発者ブログ
こんにちは!メドピアにてモバイルアプリエンジニアをしている佐藤です。 弊社ではこの度Android/iOS向けにがん専門医の為の論文キュレーションアプリ「ClinPeer」をリリースしました! clinpeer.medpeer.jp そこで今回、ClinPeerアプリ開発の裏側について、この開発者ブログで連載することにしました! 開発中に工夫したポイントやぶつかった課題、用いた技術や開発体制などの内容をお届けします。 ブログは毎週または隔週のペースで更新予定です。 各エンジニアがそれぞれの視点で記事を執筆するので、多彩な内容をお楽しみいただけると思います。 それでは次回のブログ更新をお楽しみに…
8ヶ月前
記事のアイキャッチ画像
数億データを処理する仕組みを提供する gem 『MedPipe』 を OSS として公開しました
メドピア開発者ブログ
こんにちは。サーバーエンジニアの佐藤太一(@teach_kaiju)です。 本記事では社内で開発した、数億のデータを処理する仕組みを提供する gem MedPipe を紹介します。 MedPipe とは 「Log のデータを全て取得し、フォーマットして tsv として S3 にアップロードする」という要件があったとします。 この要件を実現するために、例えば以下のような実装を考えることができます。 upload_file_name = "hoge_logs.csv" # 1. S3にアップロードするための file を用意 Tempfile.create do |file| # 2. Log の…
10ヶ月前
記事のアイキャッチ画像
ActiveRecord クエリキャッシュのメモリ使用量と無効化
メドピア開発者ブログ
こんにちは。サーバーエンジニアの佐藤太一(@teach_kaiju)です。 本記事では、クエリキャッシュのメモリ使用量と有効/無効の切り替え方法について紹介します。 クエリキャッシュとは クエリキャッシュのメモリ消費量 計測用コード 結果 考察 find_each 等ではクエリキャッシュが無効になる クエリキャッシュを無効化する方法 切り替え検証 おわりに 参考文献 クエリキャッシュとは Active Recordのクエリキャッシュは、1つのリクエストまたはジョブの実行中に同じSQLクエリが複数回実行された場合、2回目以降のクエリの実行を省略し、最初の結果をメモリ上にキャッシュして再利用する機…
1年前
記事のアイキャッチ画像
Vue Fes Japan 2024 After Meetupを開催しました!
メドピア開発者ブログ
こんにちは!メドピアの福田(@Yusa136)です。 2024年11月01日(金)に弊社オフィスにて、MNTSQ株式会社、STORES株式会社と3社でVue Fes Japan 2024 After Meetupを合同開催しました! Vue Fes Japan 2024 の感想や思い出を語り合いました。この記事では当日の様子やセッションの内容をお届けします。 LT 「VitePressで見つけたアウトプット習慣」 トップバッターは弊社メドピアの岡澤さんです! VitePressを活用したアウトプット習慣の作り方についての話が印象的でした。「飽き性だけど続けられる」という岡澤さんの言葉の示す通り…
1年前
記事のアイキャッチ画像
Vue Fes Japan 2024に参加しました!#vuefes
メドピア開発者ブログ
こんにちは。 メドピアの伏見 ( @fussy113 ) です。 2024年10月19日に大手町プレイス ホール&カンファレンスで開催された Vue Fes Japan 2024 に参加してきました! この記事では当日の様子やセッションの内容などをお届けします。 スポンサーとしての取り組み メドピアはゴールドスポンサー、セッションルームネーミングライツスポンサーとして協賛いたしました。 スポンサーブース 握力で技術的負債を粉砕しよう! 『握力測定 in Vue Fes Japan 2024』 と題して、握力を測定していただきました。 🧐握力測定はしましたか?🧐#メドピア ブースでは握力測定を実…
1年前
記事のアイキャッチ画像
監査ログの保管先をRDBからS3に移行する
メドピア開発者ブログ
こんにちは。サーバーサイドエンジニアの @atolix_です。 今回はメドピアで運用しているアプリケーションのkakariの監査ログをDB管理からS3管理に移行したので、その方法と手順について紹介したいと思います。 kakari.medpeer.jp 背景 従来kakariではAuditedを用いて、監査ログを専用のauditsテーブルに保管する処理を行っていました。 github.com # application_record.rb class ApplicationRecord < ActiveRecord::Base ... include Auditable # auditable.…
1年前
記事のアイキャッチ画像
メドピアはVue Fes Japan 2024にゴールドスポンサーとして協賛します!
メドピア開発者ブログ
こんにちは。 10月からメドピアのVPoEになりました保立 ( @purunkaoru ) です。 メドピアは2024年10月19日に大手町プレイス ホール&カンファレンスで開催される Vue Fes Japan 2024 にゴールドスポンサー、セッションルームネーミングライツスポンサーとして協賛、そしてブースの出展も行います! ブース企画 今回のメドピアブースは 握力で技術的負債を粉砕しよう! 『握力測定 in Vue Fes Japan 2024』 と題し、ブースを訪問いただいた皆さまに、握力測定を行っていただきます。 握力測定に挑戦! 握力測定、最近してますか? 学生以来測ってないという…
1年前
記事のアイキャッチ画像
小さくはじめる OKR
メドピア開発者ブログ
集合知プラットフォーム事業部・開発部の榎本です。 前回の記事はフロントエンドエンジニアの小林さんによる『小さくはじめる Vue の Composable』でした。 今回は小さくはじめるシリーズ第二弾ということで、今期開発部でOKRを導入してみて、それがいい感じにワークしたので紹介したいと思います。 OKR導入前の課題 OKRを導入 OKRをどう決めるか? OKR研修を実施 OKRの決め方 マネージャー陣でディスカッション 時間はめっちゃかかる 工夫した点 KRオーナーを決める 週定例で進捗を追う OKRの振り返り よかったこと 課題に感じたこと 今後改善したいこと OKRを成功させるためのポイ…
1年前