エムスリーテックブログ

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

チームで培われたベストプラクティスをlintとして周知する

こんにちは。AI・機械学習チームの氏家(@mowmow1259)です。 エムスリー福岡オフィスの一人目のエンジニアとして福岡で働いています。 マクドナルドの月見バーガーが好きで、今年も発売開始当日に食べに行きました。

私が所属するAI・機械学習チームでは基本的に2週間から1ヶ月程度で新規プロダクトをリリースするなど、高速にプロダクトを開発しています。 その過程で、「この書き方は落とし穴があるから使わない方がいい」といった開発に際したベストプラクティスが溜まっていきます。 そういったベストプラクティスはレビューでの指摘や技術共有会*1でチームに浸透してきますが、レビュー負荷や新メンバーへの周知などに課題がありました。

この記事では、それを解決するためにベストプラクティスをLinterの独自ruleとして規定し、CIで自動検知することでチーム全体に周知する取り組みについて紹介します。

独自ruleによりLintされている例

  • ベストプラクティスの蓄積
  • ベストプラクティスの浸透の取り組み
  • ベストプラクティスの浸透の難しさ
  • Linterの独自ルールとして自動チェックする
    • 実装するベストプラクティス
    • Linterの選定
    • 独自ルールの記述
  • 各プロダクトへの導入
  • 導入の効果
  • まとめ
  • We are hiring !!
    • エンジニア採用ページはこちら
    • カジュアル面談もお気軽にどうぞ
    • インターンも常時募集しています

*1:AI・機械学習チームで週に一度行われている、面白い、共有したい技術の共有会です

続きを読む

プロダクトの成長を加速させる会議:エムスリーのプロダクトマネージャーが実践する「合宿」とは

こんにちは。エムスリー エンジニアリンググループ プロダクト支援チームでプロダクトマネージャーをしている中村です。

今回の記事では、プロダクト支援チームのプロダクトマネージャー陣が活用している「合宿」と呼ばれる会議をご紹介します。「合宿」と言っても、泊まりに行くわけではなく、オフィスの会議室に集まって2時間程度集中してプロダクトについて議論する場を指します。エムスリーのプロダクトマネージャー陣は、この「合宿」という場を活用し、プロダクトビジョンや戦略について議論を深めています。

  • はじめに
  • 「合宿」とは
  • 議論の流れ
    • ステップ1
    • ステップ2
    • ステップ3
  • 「合宿」の効果
  • まとめ
  • We are hiring!!
続きを読む

エムスリーエンジニアリングフェローに山本舜さんが就任しました!

エンジニアリンググループHRBPの我如古です。この度、山本舜さんにエムスリーエンジニアリングフェローに就任いただくことになりましたのでお知らせいたします。

エムスリーエンジニアリングフェローとは

在籍中または卒業後に顕著な活躍をしたエンジニアに対して、エムスリーを卒業しても継続的にフェローとして称えるものです。また、エムスリー卒業生として定期的な意見交換を行ったり、エムスリーとエンジニアコミュニティをつなぐハブを担ってもらうという役割もあります。卒業は寂しいですが、新たな関係性のスタートですので引き続き仲間として良好な関係を築いて行きたいと思います!

続きを読む

データベース自作勉強会・輪実装会のススメ

先日、社内有志で開催していたDB自作本 Database Design and Implementation の輪読会ならぬ輪実装会がついに完結を迎えました。

RDBMSをゼロから、毎週一人ずつ、1章分を実装してPullRequestを出しつつ資料も準備して発表をこなすという一見ハードな勉強会で、完走できるか不安もありつつスタートしましたが、やってみるとめちゃくちゃ楽しく最後まで完走できました。

本記事ではみなさんに「うちでもやってみたい」と思ってもらえることを願って、読んだ本の推しポイントや、どのように勉強会を進めたかを紹介したいと思います。

感動で涙の出るコード

  • Part1: おすすめポイント
    • 本が良い
    • みんなでワイワイやるのが良い
    • 3ヶ月で完走できるのがいい
    • 完走後のモチベーションアップが良い
  • Part2: 輪実装会
    • 募集
    • 参加者
    • 進め方・実装
    • 期間
  • Part3: おれたちのDB実装戦記
    • 6/13 第1章〜第3章(担当:横本)
    • 6/20 第4章(担当:横本)
    • 6/27 第5章 前編(担当:北川)
    • 7/11 第5章 後編(担当:北川)
    • 7/18 第6章(担当:丸山)
    • 7/25 第7章(担当:松原)
    • 8/1 第8章(担当:須藤)
    • 8/8 第9章(担当:永山)
    • 8/15 第10章(担当:木田)
    • 8/22 第11章(担当:高島)
    • 8/29 第12章(担当:山本)
    • 9/5 第13章(担当:河井)
    • 9/12 第14章(担当:横本)
    • 9/19 第15章(担当:横本)
  • おわりに
  • We are hiring !!
    • カジュアル面談お気軽にどうぞ
    • エンジニア採用ページはこちら
    • インターンも常時募集しています
続きを読む

AIチームのGameDayでNode Poolを吹き飛ばした話

こんにちは、AI・機械学習チーム(AIチーム)の農見(@rookzeno)です。みなさんAWS GameDayというものをご存知でしょうか。AWS GameDayとはゲーム化されたリスクのない環境で現実世界の問題を解決するためのスキルを学ぶ演習です。

今回はそれをAIチーム内でやってみようということで、開発環境でわざと障害を起こして、それを担当者以外が解決できるかというGameDayをやりました。そして開発環境のGoogle Kubernetes Engine(GKE)のNode Pool*1を吹き飛ばしました😇

Node Poolが吹き飛ぶと、APIやバッチが全て落ちるのでおしまいです。

なぜGameDayを行ったのか

AIチームではマイクロサービスを少人数で沢山作るという方針でプロダクトを作っており*2、レビューはしてるものの担当プロダクト以外の障害対応は少し手間がかかるというのが現状です。

そこで担当者が休みの時に障害が起こるとヤバいプロダクトで擬似的な障害対応をして、担当プロダクト以外でも障害対応力を上げていこうということでGameDayを行いました。

GameDayの目的

実際にありそうな障害を再現し、担当者以外が対応することで次の効果を期待しました。

  • チーム全体のシステムの理解度を上げる
  • 落ちたら困るAPIの復旧などの暗黙知をチームに広げる

GameDayで盛り上がった後の飲み会

  • なぜGameDayを行ったのか
  • GameDayの目的
  • GameDayの流れ
  • CronJobが動いてない事件
    • やったこと
    • どうしてこうなってしまったか
    • 想定解
      • 1. コミュニケーションが最初
      • 2. Podを調べる
      • 3. Node Poolの上限を増やす
  • 他チームの課題についても軽く
  • 成果報告会
  • 感想
  • We’re hiring !
    • エンジニア採用ページ
    • AI・機械学習チーム紹介資料

*1:Node PoolとはGoogle Kubernetes Engine(GKE)のクラスタ内において、Nodeをグルーピングして管理するための仕組みです。AIチームではstandard-node-poolやhighmem-node-poolなどを用意しています。

*2:属人性が上がるが、開発効率が上がる方法を選んでいる

続きを読む

インターンの二週間で社内APIを新しく建て本番リリースまで何でもやった話【ソフトウェアエンジニアインターン参戦記】

はじめまして。河村 (@KowerKoint2010)です。 この夏、エンジニアリンググループ AI・機械学習チームで2週間の新卒ソフトウェアエンジニアインターンに参加しました。

インターンでは、「Yucca」という内部サービスの改善を担当しました。 当初与えられた課題については設計・開発から本番環境へのリリース、そしてユーザーへの利用法説明まで行い、まだ時間に余裕があったので追加でデータベースの改善も検討しました!*1

ここでは私がやったことを簡単に紹介しつつ、エムスリーという会社で働いてみた感想を伝えます。 エムスリーでのインターンや就職を考えている他の学生の参考になれることを願っています。

*1:褒められました。嬉しいです。

続きを読む

iOSDC Japan 2024に参加してきました

こんにちは、マルチデバイスチームの小林(@bakobox)です。 今年もiOSDCが開催されました🎉エムスリーは、シルバースポンサーとして協賛させていただきました。 私はday0はオンライン、day1とday2はオフラインで参加してきましたので、レポートを書きたいと思います。

iOSDC 2024

  • 印象に残ったセッション4選
    • 座談会 「Strict ConcurrencyとSwift 6が開く新時代: 私たちはどう生きるか?」
    • Mergeable Libraryで高速なアプリ起動を実現しよう!
    • 詳解UIWindow
    • Mastering AsyncSequence - 使う・作る・他のデザインパターン(クロージャ、Delegate など)から移行する
  • まとめ
  • We’re hiring !
    • エンジニア採用ページ
    • マルチデバイスチーム(アプリ開発チーム)紹介資料
続きを読む