エムスリーテックブログ

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

幼児向け迷路のエディタを開発しました

エムスリー エンジニアリングGの岩本です。

会社ではWeb開発をインフラ・サーバサイド・フロント・運用全てを担っています。 一方家ではDIY・IoT・スマホアプリなどを作る子育てエンジニアやっています。 今回は5歳の娘が解く迷路を作成するために作った迷路エディタについて紹介します。

まず作りたい迷路はこのような迷路です。

f:id:cpw:20200922221451p:plain

続きを読む

サイトトップにAIを導入して売り上げに1億円貢献する

エンジニアリンググループ AI・機械学習チームの金山 (@tkanayama_)です。今回は、私が立ち上げ段階から主担当として推進しているプロジェクトである、サイトトップページのコンテンツを自動更新するシステムの開発について書きます。後のA/Bテストにより、このシステムは年間換算で1億円規模の売り上げ貢献をしていることを示すことができました。この記事では、こうしたインパクトの大きいプロジェクトがどのように進行したかを説明します。よく弊社のブログや勉強会などで語られる「エムスリーはROIを重視する風土がある」ことの一例だと思って読んでいただければと思います。

(なお、タイトルに「AI」や「1億円」という強い言葉を並べてしまったことをここに懺悔します。)

f:id:tepppei:20200928105244j:plain

プロジェクトの概要

続きを読む

シンプルかつ高速な文字列照合アルゴリズムを紹介します

こんにちは! エンジニアリンググループ マルチデバイスチーム 新卒1年目の小林です。

エムスリーでは、2週間に1度、Tech Talkという社内LT会(現在はリモートで)が開催されています。これは、とある回の発表テーマリストです。

f:id:kobasato34:20200923184759p:plain
Tech Talkのとある回の発表テーマリスト

このように、最近エムスリーでは文字列が流行っている(?)ようなので、その勢いに乗って私も文字列照合アルゴリズムについて書きたいと思います!(業務とは全然関係ない話です)

Knuth-Morris-PrattやBoyer-Mooreアルゴリズムは解説記事がたくさん出ていると思うので、この記事ではシンプルかつ高速なQuick-SearchとQuite-Naiveアルゴリズムについて説明し、速度比較を行った結果についてご紹介します。

続きを読む

Pythonの機械学習用Docker imageのサイズ削減方法の紹介

エムスリーエンジニアリンググループ AIチームの笹川です。

バスケと、ロードバイクが趣味なのですが、現在、NBAのplayoffと、Tour de Franceが同時に開催されていて大変嬉しい毎日を過ごしています。 特にNBAのplayoffは、連日overtimeとなるような激戦や、giant killingがあったりのアツい戦いが繰り広げられていて最高です。

そういう状況なので(?)、今回は先日取り組んだ、Pythonの機械学習バッチを実行するdocker imageのサイズ削減についてのアツい戦いについて紹介したいと思います。

f:id:hsasakawa:20200918070342j:plain
膝の上に登って寝る為に、筆者がデスクに戻るのを机の下で待ち構える犬氏(かわいい)

今回の取り組みでは、もともと3GB程度だったPythonのML用のimageを、約2.0GBに削減することができました(それでもなかなかのサイズ。MLのimageは特に大きい印象です)。 Docker imageのサイズ削減については、docker push、pull、buildのコストが下がることによりCIの高速化や、実行時のspin upが速くなるなどのメリットがあります。 また、今回はサイズの削減と合わせて、開発用imageと、本番用imageの管理についても合わせて考えてみたいと思います。

続きを読む

BIT VALLEY 2020 にて『 Infrastructure as "型付き" Code - 急成長する事業のインフラ再構築 』を発表しました

エムスリー エンジニアリンググループの山口 (@no_clock) です。

2020/9/9 (水) 〜 2020/9/12 (土) に開催されたカンファレンス「 BIT VALLEY 2020 」にて、「 Infrastructure as "型付き" Code - 急成長する事業のインフラ再構築」を発表しました。

続きを読む

社内サービスを一括・即座・セキュアにリモートワーク開放した話

はじめまして。

エムスリーエンジニアリンググループSREチームの山本です。

先日来のリモートワーク促進の中、弊社でも多くの社員がオフィス外から接続するようになりました。 もちろん、VPNを利用すれば社内のサービスも利用できますが、VPNの使用量が一気に増えるとそちらの制限にかかります。 今回「VPNを可能な限り利用せず、なおかつセキュアに社内のサービスを利用してもらう」という課題に取り組みましたので、ここでその紹介をさせてください。

  • 前提
  • 方針
  • クライアント証明書の問題点
  • 一括でのSSL化・証明書検証
  • ドメイン変換
  • 実際の設定
    • Squidの設定(抜粋)
    • unboundの設定
    • nginxの設定(クライアント証明書検証)
    • nginxの設定(HTTPサーバに対するproxy)
    • nginxの設定(個別対応)
  • ブラウザのProxy設定
  • その後発生した問題
    • ポート問題
    • Hostヘッダ問題
    • 戻りヘッダ問題
    • 解決できなかった問題
  • セキュリティ上の注意
  • まとめ
  • We're hiring

前提

  • VPNは可能な限り使わずに作業を可能とする
  • 社内の人間は数多くの社内サーバを利用しており、そのサービスはインターネット公開されていない
  • 社員が利用するPCにはクライアント証明書は配布している
  • 緊急事態宣言発令で一気にVPN利用者が増えそうなので、数日のうちにでもVPNレスでセキュアな接続を実現してほしい

もともと社内と社外は普通は別のネットワークですので「VPNを利用しなければ社内サーバに接続できない」という形は普通です。

しかし、リモートワークが盛んになった、特に急増したときには…どうなるでしょうか?

VPNはパンクしてしまいます。新規接続ができなくなったり、あるいはVPNの設定で短時間に接続を切断することを強制するなどといった手当を取ることで非常に不便になってしまいます。

これをなんとかする、というのが今回の話です。

続きを読む

ROSでSLAMラジコンをつくった

エムスリーエンジニアリンググループ/BIRの滝安(@juntaki)です。 BIRはビジネスインテリジェンス&リサーチの略で、そこでは医療従事者の会員向けアンケートをベースに、製薬会社へのマーケティング支援を提供する事業を行っています。

さて、BIRの事業とはまったく関係ないのですが、先日のTechTalkでROSを使ったSLAMラジコンについて発表したので、紹介したいと思います。

デモ

www.youtube.com

続きを読む