エムスリーテックブログ

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

6年10ヶ月続けた技術顧問を卒業しました & 入社しました

はじめに

はじめまして。2025年5月1日にエムスリーに入社した藤原聖です。 好きな日本酒は十水と福小町、注目している再開発は高輪ゲートウェイシティ、週末は有明ガーデンかららぽーと横浜にいます。

この度、6年と10ヶ月続けた技術顧問を辞め、ゼネラルマネージャーの一人としてエムスリーに入社しました。合わせて、2024年4月1日に設立されたエムスリーテクノロジーズのVPoEに就任することになりました(6月にはVPoE兼取締役に就任の予定です)。

入社日にCPO兼CAIO山崎さん、VPoE河合さん、CTO大垣さんと。山崎さんはGWの休暇中に駆けつけてくれました。

本記事は入社エントリとなります。

続きを読む

m3.com 電子書籍アプリ Androidで持続可能な開発を行うための式年遷宮(リファクタリング)

【マルチデバイスチーム ブログリレー5日目】

エンジニアリンググループ マルチデバイスチームの渡辺です。

m3.com 電子書籍アプリはエムスリーで開発しているスマホアプリの中で最も歴史のあるアプリです。

アプリの機能やデザインのリニューアルをしたい、しかし長年積み続けてきた技術的負債がそれを妨げ、簡単そうに見える改修でさえ難しいという状態でした。継続的な開発を可能とするためにどのように式年遷宮(リファクタリング)をしているか紹介します。

iOSは先行してリファクタリングが完了しており、今回はそれに追従するかたちで進めているAndroid側の内容です。

続きを読む

エムスリーが技術書典18で新刊を出します!

エムスリーエンジニアリンググループ データ基盤チームでソフトウェアエンジニアをしている橋口 (@matsudo840) です。

技術書典18が2025/06/01に開催されます(オンライン開催は5/31-6/15)。

今回もエムスリーでは有志が集まり、新刊「エムスリーテックブック8」を携えて参戦します。 回を追うごとに着実にページ数が増えておりますが、ついに今回は268ページとなりました。 エムスリーのギークで技術を楽しむカルチャーがふんだんに詰まった一冊となっております。

オンラインでは5/31以降、こちらから購入いただけます!

techbookfest.org

この記事では皆さんに新刊を手に取ってもらえるように、各章がどんな内容になっているのかを紹介します。

続きを読む

Swift6対応で見えた課題とswift-dependenciesへのDI移行戦略

【マルチデバイスチーム ブログリレー4日目】

こんにちは、マルチデバイスチームの藤原です。

私たちのチームでは、複数のSwift製のアプリを開発しており、Swift 6への対応を少しずつ進めています。 その過程で、依存性注入(DI: Dependency Injection)ライブラリとして利用してきた Needle が生成するコードと、将来的にSwiftで必須となる existential any *1 *2 との相性問題が顕在化してきました。

コード生成に依存するライブラリは言語仕様に大きな変更があると互換性の問題に悩まされることがよくあると思います。 今後のSwiftの進化に柔軟に対応していくために、できる限りコード生成を伴わない、Swiftネイティブの機能を活かしたライブラリを選定するというのは、1つの重要な指針となりそうです。
そこで、チームのいくつかのプロジェクトでは、以前から注目していた swift-dependencies への移行を決断しました。

今回は、Needleからswift-dependenciesへの移行について、具体的な方針、そしてその過程で得られた知見をご紹介します。

*1:SE-0335: Introduce Existential Any

*2:当初はSwift6で必須化されるという話もあったが現在では延期となっている

続きを読む

IntelliJ IDEA AIツール比較: Copilot vs AI Assistant

【マルチデバイスチーム ブログリレー3日目】

マルチデバイスチーム(以下、マルデバ)の田根です。
主にサーバーサイドとインフラを担当していますが、必要とあればスマホアプリの開発も行うことがあります。

エムスリーではAIの活用を推進しています。 サーバーサイドおよびインフラ開発には IntelliJ IDEA を利用しています。 そこで IntelliJ IDEA上で手軽に導入できる代表的 AI ツールとして「JetBrains AI Assistant」と「GitHub Copilot」をピックアップし、実際に試用したうえで比較します。

続きを読む

Kotlin Multiplatform (KMP) でプラットフォーム固有の実装をcommonMainで扱う2つのアプローチ

記事タイトルから生成したイメージ。ポップな感じでお願いしました。

【マルチデバイスチーム ブログリレー2日目】

マルチデバイスチームでモバイルアプリエンジニアをやっている小林 (@bakobox)です。

マルチデバイスチームでは複数のアプリを開発していますが、一部のアプリではKotlin Multiplatform (以下KMP)を使ってロジックの共通化を行っています。KMPを使ってアプリを開発していると、プラットフォーム固有のコードを扱わなければならない場面が必ず出てきます。プラットフォーム固有の実装をcommonMainからどのように扱えるようにするかは、KMPプロジェクトにおける重要な設計課題の1つです。

本記事では、この課題に対処するための主要なアプローチである、

  1. expect/actualを使った方法
  2. DIフレームワークの管理に乗せる方法

についてご紹介いたします。また2つ目の方法では、iOS側の実装をSwiftで行う方法もご紹介いたします。

  • 1. expect/actualを使った方法
    • プロパティ
    • 関数
    • インタフェース
    • アプローチ1のまとめ
  • 2. Dependency Injection (DI)フレームワークの管理に乗せる方法
    • commonMainでインタフェースを定義する
    • プラットフォーム固有のソースセットでインタフェースを実装する
    • DIでプラットフォーム毎に実装を注入する
      • expect/actualを使ってプラットフォーム固有依存の定義を行う
      • Koinの初期化と利用
    • 応用編: iOS側の実装をSwiftで行い、DIで注入する
    • アプローチ2のまとめ
  • まとめ
  • We are hiring!
続きを読む

過去の技術書典で頒布したイカしたナンバーを紹介するぜ!

はじめに

皆さんこんにちは、こんばんは。最近『映画大好きポンポさん』を見て気分の良いVPoEの河合(@vaaaaanquish)です。 Amazonプライムで見られるのでオススメです。

さて、開催も迫ってきた技術書典18。エムスリーはスポンサーとして応援しています。そして、弊社からも有志で8冊目の新刊を頒布予定です。

本記事は、エムスリーテックブックの過去作を振り返りながら、エムスリーと技術書典の昔話をしていくものです。

  • はじめに
  • 技術書典とエムスリー
  • エムスリーテックブック 1~4
  • エムスリーテックブック 5
  • エムスリーテックブック 6
  • エムスリーテックブック 7
  • おわりに
続きを読む