Mirrativ Tech Blog

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

2025-01-01から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…

初心者3人でISUCONに参加してめっちゃ楽しめた件

こんいす!バックエンドエンジニアのogatasoです。 今回は12月8日に開催された ISUCON14 に、私とshirakawaさん、yamakuraさんの3人でチームMirrormanとして参加しました。全員ISUCON未経験の状態から挑戦し、楽しく学びの多い体験になったので、この記事で…

Android のプッシュ通知に利用していた FCM Legacy API を HTTP v1 に移行しました

目次 目次 背景 FCMとは 移行の流れ サービスアカウントキーを取得し、Goのライブラリに渡す メッセージの形式を決め、送信処理を書く ドキュメントのリトライポリシーに従ってエラーハンドリングを行う エラーハンドリングの概要 リトライポリシー 3% -> 10…

【Swift 6移行】サードパーティのClosureのSendable関連エラーを回避する

iOS開発の福山です。 現在Mirrativ iOSではSwift 6への移行を段階的に行なっています。その中でSwift 6に対応していないサードパーティライブラリに関連する問題にぶつかったため、その回避策を紹介します。 問題 open class Some3rdPartyClass { // サード…