エムスリーテックブログ

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

【pmconf 2024】クライス&カンパニーのDiscord企画振り返り:プロダクトマネージャーにとってのホームランとは?

こんにちは、こんばんは。今年も年末年始は12/25〜1/5まで連休を取ってみた取締役CTO兼VPoPの山崎です。最近はUL装備*1を充実させる日々を過ごしております。

本ブログはプロダクトマネージャー Advent Calendar 2024の14日目の記事です*2。

プロダクトマネージャー Advent Calendar 2023は乗り遅れて枠を取れなかったのですが、その前のプロダクトマネージャー Advent Calendar 2022には以下の記事をポストしていますので、是非ごらんください。

www.m3tech.blog

先日のUL装備キャンプ。Enlightened EquipmentのRevelation 850 30Fを手に入れたので2℃の環境で使って見ました。コット使っている段階でULじゃないじゃん?とか、切り株の上にあるのはアイロンストーブ?とかのツッコミはご遠慮くださいw。

  • はじめに
  • プロダクトマネージャーにとってのホームランとは?
    • ①シリーズ優勝
    • ②試合に勝つ
    • ③ホームランやヒットを打って点を取る
    • ④打席に立ってバットを振る
    • ⑤練習してチームの信頼を得る
  • なぜこの方法が最強なのか(誰も最強と言ってないw)
  • まとめ
  • We are hiring!

*1:ULとはUltra Lightの省略で超軽量装備でキャンプや登山などを楽しむジャンルです。

*2:が、明日用事があるので3時間早いですが、フライングリリースさせて頂きました。

続きを読む

gitレポジトリ考古学に使う道具

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

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

今回は、長年運用されてきたレポジトリをgitを使って発掘する上で使っている道具を紹介します。

福岡タワー(ふくおかタワー)は、福岡県福岡市早良区のシーサイドももち地区にあるランドマークタワー(電波塔)。本文には関係ありません。

  • 帳票環境
    • レポジトリからDBテーブルの使用箇所を探す
    • スケジュール設定だけ消される
  • gitレポジトリ考古学
    • ファイルが消えたコミットを知りたい
    • ある記述が消えた(追加された)コミットを知りたい
    • あるテーブルが使われているバッチを探したい
    • 大量にgit grepしたい
    • git grepの結果がEUC-JPでもUTF-8でも正しく日本語を出力する
  • まとめ
  • We are hiring!
続きを読む

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 を使ってみる

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

続きを読む