Mirrativ Tech Blog

株式会社ミラティブの開発者(バックエンド,iOS,Android,Unity,機械学習,インフラ, etc.)によるブログです

SpecをTruthにする:AIエージェント時代の大規模機能開発 〜 Checklist & Session Notesで"AIの文脈"を外部化する 〜

こんにちは、バックエンドエンジニアのユンです。 現在あるプロジェクトで、AIコーディングエージェントをフルに使って開発を進めています。その中で、作成・修正などの触るファイル数が増えてくると、AIの記憶力は目に見えて低下してました。細かい指示をせ…

Go製ベンチマーカーによる分散オブジェクトストレージ「b3」のピーク性能検証

ミラティブ社内製の分散オブジェクトストレージであるb3のピーク性能検証についてインターンの取り組み

ミラティブのバックエンド基盤チームのご紹介 〜開発者体験の向上とコスト最適化の取り組み〜

こんにちは、バックエンドのテックリード兼バックエンド基盤チームマネージャーの夏(なつ)です。 採用面接などの場で「バックエンド基盤チームって具体的に何をしているの?」と聞かれることがよくありました。これまでもバックエンド基盤チームのメンバー…

EnvoyでVM内のトラフィックをコントロールしてデプロイを高速化した

こんにちは、ミラティブのインフラを担当している清水です。 ミラティブは2025年8月28日に10周年を迎え、ユーザーの皆さまに長年ご愛顧いただけて感謝の極みです。 一方で、長年の運用で刷新できないまま残ったレガシーなシステムもあり、古いものと新しいも…

Pub/Sub障害からの学び:JSONメッセージをOpenAPI Validationで守る

⁠ こんにちは、バックエンドエンジニアの山倉です。 MirrativではPub/Subサーバーを使ってサーバー - クライアント間のリアルタイム通信を行っており、メッセージ形式はJSONを採用しています。HTTP APIについては従来からOpenAPI Validationをかけていました…

ModifierのdropShadowは何が新しいのかを考える

Androidエンジニアの藤原(@fuji_tech7)です。 Jetpack Compose を使った UI 実装で、最近私が悩まされているのが Shadow(影)表現 です。 Material Design の仕様に忠実にしたい デザイナー指定の微妙な影を再現したい それでいてパフォーマンスは落とした…

2026年の開発を気持ちよく始めるためのiOSDC Japan 2025セッションまとめ

iOS

はじめに & 今年の振り返り みなさん、お疲れ様です!ミラティブのiOSエンジニア[いっちー]です。 年末が近づき、開発チームでもリリースやメンテナンス対応に追われる時期になりました。 思えば、iOSエンジニアにとっては今年もずっと忙しい1年間だったかも…

sqldefとkin-openapiにコントリビュートした話

こんにちは、バックエンド基盤チームの徳森です。 バックエンド基盤チームでは、バックエンドエンジニアの生産性向上やコスト削減を目的に、エンジニア主導で課題の発見や解決を行っています。 今回は、チームでの具体的な業務内容の一部として、二つのOSSに…

DroidKaigi 2025 参加レポート

Androidエンジニアの藤原(@fuji_tech7)です。9月10日〜12日に DroidKaigi 2025 が開催されました。 私はカンファレンスデーの11日、12日に参加してきたので、その内容をレポートします。 ミラティブは 2022 年から DroidKaigi に協賛しており、今年で4年目を…

Dockerコンテナ上のプロセスが残り続ける問題をPTYを使って回避した話

こんにちは、バックエンドエンジニアのogatasoです。今回はDockerコンテナ上でプロセスが残り続けてしまう問題をPTY(pseudo terminal)を噛ませたタイムアウト処理で対応した話を紹介します。 はじめに ミラティブでは、開発環境や本番環境のMySQLのレコー…

次世代JS標準時刻API Temporal を3年先行利用して得た知見を共有します!

Dateに代わる新たな日時表現・操作API Temporal を3年先行利用して得た知見を共有します!

【ミラティブ】iOSDC Japan 2025 にスポンサーとして協賛します

こんにちは、ミラティブの新嘉喜です。 ミラティブは、2025年9月19日(金)〜9月21日(日)に有明セントラルタワーホール&カンファレンス+ニコニコ生放送で開催される iOSDC Japan 2025 にスポンサーとして協賛させていただきます! iOSDC Japan 2025 について…

【ミラティブ】DroidKaigi 2025 にスポンサーとして協賛します

こんにちは、ミラティブの新嘉喜です。 ミラティブは、2025年9月10日(水)〜12日(金)の3日間にかけて開催される、「DroidKaigi 2025」に協賛することをお知らせいたします。 DroidKaigi とは 「DroidKaigi」は、Android技術情報の共有とコミュニケーションを…

Vaporを活用しMacとiPhone間で双方向通信を行う

iOSチームの福山です。 Mirrativ iOSでは Flipper (Meta社のOSS) を使っていました。しかし Xcode 16.3 から Flipper が動かなくなるという事象が発生し、リポジトリもアーカイブされていることから、Vapor を利用して代替となる機能を作成しようと考えまし…

みんなの「スキ」でつながろう! Mirrativ LT Party 2025Q1 を開催しました

はいこんにちは!フロントエンドやらバックエンドやらUnityやらなんでもやってるエンジニアの どじねこ です。 今回は少し前の話題になりますが、2025年3月12日に社内で開催した「Mirrativ LT Party 2025Q1」をご紹介します。 よろしければ過去に開催したLT…

App Storeの返金情報を取得する方法

こんにちは、バックエンドエンジニアのogatasoです。 Mirrativでは、配信者にギフトを贈る際に必要なコインをアプリ内課金で購入できます。 今回、不正の検知と対策を目的として、過去および今後のすべての返金履歴を取得し、データベースに取り込む仕組みを…

Renovateをセルフホスト with Google Cloud & Go

こんにちは、バックエンド基盤チームの藤井脩紀です。 バックエンド基盤チームは、バックエンドエンジニアの生産性向上やコスト削減を目的に、エンジニア主導で課題を発見・解決している部署です。 このチームではCIの整備や依存関係の更新なども担当してお…

シェーダーでアニメーションカーブを使う

こんにちは、Unityエンジニアのrioil(@rioil_dev)です。 Mirrativの3Dアバター(エモモ)の描画には、カスタム実装されたシェーダーを使用しています。 カスタムシェーダーにテクスチャシートを用いたアニメーション機能を追加するにあたって、シェーダー…

【ミラティブ】CEDEC2025 にスポンサーとして登壇 & 協賛します

こんにちは、ミラティブの広報の新嘉喜です。 ミラティブは、2025年8月22日(火)〜24日(木)に開催される「CEDEC 2025」に、スポンサーとしてセッション登壇と協賛をすることを決定いたしました。 ※CEDEC2025については、公式サイトをご覧ください https:/…

AtCoderで ミラティブ プログラミングコンテスト2025 を開催します

こんにちは、バックエンドエンジニアの makino です! この度、ミラティブは 2025年7月12日(土) にAtCoderにおいて ミラティブ プログラミングコンテスト2025 を開催します。 atcoder.jp 私自身、数年前まで競技プログラミングに熱心に取り組んでおり、夜な…

Jetpack ComposeのonLayoutRectChangedとonGloballyPositionedを比較してみた

こんにちは、Androidエンジニアの藤原(@fuji_tech7)です。 先日、Google I/Oが開催され新しいJetpack Composeが発表されました。 www.youtube.com AutoSize textやMaterial Expressiveなど気になるものは多いのですが、個人的にはModifierに追加されたonLayo…

Jetpack Composeのスクロール可能なTabRowにminWidthが設定できるようになります

こんにちは、Androidエンジニアの藤原(@fuji_tech7)です。 Jetpack ComposeのコンポーネントにScrollableTabRowがあります。 TabRowが指定領域にタブを敷き詰めて配置するのに対しScrollableTabRowはスクロール可能にすることでより多くのタブを配置すること…

iOS 18 x AirPods Pro2 で配信の音声が聞こえづらいことがある問題の調査

こんにちは、エンジニアのちぎら(@_naru_jpn)です。ゲーム配信アプリであるミラティブではイヤホンを使用しながら配信をすることができますが、動作の安定のために 有線のイヤホンの使用を推奨しています。 昨年 iOS 18 がリリースされてから、稀に AirPod…

ビジネス職向けに、Webプログラミング研修をしました。

こんにちは、ミラティブでデータ分析基盤を担当しております芝尾です。 ミラティブでは本年度新卒研修の一環として、エンジニアではないビジネス職向けに、Web開発の研修を行いました。 Web開発研修の様子 研修の目的 この研修の目的は、ビジネス職にエンジ…

Swift Macroを事前コンパイルしてビルドを高速化!.xcodeprojとSwift Packageへの導入方法

iOS

iOSチームの福山です。 Mirrativ iOSの開発ではSwift Macroを使ってイニシャライザやXcode Previews用のダミー要素を生成するなど活用しています。 しかし、ビルドが成功するにもかかわらず、Swift Macroが展開するコードを利用する部分でエラーが表示される…

【ミラティブ】try! Swift Tokyo 2025にスポンサーとして協賛します

iOS

こんにちは、ミラティブのエンジニア採用担当の野呂です。 いよいよ明日、Swiftに関する世界的な技術カンファレンス 「try! Swift Tokyo 2025」 が開催されます! 株式会社ミラティブは、ブロンズスポンサーとして協賛させていただいております。 try! Swift…

Compose Preview Screenshot Testing と AST 解析で Material3 へ完全移行した話

Compose Preview Screenshot Testing を導入し、Mirrativ の Android アプリを Material2 から Material3 へ完全移行した事例をご紹介します。導入の際に困る Preview 関数の定義場所については、AST 解析を用いて解決しました。導入を検討する際はぜひ参考…

時間がかかっていた git status を Trace2 で計測しながら10倍速くした話

環境 改善前 改善前計測 untrackedcacheを使った高速化 file system monitorを使った高速化 サブモジュールをオフにして高速化 Appendix: Gitバージョンアップ実験結果 まとめ We are hiring! こんにちは。バックエンドエンジニアのshirakawaxです。 Mirrati…

macOSでもサクッと使える!Colimaで開発環境構築がカンタンになった話

こんにちは フロントエンドエンジニアの どじねこです。 今回はミラティブのバックエンド開発環境の 2025 年上半期の現状を皆様にご紹介します。 なお 2021 年 12 月 時点での情報が別記事にまとまっておりますので、ここからのアップデート情報と言う形でご…

MemoryPackでゲームのリプレイデータを作った話

こんにちは、Unityエンジニアのいも(@adarapata)です。 今回は、ミラティブのライブゲーム「スラポンコロシアム」で活用しているリプレイデータについてMemoryPackを使って作成した話をします。 スラポンコロシアムとは スラポンコロシアム(スラコロ)はMirra…