エムスリーテックブログ

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

Rails 4.2 から 7.1 まで一気にバージョンアップした話

こちらはエムスリー Advent Calendar 2024 12日目の記事です。

こんにちは。エムスリーエンジニアリンググループ、コンシューマチームの園田です。

今年になって、かなり古い Rails を最新バージョンまでアップグレードしました。そのときの話です。かなりポエムに近い内容になっていますがご容赦ください。

特に何か変わったことをやっているわけではありませんが、あるあるを共感したもらったり、こんなことやってますという紹介だと思っていただければ幸いです。

続きを読む

BigQueryのLanguage Serverであるbqlsを作っている話

AI・機械学習チームの北川(@kitagry)です。 このブログはエムスリーアドベントカレンダー11日目の記事です。

このブログではタイトル通りOSSで作成しているbqlsというLanguage Serverについて紹介します。

github.com

座ってたら遊んでほしすぎて絡んでくる猫(本文とは関係ありません)

続きを読む

ミッションはグループ会社のTRANSFORM - グループ会社支援チームのご紹介

こちらはエムスリー Advent Calendar 2024 10日目の記事です。

エンジニアリンググループ、プロダクトマネージャーの岩田(@a___iwata)です。 以前、「目指すは企業価値最大化!? グループ会社支援チームのご紹介」というタイトルでグループ会社でのエンジニア・デザイナー組織作りの記事を書きました。

www.m3tech.blog

組織ができあがったら、次はプロダクト作りです。ということで、(やや強引ですが)グループ会社のTRANSFORMを題材とします。

  • 前提:TRANSFORMとは
  • イノベーションには実験が不可欠! - 言うは易く行うは難し -
  • プロダクトチームへの信頼こそが、ジレンマを突破するためのほぼ唯一の解
  • 今作ろうとしているものからイノベーションを生み出す
    • 2割の工数で8割の効用を達成
    • ユーザー満足度を取る・あげる
  • 継続的にイノベーションを生み出す組織、仕組みづくりを推し進める
  • まとめ
  • We are hiring!!
続きを読む

TypeScriptで型レベル四則演算

こちらはエムスリー Advent Calendar 2024 9日目の記事です。

こんにちは。4月に新卒でデジスマチームにジョインしたソフトウェアエンジニアの池奥です。先日京都で開催されたTSKaigi Kansai 2024ではコアスタッフとして活動していました。 私の所属するデジスマチームではフロントエンドにTypeScriptが採用されており、型の柔軟性を活かした実装をたびたび見かけます。そこで今回は、TypeScriptの型ともっと仲良くなるべく、型レベルで四則演算のパーサーから実行器まで実装した話をお送りします。

今回作成したプログラムを利用すると、次のような計算を型レベルで行うことができます。

// 四則演算(といいつつ割り算は未実装...スミマセン)
type Result1 = Eval<"12*3+5*7+(2+45)*2-4"> 
//   ^ 161

// 文字列も扱えます。フォローしてね
type Result2 = Eval<"len('@m3_engineering')">
//   ^ 15

// castやlenなどの組み込み関数、変数も作ってみました
type Result3 = Eval<"word+'の文字数は'+cast(len(word),'str')+'文字です'", { word: "Alice in Wonderland" }>
//   ^ "Alice in Wonderlandの文字数は19文字です"

// 比較演算やブール値ももちろん
type Result4 = Eval<"len('@m3_engineering')<=2*2*2*2">
//   ^ true

実は四則演算だけでなく、比較演算子や優先順位を指定する括弧もサポートしています。ほかにも、文字列やブール値を扱えたり、組み込み関数(len、cast)をサポートしていたり、評価時に変数の値を外部から指定できたりする機能も備えています。なお、割り算は自然数の範囲から外れてしまうためサポート外としました。

続きを読む

Firebase AuthenticationでメールリンクパスワードレスかつCookieによる半永続的セッションを実現する

こちらはエムスリー Advent Calendar 2024 8日目の記事です。

AI・機械学習チーム(以下、AIチーム)の中村伊吹(@inakam)がお送りします。

社内横断的に機械学習周りをなんでもやるをモットーにするAIチームですが、現在私はクライアント向けに認証機能が組み込まれたプロダクトを開発しています。

認証要件は次のようになっており、これをFirebase Authenticationで実現する方法をこの記事では解説します。 なお、Firebaseの導入についてはこの記事の範囲外とします。*1

  • メールリンクを用いてパスワードレスに認証する
  • セッション情報をCookieに保持する
  • セッションは半永続的に維持する
    • つまり一定期間内にアクセスがあれば、セッション時間を延長したい

またコード例として、フロントエンドはReact(Firebase SDK)、サーバーサイドはGo言語(Firebase Admin SDK)を例に解説していきます。

ChatGPTにサムネイルを頼んだら、クッキーとパスワードが組み合わせられて、わりと気に入ってます

  • Firebase Authenticationによるパスワードレス認証
  • メールアドレスによるパスワードレス認証を実装する
    • 送信部分の作成
    • 認証URLからログイン処理を行う
    • サーバーサイドで認証情報を取得する
  • セッションCookieによる認証を実装する
    • セッションCookieを発行するエンドポイントを作成する
    • セッションCookieをフロントエンドで受け取る
    • セッションCookieをバックエンドで検証する
  • セッションCookieを定期的に更新する
    • /sessionLoginの仕様変更
    • リフレッシュトークンによるセッションCookie更新処理を実装する
  • まとめ
    • We are hiring !!
      • エンジニア採用ページはこちら
      • カジュアル面談もお気軽にどうぞ
      • インターンも常時募集しています

*1:

ウェブサイトで Firebase Authentication を使ってみる

などを参考に導入が済んでいるものとします

続きを読む

リモートワーク時代を生き抜くAI・機械学習チームの働き方

こちらはエムスリー Advent Calendar 2024 7日目の記事です。 前日は大垣さんのアニメキャラらしさ姓名判断師AIを作る ~字画に注目したモデリング~でした。とても面白いのでそちらもどうぞご覧ください。

はじめに

こんにちは。AI・機械学習チームの氏家(@mowmow1259)です。

今回のテーマはリモートワークです。 最近オフィス回帰の流れがあるとはいえ、リモートワークを導入する企業はコロナ禍以前と比べて確実に増えてきています。 エムスリーでも2021年からリモート勤務がベースとなっており、さらに最近では関西と九州にもサテライトオフィスができるなど、全国各地からリモートワークで開発を進めています。

www.m3tech.blog

リモートワークは通勤時間がない、家事育児などプライベートな時間と仕事を両立しやすいといったメリットがある一方で、生産性を落としてしまったり、メンタルが不調になってしまったりなどの事例もよく耳にし、リモートでの仕事の難しさを感じています。 そんな環境の中、私が所属するAI・機械学習チームではリモートワークでも健全で効率的に仕事をするために試行錯誤を重ねてきました。 そこで今回は、弊チームで実践している、リモートワークでうまく仕事を進めるための取り組みを紹介したいと思います。

Dall-Eに生成してもらったリモートワークの様子

  • はじめに
  • 仕事の進め方編
    • Working Out Loud
    • 同期コミュニケーションの活用
      • 定期的な同期コミュニケーション
      • 突発的な同期コミュニケーション
      • オンボーディングのためのデイリー1on1
    • 互いを褒め合う文化
  • 雑談コミュニケーション編
    • 1æ—¥1度の雑談夕会
    • times文化
    • オフラインコミュニケーション
  • まとめ
  • We are hiring !!
    • エンジニア採用ページはこちら
    • カジュアル面談もお気軽にどうぞ
    • インターンも常時募集しています
続きを読む

アニメキャラらしさ姓名判断師AIを作る ~漢字の字画に注目した識別器モデリング~

こんにちは、テックブログでは業務と全く関係ないMLをやるのが好きなエンジニアリンググループゼネラルマネジャーの大垣です。

私は普段は就業後は妻とアニメを観ていることが多いんですが、先日"地面師たち"を観てから、我が家ではドラマが一時的なブームとなっています。 最近見ている"全領域異常解決室"では、日本神話の神が転生して人間として暮らしているという、アニメっぽいトンデモ設定でちょっと好きです。 例えば、アメノウズメノミコトは天野さんとして暮らしています。

そういう夢のある話を想像すると、みなさんも日常に潜む神を見つけ出したくなりますよね!ということで、今回は姓名判断師AIを作ります。 私はやっぱりアニメが好きなので、日常の中に潜んでいるアニメらしい名前というのを見つけに行きます!

アニメらしい名前・アニメらしくない名前を判別する姓名判断AI

こちらはエムスリー Advent Calendar 2024 6日目の記事です。昨日はAI・機械学習チームの三浦さんの、KubernetesとPyTorch Lightningによる医療AI開発環境とそのTipsでした!

  • 姓名判断ができるとはどういうことか。問題設定
  • 特徴1: まずは1-gram/2-gram特徴を突っ込んで、名前の珍しさをモデリング
  • 特徴2: 画数特徴
  • 結果は?
  • ちなみに実在の人間同士は識別できるの?
  • We are hiring !!
    • エンジニア採用ページはこちら
    • カジュアル面談もお気軽にどうぞ
    • インターンも常時募集しています
続きを読む