エムスリーテックブログ

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

merpay×M3 機械学習 NIGHTに参加してきました!

エムスリー・エンジニアリンググループで機械学習エンジニアをしている大瀧 (@329) です!

9/5 に、merpay×M3 機械学習 NIGHTに参加しました。 両社の機械学習に関する取り組み内容を共有する中で得た刺激を世界に発信したいと思います! mercari.connpass.com

イベント概要

merpay、エムスリー各社の機械学習の活用について共有し合うイベントです。 私大瀧は、業務でアルゴリズム開発/開発プロセスの改善/効率化を担っているので、 merpayの方とそれらのテーマに関して情報交換を行う目的で参加しました。

登壇者は全部で6人。 merpayから3人、エムスリーから3人という構成で、以下のようなテーマの発表がありました。

  • @dama_yu: 開発体制について
  • @sugar1023_: merpayでのML Ops
  • @Hmj_kd: 守りたいデータがある
  • sasakawa: エムスリーのデータ分析基盤
  • @m_nishiba: ユーザー行動を加味した記事の類似度計算

(敬称略、事情により紹介できない方がいます)

各発表を軽く紹介していきます!

merpay MLチーム

merpay MLチームにおけるスクラム開発(@dama_yu)

スクラム導入して良かったことを3行でまとめると...

  • いつ何をやればよいかが明確になった
  • チームの問題点のリカバリーが速い
  • タスク消化速度が可視化できた

merpayではML開発タスクを「モデリング」「基盤開発」の2つに分け、 モデリングは「EDA」「特徴量組み込み」の2つのサブタスクから成るものであると定義することでタスク状態の可視化を推進しているそうです。

merpayでのML Ops(@sugar1023_)

ML Ops基盤を作成して良かったことを3行でまとめると...

  • チームでの分析がスケールするようになった
  • チームでのモデリングがスケールするようになった
  • 結果の再現性が担保されるようになった

機械学習エンジニアが行う作業は、特徴量追加のPull Requestを作るだけ!な素晴らしい世界を実現しているとのことです。 内製モジュールはscikit-learnに準拠するようなインターフェースにしているのだとか。

tech.mercari.com

守りたいデータがある(@Hmj_kd)

以下の3点に関しての発表でした。

  • クレジットスコアモデリングの一般論
  • メルカリではどういったデータを分析に利用できるか
  • メルペイクレジットスコアのこれからについて

発表にはプライバシー保護技術や安全性を定量的に議論する方法についての言及も含まれており、 全編通して興味深い発表でした。

エムスリーAI・機械学習チームの発表

(m3のデータ基盤の話)(sasakawa)

sasakawaは、エムスリーのデータ基盤周辺について話してくれました。 エムスリーのバッチ処理基盤をembulk + digdagに移行しようとしている話や、 digdagのプラクティスについて情報を共有しました。

Matrix Factorization と Text CNN による Cold Start Problem への取り組み(@m_nishiba)

エムスリー機械学習チームのリーダー西場は、 「ユーザーにとって似ている単語がベクトル空間上で距離が近くなる」ような埋め込みベクトルの学習方法を発表しました。

www.slideshare.net

まとめ

merpay×M3 機械学習 NIGHTではmerpay、エムスリーが機械学習についての様々な取り組みを発表し合いました。 懇親会でも濃密な知見の交換が行われ、良い刺激を得られたイベントであったと思います。

f:id:g329:20180907200821j:plain

ここだけの話ですが、閉会後に「この会、定期的にやりましょう!」という言葉を耳にしております。 今回残念ながら参加できなかった方やこのブログを読んで参加したくなった方は、 エムスリーエンジニア公式ツイッター(@m3_engineering)をウォッチして頂けるとそのうち...?

We're Hiring!

最近はインターンとしてチームに参加してくださる方も多く、新たな風が吹き荒れ続けております。 1人あたりの影響力が大きくスピード感のあるAI・機械学習チームを体験したくなった方は、いますぐご応募頂ければと思います!

AI・機械学習チーム一同、あなたの参戦を心待ちにしております!

jobs.m3.com

iOSDC Japan 2018 で飛び入り発表してきた

エムスリーエンジニアリングG松原@ma2geです。 事前ブログに書いた通り iOSDC Japan 2018 に初めて参加してきました。 あと偶然ですが飛び入りでの発表をすることもできました。 発表に来てくれたみなさま、イベント中お話ししてくださったみなさまありがとうございました。

豪華なイベントに圧倒されつつも、運営の皆様のおかげでイベントを楽しむことができました。

www.m3tech.blog

f:id:ma2gedev:20180904173330j:plain
パンフレットがキラキラしていて豪華

GraphQL について飛び入り発表

スタッフの方にお願いし、急遽飛び入りでの発表をさせていただきました。 突然のお願いだったにも関わらず許諾をいただいてありがとうございます。

発表した内容は個人ブログの方にまとめていますのでよければご覧ください。

medium.com

参加したセッション

個人的に特によかったセッションを2つあげます。 ちなみに一緒に行った同僚のエンジニアは、アンカンファレンスで行われていたiOSアプリ設計パターン雑談が勉強になったと言っていました。

「iOS × GraphQLの嬉しみとつらみ」

1つ目は mogaming さんの GraphQL のセッションです。

iOS × GraphQLの嬉しみとつらみ by SeiyaMogami | プロポーザル | iOSDC Japan 2018 - fortee.jp

GraphQL について段階を追って説明してくれていて、GraphQL 学び始めた時にこの資料が欲しかったという気持ちでいっぱいです。 これから GraphQL を学ぶ方にも理解しやすくなると思うのでオススメです。 ツラミの部分ではエラーハンドリングについての話がありました。 確かに複数の Resolver で一部失敗とかはツラいところを感じるので、この辺りは我々も検討しつつ進めようと思います。

「OSSを育てながらiOSアプリで「パンくずリスト」を実現した」

2つ目は rikusouda さんのパンくずリスト の OSS の LT です。

OSSを育てながらiOSアプリで「パンくずリスト」を実現した by りくそうだ | プロポーザル | iOSDC Japan 2018 - fortee.jp

個人的に Rails のパンくずリストを OSS で公開していることもあってタイトルの時点で少し共感していたのもありますが、 GitHub は SNS という締めと、iOSDC で一緒に開発している OSS のメンテナーと会えたというドラマティックなところがかなりインパクトありました。

まとめ

初めての参加でしたがとても楽しめました。 これもイベントを盛り上げてくれたスタッフの方々のおかげかと思います。どうもありがとうございました!

エムスリーでは iOS エンジニアも募集中です

私の所属するマルチデバイスチームでは iOS、Android、サーバサイドエンジニアを募集しています。 もし興味がわいた方は、カジュアルにお話しましょう。ぜひエンジニア向けフォームよりご連絡お願いします。 もちろんtwitterで私に直接声をかけていただいても構いません。

jobs.m3.com

Kotlin Fest 2018でエンジニアが登壇&ことりスポンサーとして参加してきました

こんにちは、人事の友永です。エムスリーは8/25に開催されたKotlin Fest 2018にことりスポンサーとして参加してきました。またエンジニアの前原と鈴木の2名が「How to Test Server-side Kotlin」というタイトルで発表いたしました。ブースにお越しいただいた皆さま、発表をご覧いただいた皆さまありがとうございました。

記念すべき第1回目のKotlin Festは「Kotlinを愛でる」をテーマに、溢れるKotlin愛とアットホームな運営(フィードバック、パックマンルールなど)でとても楽しむことができました!次回開催は「未定!」とのことですが、是非また参加できるといいなと思っています。

エムスリーブースの様子

f:id:otkmym:20180825235244j:plain

今回はノベルティとして、エンジニアフェローのたろうさんうちわ・ステッカーやRubyKaigi2018に続きじゃがりKotlin(当日命名)や医療系web企業らしくマスクを配布しました。当日はとても暑い日だったことも手伝い「たろうさんうちわ」が一番の人気でした。

f:id:otkmym:20180826001330p:plain
「たろうさんうちわ」と「本物のたろうさん」

f:id:otkmym:20180825234001j:plain
技術顧問の藤原さん、エンジニアフェローのたろうさんとパチリ

f:id:otkmym:20180825233234j:plain

ブースにお越しいただいた皆様ありがとうございました。また弊社主催の「どこでもKotlin」にご参加いただいた方と久しぶりにお会いできたことも嬉しかったです。

エムスリーのエンジニアの登壇

弊社からは前原と鈴木が「How To Test Server-side Kotlin」というタイトルで登壇しました。資料はこちらです。

f:id:otkmym:20180826002247j:plain

f:id:otkmym:20180826002325j:plain

サーバーサイドのテストという少々ニッチなテーマではありましたが、たくさんの人にお越し頂きました。聞きにきてくださった皆様、本当にありがとうございました! また発表の中で紹介した2つのライブラリについて、「便利そう!」、「使ってみました!」といった声を頂けたのがとても嬉しかったです。

興味深かったセッション

Kotlin もう一歩 - Kotlinのタイプシステムとジェネリクスについて

Kotlin の型システムについて、Kotlin の言語仕様や型システムの理論を踏まえた系統的な知識が得られるセッションでした。

型 A を必要とする処理に型 B を利用することもできるなら、B は A のサブタイプである という基本的なルールを踏まえて、 Any, Nothing や Generics の in / out variance, star projection といった Kotlin の諸概念を一貫して説明されており、このセッションの内容を理解すれば Kotlin の型システムの理解が深まると思います。

Kotlin の機能に一通り慣れている人であっても参考になるのではないでしょうか。

Kotlin Fest2018たのしかった!

冒頭にも記載しましたが、全体を通じてとても温かい雰囲気で来場者の皆様、スピーカーの皆様、スポンサーの皆様、運営の皆様 全ての方がとても楽しんでいたことが印象的でした!弊社で勉強会を開催する際に参考にしたい点もたくさんありました。ありがとうございました。

Kotlinエンジニア募集!

エムスリーではKotlinを利用したPJT(Android、サーバーサイド)を通じて医療に貢献したいエンジニアを募集しています!
モバイルアプリエンジニア(iOS/Android)
サーバーサイドアーキテクト (Kotlin, Spring Boot, Terraform)

Tach Talkへのご参加やカジュアル面談のご希望も大歓迎ですので以下よりお気軽にお問い合わせください。 jobs.m3.com

勉強会参加者募集!

今後はconnpassでも勉強会参加の募集を行っていきますので、準備ができ次第ご案内させていただきます。 m3-engineer.connpass.com

iOSDC Japan 2018 にエムスリーエンジニアが参加します

エムスリーエンジニアGの松原@ma2geです。 iOSDC Japan 2018 に参加するのと、事前ブログを書くことが推奨されているので、 イベントを一緒に盛り上げるべく事前ブログを書きます!(事前ブログプレゼント欲しい)

blog.iosdc.jp

f:id:ma2gedev:20180829120038p:plain
iOSDC Japan 2018 公式サイト(https://iosdc.jp/2018/)より

自己紹介 & 参加日程

  • マルチデバイスチーム所属チームリーダー
    • iOS、Android アプリの開発
    • 付随するサーバサイドも開発
    • マルチデバイスだと長いので、社内では親しみを込めてマルデバ、マルデバチームと呼ばれています
  • OSS が好きで、Ruby/Elixir のライブラリなどを公開
  • iOS 関連のコミュニティには今まであまり参加できておらず iOSDC も初参加
  • 参加日程は 8/31 と 9/1 に参加予定(9/2 も行きたいので調整中です)

おそらく知っている方もほとんどいないので仲良くしていただけたらと思います。 twitter id は @ma2ge ですので、フォローお願いします

iOSDC の気になるセッション

現在アプリと連携する GraphQL のサーバサイド開発をしているので以下2つのセッションが特に気になります。 どちらも知見に溢れていそうなので、その辺り聞いてみたいです。お二方ともに事前ブログを書かれているので、今からテンション上がっています。

他にはアプリの設計関連の話ということで、以下のセッションが気になっています。 長らく開発運用しているとツラミは溜まってくるので、それを解消するためにどのようなことをされているのかは、やはりとても気になるところです。

エムスリーと iOS アプリ

最近色んなところで、「エムスリーは Android 開発がメイン」とか、「iOS 開発やっていないと思っていた」と フィードバックをもらっているのですが、エムスリーでは iOS アプリの開発もしています。 2012 年くらいから取り組んではいて、今も継続して開発をしております。 Objective-C から Swift への移行をしていたり(90% くらい完了)、今後新しく作っていくアプリの計画もあるので、今後テックブログへも書けたらと考えています。 当日はもう1名エムスリーのエンジニアが参加するので、 どんな感じでやっているのか気になる方は @ma2ge or 直接でもいいのでお声がけください。

所感

iOSDC 初参加でとても楽しみにしています。そして4日間開催!?は個人的にも初の長丁場イベントなので、体調に気をつけつつ楽しんでいきましょう。

マルチデバイスチームでは iOS エンジニアも募集中です

マルチデバイスチームでは iOS、Android、サーバサイドエンジニアを募集しています。 もし興味がわいた方は、カジュアルにお話しましょう。ぜひエンジニア向けフォームよりご連絡お願いします。 もちろんtwitterで私に直接声をかけていただいても構いません。

jobs.m3.com

エムスリーのサービスレベル監視基盤を構築した話

こんにちは、エンジニアリングGの高橋です。

去年の11月にエムスリーにSREとして参画してから、サーバのセットアップ作業などの基本的なインフラ作業に加えて、各サービスのサービスレベルの設定や監視の仕組み作りなども行ってきました。

今回はそのサービスレベルを監視する仕組みをご紹介したいと思います。

本稿の流れ

  • SLI設定
  • SLO設定
  • 各種メトリクスの収集
  • アラーティング
  • 監視ダッシュボードの作成
  • まとめ

全体像

f:id:tshohe:20180823153223j:plain

ざっくりとした全体像としては上図のような感じです。

また、この取り組みを実施した前後で、下のような変化(効果)がありました。

    1. ログの収集はしているが、全サービスでは取れていない
    2. ログの収集経路がサーバによって異なる(Service AからElasticsearchとかもあったり)
    1. 全サービスのアクセスログを収集・閲覧可能
    2. ログの収集経路を共通化
    3. ほとんどのサービス(70以上)のサービスレベルを規定
    4. サービスレベルの超過監視が出来るようになった
続きを読む

エムスリーはKotlin Fest 2018にスポンサーとして参加します!

こんにちは、エンジニアリングGの大和です。

8/25 (土) に開催されるKotlin Fest 2018*1に、エムスリーはことりスポンサーとして協賛いたします! 当日は弊社もブースを出すとともに、RubyKaigi2018*2でも絶賛いただいたノベルティーも配布予定です (以下は一例です)。

f:id:daiwa_home:20180810110207j:plain
ことりちゃん じゃがりこ

参加エンジニアの紹介

Kotlin Fest 2018では、弊社から2人の登壇を予定しています。

  • 鈴木 健太 (@suusan2go)

    • エムスリーのソフトウェアエンジニア。 バックエンドもフロントエンドもやります。 最近レガシー独自FWなJavaアプリケーションをKotlin + SpringBoot + Nuxt.jsでリニューアルしました。
  • 前原 秀徳 (@maeharin)

    • エムスリーのエンジニア。チームリーダーやグループ会社の取締役を歴任。 Kotlinの素晴らしさに触れ、サーバーサイドKotlinを用いたシステムリニューアルを立ち上げ。 自慢は自身のブログで「はてぶ1200超え」を達成したこと。好きな漫画はベルセルク。

また、以下のエンジニアも参加します。誰か1人はブースにいますので是非お立ち寄りください!

  • 岩佐 淳史 (@bloody_snow)

    • エムスリーのソフトウェアエンジニア。iOS/swift開発で入社し、最近はScala/Playがメインにシフト。 よって、関数型を推し進めたいとは思いつつも、現実的な落とし所として新サービス開発に関してはKotlin利用に傾き中。
  • 松原 崇幸 (@ma2ge)

    • Android/iOS に加えて付随するサーバサイドも開発するエンジニアチームのチームリーダーをしています。 Ruby/Elixir が好きで OSS として公開しています。隙あらば Elixir を導入しようと日々狙っています。
  • 矢崎 聖也 (@saiya_moebius)

    • エムスリーのエンジニア。Kotlin + Spring-Boot *3 や terraform をゴリゴリ書いたり、 社内 Slack に出没したりする。言語として好きなのは C# と Ruby。
  • 大和 康平 (@daiwahome)

    • 4月に新卒で入社後、現在はPush通知基盤とAndroidアプリを主に触っています。Vimのキーバインドが使えない環境だと入力速度の落ち込みがひどいです。

Kotlinとエムスリー

弊社でのKotlin採用事例も近年増加傾向にあります。 例としては、フルKotlinで書かれたAndroidアプリや、サーバーサイドKotlinによるシステムのリニューアルなどの採用事例があります。

www.m3tech.blog

特に、私が所属するチームでは、新規のプロダクトは (可能なものは) すべてKotlinになる勢いです! (フロントエンド向けのAPIサーバリニューアルなど)

www.m3tech.blog

また、弊社は「どこでもKotlin」と名付けた勉強会を主催しています!

m3-engineer.connpass.com

次回は今秋を予定しています。お楽しみに!

最後に

当日は次のTシャツを着ていますので、お気軽にお声掛けください。 お待ちしております!

f:id:daiwa_home:20180820093848p:plain

We're Hiring

エムスリーでは、Kotlinを使って開発したいエンジニアを募集しています。 イベント当日まで待ちきれない!という方は、下のフォームからお問い合わせください!

jobs.m3.com

bashスクリプティング研修の資料を公開します

f:id:taknakamura:20180817183543p:plain

こんにちは、エンジニアリングGの中村です。

以前にこのブログにてエムスリーでの社内研修について紹介しました。今回は、この中でのbashスクリプティング講座の資料を公開します。

www.m3tech.blog

弊社の中でもいろいろな用途でbashが使われていますが、bashは簡単に利用できるもののプログラミング言語としてはバグを生みやすい、辛い言語だと思います。 ここで紹介しているのはいわゆるコーディング規則というよりも、バグ防止と可読性向上のためのルールをTips集的にまとめたものです。 bashにおいてまだまだ注意するところはありそうですが、多少なりともわかりにくいスクリプトの削減になればと期待しています。

[追記: 2018-08-22]

はてブにて以下のコメントをいただきました。

bashスクリプティング研修の資料を公開します - エムスリーテックブログ

bashで50行以上になったらまずは違う言語使うでいいと思うのだが。。。

2018/08/21 20:00
b.hatena.ne.jp

これは全くそのとおりだと思います。一番大事な主張が、研修の中で口頭では伝えていたのですが資料に書き忘れているのに気づきました。

複雑な処理はbashではなく他の言語(pythonなど)を使った方がよいです。 この資料は、bashという言語がいろいろと注意点が多く、本気で対処するには辛い言語であるということを伝るためのものでもあります。 bashで無理にテクニックを駆使してやろうとするのではなく、使いやすい言語を選ぶことを検討した方がよいと思います。

続きを読む