タグ

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

  • フルスクラッチして理解するOpenID Connect (1) 認可エンドポイント編 - エムスリーテックブログ

    こんにちは。デジカルチームの末永(asmsuechan)です。 この記事では、OpenID Connect の ID Provider を標準ライブラリ縛りでフルスクラッチすることで OpenID Connect の仕様を理解することを目指します。実装言語は TypeScript です。 記事のボリュームを減らすため、OpenID Connect の全ての仕様を網羅した実装はせず、よく使われる一部の仕様のみをピックアップして実装します。この記事は全4回中の第1回となります。 なお、ここで実装する ID Provider は弊社内で使われているものではなく、筆者が趣味として作ったものです。ですので番環境で使用されることを想定したものではありません。なんなら私は ID Provider を運用する仕事もしておりません。 1 OAuth 2.0 と OpenID Connect 1.1 用語の

    フルスクラッチして理解するOpenID Connect (1) 認可エンドポイント編 - エムスリーテックブログ
    odan3240
    odan3240 2024/03/09
  • テスト設計コンテスト2021 決勝に参加します - エムスリーテックブログ

    こんにちは。エムスリーエンジニアリング G QA チームの窪田(@kubota_junshi)です。来る9月18日(土)、テスト設計コンテスト'21 OPEN クラスの決勝戦が開催されます。エムスリーQAチームも予選を突破したので決勝戦に参加します。予選と決勝の準備で得た色々な経験と学びを共有したいと思います。 テスト設計コンテストとは テスト設計コンテストの流れ エムスリー QA チームでの取り組み 分析開始 紆余曲折 予選番 感想 大変だったこと 学び 決勝に向けて We're hiring! テスト設計コンテストとは QA を生業にしている人でも、はじめて聞く方は結構いると思います。私も JaSST(ソフトウェアテストシンポジウム) 内で紹介されるまで知りませんでした。 テスト設計コンテストはざっくりいうと、お題として提示されるシステムに対して、テストを設計し、その設計の出来を競う

    テスト設計コンテスト2021 決勝に参加します - エムスリーテックブログ
    odan3240
    odan3240 2021/09/02
  • テックブログなにもわからないけど知見をまとめて人類に貢献したい - エムスリーテックブログ

    こんにちは、エムスリーエンジニアリンググループの福林 (@fukubaya) です。 以前からテックブログ自体の記事をどこかで書きたいなと思っていたところに、 テックブログをテーマにしたイベントが開催されると知り、 ちょうどいいタイミングだったので書くことにしました。 チームスマイル・いわきPITは、福島県いわき市のエンターテイメント専用施設である。『PIT』は「Power Into Tohoku!」の頭文字。文には特に関係ありません。 なんでテックブログを書くの? 会社とその雰囲気を知ってもらう 実質社内ドキュメント 個人プレゼンスの向上 ググっても見つからない記事を書く でもだいたい誰かが書いている どんなテーマを選べばいいの? 作ってみた! 新しい技術試してみた! 忘れていつもググっちゃう! ぼくがかんがえたさいきょうのやり方 やらかした! うちではこういうことやってます! こうい

    テックブログなにもわからないけど知見をまとめて人類に貢献したい - エムスリーテックブログ
    odan3240
    odan3240 2021/05/24
  • こんばんは、X-Forwarded-For警察です - エムスリーテックブログ

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

    こんばんは、X-Forwarded-For警察です - エムスリーテックブログ
    odan3240
    odan3240 2021/02/15
  • Pythonの機械学習用Docker imageのサイズ削減方法の紹介 - エムスリーテックブログ

    エムスリーエンジニアリンググループ AIチームの笹川です。 バスケと、ロードバイクが趣味なのですが、現在、NBAのplayoffと、Tour de Franceが同時に開催されていて大変嬉しい毎日を過ごしています。 特にNBAのplayoffは、連日overtimeとなるような激戦や、giant killingがあったりのアツい戦いが繰り広げられていて最高です。 そういう状況なので(?)、今回は先日取り組んだ、Python機械学習バッチを実行するdocker imageのサイズ削減についてのアツい戦いについて紹介したいと思います。 膝の上に登って寝る為に、筆者がデスクに戻るのを机の下で待ち構える犬氏(かわいい) 今回の取り組みでは、もともと3GB程度だったPythonのML用のimageを、約2.0GBに削減することができました(それでもなかなかのサイズ。MLのimageは特に大きい印象

    Pythonの機械学習用Docker imageのサイズ削減方法の紹介 - エムスリーテックブログ
    odan3240
    odan3240 2020/09/19
  • Terraformなにもわからないけどディレクトリ構成の実例を晒して人類に貢献したい - エムスリーテックブログ

    こんにちは、エムスリーエンジニアリンググループの福林 (@fukubaya) です。 さいたまスーパーアリーナは、埼玉県さいたま市中央区にある多目的アリーナ。文には特に関係ありません。 最近、Terraformを書くことが多く、知見が貯まりつつあった時にちょうどディレクトリ構成に関する記事を読んでタイミングがよかったので、 今回はTerraformのディレクトリ構造の実例を晒したいと思います。 結構固まってきたからうちのチームの構成も晒してみようかな。 | Terraformのディレクトリ構成の模索 - Adwaysエンジニアブログ https://t.co/31FMkcCJOo— Yuichiro Fukubayashi (@fukubaya) July 3, 2020 クラウド化推進 なぜ定番が決まらないのか 前提となる条件 番環境と検証環境はほぼ同じ構成 レポジトリとtfstat

    Terraformなにもわからないけどディレクトリ構成の実例を晒して人類に貢献したい - エムスリーテックブログ
    odan3240
    odan3240 2020/07/27
  • 「レスポンシブにすればPCサイトと同じ工数でPCにもスマホにも両方対応できるよね?」 - エムスリーテックブログ

    できません。 こんにちは、エムスリーエンジニアリンググループの福林 (@fukubaya) です。 中村の記事で宣言したDocpediaの技術的チャレンジの記事も今回で最後です*1。 今回は、PCページとスマートフォンページで共通的に使用できるVue.jsコンポーネントをどうやったら実現できるかを考えて実装した例を紹介します。 仙台サンプラザ(せんだいサンプラザ)は、仙台市都心部東側の宮城野通に面してあるホール・ホテル・会議室などの複合施設。文には特に関係ありません。 なぜレスポンシブにしたいのか? PCとスマホで共通のコンポーネントを使って工数を減らしたい 実例 構成 エントリー router AppModePlugin PCとスマホで処理を切り替える PCとスマホでデザインを分ける We are hiring! なぜレスポンシブにしたいのか? 冒頭のタイトルは、直接こう言われたのでは

    「レスポンシブにすればPCサイトと同じ工数でPCにもスマホにも両方対応できるよね?」 - エムスリーテックブログ
    odan3240
    odan3240 2020/04/24
  • Clean Architectureなにもわからないけど実例を晒して人類に貢献したい - エムスリーテックブログ

    こんにちは、エムスリーエンジニアリンググループの福林 (@fukubaya) です。 これまでは、中村の記事で宣言した 「医師版Stack Overflow」(12/16に正式名称Docpediaとしてリリースされました) の技術的チャレンジの 記事を続けて書いていたのですが、今回はここで宣言しなかったClean Architectureについて書きます。 浪江駅(なみええき)は、福島県双葉郡浪江町にある、東日旅客鉄道(JR東日)常磐線の駅。文には特に関係ありません。 Clean Architecture 達人に学ぶソフトウェアの構造と設計 (アスキードワンゴ) 作者:Robert C.Martin,角 征典,高木 正弘出版社/メーカー: ドワンゴ発売日: 2018/08/01メディア: Kindle版 なぜ書くのか 参考にできる実例を増やしたい Tech Blogはそのままドキュメ

    Clean Architectureなにもわからないけど実例を晒して人類に貢献したい - エムスリーテックブログ
    odan3240
    odan3240 2020/02/07
  • サーバサイドアプリケーションにおけるリリース時の不確実性を減らす - エムスリーテックブログ

    エムスリーエンジニアリンググループの松原@ma2geです。この記事はエムスリーAdvent Calendarの23日目の記事です。 実は10月よりチームリーダーからエンジニアに戻り、開発メインの仕事を再びしています。 エンジニアリングマネージャーの振り子という話が一時期話題となっていたのですが、まさにそれをしているところです。*1 *2 現況 さてソフトウェアエンジニアとして今何をしているかというと、 クラウド電子カルテ「エムスリーデジカル」の開発チームに入り運用から開発まで一通り対応をしています。 デジカルチームの主な技術スタックは Rails, Angular, React, Scala などに加えて、インフラ周りは AWS の各種サービスを利用しています。 基的にエンジニアは得意分野を生かしつつもなんでもやるスタンスで今の所仕事をしており、 フロントからインフラまで一通り対応してい

    サーバサイドアプリケーションにおけるリリース時の不確実性を減らす - エムスリーテックブログ
    odan3240
    odan3240 2019/12/28
  • 数としての赤黒木 - エムスリーテックブログ

    エンジニアリンググループの高島(@rst76)です。 社内の勉強会で、計算機科学の有名な教科書、アルゴリズムイントロダクション(Introduction to Algorithms)を輪読しています。 ちょうど赤黒木の章を私が担当したので、要点をかいつまんでご紹介したいと思います。 今回お話したいのは「ある条件の下で、赤黒木は記数法表現と見ることができる」という話です。 赤黒木の例 赤黒木 二分木というデータ構造があります。 計算機科学では一般的なデータ構造で、ランダムなデータであれば、検索や挿入などの操作を で実現できます。 ただ、データの与え方によっては偏った木ができてしまうことがあり、そうすると各操作の性能が に落ちてしまうので、どうやって木の平衡性を維持するかが課題です。 赤黒木は二分木の一種で、ノード(節点)を赤と黒に塗り分けて、赤と黒の組み合わせによって平衡性を保つための調整を

    数としての赤黒木 - エムスリーテックブログ
    odan3240
    odan3240 2019/10/21
  • pytest ヘビー🐍ユーザーへの第一歩 - エムスリーテックブログ

    蛇行区間にはレールの内側に脱線防止ガードが設置される(文とは関係ありません)。 こんにちは、エムスリー・エンジニアリングG・基盤開発チーム小です。 pytest は Python のユニットテストのデファクトスタンダードです。エムスリーでも顧客向けレポートや機械学習Python&pytest をヘビー🐍1に使っています。 ですが、実は pytest は、意外と入門のハードルが高い。と言うのも、pytest の公式ドキュメント が、fixtureのような新概念も登場する上、詳細で分量が多いからです(しかも英語)。初心者にいきなり読ませると挫折する可能性大です 2。 そこで、とりあえず使い始めるのに必要そうな情報を日語でまとめました。 pytest ってどんなライブラリ? unittest や nose から簡単に移行できる 書き方がシンプル fixture モックもできる プラグイ

    pytest ヘビー🐍ユーザーへの第一歩 - エムスリーテックブログ
    odan3240
    odan3240 2019/08/22
  • APIのコードを自動生成させたいだけならgRPCでなくてもよくない? - エムスリーテックブログ

    こんにちは、エンジニアリンググループの福林 (@fukubaya) です。 先月から、今年の秋くらいにリリース予定の新サービスの設計、開発を始めました。 せっかく新しく始めるサービスなので、まだ経験したことがない言語やフレームワーク、技術を使わないと楽しくありません。 そこで、バックエンドにGoにして、フロントのAPIまで含めてgRPCの .proto ファイルで定義を一元化し、APIコードは protoc で生成させる計画を立てていたのですが、 フロントでgRPCとなると、 gRPC-web か grpc-gateway になるが、リリースまでに使える期間では認証も含めると検証が間に合わなさそう Goだけでなく、terraform(インフラ設計もやります) も Vue.jsも今回が初めて、というメンバーもおり、さらにRESTではなくgRPCも、となると未経験技術が多すぎてキャッチアップが

    APIのコードを自動生成させたいだけならgRPCでなくてもよくない? - エムスリーテックブログ
    odan3240
    odan3240 2019/08/15
  • TypeScriptの型でなんかすごくがんばる - エムスリーテックブログ

    エンジニアリンググループの冨岡です。 先日、以下のTypeScript用DIライブラリを公開しました。大きな特徴として、解決するために不十分な依存がある場合にコンパイルエラーになるようになっています。 github.com www.m3tech.blog このコンパイル時の型チェックの実現には、TypeScriptにおける様々な型レベルのテクニックが用いられています。泥臭い試行錯誤の結果、なかなかhackyなこともやっていて面白い(?)ので、せっかくなので解説しようと思います。 もちろん、「もっとエレガントにできるよ」というアドバイスやプルリクも大歓迎です!皆さんも、自分だったらこうするなぁ、とか思いながら楽しんでいただければと思います! (なお記事ではこのバージョンのこのファイルをもとに解説していきます。) 前提と問題の設定 typesafe-diでは、各インスタンスのfactoryを

    TypeScriptの型でなんかすごくがんばる - エムスリーテックブログ
    odan3240
    odan3240 2019/04/22
  • TypeScript用のDIライブラリを公開しました - エムスリーテックブログ

    エンジニアリンググループの冨岡です。 TypeScript向けのDIライブラリを公開したので紹介します。 github.com モチベーション Clean Architecture等の設計手法を使ってコードを書いていると、抽象に依存することが多くなってきます。 class CreateUserAccount { constructor(private userAccountRepository: UserAccountRepository) {} } const forProduction = new CreateUserAccount( new PostgreSQLUserAccountRepository( buildPostgreSQLConfig(process.env) ) ) const forTest = new CreateUserAccount(new InMemoryU

    TypeScript用のDIライブラリを公開しました - エムスリーテックブログ
    odan3240
    odan3240 2019/04/19
  • コンテナベースシステムのデザインパターンに関する論文紹介 - エムスリーテックブログ

    エンジニアリンググループ 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

    コンテナベースシステムのデザインパターンに関する論文紹介 - エムスリーテックブログ
    odan3240
    odan3240 2019/03/22
  • 不具合分析会を1年やったら品質だけでなくチームの能力も向上した - エムスリーテックブログ

    こんにちは、エンジニアリンググループの福林(@fukubaya)です。 僕が所属するチームでは、約1年前から不具合分析の取り組みを始めました。 その結果、品質の向上とさらにはチームのエンジニア全体の能力向上につながったので詳細をご紹介します。 チームの概要 まず、チームの概要を簡単に。 僕達のチームでは、ニュースや独自作成の記事配信、専門的な意見交換のための掲示板、医師向けのクイズ、などのサービスを担当しています。 主にPCやスマートフォンサイトのフロントからバックエンドまでを担当しますが、場合によってはスマホアプリの開発も引き受けます。 サービスが多岐に渡りますし、ユーザに一番近いサービスでもあるので、大小含めて多数の開発を並行して実施してます。 弊社では、使用する言語やフレームワークなどは、全社で特に指定はなく、チームの裁量でサービスの課題に合わせて選択するのもあって、 扱う言語も多い

    不具合分析会を1年やったら品質だけでなくチームの能力も向上した - エムスリーテックブログ
    odan3240
    odan3240 2019/03/19
  • How to contribute to Nuxt.js - エムスリーテックブログ

    この記事はエムスリー Advent Calendar 2018 の20日目の記事です。 エンジニアリンググループの@suusan2goです。現在はAIチームで、機械学習以外のことを色々やっています。 エムスリーではVue.jsを様々なプロジェクトで活用しており、今年開催されたVue Fes Japan 2018のSILVERスポンサーとBEERスポンサーもやっていました! エムスリーでのNuxt.js、Vue.jsの活用については以下の記事をご参照ください。 employment.en-japan.com 私も今年はNuxt.jsに大変お世話になったので何かコミュニティに貢献したいと思い、先日Nuxt.jsにコントリビュートしたのでそのお話をします。How to contribute to Nuxt.js と大げさなタイトルをつけてますが、他のOSSと大きく異なることはないのでそんなに身構

    How to contribute to Nuxt.js - エムスリーテックブログ
    odan3240
    odan3240 2018/12/20
  • コードレビューを支える『褒め文化』 - エムスリーテックブログ

    コードレビュー、好きですか? エンジニアリンググループの山口です。 クラウド電子カルテ「エムスリーデジカル」を開発しています。 今回は、チームに根ざしている『褒め文化』についてお話しします。 ※この記事は、エムスリー Advent Calendar 2018 13日目の記事です。 『褒め文化』とは 簡単に言えば、コードレビューで褒める文化です。 コメントに対してコメントしている様子 とても簡単です。 とても簡単なのですが、前職(SIer)ではこういった経験が全く無かったため*1、join直後は(良い意味で)驚いたのが印象に残っています。 とにかく褒める けっこう安易に安直に褒められますし、褒めます。 アカウント名は一部加工 思ったことを素直にコメントにしてしまいます。 褒め文化の効用 ここからは「※個人の感想です」になってしまいますが、こうした褒め文化は、レビュア・レビュイどちらの立場でも

    コードレビューを支える『褒め文化』 - エムスリーテックブログ
    odan3240
    odan3240 2018/12/13
  • 18分59秒をめぐって日本標準時の歴史をひもとくことに - エムスリーテックブログ

    この記事は エムスリー Advent Calendar 2018 12日目の記事です。 こんにちは。エムスリー エンジニアリンググループの三浦(@yuba)です。基盤開発チームというところで各サービスチーム共用のシステムの開発保守に携わっており、そこで見つけた面白い動作を掘っていったら意外な知識にたどり着いたという話をいたします。 化けた日付はどこから来た? あるサービスの管理画面の動作を検証していたときのことです。バリデーションの振る舞いを確かめるためにいくつかテストケースを作りながら実際の動きを試していたところ、不思議な現象を見つけました。 次のように日時入力をするところで年の欄を空のままにして送信したところ⋯ 次のようにおかしな日時が設定されたのです。 0013年? 18分59秒? 入力した覚えのない数字が3つも紛れ込んでいます。 これが C で書かれたプログラムなら何か不定値を拾っ

    18分59秒をめぐって日本標準時の歴史をひもとくことに - エムスリーテックブログ
    odan3240
    odan3240 2018/12/12
  • AWS Fargateのデプロイパイプライン(Gitlab > S3 > CodePipeline)を構築してみた - エムスリーテックブログ

    こんにちは、エムスリーエンジニアの園田です。 この記事はAWS FargateでElixirのコンテンツ配信システムを動かしてみた (実装編) - エムスリーテックブログの続きです。 エムスリーでは医療・ヘルスケアサイト向けのコンテンツ配信システムであるChuoiというサービスを運用しています。先日のポストで、ElasticBeanstalkからFargateに運用を切り替えたことについて書きました。 www.m3tech.blog 今回は前回に引き続きその実装編で、CodePipeline を利用したデプロイパイプラインの構築について書きます。 まずは構成のおさらいです。 デプロイ周りは以下のような構成です。 社内 Gitlab からの CI/CD パイプライン構築 先日の記事で述べたとおり、弊社ではソース管理にオンプレの Gitlab を使っており、 CodeBuild や CodeP

    AWS Fargateのデプロイパイプライン(Gitlab > S3 > CodePipeline)を構築してみた - エムスリーテックブログ
    odan3240
    odan3240 2018/11/13