タグ

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

  • 市区町村マスタを手に入れろ、そして更新し続けろ - エムスリーテックブログ

    全国の市区町村の名前とコードをデータベーステーブル化したもの、すなわち市区町村マスタはITシステムを作っていれば何かしらの場面で必要になるものです。 ではその市区町村マスタを作るための元データはどこから手に入れたらいいものか。 そして「作る」というのもありますが、市区町村は再編されるものですから最新の変更にどう追従するか、しかもそれを自動化できるかというのも大いに気になるところですね。 エムスリーエンジニアリンググループ三浦(@yuba@reax.work) [記事一覧 ]です。 Unit1(製薬プロモーション)およびUnit9(治験臨床研究支援)のエンジニアです。 今回は私も皆様とまったく同じように市区町村マスタのデータ源に悩んでいろいろ調べましたので、それで得た知見を共有させていただこうと思います。今回は代表的な3つのデータソースをご紹介し比較していきます。 ほしいのはこんな感じのデ

    市区町村マスタを手に入れろ、そして更新し続けろ - エムスリーテックブログ
    yojik
    yojik 2024/07/30
  • フルスクラッチして理解するOpenID Connect (3) JWT編 - エムスリーテックブログ

    こんにちは。デジカルチームの末永(asmsuechan)です。この記事は「フルスクラッチして理解するOpenID Connect」の全4記事中の3記事目です。前回はこちら。 www.m3tech.blog 9 JWT の実装 9.1 JWT概説 9.2 OpenID Connect の JWT 9.3 ヘッダーとペイロードの実装 9.4 署名の実装 公開鍵と秘密鍵を生成する 署名処理を作る 10 JWKS URI の実装 (GET /openid-connect/jwks) 11 RelyingParty で ID トークンの検証をする 12 OpenID Connect Discovery エンドポイントの実装 (GET /openid-connect/.well-known/openid-configuration) まとめ We're hiring 今回は全4回中の第3回目です。 (

    フルスクラッチして理解するOpenID Connect (3) JWT編 - エムスリーテックブログ
    yojik
    yojik 2024/03/13
  • Enumとてもつらい、でも負けない - エムスリーテックブログ

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

    Enumとてもつらい、でも負けない - エムスリーテックブログ
    yojik
    yojik 2023/12/06
    もうここまでやるならクラスつかってもよいのでは。
  • テーブルを一個追加するたびにGRANT文書かないといけないの、やめられます - エムスリーテックブログ

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

    テーブルを一個追加するたびにGRANT文書かないといけないの、やめられます - エムスリーテックブログ
    yojik
    yojik 2023/09/19
  • goのLambdaはコンテナイメージでよくない? - エムスリーテックブログ

    【Unit4 ブログリレー8日目】 こんにちは、エムスリーエンジニアリンググループの福林 (@fukubaya) です。 今日の記事は、タイトルのとおりgoLambdaはコンテナイメージで管理するのがオススメって話です。 城島高原パーク(きじまこうげんパーク)は、大分県別府市の城島高原にある遊園地。文には関係ありません。 go1.xランタイムのサポート終了 コンテナイメージにする利点 起動時間は遅くならないの? 構成 処理体 main.go Dockerfile 番実行用イメージ ローカル実行用イメージ ローカルで実行 Lambdaの設定 まとめ We are hiring! go1.xランタイムのサポート終了 先日、AWS Lambdago1.x ランタイムのサポート2023/12/31で終了することが話題になっていました。 「なっていました」と伝聞なのは、Unit4ではすで

    goのLambdaはコンテナイメージでよくない? - エムスリーテックブログ
    yojik
    yojik 2023/09/01
  • アーキテクチャと設計は全然違う⋯ただしあなたの想像する”違い”とは多分全然違う【輪読会発表紹介】 - エムスリーテックブログ

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

    アーキテクチャと設計は全然違う⋯ただしあなたの想像する”違い”とは多分全然違う【輪読会発表紹介】 - エムスリーテックブログ
    yojik
    yojik 2023/08/04
  • コードリーディング: Go 標準ライブラリ net/http/httputil ReverseProxy での WebSocket の取り扱い - エムスリーテックブログ

    エンジニアリンググループの山口 (@no_clock) です。 クラウド電子カルテ「エムスリーデジカル」のシステム水平分割(参考)を実施するにあたり、 HTTP リクエストを分割システム群にルーティングするリバースプロキシを実装しました。実装規模は Go 言語で 500 行ほど。既に番環境で運用しています。 この記事は、その際のコードリーディング内容を整理したものです。なお、 エムスリー Advent Calendar 2020 2 日目の記事です。 前提: 標準ライブラリ net/http/httputil ReverseProxy と WebSocket プロトコル net/http/httputil パッケージの ReverseProxy WebSocket プロトコル 編: コードリーディング l.244-l.272: リクエストの透過 l.295-l.301: レスポンスの透

    コードリーディング: Go 標準ライブラリ net/http/httputil ReverseProxy での WebSocket の取り扱い - エムスリーテックブログ
    yojik
    yojik 2022/03/18
  • git submodule はトモダチ!怖くないよ! (チートシート付き) - エムスリーテックブログ

    この画像は文とは関係ありません。 こんにちは、エムスリー・エンジニアリングG・基盤開発チーム小です。 みなさん、git submodule コマンドは好きですか?git submodule は特定の状況下では便利なコマンドです。 社内アンケートでも25%が怖いという結果に しかし、なぜか世間にはgit submodule が怖いという人が相当数いるようです。推測ですが、git submodule は動作モデルや使用手順が誤解されがちなところがあり、それで「怖い」と思われているのないでしょうか。git 体でも昔そんなことがありましたよね。 この記事では git submodule の誤解を解き、適切な使い方を解説します。また、記事の最後にチートシートをつけます。 git submoduleはトモダチ!怖くないよ! git submodule って何? 誤解1 「プロジェクトが大きくなっ

    git submodule はトモダチ!怖くないよ! (チートシート付き) - エムスリーテックブログ
    yojik
    yojik 2021/10/22
  • 3Dアバター化しながらプレゼンするWebアプリを作った話 - エムスリーテックブログ

    (デモ用の3Dモデルは「ニコニ立体ちゃん」をお借りしています) 概説 技術スタック three-js/three-vrm clmtrackr-js 実装 工夫をつける まばたき リップシンク パラメータのバリデート まとめ 余談 We are hiring! 概説 この記事は エムスリー Advent Calendar 2019 の19日目の記事です。 好きなマスコットはGopherくん、好きな言語はRuby! 最近の業務は主にJavaScriptKotlin! エムスリーエンジニアリンググループのowlです。 さて、弊社内で毎週行われる『テックトーク』ではエンジニアが好きな技術の話を発表し合っています。最近になってこの発表を画面/音声キャプチャして保存し、後からいつでも発表内容を視聴できるシステムが構築されました。🎉 www.m3tech.blog ただ、このシステムでは当然ながら発

    3Dアバター化しながらプレゼンするWebアプリを作った話 - エムスリーテックブログ
    yojik
    yojik 2020/12/25
  • シンプルかつ高速な文字列照合アルゴリズムを紹介します - エムスリーテックブログ

    こんにちは! エンジニアリンググループ マルチデバイスチーム 新卒1年目の小林です。 エムスリーでは、2週間に1度、Tech Talkという社内LT会(現在はリモートで)が開催されています。これは、とある回の発表テーマリストです。 Tech Talkのとある回の発表テーマリスト このように、最近エムスリーでは文字列が流行っている(?)ようなので、その勢いに乗って私も文字列照合アルゴリズムについて書きたいと思います!(業務とは全然関係ない話です) Knuth-Morris-PrattやBoyer-Mooreアルゴリズムは解説記事がたくさん出ていると思うので、この記事ではシンプルかつ高速なQuick-SearchとQuite-Naiveアルゴリズムについて説明し、速度比較を行った結果についてご紹介します。 文字列照合アルゴリズムとは テキストとパターンという文字列が与えられたときに、中に出現す

    シンプルかつ高速な文字列照合アルゴリズムを紹介します - エムスリーテックブログ
    yojik
    yojik 2020/09/28
  • 「医師版Stack Overflow」を開発しています - エムスリーテックブログ

    こんにちは。エムスリーエンジニアリングG、プロダクトマネージャーの中村です。 エムスリーは医療の領域、特に医師に向けてサービスを提供しているため、どんなサービスを作っているか外からは見えづらいという声をよく聞きます。そこで今回は、開発中の新規サービスについてご紹介します! さて、どんなサービスかというと、医師が診療で悩んだ時に専門性の高い医師に相談ができるQ&Aサービスです。「医師版Stack Overflow」というとイメージしやすいかもしれません。 ちなみに、エンジニア荒谷(@_a_akira)のブログ記事、「Kotlin Fest 2019でエムスリー社員(俺)が登壇しました」に、エムスリーではKotlinを導入しているサービスが多数あると記載がありましたが、サービスもその一つです。 どんなサービスを目指しているのか エムスリーの受付にはミッションが書かれています。 医師は、日々さ

    「医師版Stack Overflow」を開発しています - エムスリーテックブログ
    yojik
    yojik 2019/09/03
  • コンテナベースシステムのデザインパターンに関する論文紹介 - エムスリーテックブログ

    エンジニアリンググループ AI機械学習チームの笹川です。 今回は、コンテナベースシステムのデザインパターンに関する論文 Design patterns for container-based distributed systems について紹介します。 なお、この記事は、社内勉強会であるM3 tech talkで紹介した内容をまとめたものです。 M3 tech talkは、エムスリー赤坂オフィスで隔週で開催されている5-20分程度のLTを数件行う勉強会で、そのトークテーマの振れ幅は最近の数回でも筋トレ、型システム、3Dプリンタ、量子コンピュータなどこのブログの数段上で、個人的にも毎回楽しみにしています。 M3 tech talkは、外部からの参加・登壇も歓迎しています。興味のある方はぜひ以下からお問い合わせください。 jobs.m3.com 論文の概要 今回紹介する論文は、HotClou

    コンテナベースシステムのデザインパターンに関する論文紹介 - エムスリーテックブログ
    yojik
    yojik 2019/03/22
  • この処理Pythonでどう書く? - エムスリーテックブログ

    EF15形は高性能な電気機関車であったが、引き出し性能が蒸気機関車に劣ると誤解されていた。 誤った運転方法により来の性能を引き出せていなかったのである。 (spaceaero2 [CC BY 3.0], ウィキメディア・コモンズより) こんにちは、エムスリー・エンジニアリングG・基盤開発チーム小です。 WEBサイトは RailsやSpringなどの「体部分」だけでは完結しません。レポート作成・データ更新などの細かい処理も必要です。 過去にはこうした用途にはBashがよく使われました。しかし、Bashは落とし穴が多かったり、クラスなどの抽象化機能がなかったりして、規模が大きくなると辛くなります。 そこで、Bashの代替候補に挙がるのがPythonです。エムスリーでもかつてはBashを使っていましたが、現在は新規案件にはPythonを推奨しています。 しかし、実際にPythonで書き直そ

    この処理Pythonでどう書く? - エムスリーテックブログ
    yojik
    yojik 2018/11/16
  • なぜfoldRightが美しいのか - エムスリーテックブログ

    エンジニアリンググループの冨岡です。 私は最近関数型プログラミングにハマっていて、社内でFP in Scala (訳書)の輪読会を主催するなどして関数型やScalaが好きな人を増やす活動をしています。 この輪読会ですが、自体の素晴らしさもあって未だに参加者7人が誰一人脱落することなく読み進めています。現在8章と折返し地点なのですが、これまでの章で十分に訓練された私たち参加者は、(説明の都合上)副作用を起こす処理が教科書に出てこようものなら大ブーイング。教科書の解法を確認しては「美しい!」「エレガントだ!」と盛り上がりながら読み進めるようになりました。 中でもfoldRightは大人気で、登場のたびに場を盛り上げてくれます。この記事では、このfoldRightがなぜ美しいのかを解説します。 foldLeft / foldRight まずは、似た処理であるfoldLeft / foldRig

    なぜfoldRightが美しいのか - エムスリーテックブログ
    yojik
    yojik 2018/07/25
  • 1