エムスリーテックブログ

エムスリー(m3)のエンジニア・開発メンバーによる技術ブログです

推薦アイテムセットの多様性を考慮したBPR論文を実装・実験した

エンジニアリンググループ AIチームの金山 (@tkanayama_)です。2019年新卒でエムスリーに入社してから早くも1年経ってしまいました。

今回は、 "Bayesian Personalized Ranking for Novelty Enhancement" [Wasilewski and Hurley, UMAP'19] という論文を紹介します。Bayesian Personalized Ranking (BPR) のサンプリング方法を工夫することで、推薦するitemが多様になるようにした論文です。

f:id:tepppei:20200302205514j:plain:w400
ワラビーです。

続きを読む

git submodule はトモダチ!怖くないよ! (チートシート付き)

f:id:doloopwhile:20200226161647p:plain
この画像は本文とは関係ありません。

こんにちは、エムスリー・エンジニアリングG・基盤開発チーム小本です。

みなさん、git submodule コマンドは好きですか?git submodule は特定の状況下では便利なコマンドです。

f:id:doloopwhile:20200219195042p:plain
社内アンケートでも25%が怖いという結果に

しかし、なぜか世間にはgit submodule が怖いという人が相当数いるようです。推測ですが、git submodule は動作モデルや使用手順が誤解されがちなところがあり、それで「怖い」と思われているのないでしょうか。git 本体でも昔そんなことがありましたよね。

この記事では git submodule の誤解を解き、適切な使い方を解説します。また、記事の最後にチートシートをつけます。

git submoduleはトモダチ!怖くないよ!

続きを読む

Clean Architectureなにもわからないけど実例を晒して人類に貢献したい

こんにちは、エムスリーエンジニアリンググループの福林 (@fukubaya) です。

これまでは、中村の記事で宣言した 「医師版Stack Overflow」(12/16に正式名称Docpediaとしてリリースされました) の技術的チャレンジの 記事を続けて書いていたのですが、今回はここで宣言しなかったClean Architectureについて書きます。

f:id:fukubaya:20200205205515j:plain
浪江駅(なみええき)は、福島県双葉郡浪江町にある、東日本旅客鉄道(JR東日本)常磐線の駅。本文には特に関係ありません。

続きを読む

AWS・オンプレと GCP を VPN で相互接続する際の勘所

こんにちは。エムスリー CTO の矢崎 @Saiya です。

弊社ではクラウド環境の利用や移行を推奨しており、AWS, GCP のマルチクラウドやオンプレミス環境との相互通信を安全に行うために今回 AWS と GCP を VPN で相互接続しました。

しかし、AWS と GCP を VPN で接続する方法は調べると見つけられるのですが、例えば以下の点についてまとめて説明している資料がないため苦労しました:

  • GCP の HA VPNでのセットアップ方法
    • Classic VPN と HA VPN *1 はかなり仕様が異なるのですが、Classic 前提の情報が多く惑わされやすいです
  • 複数の VPC での推奨構成とその実現方法
  • GCP と AWS の VPN の IPSec のパラメーター調整の仕方

そこで、本稿では AWS と GCP にある複数の VPC を VPN で相互に接続する構成の全体像とハマりどころ・注意点を筆者の知る範囲でまとめました。

なお、本稿では AWS Transit Gateway *2 やオンプレミスとの専用線・VPNはすでに構築済みとし、それらの設計・構築については触れません。 それらの使い方や設計の勘所・難所・ハマり所については 技術書典8 2日目の *3 スペース お-46 にて頒布予定の エムスリーテックブック2 にて詳述いたしますので、ご興味ある方は是非そちらでお求めいただければと存じます。

f:id:Saiya:20200127192910p:plain
エムスリーテックブック2 (技術書典8 の 2 日目)

今回構築するネットワーク・トポロジー

f:id:Saiya:20200127200846p:plain

上図のように GCP <-> AWS <-> オンプレミス を接続することで、3 者間での相互通信を可能とします。 例えば GCP 内の任意の VPC (Network) から AWS の任意の VPC やオンプレミスと通信することが可能になります。

なお図では HA VPN を使って 4 本の VPN を設置していますが、可用性・SLA を犠牲にコストの節約も可能です (後述)。

以下、GCP <-> AWS 間の VPN 敷設と DNS 転送について概略と難所を説明します。

*1:HA という名前ですが、後述のように冗長性を犠牲に 1 VPN 接続分だけのコストで運用することも可能です

*2:AWSで多数のVPCを扱う際には必須と言っても良いサービスです。

*3:今回から2日に分けて開催になりました

続きを読む

VPoEとしてこの2年間を振り返って

こんにちは。エムスリーエンジニアリンググループ執行役員*1兼VPoE兼プロダクトマネージャーの山崎です。

本ブログはエムスリー Advent Calendar 2019の25日目の記事です。

エムスリー Advent Calendar 2019の締めとして何を書こうか色々と迷ったのですが、今回はVPoEらしく、「VPoEとしてこの2年間を振り返って」と第して2019年を締めくくりたいと思います*2

qiita.com

はじめに

2017年12月にエムスリーにおいて始めてVPoEが設置され、私が初代VPoEに就任しました。 それからの2年間は本当にあっという間に過ぎ、2年も経っているとは信じられないというのが正直なところです。 一方で、その間、多数のチャレンジをしてきました。

この記事では、社内外の参考になるかもしれないと思い、それらのチャレンジを抜粋して紹介したいと思います。 ちなみに、評価制度と報酬に関するチャレンジはセンシティブなので割愛します*3

f:id:yamazaki-m3:20191224225724j:plain
年末っぽくエムスリーデジカルの忘年会の写真です。

*1:2019/11より業務執行役員というポジションから執行役員というポジションにマイナーチェンジしました!

*2:今年の業務は12/27まで続き…なんなら運用は12/31の24:00まで続きますがそこはよしなに。

*3:CTO、VPoEの方で聞きたい方がいらっしゃればCTOミートアップなどで個別にお声がけください。

続きを読む

k8sハニーポットとログ出力の話

本記事はエムスリー Advent Calendar 2019 - Qiitaの24日目の記事です。

こんにちは。エムスリーエンジニアリンググループの木村です。 業務ではBIRというチームでアンケートシステムの開発をやっています。

今回は個人的に構築しているk8sハニーポットシステムとそこで生じたログ出力の問題について話をしようと思います。

続きを読む