集合知により医療を再発明しようと邁進しているヘルステックカンパニーのエンジニアブログです。読者に有用な情報発信ができるよう心がけたいので応援のほどよろしくお願いします。| メドピア開発者ブログ
はじめに こんにちは。サーバーサイドエンジニアの近藤です。 先日、私が担当している MedPeer (医師・医学生向け医療情報サイト) にて負荷試験環境を構築しました。 本記事ではその取り組みについてご紹介します。 はじめに 背景 開発の指針 システムの概要 全体像 各システムの構成 負荷試験環境のインフラ構成 負荷発生サーバーのインフラ構成 自動化された負荷...| メドピア開発者ブログ
皆様こんにちは、メドピアのサーバーサイドエンジニアの内藤(@naitoh)です。 社内の OpenID Connect Authorization Server を Golang 実装から Rails 実装にリプレイスしたので、技術ブログで紹介させていただきます。 前提 OpenID Connect は OAuth 2.0 認可プロセスを拡張し、認証目的で利用できるようにしたものになります。 Authorization Server は OpenID Provider (以下OP) とも呼ばれ、OpenID Conn...| メドピア開発者ブログ
こんにちは。メドピアでモバイルアプリエンジニアをしている王です。 先日「iOSDC Japan 2025」に参加してきました。参加は今年で4回目。毎回、新しい学びと人との出会いにワクワクします。 9/19には DroidKaigiに参加したレポートも投稿しましたが、今回はiOSDC Japanで印象に残ったセッションや現地で感じたことをレポートします。 会場と雰囲気 今年は会場が早稲田大学か...| メドピア開発者ブログ
こんにちは。メドピアでモバイルアプリエンジニアをしている王です。 今年は同僚2人と一緒に「DroidKaigi 2025」に参加してきました。会場では、AIの存在感が一段と増し、開発の進め方やスマホの中で動く賢い仕組み(オンデバイスAI)、複数OSでのアプリ開発、テストのやり方まで、さまざまな領域が前に進んでいるのを実感しました。 ふだんはiOSを中心に開発してい...| メドピア開発者ブログ
はじめに こんにちは!メドピアにてモバイルアプリエンジニアをしている佐藤です。 今年のDroidKaigiには総勢3名のモバイルアプリエンジニアがオフラインにて参加しました。 実際に足を運んだセッションの中でも特に印象に残ったセッションをご紹介します。 UIだけじゃないComposeの可能性 ━ 宣言的に奏でるメロディ usuiatさんによるセッションです。 youtu.be composeがUI...| メドピア開発者ブログ
はじめに こんにちは。SREチームの侘美です。 弊社ではLLM(大規模言語モデル)を活用したコーディング、特にDevinやClaude Codeのようなエージェント型ツールを積極活用する方針を打ち立て、各種ツールを利用できる環境を整備しています。 また、習熟やノウハウの獲得のため各チームで一定期間AIエージェント縛りで開発を行い、得られた知見や課題を共有する活動も...| メドピア開発者ブログ
こんにちは、サーバーサイドエンジニアの長谷川(@hasehiro25)です。 今回の『ClinPeerアプリ開発の裏側』連載では、BIツール運用の実践的なTipsをご紹介します。 tech.medpeer.co.jp BIツールの運用における課題として、「テーブルやカラムが追加された際のメンテナンスに手間がかかる」があります。 参照できるカラムをリストで管理する「許可リスト方式」では更新漏れが起...| メドピア開発者ブログ
こんにちは。メドピア内 Slack チャンネル 「#club_notion」 部長の佐藤太一(@teach_kaiju)です。 今回の「ClinPeerアプリ開発の裏側連載記事」では Notion を用いたタスク管理におけるメモの取り方を紹介します。 tech.medpeer.co.jp 目次 はじめに コメント機能のよくある課題点 ページ下部へのメモの仕方 Q & A まとめ はじめに Notion はその自由度の高さから、様々な情報を集約できる...| メドピア開発者ブログ
こんにちは!メドピアにてモバイルアプリエンジニアをしている王です。 今回の「ClinPeerアプリ開発の裏側連載記事」では、SwiftUIのEnvironmentについてお話しできればと思います。 tech.medpeer.co.jp SwiftUIのEnvironmentは、ビュー間でデータを共有するための強力な依存性注入(DI)の仕組みです。多くのSwiftUIプロジェクトで活用されており、ビュー間のデータ伝達を簡素化し、...| メドピア開発者ブログ
こんにちは。サーバーサイドエンジニアの佐藤太一(@teach_kaiju)です。 今回の「ClinPeerアプリ開発の裏側連載記事」ではサーバーサイドにおける、フィーチャーフラグの実装方法を紹介します。 tech.medpeer.co.jp 目次 フィーチャーフラグとは 機能の有効化 Feature#enabled? フラグの運用 features.yml フラグの新規追加 フラグの有効・無効の切り替え フラグの削除 条件付き有効化の...| メドピア開発者ブログ
こんにちは。事業本部開発部 MISP グループのフロントエンドエンジニアの小林和弘(@kzhrk0430)です。 メドピアでは「AI ファーストカンパニー」を目指すことを全社で掲げています。実際に社内では、AI ツールを活用して業務を効率化する動きが活発に行われています。たとえば、Gemini を使って Google Meet の文字起こしや議事メモを作成したり、Notion AI で要件定義とテス...| メドピア開発者ブログ
皆様こんにちは、メドピアのサーバーサイドエンジニアの内藤(@naitoh)です。 RubyKaigi 2025に参加されていた皆さん、お疲れ様でした。 今回、内藤がRubyKaigi 本編に登壇しました。 発表内容の詳細は以下の記事にまとめておりますのでよろしければご覧ください。 naitoh.hatenablog.com セッションレポート RubyKaigi のセッションの中で特に印象に残ったセッションをご紹介しま...| メドピア開発者ブログ
はじめに こんにちは!メドピアにてモバイルアプリエンジニアをしている佐藤です。 今回の「ClinPeerアプリ開発の裏側連載記事」では、ScrollableTabRowでのスクロール状態の監視方法について解説していきたいと思います。 tech.medpeer.co.jp 背景 ClinPeerアプリでは、ユーザーが関心のあるカテゴリーをタブとして動的に追加できるようにしており、追加したカテゴリーを上部...| メドピア開発者ブログ
皆様こんにちは、メドピアのサーバーサイドエンジニアの内藤(@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 を予定しています。 ぜひセッションにお越しください。 登...| メドピア開発者ブログ
こんにちは。サーバーサイドエンジニアの三村(@t_mimura39)です。 またまた「ClinPeerアプリ開発の裏側連載記事」です。 tech.medpeer.co.jp 今回はClinPeerで活用しているRailsの ActiveSupport::ErrorReporter についてご紹介します。 目次 ActiveSupport::ErrorReporter とは なぜ ActiveSupport::ErrorReporter を使うのか 実行コンテキストの注入 なぜ ActiveSupport::ErrorReporter を使うのか(本当のメリット...| メドピア開発者ブログ
こんにちは、組織開発グループの榎本です。 弊社の技術顧問にはまつもとゆきひろ(通称・Matz)さんがおり、Matzさん(以下、親しみも込めてMatzと表記します)とは定期的に「Matz会」と称して、Google Meetを繋いでリモートミーティングを開催しています。 Matz会のテーマは多岐にわたりますが、「毎回Matzとどんな話をしているの?」と気になっている開発者の方もいる...| メドピア開発者ブログ
Answer: 救世主まではいかないが、間違いなく助けになる。 組織開発グループの榎本です。世は大AIコード生成時代、皆さんバイブコーディングしていますか? 弊社においてもDevin、Clineを試験的に導入して活用し始めていますが、本記事では「Devin AIが技術的負債の解消に役立った話」を紹介したいと思います。 Devin AIとは 技術的負債の現状 2023年時点のAI活用 2025年、Devi...| メドピア開発者ブログ
こんにちは。サーバーサイドエンジニアの三村(@t_mimura39)です。 N番目の「ClinPeerアプリ開発の裏側連載記事」でございます(連載記事を同時執筆しているため本記事が何番目になるのかもはや不明)。 tech.medpeer.co.jp 今回はClinPeerで実践した「Railsプロジェクトのオブザーバビリティ強化施策」の紹介記事になります。少しマイナーなネタですね。 目次 オブザーバビリ...| メドピア開発者ブログ
こんにちは! サーバーサイドエンジニアの伏見です。 弊社で新しくリリースした「ClinPeer」の裏側連載。 tech.medpeer.co.jp この記事では、サーバーサイドで導入したGem Maintenance Tasks について書いていきます。 導入のモチベーション 開発初期や今後の運用の中で、データマイグレーション*1を考える場面が多くなるだろうという考えがありました。 Rails ConsoleやRake Taskで運...| メドピア開発者ブログ
こんにちは。サーバーサイドエンジニアの三村(@t_mimura39)です。 こちらでご案内した通り、弊社で新しくリリースした「ClinPeer」の裏側をご紹介します。 tech.medpeer.co.jp 今回は小ネタとして「Railsプロジェクトの設定値管理」についてご紹介します。 目次 設定値管理とは Railsプロジェクトでの設定値管理の選択肢 Settingslogic SettingsCabinet その他諸々Gem Rails標準 config_for co...| メドピア開発者ブログ
こんにちは。サーバーサイドエンジニアの三村(@t_mimura39)です。 こちらでご案内した通り、弊社で新しくリリースした「ClinPeer」の裏側をご紹介します。 tech.medpeer.co.jp 今回はClinPeerのバックエンドについての簡単なシステム概要と選定技術の紹介編です。 2024-2025年にrails newをした新鮮なRailsプロジェクトの様子をお楽しみください。 目次 システム概要 rails stats Gemfile ...| メドピア開発者ブログ
はじめに こんにちは!メドピアにてモバイルアプリエンジニアをしている佐藤です。 1月27日、 がん専門医のための論文キュレーションアプリ 「 ClinPeer 」 を正式にリリースしました。私はAndroidアプリエンジニアとして要件定義から参画しました。 clinpeer.medpeer.jp 今回はClinPeerアプリ開発の裏側の第一回目の記事ということで、ClinPeerでのAndroidアプリ開発の構成や採用...| メドピア開発者ブログ
こんにちは!メドピアにてモバイルアプリエンジニアをしている佐藤です。 弊社ではこの度Android/iOS向けにがん専門医の為の論文キュレーションアプリ「ClinPeer」をリリースしました! clinpeer.medpeer.jp そこで今回、ClinPeerアプリ開発の裏側について、この開発者ブログで連載することにしました! 開発中に工夫したポイントやぶつかった課題、用いた技術や開発体制など...| メドピア開発者ブログ
こんにちは。サーバーエンジニアの佐藤太一(@teach_kaiju)です。 本記事では社内で開発した、数億のデータを処理する仕組みを提供する gem MedPipe を紹介します。 MedPipe とは 「Log のデータを全て取得し、フォーマットして tsv として S3 にアップロードする」という要件があったとします。 この要件を実現するために、例えば以下のような実装を考えることができます。 upl...| メドピア開発者ブログ
こんにちは。サーバーエンジニアの佐藤太一(@teach_kaiju)です。 本記事では、クエリキャッシュのメモリ使用量と有効/無効の切り替え方法について紹介します。 クエリキャッシュとは クエリキャッシュのメモリ消費量 計測用コード 結果 考察 find_each 等ではクエリキャッシュが無効になる クエリキャッシュを無効化する方法 切り替え検証 おわりに 参考文献 クエリキャ...| メドピア開発者ブログ
こんにちは!メドピアの福田(@Yusa136)です。 2024年11月01日(金)に弊社オフィスにて、MNTSQ株式会社、STORES株式会社と3社でVue Fes Japan 2024 After Meetupを合同開催しました! Vue Fes Japan 2024 の感想や思い出を語り合いました。この記事では当日の様子やセッションの内容をお届けします。 LT 「VitePressで見つけたアウトプット習慣」 トップバッターは弊社メドピアの岡澤さん...| メドピア開発者ブログ
こんにちは。 メドピアの伏見 ( @fussy113 ) です。 2024年10月19日に大手町プレイス ホール&カンファレンスで開催された Vue Fes Japan 2024 に参加してきました! この記事では当日の様子やセッションの内容などをお届けします。 スポンサーとしての取り組み メドピアはゴールドスポンサー、セッションルームネーミングライツスポンサーとして協賛いたしました。 スポンサ...| メドピア開発者ブログ
こんにちは。サーバーサイドエンジニアの @atolix_です。 今回はメドピアで運用しているアプリケーションのkakariの監査ログをDB管理からS3管理に移行したので、その方法と手順について紹介したいと思います。 kakari.medpeer.jp 背景 従来kakariではAuditedを用いて、監査ログを専用のauditsテーブルに保管する処理を行っていました。 github.com # application_record.rb class ApplicationRecord ...| メドピア開発者ブログ
こんにちは。 10月からメドピアのVPoEになりました保立 ( @purunkaoru ) です。 メドピアは2024年10月19日に大手町プレイス ホール&カンファレンスで開催される Vue Fes Japan 2024 にゴールドスポンサー、セッションルームネーミングライツスポンサーとして協賛、そしてブースの出展も行います! ブース企画 今回のメドピアブースは 握力で技術的負債を粉砕しよう! 『握力測...| メドピア開発者ブログ
集合知プラットフォーム事業部・開発部の榎本です。 前回の記事はフロントエンドエンジニアの小林さんによる『小さくはじめる Vue の Composable』でした。 今回は小さくはじめるシリーズ第二弾ということで、今期開発部でOKRを導入してみて、それがいい感じにワークしたので紹介したいと思います。 OKR導入前の課題 OKRを導入 OKRをどう決めるか? OKR研修を実施 OKRの決...| メドピア開発者ブログ
こんにちは。フロントエンドエンジニアの小林和弘 @kzhrk0430 です。 今日は、Vue の機能のひとつである Composable を導入してみた体験談をシェアしようと思います。Vue を使っている方にはおなじみの機能かもしれませんが、僕が所属するチームでは Composable があまり積極的に利用されていない状況だったので Composable を小規模に導入したお話をします。 Composable とは Vue に...| メドピア開発者ブログ
こんにちは。サーバーサイドエンジニアの三村(@t_mimura39)です。 本日はRuby・Railsの話に限定せず、Amazon CloudFront を利用している方に役立つ情報をご提供します。 目次 はじめに 「X-Forwarded-For」を活用する方法 「CloudFront-Viewer-Address」を活用する方法 Railsエンジニアへ 注意点 おまけ 参考資料 はじめに 弊社は基本的にAWS上にRailsアプリケーションを構築しているため、CD...| メドピア開発者ブログ
モバイル開発グループのリーダーを務める小林(@imk2o)です。 今年もiOSDCとDroidKaigiに参加してきました! 例年と異なり、今年はモバイル開発グループのマネジメントを行う立場で参加したこともあり、いつもとは異なる目線でカンファレンス参加への意義や、今後のモバイルアプリエンジニアのキャリアについて考えてみました。 開発コミュニティに関わること まずこ...| メドピア開発者ブログ
こんにちは!メドピアの伏見(@fussy113)です! メドピアでは、Rubyの父でありメドピアの技術アドバイザリーを務めていただいているMatzさん(@yukihiro_matz)をお招きして、オンライン会議を開催しています。 そのオンライン会議にて、5月に開催されたRubyKaigi 2024に参加したエンジニアからの共有会を実施しました。 この記事ではその共有会のレポートをお届けします! RubyKaig...| メドピア開発者ブログ
サーバーサイドエンジニアの内藤(@naitoh) です。 Rails で構築された小規模な APIサーバー(Rails の API モードで構築したもの)で、Ruby 3.2 の YJITを有効化する事で性能アップすることができましたので、喜びを分かち合いたく共有させて頂きます。 shopify.engineering We’re able to measure real speedups ranging from 5% to 10% (depending on time of day) on our total end-to-end request completion time measu…| メドピア開発者ブログ