エムスリーテックブログ

エムスリーテックブログ

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

ドメイン分離でユースケースの不安定度(Instability)を下げた話

【Unit4 ブログリレー7日目】

こんにちは、Unit4のキムです。この記事はUnit4チーム (m3.com開発チーム) メンバーにより投稿されるブログリレー7日目の記事です。

本記事では、近年やけに不安定になってきたユースケースコンポーネントをドメイン分離を通じて安定させた事例をご紹介します。この内容は先日のtechtalk発表内容の続きでもあるので、ぜひ発表のほうもご覧ください!

youtu.be

  • はじめに
    • 不安定度と SDP
    • 「今日のクイズ」と「夕方クイズ」
  • 1. 問題診断
  • 2. リファクタリング方針
  • 3. 実装
    • 3.1 ドメイン分離
    • 3.2 ドメインサービスの導入
    • 3.3 クロスドメインサービスのDIP
  • 4. 結果
    • 4.1 ユースケース複雑度の低下
    • 4.2 SDP強化
    • 4.3 クロスドメインサービスの拡張性
    • 4.4 依存関係とアーキテクチャの再構築
  • 5. まとめ
  • We are Hiring!
    • エンジニア採用ページはこちら
    • エンジニア新卒採用サイト
    • カジュアル面談はこちら
続きを読む

猫につけているBluetoothデバイスの信号強度と機械学習で、いまどの部屋にいるかをトラッキングする!

【Unit4 ブログリレー6日目】

こんにちは、CTOの大垣です。 このブログはUnit4ブログリレー 6日目の記事です。前日は西川さんの"「なんとなくこっちの方が良い」からの脱却"でした。エンジニアリングは言葉の仕事なので、言語化を考えるのとても大事ですよね。なお、打ち合わせたわけではないんですが2日連続自分の飼い猫の写真が貼られています。

さて、その猫の話。私は猫と日々暮らしているんですが、猫ってちょっと目を離すとすぐに視界からいなくなりますよね。 移動がすごく静かな上に、隙間に入るのが好きなので、同じ部屋にいるのに見失っていることがよくあります。 さらにどの部屋にいるかもあてがつかなくなるともうお手上げです。

いろんな隙間に挟まって見失いがちな猫

そこで今回は、Bluetoothと機械学習の技術の力で猫がどこにいるのかを探します。

本稿の流れは以下です。

  1. 猫につけたBluetooth Low Energy(BLE)デバイスのIDを特定し、その信号強度を計測する。
  2. 更にその信号強度の分布の特性を元に猫が現在いる部屋を高精度に当てる。

これらの流れで、猫の居場所ロガーが完成するまでの話を書きます。

システムによって計測されたある日の猫の1日

続きを読む

「なんとなくこっちの方が良い」からの脱却

【Unit4 ブログリレー5日目】

こんにちは、Unit4の西川です。JavaScript が好きです。別にJavaScriptに精通しているわけではないです。

うちの猫どもです。非常に可愛い

今日は言語化の話をしたいと思います。そしてエンジニアですがデザインの話もしようかと思います。

「1つ上の行、絶対猫の画像の前に動かした方がいいよ!」
「それはどうして?」

……という話です。

続きを読む

GitHub Actionsをもっと安全に、もっと便利に運用する方法

【Unit4 ブログリレー4日目】

はじめまして! Unit4でエンジニアをしている大熊です。こちらはUnit4ブログリレーの4日目の記事です。

エムスリーではGitLabからGitHubへの移行が進められています。私は現在、Unit4で最初のGitHubを活用したプロダクトの開発に取り組んでいます。 今回はGitHubの強力なCI/CD機能であるGitHub ActionsのTipsをご紹介します。

Unit4の概要については1日目の関根の投稿をご覧ください!

www.m3tech.blog

  • サードパーティのActionを安全に使う
    • ghats
    • Actionをコミットハッシュで固定
  • 自作Actionをモノレポで管理する
    • 構成
  • ビルドとデプロイを分離する
    • アーチファクトの共有方法
  • おわりに
  • We are Hiring!
    • エンジニア採用ページはこちら
    • エンジニア新卒採用サイト
    • カジュアル面談はこちら
続きを読む

Karabiner-Elementsでキーボードにレイヤーを作る

【Unit4 ブログリレー3日目】 永山です。 この記事はUnit4チーム (m3.com開発チーム) メンバーにより投稿されるブログリレー3日目の記事です。

2日目は堺澤による「Professional Cloud Architectを取得した話」でした。

www.m3tech.blog

さて、自作キーボードのファームウェアには大抵「レイヤー」と呼ばれる機能が含まれています。 レイヤーは1つのキースイッチに複数のキーを割り当て、特に60%以下 *1 のサイズのコンパクトなキーボードを不便なく、むしろ便利なものにするための重要な機能です。

salicylic-acid3.hatenablog.com

この記事ではmacOS用のキーリマッピングソフトウェアKarabiner-Elementsとその設定ファイルを生成するためのJavaScriptライブラリ、karabiner.tsを使用してソフトウェア的にレイヤーを再現する方法について説明します。

  • キーボードのレイヤーとは
  • Karabiner-Elementsとは
  • karabiner.tsとは
  • Mod-Tapの設定方法
  • レイヤーの実現方法
    • 変数の利用
    • コードの全体
  • まとめ
  • We're hiring!

京都水族館のミズクラゲ

*1:60%キーボードはキーボードサイズのカテゴリ。フルサイズキーボードと比較しキー数が約60% (60~65キー程度) の、テンキーやF1, F2, F3 などを持たないキーボードを指す。

続きを読む

Professional Cloud Architectを取得した話

【Unit4 ブログリレー2日目】

こんにちは、Unit4でソフトウェアエンジニアをしている堺澤です。昨年生まれた娘と一緒に近所の公園に散歩に行くのが楽しい今日この頃です。
今回は以前から興味のあったGoogle Cloudの資格取得に挑戦したお話をさせていただきます。 無事合格できたので、どのように学習を進め、資格を取得したのかを共有いたします。

続きを読む