メドピア開発者ブログ

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

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

フィード

記事のアイキャッチ画像
GitHub Copilot を味方につける:AI に渡すコンテキスト整備の工夫
はてなブックマークアイコン 1
メドピア開発者ブログ
こんにちは。事業本部開発部 MISP グループのフロントエンドエンジニアの小林和弘(@kzhrk0430)です。 メドピアでは「AI ファーストカンパニー」を目指すことを全社で掲げています。実際に社内では、AI ツールを活用して業務を効率化する動きが活発に行われています。たとえば、Gemini を使って Google Meet の文字起こしや議事メモを作成したり、Notion AI で要件定義とテストケースの整合性を確認したり、スライド作成を AI に任せたりと、日々の業務に AI を積極的に取り入れています。 今回は、開発環境をより快適にするために GitHub Copilot(VS Cod…
3日前
記事のアイキャッチ画像
#RubyKaigi 2025 セッションレポート
メドピア開発者ブログ
皆様こんにちは、メドピアのサーバーサイドエンジニアの内藤(@naitoh)です。 RubyKaigi 2025に参加されていた皆さん、お疲れ様でした。 今回、内藤がRubyKaigi 本編に登壇しました。 発表内容の詳細は以下の記事にまとめておりますのでよろしければご覧ください。 naitoh.hatenablog.com セッションレポート RubyKaigi のセッションの中で特に印象に残ったセッションをご紹介します。 タイムテーブルは下記から確認ください。 rubykaigi.org Make Parsers Compatible Using Automata Learning ruby…
16日前
記事のアイキャッチ画像
ScrollableTabRowでスクロール状態を監視する
メドピア開発者ブログ
はじめに こんにちは!メドピアにてモバイルアプリエンジニアをしている佐藤です。 今回の「ClinPeerアプリ開発の裏側連載記事」では、ScrollableTabRowでのスクロール状態の監視方法について解説していきたいと思います。 tech.medpeer.co.jp 背景 ClinPeerアプリでは、ユーザーが関心のあるカテゴリーをタブとして動的に追加できるようにしており、追加したカテゴリーを上部のタブで表示しています。その際、右側にまだ表示しきれていないタブがあることをユーザーに伝えるため、右端にスクロール可能な場合はアイコンを表示しています。 右:スクロールできない場合はアイコンを非表…
22日前
記事のアイキャッチ画像
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…
25日前
記事のアイキャッチ画像
Railsの「ActiveSupport::ErrorReporter」って知ってる?
メドピア開発者ブログ
こんにちは。サーバーサイドエンジニアの三村(@t_mimura39)です。 またまた「ClinPeerアプリ開発の裏側連載記事」です。 tech.medpeer.co.jp 今回はClinPeerで活用しているRailsの ActiveSupport::ErrorReporter についてご紹介します。 目次 ActiveSupport::ErrorReporter とは なぜ ActiveSupport::ErrorReporter を使うのか 実行コンテキストの注入 なぜ ActiveSupport::ErrorReporter を使うのか(本当のメリット) Rails内での利用例 Rai…
1ヶ月前
記事のアイキャッチ画像
技術顧問Matzとは、どんな話をしているの?
メドピア開発者ブログ
こんにちは、組織開発グループの榎本です。 弊社の技術顧問にはまつもとゆきひろ(通称・Matz)さんがおり、Matzさん(以下、親しみも込めてMatzと表記します)とは定期的に「Matz会」と称して、Google Meetを繋いでリモートミーティングを開催しています。 Matz会のテーマは多岐にわたりますが、「毎回Matzとどんな話をしているの?」と気になっている開発者の方もいるかもしれません。本記事では、過去のMatz会開催実績を元に、その内容の一部をお伝えできればと思います。 講演の再演 Rubyの最新機能の解説 Rubyのコア技術の解説 OSS キャリア論 Matzへプレゼン その他 さい…
1ヶ月前
記事のアイキャッチ画像
Devin AIは技術的負債解消の救世主となるか?
メドピア開発者ブログ
Answer: 救世主まではいかないが、間違いなく助けになる。 組織開発グループの榎本です。世は大AIコード生成時代、皆さんバイブコーディングしていますか? 弊社においてもDevin、Clineを試験的に導入して活用し始めていますが、本記事では「Devin AIが技術的負債の解消に役立った話」を紹介したいと思います。 Devin AIとは 技術的負債の現状 2023年時点のAI活用 2025年、Devinの活用 活用ユースケース うまくいかなかった指示の例 複雑なタスク依頼は工夫が必要 良かった点 どれくらい成果上がった? 課題 (おまけ)ACU消費量の目安 まとめ Devin AIとは De…
1ヶ月前
記事のアイキャッチ画像
ClinPeer Railsプロジェクトのオブザーバビリティ強化施策
メドピア開発者ブログ
こんにちは。サーバーサイドエンジニアの三村(@t_mimura39)です。 N番目の「ClinPeerアプリ開発の裏側連載記事」でございます(連載記事を同時執筆しているため本記事が何番目になるのかもはや不明)。 tech.medpeer.co.jp 今回はClinPeerで実践した「Railsプロジェクトのオブザーバビリティ強化施策」の紹介記事になります。少しマイナーなネタですね。 目次 オブザーバビリティとは ログ アクセスログの構造化 その他ログの構造化 実行コンテキスト リクエストログのトレースID ログ出力例 query_log_tagsの有効化 ActiveStorage+S3 ファ…
1ヶ月前
記事のアイキャッチ画像
ClinPeer Maintenance Tasks Gemの活用事例
メドピア開発者ブログ
こんにちは! サーバーサイドエンジニアの伏見です。 弊社で新しくリリースした「ClinPeer」の裏側連載。 tech.medpeer.co.jp この記事では、サーバーサイドで導入したGem Maintenance Tasks について書いていきます。 導入のモチベーション 開発初期や今後の運用の中で、データマイグレーション*1を考える場面が多くなるだろうという考えがありました。 Rails ConsoleやRake Taskで運用することがあるかと思いますが*2、以下のような懸念がありました。 本番環境のサーバーにアクセスをして実行することが必要になる、実行の権限管理の問題が生じる コンソ…
2ヶ月前
記事のアイキャッチ画像
ClinPeer Railsプロジェクトの設定値管理(2025年版)
メドピア開発者ブログ
こんにちは。サーバーサイドエンジニアの三村(@t_mimura39)です。 こちらでご案内した通り、弊社で新しくリリースした「ClinPeer」の裏側をご紹介します。 tech.medpeer.co.jp 今回は小ネタとして「Railsプロジェクトの設定値管理」についてご紹介します。 目次 設定値管理とは Railsプロジェクトでの設定値管理の選択肢 Settingslogic SettingsCabinet その他諸々Gem Rails標準 config_for config_forの活用方法(定義・参照) config_for活用方法(裏側) なぜ config.x. を使わないのか なぜ…
2ヶ月前
記事のアイキャッチ画像
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…
2ヶ月前
記事のアイキャッチ画像
ClinPeer Androidアプリ開発の裏側とFirebase Dynamic Links(FDL)の代替について
メドピア開発者ブログ
はじめに こんにちは!メドピアにてモバイルアプリエンジニアをしている佐藤です。 1月27日、 がん専門医のための論文キュレーションアプリ 「 ClinPeer 」 を正式にリリースしました。私はAndroidアプリエンジニアとして要件定義から参画しました。 clinpeer.medpeer.jp 今回はClinPeerアプリ開発の裏側の第一回目の記事ということで、ClinPeerでのAndroidアプリ開発の構成や採用技術、Firebase Dynamic Links(FDL)の代替としてClinPeerではAdjustを採用した為、Adjustの活用事例について書いていきたいと思います。 モ…
3ヶ月前
記事のアイキャッチ画像
Android/iOS向けアプリ「ClinPeer」をリリースしました! -ClinPeerアプリ開発の裏側連載開始のお知らせ-
メドピア開発者ブログ
こんにちは!メドピアにてモバイルアプリエンジニアをしている佐藤です。 弊社ではこの度Android/iOS向けにがん専門医の為の論文キュレーションアプリ「ClinPeer」をリリースしました! clinpeer.medpeer.jp そこで今回、ClinPeerアプリ開発の裏側について、この開発者ブログで連載することにしました! 開発中に工夫したポイントやぶつかった課題、用いた技術や開発体制などの内容をお届けします。 ブログは毎週または隔週のペースで更新予定です。 各エンジニアがそれぞれの視点で記事を執筆するので、多彩な内容をお楽しみいただけると思います。 それでは次回のブログ更新をお楽しみに…
3ヶ月前
記事のアイキャッチ画像
数億データを処理する仕組みを提供する 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 の…
5ヶ月前
記事のアイキャッチ画像
ActiveRecord クエリキャッシュのメモリ使用量と無効化
メドピア開発者ブログ
こんにちは。サーバーエンジニアの佐藤太一(@teach_kaiju)です。 本記事では、クエリキャッシュのメモリ使用量と有効/無効の切り替え方法について紹介します。 クエリキャッシュとは クエリキャッシュのメモリ消費量 計測用コード 結果 考察 find_each 等ではクエリキャッシュが無効になる クエリキャッシュを無効化する方法 切り替え検証 おわりに 参考文献 クエリキャッシュとは Active Recordのクエリキャッシュは、1つのリクエストまたはジョブの実行中に同じSQLクエリが複数回実行された場合、2回目以降のクエリの実行を省略し、最初の結果をメモリ上にキャッシュして再利用する機…
6ヶ月前
記事のアイキャッチ画像
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を活用したアウトプット習慣の作り方についての話が印象的でした。「飽き性だけど続けられる」という岡澤さんの言葉の示す通り…
6ヶ月前
記事のアイキャッチ画像
Vue Fes Japan 2024に参加しました!#vuefes
メドピア開発者ブログ
こんにちは。 メドピアの伏見 ( @fussy113 ) です。 2024年10月19日に大手町プレイス ホール&カンファレンスで開催された Vue Fes Japan 2024 に参加してきました! この記事では当日の様子やセッションの内容などをお届けします。 スポンサーとしての取り組み メドピアはゴールドスポンサー、セッションルームネーミングライツスポンサーとして協賛いたしました。 スポンサーブース 握力で技術的負債を粉砕しよう! 『握力測定 in Vue Fes Japan 2024』 と題して、握力を測定していただきました。 🧐握力測定はしましたか?🧐#メドピア ブースでは握力測定を実…
7ヶ月前
記事のアイキャッチ画像
監査ログの保管先をRDBからS3に移行する
メドピア開発者ブログ
こんにちは。サーバーサイドエンジニアの @atolix_です。 今回はメドピアで運用しているアプリケーションのkakariの監査ログをDB管理からS3管理に移行したので、その方法と手順について紹介したいと思います。 kakari.medpeer.jp 背景 従来kakariではAuditedを用いて、監査ログを専用のauditsテーブルに保管する処理を行っていました。 github.com # application_record.rb class ApplicationRecord < ActiveRecord::Base ... include Auditable # auditable.…
7ヶ月前
記事のアイキャッチ画像
メドピアはVue Fes Japan 2024にゴールドスポンサーとして協賛します!
メドピア開発者ブログ
こんにちは。 10月からメドピアのVPoEになりました保立 ( @purunkaoru ) です。 メドピアは2024年10月19日に大手町プレイス ホール&カンファレンスで開催される Vue Fes Japan 2024 にゴールドスポンサー、セッションルームネーミングライツスポンサーとして協賛、そしてブースの出展も行います! ブース企画 今回のメドピアブースは 握力で技術的負債を粉砕しよう! 『握力測定 in Vue Fes Japan 2024』 と題し、ブースを訪問いただいた皆さまに、握力測定を行っていただきます。 握力測定に挑戦! 握力測定、最近してますか? 学生以来測ってないという…
7ヶ月前
記事のアイキャッチ画像
小さくはじめる OKR
メドピア開発者ブログ
集合知プラットフォーム事業部・開発部の榎本です。 前回の記事はフロントエンドエンジニアの小林さんによる『小さくはじめる Vue の Composable』でした。 今回は小さくはじめるシリーズ第二弾ということで、今期開発部でOKRを導入してみて、それがいい感じにワークしたので紹介したいと思います。 OKR導入前の課題 OKRを導入 OKRをどう決めるか? OKR研修を実施 OKRの決め方 マネージャー陣でディスカッション 時間はめっちゃかかる 工夫した点 KRオーナーを決める 週定例で進捗を追う OKRの振り返り よかったこと 課題に感じたこと 今後改善したいこと OKRを成功させるためのポイ…
7ヶ月前
記事のアイキャッチ画像
小さくはじめる Vue の Composable
メドピア開発者ブログ
こんにちは。フロントエンドエンジニアの小林和弘 @kzhrk0430 です。 今日は、Vue の機能のひとつである Composable を導入してみた体験談をシェアしようと思います。Vue を使っている方にはおなじみの機能かもしれませんが、僕が所属するチームでは Composable があまり積極的に利用されていない状況だったので Composable を小規模に導入したお話をします。 Composable とは Vue における Composable の基本的な概念と役割について説明します。 Vue 2 では機能ごとのオプション(data, methods, computed, etc…)…
7ヶ月前
記事のアイキャッチ画像
Amazon CloudFront環境におけるクライアントIPアドレスについて 〜CloudFront-Viewer-Addressの紹介〜
メドピア開発者ブログ
こんにちは。サーバーサイドエンジニアの三村(@t_mimura39)です。 本日はRuby・Railsの話に限定せず、Amazon CloudFront を利用している方に役立つ情報をご提供します。 目次 はじめに 「X-Forwarded-For」を活用する方法 「CloudFront-Viewer-Address」を活用する方法 Railsエンジニアへ 注意点 おまけ 参考資料 はじめに 弊社は基本的にAWS上にRailsアプリケーションを構築しているため、CDNが必要になるとまず選択肢として挙がるのが 「Amazon CloudFront(以下CloudFront)」です。 「Cloud…
7ヶ月前
記事のアイキャッチ画像
EM目線で見たiOSDC/DroidKaigi
メドピア開発者ブログ
モバイル開発グループのリーダーを務める小林(@imk2o)です。 今年もiOSDCとDroidKaigiに参加してきました! 例年と異なり、今年はモバイル開発グループのマネジメントを行う立場で参加したこともあり、いつもとは異なる目線でカンファレンス参加への意義や、今後のモバイルアプリエンジニアのキャリアについて考えてみました。 開発コミュニティに関わること まずこういったカンファレンスを「情報収集を行うための場」という見方をしていませんか? もちろん新しい技術や知見を獲得できる機会であることは間違いありませんが、もっと大切なことがあります。 それは他のエンジニアたちと直接意見交換することだと私…
7ヶ月前
記事のアイキャッチ画像
DroidKaigi 2024に参加してきました!
メドピア開発者ブログ
はじめに こんにちは!メドピアにてモバイルアプリエンジニアをしている佐藤です。 今年のDroidKaigiに、弊社はサポーターとして協賛し、総勢3名のモバイルアプリエンジニアがオフラインにて参加しました。 実際に足を運んだセッションを中心に、DroidKaigi 2024の参加レポートをお届けいたします。 セッションについて Android ViewからJetpack Composeへ 〜Jetpack Compose移行のすゝめ〜 syarihuさんによるセッションです。 youtu.be このセッションではJetpack Composeへの移行の進め方が中心のお話となります。 弊社では複数…
8ヶ月前
記事のアイキャッチ画像
YJIT有効化後にUnicornワーカーを増やした場合の各メトリクスの推移について
メドピア開発者ブログ
はじめに こんにちは。サーバーサイドエンジニアの冨家(@asahi05020934)です。現在は、全国の医師が経験やナレッジを 「集合知」として共有し合う医師専用コミュニティサイト「MedPeer」の開発を行っています。 Ruby 3.2からYJITが実用段階になりました。「MedPeer」でもパフォーマンスを改善するためにYJITを有効化することになりました。 本番環境でYJITを有効化後、ECSサービスのMemory Utilizationに余裕があったので、ECSサービスのUnicornワーカー数を増やすことを検討しました。 しかし、YJIT有効化後のUnicornワーカー数とメトリクス…
8ヶ月前
記事のアイキャッチ画像
iOSDC Japan 2024に参加しました
メドピア開発者ブログ
みなさん、こんにちは!アプリエンジニアのオウです。 先日、iOSDC Japan 2024に参加してきました!今年、メドピアはシルバースポンサーとしてiOSDC Japanをサポートいたしました。会場はたくさんの参加者で賑わい、とても充実した時間を過ごすことができました。いくつか印象に残ったセッションを紹介したいと思います。 Appleウォレット / Googleウォレットに チケットを保存する方法 speakerdeck.com このセッションでは、Apple WalletとGoogle Walletにパスを保存する方法についての説明です。実は今回のiOSDCで初めてチケットをApple W…
8ヶ月前
記事のアイキャッチ画像
RailsアプリケーションにThrusterを導入する
メドピア開発者ブログ
こんにちは。サーバーサイドエンジニアの @atolix_です。 今回は37signalsが公開しているThrusterを、メドピアで本番運用をしているアプリケーションのkakariに導入してみました。 kakari.medpeer.jp Thrusterとは Thrusterはアセット配信やX-Sendfileのサポートといった機能を持ったGo言語製のHTTP/2プロキシです。 詳細な設定不要でRails標準のPumaサーバーと組み合わせて動作して、nginxを構成に加えた時と同様のリクエスト処理を行うことが可能です。 github.com www.publickey1.jp 導入前の状況 導…
8ヶ月前
記事のアイキャッチ画像
SolidQueue解体新書
メドピア開発者ブログ
こんにちは。サーバーサイドエンジニアの三村(@t_mimura39)です。 さて、Railsエンジニアの皆さんは非同期処理にどのようなライブラリを利用していますか? ちなみに弊社では Sidekiq を利用するプロジェクトが多いです。 tech.medpeer.co.jp 今回はRailsでの非同期処理ライブラリの新たな選択肢として誕生した「SolidQueue」について解説します。 github.com 目次 🆕 更新履歴 🆕 2024/09/12 🙋 はじめに 🙋 📝 SolidQueueとは 📝 🚀 SolidQueueの特徴 🚀 🔓 「FOR UPDATE SKIP LOCKED」 と…
8ヶ月前
記事のアイキャッチ画像
成功循環モデルから学ぶ、チーム力を向上させた取り組み
メドピア開発者ブログ
こんにちは。エンジニアの保立(@purunkaoru) です。 先日、弊社のMVPに、開発チームのリーダーをしている四方さん(@shikatadesu)が選ばれました。 style.medpeer.co.jp 近くで見て、僕が勉強になった点を「成功循環モデル」をもとに紹介いたします。 チームビルディングで悩まれている方の参考や気付きになれば嬉しいです。 成功循環モデルは、「関係の質」、「思考の質」、「行動の質」、「結果の質」という順序で質が向上していく考え方です。各段階の質が高まることで次の段階の質も向上し、良い結果が循環するとされています。詳しくは以下のリンクをご参照ください。 「成功循環モ…
8ヶ月前
記事のアイキャッチ画像
HTTP API Clientライブラリの自作を手助けするGemを公開しました
メドピア開発者ブログ
こんにちは。サーバーサイドエンジニアの三村(@t_mimura39)です。 育休明け早々猛暑の熱気にやられ部屋に閉じこもっています。 今回はとあるGemを作成したので、そちらの紹介をさせていただきます。 目次 前フリ Gemの概要 カスタマイズ性について まとめ おまけ 前フリ Webアプリケーションを開発されている皆さん。 外部のHTTP APIを呼び出すような要件が発生したらどのように実装されますか? まずはHTTP Clientライブラリ(Gem)の選定からですよね。 無難なところでfaraday、最近?だとhttpなんかも選択肢にありますし、Gemを利用せずにRuby標準の Net::…
9ヶ月前