ブックマーク / www.m3tech.blog (28)

  • pandasのSeriesとMagicMockの併用でハマった件 - エムスリーテックブログ

    この記事はエムスリーAdvent Calendar 2023の18日目の記事です。 AI機械学習チームの高田です。 AI機械学習チームではデータパイプラインを構築する機会が多く、パイプラインの中でpandasを活用しています。 今回はpandasのSeries型を扱う関数の単体テストにMagicMockを使った際にハマったポイントを紹介したいと思います。 Series.mapの活用例 単体テスト 何が起きているのか 修正結果 おわりに We are hiring!! Series.mapの活用例 データの前処理工程ではDataFrameやSeriesの値を利用して別のSeriesを作成することが多くあります。 例えばアンケートの自由記述回答のうち、一定の文字数以上のデータのみ扱うために、テキストデータのSeriesから文字列長のSeriesを作成する場合が考えられます。 Seriesか

    pandasのSeriesとMagicMockの併用でハマった件 - エムスリーテックブログ
    Sampo
    Sampo 2023/12/18
    黒魔術同士が干渉して互いを無効化しちゃった形ね。
  • Enumとてもつらい、でも負けない - エムスリーテックブログ

    列挙型、JavaでいうならEnum型、使っていますか。使わないわけにいきませんよね。 でも、Enumを使っていたせいで辛い目にあったことありませんか。ないですか。それならきっともうすぐに辛い目にあうと思います。 Enumはすべてのプログラマに等しく辛みを与えてくれるからです。そんな辛みについて、ちょっと一緒に直視してみましょう。 エムスリーエンジニアリンググループ、Unit1(製薬企業向けプラットフォームチーム)三浦(@yuba@reax.work) [記事一覧 ]がお送りいたします、エムスリー Advent Calendar 2023の6日目です。 アプリケーションプログラミング上の辛み 1. 既存のif文が偶発的に意図しない方に倒れる 2. switch文に至っては「どちらでもない」で処理不発に アプリケーションプログラミング上の対策 1. 分岐条件をEnumに持たせる 2. swi

    Enumとてもつらい、でも負けない - エムスリーテックブログ
    Sampo
    Sampo 2023/12/06
    これは流してきた血の涙の記録
  • 9時間足すんだっけ引くんだっけ問題~あるいは、諸プログラミング言語はいかにタイムゾーンと向き合っているか - エムスリーテックブログ

    私は日付時刻の処理が大好きです。 タイムゾーンの問題でデータ抽出が9時間分漏れていたとか、朝9時の始業前のログが昨日付けになってしまっていたなんていう問題が起こると喜んじゃうタイプ。 そんな私にとって、各プログラミング言語が標準で持っている日付時刻型クラスにはそれぞれ思うところがあり、今日はちょっとその品評会をしてみたいと思います。 エムスリーエンジニアリンググループ、Unit1(製薬企業向けプラットフォームチーム)三浦(@yuba@reax.work) [記事一覧 ]がお送りいたします、エムスリー Advent Calendar 2023の2日目です。 至高の日付時刻型を持つ言語、BigQuery SQL 不足はないが蛇足、Java 8 日付時刻で画竜点睛を欠いたC# C#よりややまし、Python 型は良い構成、なのに命名と処理関数で損しているPostgreSQL まとめ We ar

    9時間足すんだっけ引くんだっけ問題~あるいは、諸プログラミング言語はいかにタイムゾーンと向き合っているか - エムスリーテックブログ
    Sampo
    Sampo 2023/12/02
    Goがまた違うタイプなので書いても良かったんだけどGoは日頃使わないので実感込められなくて見送りました
  • 俺が考える最強の「麻雀点数申告練習アプリケーション」を作ってみる ~ Pythonによる麻雀点数計算問題の自動生成と音声による点数申告 ~ - エムスリーテックブログ

    こちらはエムスリー Advent Calendar 2023 1日目の記事です。 Overview エムスリーエンジニアリンググループ AI機械学習チームでソフトウェアエンジニアをしている中村(po3rin) です。趣味麻雀でフリー雀荘で毎年200半荘以上打ちます。好きな麻雀プロは園田賢さんです。 麻雀を始めるときに一番の障壁になるのは点数計算ではないでしょうか? 特に符計算が初心者の関門のようです。一方私のような初中級者でも突然のレアな点数申告にまごつくことがあります。 そこで、今回はその人に合った麻雀の点数計算問題(主に符計算が焦点となる問題)を生成して、自分で点数計算&点数申告の練習をする方法を探求したのでその紹介をします。麻雀用語が少しだけ登場するので、対象読者は麻雀を少しでもかじったことのあるエンジニアの方です。 Overview 麻雀の点数計算の難しさ 現状の点数計算の練習

    俺が考える最強の「麻雀点数申告練習アプリケーション」を作ってみる ~ Pythonによる麻雀点数計算問題の自動生成と音声による点数申告 ~ - エムスリーテックブログ
    Sampo
    Sampo 2023/12/01
    コーディング試験はあるけど超絶ハイレベルプログラマしか通さないってんじゃなくてあくまで最低限レベルの足切り用だし、つよつよエンジニアがいるからってつよつよ以外お断りってわけじゃないです
  • テーブルを一個追加するたびにGRANT文書かないといけないの、やめられます - エムスリーテックブログ

    WebシステムがPostgreSQLにアクセスするときのDBロールはどうしていますか? postgres みたいな全能ロールをそのまま使う⋯⋯ でも動くシステムにはできるんですが、仮にアプリサーバ側の脆弱性を突かれたときに即DBの全権限まで危険にさらされる構成はインターネットにさらす番システムではやりにくく、SELECT/INSERT/UPDATE/DELET権限だけ付けたデータアクセス専用のロールを作ってこれを使うのが一般的かと思います。 すると手間になってくるのがテーブルを追加したときにGRANTが必要なことですし、それをうっかり忘れて番リリース後に権限エラー発生みたいな事故も起こりえます。 日も超小物のお題をお送りします、エムスリーエンジニアリンググループ、Unit1(製薬企業向けプラットフォームチーム)三浦(@yuba@reax.work) [記事一覧 ]です。 新規テーブ

    テーブルを一個追加するたびにGRANT文書かないといけないの、やめられます - エムスリーテックブログ
    Sampo
    Sampo 2023/09/18
    GRANT ON ALL TABLESは今後できるテーブルは対象じゃない、これだけどうか覚えてお帰りいただければ
  • 外部キー制約と AWS Lambda と私 - エムスリーテックブログ

    これは エムスリー Advent Calendar 2022 17 日目の記事です。 こんにちは、基盤開発チームの高島(id:rst76)です。 有名なボクサー、モハメド・アリの言葉に "It isn’t the mountains ahead to climb that wear you out; it’s the pebble in your shoe." というものがあるそうです。山に登るから疲れるのではなくの中に小石があるから疲れるんだ、という意味ですね。今日はそんな小石を取り除いた話をしたいと思います。 前提 課題 原因 まとめ 前提 多くのシステムには古いデータを削除する機能が備わっていると思います。エムスリーで運用している認証システムの 1 つにもありました。これは 1 日 1 回 AWS Lambda で実行しており、下図のような構成のテーブルに対して、子テーブル B,

    外部キー制約と AWS Lambda と私 - エムスリーテックブログ
    Sampo
    Sampo 2022/12/18
    モハメドアリの靴の中の小石の名言、プログラマだったらすごく言いそうな言葉だけどボクシングチャンピオンがどういうシチュエーションで口にしたのか、そればっかり気になってる
  • お前だったのか、いつもレビューしてくれていたのは - エムスリーテックブログ

    こんにちは、エムスリー 製薬企業向けプラットフォームチームの後藤です。 この記事は エムスリー Advent Calendar 2022 の 13 日目の記事です。 エムスリーではコードレビュー文化として根付いており、各チームで活発に実施されています。 記事では、日々のレビュアーの貢献に感謝を伝えるためにチームで実施した取り組みをご紹介します。 きっかけ チームでのコードレビューの取り組み レビュー実績を集計する レビュアーへ感謝を伝える まとめ We are Hiring! きっかけ とある期末、チームで半期の実績を振り返っていた時に、ふと思い立ったのが発端です。 「新規のサービスを開発した」、「売上N%アップに貢献した」といった実績はよく聞きますが、その中で必ず実施されているはずのコードレビューについてはあまり触れていないことに気づきました。 もちろん日々の業務の中でレビュアーに感

    お前だったのか、いつもレビューしてくれていたのは - エムスリーテックブログ
    Sampo
    Sampo 2022/12/14
    ここで豆なんだけどGitLabのアイコンはキツネでなくてタヌキ
  • Kotlin版pandas !? Kotlin Dataframeを使ってデータ分析 - エムスリーテックブログ

    この記事はエムスリー Advent Calendar 2022 12日目の記事です。 エンジニアの星川 (id:oboenikui) です。以前はAndroidアプリを書いてましたが、現在はサーバーサイドKotlinを書いています。 Kotlinといえば、Kotlin Festが12/10にありましたがご覧になったでしょうか? 弊社はひよこスポンサーで協賛しており、また私自身は運営スタッフとして参加しました。 まだご覧になっていない方は、アーカイブをぜひご覧ください。 閑話休題、Kotlinを開発しているJetBrains社が、最近Pythonの人気ライブラリやツールを意識したKotlinライブラリをいくつか開発していることはご存知でしょうか? GitHubKotlinオーガナイゼーション配下で公開されているものだけでも、以下のライブラリやツールが見つかります。 Kotlin kerne

    Kotlin版pandas !? Kotlin Dataframeを使ってデータ分析 - エムスリーテックブログ
    Sampo
    Sampo 2022/12/13
    pandasのためだけにPythonやって環境構築の辛さでのたうちまわってたけど、もうやめてもいいってこと⋯? pipenvで一個ライブラリ追加したら依存が全部最新化されてランタイムエラー起こし出す悲劇もう見なくていいの?
  • 「報告」について本気出して向き合ったら思考と行動が変わった話 - エムスリーテックブログ

    この記事はエムスリー Advent Calendar 2022 9日目の記事です。前日は @sonodar によるGoogle BigQuery Connector for AWS Glue で AWS から BigQuery にデータを書き込んでみたでした。 こんにちは! エムスリーエンジニアリングGプロダクトマネージャーの髙田です。 クラウド型電子カルテエムスリーデジカルを担当しています。 さて、2022年11月2日に行われたプロダクトマネージャーカンファレンス2022、見られた方も多いのではないでしょうか? その中のセッションの1つ「ホウレンソウで分かる、デキるPMの働き方」では、クライス&カンパニーの山さんとエムスリー山崎が、デキるPM・イマイチPMの違いについて報連相の切り口からディスカッション形式で話されていました。 youtu.be この記事では、私自身がエムスリー入社後に

    「報告」について本気出して向き合ったら思考と行動が変わった話 - エムスリーテックブログ
    Sampo
    Sampo 2022/12/10
    エムスリーのエンジニア、技術力が高いとかだけでなく仕事力ってのを身につけてるのよね。こうしてお手本にできる周りの人がいるからってのもあるし、それ以上にお手本を認めて自分に取り込める人達なんよね。
  • 認証があるSPAのリソースはどうしたらいいのか、わからん - エムスリーテックブログ

    こんにちは、エムスリーエンジニアリンググループの福林 (@fukubaya) です。 記事はエムスリー Advent Calendar 2022 の6日目の記事です。 前日は @yuba による 令和最新版エンジニアのリーダーシップ論 でした。 m3のほとんどのサービスは認証が必要なサービスですが、その中でSPAのリソースをどのように公開するかは、いつも決まった基準や正解がなくて、モヤモヤしていました。 以前作ったDocpediaでは、SpringBootの機能を使って直接リソースを提供するような構成にしていました。 今回は、SpringBootでない環境でもSPAのリソースの提供をどうすればいいか検討して構築したので紹介します。 福岡国際会議場は、福岡県福岡市博多区の国際会議場。文には特に関係ありません。 m3ラウンジ サービスの構成 SPAのリソースはどのように公開したらよいか?

    認証があるSPAのリソースはどうしたらいいのか、わからん - エムスリーテックブログ
    Sampo
    Sampo 2022/12/07
    バイナリ埋め込みは、転送量負荷とかコードとリソースの分離とかに目をつぶれば権限管理的には考えるべきこと少なくなって良いんですよね
  • Reactで管理画面(SPA)を作った時の技術選定とか。 - エムスリーテックブログ

    これは エムスリー Advent Calendar 2022 の3日目の記事です。 エンジニアリンググループの山です。 主にクラウド電子カルテサービス エムスリーデジカルのフロントエンドを開発しています。 この記事は、デザインの刷新と技術的負債(AngularJS)の返却を目的にデジカルの施設管理画面をリニューアルした時の記録になります。 愛犬のぽめちわ 施設管理画面 技術選定 その他実装方針 おわりに We are hiring! 施設管理画面 今回開発したのは施設管理画面と呼ばれるもので、ユーザーである医療機関(クリニック)側の管理画面になります。 現状だと18タブ(ページ)のシンプルなSPAとなっていて、オプションや連携等の各種設定、ユーザーの管理、監査ログの閲覧等が可能な画面です。 日用的に業務で利用される受付やカルテや画面とは違い、必要に応じて開かれる画面になります。 技術選定

    Reactで管理画面(SPA)を作った時の技術選定とか。 - エムスリーテックブログ
    Sampo
    Sampo 2022/12/06
  • JavaのutilメソッドがKotlin拡張関数のなかまになりたそうにこちらをみている! - エムスリーテックブログ

    以下の StringUtil.printHello がKotlinの拡張関数の仲間になりたそうにこちらを見ています。あなたは仲間にしてあげられますか? // StringUtil.java public final class StringUtil { public static void printHello(final String target) { System.out.println("Hello, " + target); } } 記事は以下のAdvent Calendarの記事です。 🎄 エムスリー Advent Calendar 2021 | 6日目 🎄 Kotlin Advent Calendar 2021 | 6日目 ※ 12/6現在まだ空きがあるのでぜひご投稿を! デコンパイルして仕様を知る トップレベル関数・拡張関数 Metadata metadataVers

    JavaのutilメソッドがKotlin拡張関数のなかまになりたそうにこちらをみている! - エムスリーテックブログ
    Sampo
    Sampo 2022/12/05
    こういうの好き。なんか無理っぽいのをハックして突破しちゃうやつ。
  • 令和最新版エンジニアのリーダーシップ論 - エムスリーテックブログ

    エムスリーエンジニアリンググループ製薬企業向けプラットフォームチーム(「Unit1」)の三浦 (@yuba)です。乗り物大好き男の子ですので好きなテレビ番組は銀河鉄道999とナイトライダーです。 さて「フラットな組織」だとよく言われるエムスリー、特にわがエンジニアリンググループなのですが、そのフラットってどういう感じなんでしょう? 上意下達の体制でない中では、人々はどう組織としての目標を共有して一緒に動いているんでしょう? この疑問への、(管理職でない)一般エンジニアとして5年半やってきた私なりに得た答えをご紹介したいというのが今回のお題になります。これは エムスリー Advent Calendar 2022 の5日目の記事です。前日は id:hsasakawa による グローバルサービスの開発における技術的な意思決定 - エムスリーテックブログ でした。 そしていきなり最初に結論から言っ

    令和最新版エンジニアのリーダーシップ論 - エムスリーテックブログ
    Sampo
    Sampo 2022/12/05
  • 自作 Terraform Registry - エムスリーテックブログ

    こちらはエムスリー Advent Calendar 2022 Advent Calendar 2022の一日目の記事です。 エムスリーエンジニアリンググループ AI機械学習チームでソフトウェアエンジニアをしている中村(po3rin) です。検索とGoが好きです。今回はPrivate Terraform Registry周りを調べていて学んだTerraform Provider Registryを自作する方法を紹介します。 Overview Terraform Providerについて Terraform Registry API GoによるTerraform Provider Registry実装 Service Discovery API Regist Provider API List Available Versions API Find a Provider Package AP

    自作 Terraform Registry - エムスリーテックブログ
    Sampo
    Sampo 2022/12/05
  • API on GKE に高速で認証をつけるIdentity-Aware Proxy × Identity Platform - エムスリーテックブログ

    記事はGCP(Google Cloud Platform) Advent Calendar 2022 3日目の記事です。2日目はGoogle Cloud Storage(GCS)上の画像やJSにIP制限をかけるでした。 Overview エムスリーエンジニアリンググループ AI機械学習チームでソフトウェアエンジニアをしている中村(po3rin) です。検索とGoが好きです。 今回は社内のとあるプロジェクトでIdentity-Aware Platform * Identity Platformによるメアド/パスワード認証を採用しました。この記事では技術的な紹介と採用した所感をお伝えします。 Overview 技術的な要請 採用した構成 Identity-Aware Proxy Identity Platform ログインページのカスタマイズ 署名ヘッダーによるアプリケーションの保護 ユー

    API on GKE に高速で認証をつけるIdentity-Aware Proxy × Identity Platform - エムスリーテックブログ
    Sampo
    Sampo 2022/12/05
  • Slackの絵文字サジェストを機械学習でリバースエンジニアリング ~文字同士のマッチングの学習と高速化~ - エムスリーテックブログ

    Slack絵文字入力サジェストって意外と不思議な挙動をする。普通に部分一致だと思って入力しがちだけど、時々ハッと、あれなんでこの絵文字がサジェストされたんだ?って意外な挙動をすることがある。 例えば上記の会話では、なぜかminorって入力したら"バドミントン🏸"がサジェストされまてます💢*1*2 ここから、Slack絵文字サジェスト面白いねって話になりました。 ってことで、今回は、Slack絵文字サジェストアルゴリズムを機械学習で模倣する、ひいては、こういう、ブラックボックスな入出力システムがあったときに、機械学習でそれをコピーするってどうやってやるんだろ、って話をします。 学習完了したsuggest関数 TL;DR 機械学習してみよう STEP1: 学習可能な問題に落とし込む is_match() STEP2: 学習データはどう作る? query x emojiの全羅列 STE

    Slackの絵文字サジェストを機械学習でリバースエンジニアリング ~文字同士のマッチングの学習と高速化~ - エムスリーテックブログ
    Sampo
    Sampo 2022/12/05
    これほんとどういうサジェストロジックなんだろう。si⇔shiとかtu⇔tsuの表記揺れを吸収してもらうために、si, tuと打ち込むのはよくやっているんだけどそれで吸収してもらえている仕組みがわからないまま。
  • 3年半デプロイのなかったクラウド電子カルテ体験版をついに本番追従させた話 - エムスリーテックブログ

    こんにちは、電子カルテチームの鳥山(@to_lz1)です。私のチームではクラウド電子カルテ「エムスリーデジカル」を開発運用しています。今回はそんなエムスリーデジカルの "オンラインデモ版"、つまり体験版アプリケーションを3年半ぶりにアップデートさせたお話です。具体的には インフラをAWSに移行 最新のコードベースでデプロイ 製品版のリリースと同タイミングでCI/CDできるように変更 という大きく3点を一気に実施しました。 3年半ぶりというとなんだかすごいことのようですが、そもそもなぜ製品版と異なる環境にあったのか、アップデートできないままだったのはなぜなのかといった疑問は皆さま抱かれるかなと思います。 この記事では、オンラインデモ版サイトの移行に関連するエムスリーデジカルのインフラの変遷、そして移行に際して工夫したこと・考えたことをご紹介しようと思います。 前提 オンラインデモ版更新の意義

    3年半デプロイのなかったクラウド電子カルテ体験版をついに本番追従させた話 - エムスリーテックブログ
    Sampo
    Sampo 2022/06/02
    扱いにくい「ちょっとだけ振る舞いの違うバージョン」を、そういうのこそビジネスにとって大事だったりするんですよねと受け入れられる心の広さ、尊い⋯
  • アーキテクチャと設計は全然違う⋯ただしあなたの想像する”違い”とは多分全然違う【輪読会発表紹介】 - エムスリーテックブログ

    エムスリーエンジニアリンググループ製薬企業向けプラットフォームチームの三浦 (@yuba)です。エンジニアリンググループ内では技術書の輪読会が有志によりいくつか立ち上がっています*1。そうした勉強会の一つで発表した内容が社内で少々バズったので、これは社内だけじゃもったいないとご紹介させていただきます。 は、「ソフトウェアアーキテクチャの基礎(オライリー・ジャパン、Mark Richards/Neal Ford著 島田浩二訳)」。その第2章です。 謝辞をまず この章は 知識の”幅”と”深さ”だ 幅広さ→候補とメリデメ→ビジネス動機に即した判断 深さ→最新アップデートに追いつき続けること→偏らない判断 まとめ 参加者の感想など We are hiring! ソフトウェア アーキテクチャ基礎 輪読会資料 第2章 アーキテクチャ思考 from 琢磨 三浦 謝辞をまず このの輪読会を立ち上げてく

    アーキテクチャと設計は全然違う⋯ただしあなたの想像する”違い”とは多分全然違う【輪読会発表紹介】 - エムスリーテックブログ
    Sampo
    Sampo 2022/06/02
    テックブログに記事を書きました
  • こんばんは、X-Forwarded-For警察です - エムスリーテックブログ

    エムスリーエンジニアリンググループ製薬企業向けプラットフォームチームの三浦 (@yuba)です。普段はサービス開発やバッチ処理開発をメインにやっておりますが、チームSREに参加してからはこれに加えて担当サービスのインフラ管理、そしてクラウド移行に携わっています。 今回はそのクラウド移行の話そのものではないのですが、それと必ず絡んでくるインフラ設定に関してです。 アクセス元IPアドレスを知りたい Webアプリケーションがアクセス元IPアドレスを知りたいシーンというのは、大まかに二つかと思います。ログ記録用と、アクセス制限ですね。どちらもアプリケーションそのものではなく手前のWebサーバの責務のようにも思えますが、そうとも言い切れません。動作ログ、特に異常リクエストをはじいた記録なんかにセットでIPアドレスを付けたいとなるとアプリケーション要件ですし、アクセス制限についてもマルチテナントサービ

    こんばんは、X-Forwarded-For警察です - エムスリーテックブログ
    Sampo
    Sampo 2021/02/04
    id:tmatsuu 登場人物がすべて信頼外IPの場合、実ソースIPつまり最末尾を取りたいのだから2がそのまま有効です。3はエッジケース対策でして、プロキシサーバ上のシェルからcurlされているような場合への考慮です。
  • SREを麻雀に例えたら(哭き派とメンチン派の争い) - エムスリーテックブログ

    エムスリーエンジニアリンググループSREチームの山です。 私はエムスリーに入社してまだ1年少しなのですが、前職でも似たような職務を担当していました。 その中で、実は「インフラのあり方」には二大潮流が存在し、その中で皆が苦しみもがいているのではないだろうか?と感じました。前職や現職で感じたアレコレをエッセーのように軽い読み物にしますので、SREブログリレー二日目のネタとして書かせてください なお、文字だけでは書きたいことが足りぬため、私が直々に画伯として挿絵も描いてしまいます。 ちなみに「麻雀に例えたら」と書きましたが、実は私は麻雀のルールをほとんどしりません。某有名麻雀劇画の作者はルールを知らないのに勢いで麻雀を描いたようですし、私もそれでいきたいと思います。 ロン!クラウド無双!! 二種の潮流 哭きのSRE メンチン型SRE どちらが正しいのか? SREとしての立場と技術選定 「シクヨ

    SREを麻雀に例えたら(哭き派とメンチン派の争い) - エムスリーテックブログ
    Sampo
    Sampo 2021/01/14
    哭きの竜ネタでありながら画風がむしろ片山まさゆき