Mirrativ Tech Blog

https://tech.mirrativ.stream/

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

フィード

記事のアイキャッチ画像
Media Projection API の Android 14 QPR2 での変更点
Mirrativ Tech Blog
はじめに こんにちは、Androidエンジニアの菅沼です。 ミラティブでは MediaProjection API を使用してリアルタイムに画面をキャプチャして配信を実現しています。 この MediaProjection API のスクリーンキャプチャの許可を求めるダイアログの仕様が 2024年3月にリリースされた Pixelシリーズ向けの Android 14 FeatureDrop (Android 14 QPR2) 以降から仕様変更がありました。 つまり Android 15 以降のみではなく Android 14 の途中のバージョンでも変化したという点に注意です。 公式のソースはこちら…
10日前
記事のアイキャッチ画像
Media Projection APIを使用した簡単なアプリを作成する
Mirrativ Tech Blog
はじめに こんにちは、Androidエンジニアの菅沼です。 ミラティブは Android 5.0 (API Level 21)から実装された Media Projection API を使用して画面をキャプチャしてサーバーに送り、それを視聴者さんに映像として配信することでアプリを実現しています。 今回は画面をキャプチャする部分にフォーカスし、配信はせず画面をそのまま端末上で表示するだけのシンプルな実装を行う方法を紹介させていただこうと思います。 Media Projection API の公式のドキュメントはこちらにあります。 developer.android.com 順を追って実装してみる…
11日前
記事のアイキャッチ画像
Android 15 QPR1 におけるMediaProjectionの変更点とMirrativの対応
Mirrativ Tech Blog
こんにちは、Androidエンジニアの藤原です。 Android 15が配信されてから数ヶ月が経ちました。 Android ベータプログラムに参加しているとPixel端末にてQPR版のOSが入手できますが、そのAndroid 15 QPR1のバージョンでMirrativ Android版に影響のある変更があったので紹介します。 Android 15 QPR1での変更点とMirrativへの影響 developer.android.com 公式にも記載されていますが、アプリ内で画面共有を行っている際に、ステータスバーに画面共有中であることを示すチップが表示されるようになります。 画面共有中である…
17日前
記事のアイキャッチ画像
【ミラティブ】ISUCON14にスポンサーとして協賛します
Mirrativ Tech Blog
こんにちは、ミラティブの野呂です。 ミラティブは、いよいよ今週末12月8日(日)に開催される「ISUCON14」に協賛します。 ISUCONとは ISUCONとはLINEヤフー株式会社が運営窓口となって開催している、お題となるWebサービスを決められたレギュレーションの中で限界まで高速化を図るチューニングバトルです。 isucon.net 協賛する背景 ミラティブは、「わかりあう願いをつなごう」をミッションに、配信者数500万人超のゲーム配信サービス「Mirrativ」を運営しています。 「Mirrativ」では、配信者と視聴者がリアルタイムに繋がり、ゲーム配信や雑談など、様々なコミュニケーシ…
1ヶ月前
記事のアイキャッチ画像
Identity-Aware Proxy(IAP)を利用したローカル環境での開発体験の向上
Mirrativ Tech Blog
こんにちは、バックエンドのリードエンジニア兼バックエンド基盤チームのマネージャーの夏(なつ)と申します。バックエンド基盤チームは、バックエンドエンジニアの生産性向上やコスト削減を目的に、エンジニア主導で課題を発見・解決している部署です。 今回は基盤チームが行った、Google CloudのIdentity-Aware Proxy(IAP)を利用したローカル環境での開発体験の向上について紹介したいと思います。この改善により、ローカル環境(Mac)上でも開発環境のデータを参照しながら開発が行えるようになり、開発体験が大幅に向上しました。 背景 基盤チームでは定期的にバックエンドチームのメンバーに対…
1ヶ月前
記事のアイキャッチ画像
StorybookとVitestではじめるフロントエンドのかんたん自動テスト
Mirrativ Tech Blog
こんにちは フロントエンドエンジニアの どじねこ です。 今回は Storybook 8.3 から追加された Vitest 統合機能を活用して、フロントエンドアプリの自動テストを強化した事例をご紹介します。 Storybook とは storybook.js.org Storybook は OSS として開発される UI コンポーネントワークショップです。 具体的には、フロントエンドアプリケーションの UI コンポーネントを開発する際の作業環境、ドキュメンテーションツール、テスティングフレームワークとして活用できる開発環境が提供されます。 React や Vue、Angular、Svelte、…
1ヶ月前
記事のアイキャッチ画像
iOS 18 で Animated WebP 再生時のパフォーマンスが著しく悪くなった問題と対応
Mirrativ Tech Blog
こんにちは、iOSエンジニアのいっちー(@0IcchI)です。 ミラティブでは、iOS 18のリリースに備えて、アプリ上に新しい不具合が発生していないかの調査とその対応を進めてきました。 その過程でAnimated WebPの再生に起因する致命的な不具合に出会ったので問題とその対応について紹介します。 背景 ミラティブではアプリ内で画像を表示する際にSDWebImageを使用しており、Animated WebPの再生にも用いています。 SDWebImageはAnimated WebPの再生に2種類のコーダーを提供しています。 SDImageAWebPCoder iOS標準のImageIOフレー…
2ヶ月前
記事のアイキャッチ画像
iOSDC Japan 2024のセッションを振り返る社内勉強会を開催しました!
Mirrativ Tech Blog
こんにちは!iOSエンジニアのmuneです。 今回は、2024年8月22日(木)〜8月24日(土)に開催されました iOSDC Japan 2024 について、セッション内容を振り返る勉強会を社内で開催いたしましたので、その様子をご紹介します! ミラティブはiOSDC Japan 2024をスポンサーとして協賛しております。 tech.mirrativ.stream 勉強会の前に:会場でのエピソード 今年のiOSDCからはスポンサーブースを楽しく回れるようスタンプ形式のビンゴの取り組みが行われていました。 弊社メンバーもスタンプを押してもらいながら気軽にスポンサーブースに立ち寄れるのでとても良…
2ヶ月前
記事のアイキャッチ画像
DroidKaigi 2024 参加レポート
Mirrativ Tech Blog
Androidエンジニアの北川と藤原です。9月11日〜13日に開催された DroidKaigi 2024 に参加してきました! 3日間濃密な時間を過ごしてきましたので、その内容をレポートします。 ミラティブは 2022 年から DroidKaigi に協賛しており、今年で3年目を迎えます。 tech.mirrativ.stream Workshop Day 1日目は、JetBrainsのSebastian Aignerさんによるワークショップ「From 0 to 100 with Kotlin and Compose Multiplatform」が開催されました。 github.com こちら…
3ヶ月前
記事のアイキャッチ画像
【ミラティブ】DroidKaigi 2024 にスポンサーとして協賛します
Mirrativ Tech Blog
こんにちは、ミラティブの野呂です。 ミラティブは、2024年9月11日(水)〜13(金)の3日間にかけて開催される、「DroidKaigi 2024」に協賛します。 DroidKaigi とは 「DroidKaigi」は、Android技術情報の共有とコミュニケーションを目的に開催される、エンジニアが主役のAndroidカンファレンスです。 2024.droidkaigi.jp 協賛する背景 ミラティブは、ミッションである「わかりあう願いをつなごう」のもと、ゲーム配信プラットフォーム「Mirrativ」を運営しています。 ミラティブは「Mirrativ Tech Community & Act…
4ヶ月前
記事のアイキャッチ画像
メンバーの「スキ」をわかりあいたい!フロントエンドのLT会を開催しました
Mirrativ Tech Blog
こんにちは!フロントエンドエンジニアの どじねこ です。 今回は少し前となりますが 2024年5月に社内で開催したLT会についてご紹介したいと思います。 よろしければ先日公開されました「iOS・Android 合同のLT大会を開催しました!」も合わせてご覧ください tech.mirrativ.stream
4ヶ月前
記事のアイキャッチ画像
iOS・Android 合同のLT大会を開催しました!
Mirrativ Tech Blog
こんにちは!Androidエンジニアの kitakkun です。 今回は、7月半ばに社内で実施した iOS・Android 合同のLT大会についてご紹介します。 モバイルエンジニアの社内勉強会事情 ミラティブでは、Androidチーム・iOSチーム双方が定期的に社内勉強会を実施しています(執筆時点ではAndroid隔週・iOS毎週)。 イベントのセッション動画を見たり、技術系記事の読み合わせをし、チームの方針決めや知見を広げるための時間として使っています。 例えば直近 Android チームでは、Kotlin Conf 2024 の「Guide to Improving Compose Per…
4ヶ月前
記事のアイキャッチ画像
【ミラティブ】iOSDC Japan 2024 にスポンサーとして協賛します
Mirrativ Tech Blog
こんにちは、ミラティブの野呂です。 ミラティブは、2024年8月22日(木)〜8月24日(土)に早稲田大学理工学部西早稲田キャンパス+ニコニコ生放送で開催される iOSDC Japan 2024 にスポンサーとして協賛させていただきます! iOSDC Japan 2024 については以下公式サイトをご覧ください。 iosdc.jp 協賛する背景 ミラティブは、ミッションである「わかりあう願いをつなごう」のもと、ゲーム配信プラットフォーム「Mirrativ」を運営しています。 ミラティブは「Mirrativ Tech Community & Activity Policy」を掲げ、エンジニアの社…
5ヶ月前
記事のアイキャッチ画像
ログ基盤のFluentdをFluent Bitに移行して監視ツールを実装した話
Mirrativ Tech Blog
はじめまして、Azuma(@azuma_alvin)です。現在大学院の1年生で、2024年2月から4ヶ月間ミラティブのインフラチームにインターンとして参加しました。普段はインフラやMLOpsといった領域に興味があり、最近はVim環境の整備がマイブームです。 本記事では、ログ基盤をFluentdからFluent Bitへ部分移行した経緯とその2種類の監視ツールの実装についてお話しします。 記事の最後に、インターンから見たインフラチームの特徴と私が4ヶ月間で学んだことを紹介しています。興味がある方は末尾までスクロールしてぜひご覧ください。 1. 背景と目的 2. ミラティブのログ基盤について 3.…
6ヶ月前
記事のアイキャッチ画像
AddressableによりWebGLゲームのクラッシュ率が改善した話
Mirrativ Tech Blog
こんにちは、ミラティブ菅谷です。MirrativのWebGL製ライブゲームにて、アセットのロード方法をインスペクタでの直接参照からAddressable Asset System(以下Addressable)に変更したことで、クラッシュ率が大幅に改善し、クラッシュせずにプレイが終了した「正常プレイ率」は98%まで改善しました。本記事では、その具体的な手順と効果について紹介します。 課題背景 MirrativのライブゲームはWebGLで動いていますが、特にモバイルのWebGLではパフォーマンスに気をつける必要があります。今回改善を行ったプロジェクトではもともとAddressableを使用していま…
7ヶ月前
記事のアイキャッチ画像
Kotlin Fest 2024 にミラティブのAndroidエンジニアが登壇します!
Mirrativ Tech Blog
こんにちは!Androidエンジニアの kitakkun(@kitakkun_pb)です。 6月22日 開催の Kotlin Fest 2024 にて、ミラティブから私が登壇します! www.kotlinfest.dev 登壇内容 ロング(40分) 2024/06/22 14:50〜 トラック2 もっとKotlinを好きになる!K2時代のKotlin Compiler Plugin開発 by kitakkun fortee.jp 本セッションでは、Kotlin Compiler Pluginの仕組みやその開発方法に興味をお持ちの方を対象として、 Kotlin Compilerの基礎知識、各種C…
7ヶ月前
記事のアイキャッチ画像
memcached proxyで使うハッシュアルゴリズムを比較した話
Mirrativ Tech Blog
memcached proxyのハッシュアルゴリズム比較 はじめまして!hibikiです(@add_bakkers) 現在大学3年生で、最近はネットワークに興味があり勉強中です。2023年8月からインフラチームにインターンとして参加しました。 本記事ではmemcached proxyのハッシュアルゴリズム比較の結果を紹介します。 memcached proxyのハッシュアルゴリズム比較 1. 背景と目的 ミラティブでのmemcachedの利用 課題: クライアントサイドでサーバ決定をしている memcached proxyの検討 2. memcached proxyに求められるアルゴリズム キ…
7ヶ月前
記事のアイキャッチ画像
CLIツールの管理をSPMからMintに移行した経緯とその課題
Mirrativ Tech Blog
はじめに お久しぶりです、iOSチームにインターンとして参加させて頂いておりますMと申します。 MirrativのiOSアプリでは、これまでSwift製のCLIツールをBuildToolsという名前のSwift Packageを作成してこれにまとめて管理していました。 しかしこの度、ある課題や利便性の観点からyonaskolb/Mintでの管理に移行しました。 今回はMintへの移行に至るまでの背景や経緯、および移行に際して起こったいくつかの課題をどのように解決したかについて書いていこうと思います。 目次 はじめに 目次 Mintへの移行に至る背景 CLIツールの利用 SPMによる管理における…
7ヶ月前
記事のアイキャッチ画像
【ミラティブ】Go Conference 2024 にスポンサーとして協賛します
Mirrativ Tech Blog
こんにちは、ミラティブの野呂です。 ミラティブは、2024年6月8日(土)にAbema Towersで開催される Go Conference 2024 に協賛させていただきます! Go Conference 2024については以下公式サイトをご覧ください。 gocon.jp 協賛する背景 ミラティブはミッションである「わかりあう願いをつなごう」のもとゲーム配信プラットフォーム「Mirrativ(ミラティブ)」を運営しています。 そして「Mirrativ Tech Community & Activity Policy」を掲げ、ミラティブエンジニアの社内外への発信を強く奨励しています。 ミラティ…
8ヶ月前
記事のアイキャッチ画像
PerlからGoへのシステム移行のアシスト 〜Perl XSとUnix Domain Socketを活用〜
Mirrativ Tech Blog
こんにちは ハタ です。 Mirrativ では 2020年頃から サーバサイドの技術をPerlからGoへのシステム移行 を行っており、2024年現在でもサグラダファミリアのように移行作業は継続しています PerlとGoという2つの環境を同時に運用していますが、 基本的には 新機能は Go で実装 し、 Perlでは積極的に新規実装を行わない というスタイルで進めていました しかし、既存の機能の一部に手を加えたいとなった場合、まだまだ Perl の実装に手を加えることが一定あり、Perl から Go の機能を呼び出したいというニーズが出てきました (配信やギフトといったビジネスの根幹を支えるレ…
8ヶ月前
記事のアイキャッチ画像
SwiftGenとSwift-DocCを活用してコード上の画像を一瞬でプレビューする方法
Mirrativ Tech Blog
こんにちはiOS開発をしている福山です。 この記事では、SwiftGenとSwift-DocCを用いて、xcassetsを開かずにコード内の画像をQuick Help(右パネルまたは⌥オプションキー+クリック)で直接確認する方法を紹介します。 各ツールの簡単な説明 Swift-DocCは、Swift言語用のドキュメント生成ツールです。Swiftコード内に書かれたコメントから、ナビゲーションが容易で、見た目も美しいドキュメントを生成することができます。 SwiftGenは、Xcodeプロジェクトで使われるリソース(画像、フォント、色、ローカライズなど)を静的に型付けされたSwiftコードに変換す…
9ヶ月前
記事のアイキャッチ画像
モバイルアプリ上の WebAssembly 製ライブゲームで発生した例外を捕捉して計測する
Mirrativ Tech Blog
こんにちは、エンジニアのちぎら(@_naru_jpn)です。ミラティブでは、配信中のゲームに視聴者が介入できるゲームとライブ配信が融合した次世代のゲーム体験を提供しており、この体験を ライブゲーミング と呼んでいます。 ライブゲーミングは、Unity から WebGL 向けにビルドされた WebAssembly 製のゲームを、アプリに配置したウェブブラウザ上で動作させることによって実現しています。*1 今回は UnityでモバイルWebGLゲーム開発を頑張る話 の「メモリリークによって発生するクラッシュ」にも書かれているような、捕捉は難しいがユーザー影響があるような例外の発生を捕捉して、計測を…
10ヶ月前
記事のアイキャッチ画像
Neural Audio Codec を用いた大規模配信文字起こしシステムの構築
Mirrativ Tech Blog
こんにちは ハタ です。 最近Mirrativ上に構築した配信の文字起こしシステムを紹介したいなと思います 音声からの文字起こしは、各社SaaSでAPI提供されているものがあると思いますが、今回紹介するものはセルフホスト型(自前のGPUマシンを使う)になります 構築していく上で色々試行錯誤したのでそれが紹介できればなと思っています どんなものを作ったか 前提知識: 配信基盤 前提知識: Unix Domain Socket Live Recorder Archiver DS Filter VAD Filter NAC / Compress Transcriber NAC / Decompres…
10ヶ月前
記事のアイキャッチ画像
Cloud BuildでDockerのマルチプラットフォームイメージをビルド
Mirrativ Tech Blog
こんにちは、バックエンドエンジニアの藤井脩紀です。 今回は表題の通りCloud Buildを活用してDockerのマルチプラットフォームイメージをビルドする方法をご紹介しようと思います。 マルチプラットフォーム is 何 まず、マルチプラットフォームイメージとは何かから説明すると、複数のCPUアーキテクチャやOSに対応したイメージのことです。 より具体的にはDockerの公式ドキュメントとブログが参考になるかと思いますので挙げておきます。 Multi-platform images | Docker Docs マルチプラットフォームドッカービルド | Docker 動機 そしてマルチプラットフ…
10ヶ月前
記事のアイキャッチ画像
input type=“date” の沼から、ライブラリを導入する意義を考える
Mirrativ Tech Blog
はじめまして!2023年7月からミラティブでフロントエンドインターンをしております、かずえもんと申します😺 今回は、インターンでの作業中にハマってしまった Safari のバグについて調査していたら、なんと10年モノの issue だったことが判明し、ライブラリを導入する意義について考える機会となった話を書いてみたいと思います。 Safari の日付入力欄に無効な日付を入れると起こるバグ onChange が正しく呼ばれないのは Safari が原因? Safari 17 以降で再現しないので原因は Safari で間違いなさそう Safari 17 以前での解決方法として DatePicke…
10ヶ月前
記事のアイキャッチ画像
ミラティブCTO交代の挨拶
Mirrativ Tech Blog
みなさまこんにちは、ちぎら @naru_jpn とよこて @n0mimono です。noteの方に対談を掲載していますが、テックブログのほうでも記事を書いてみようと思います。社内外の多くの方に読んでいただければ幸いです。 note.com prtimes.jp CTOを交代しました! 今のCTOより こんにちは、ミラティブ3代目CTOの千吉良(ちぎら)です。プレスリリースにあるように2024年1月よりCTOに就任しました、よろしくお願いいたします。 夏さん、横手さんと組織の中でCTOの移り変わりを眺めていて自分がその立場になるとは夢にも思わず生活をしていた訳ですが、せっかく挑戦する機会をいただ…
1年前
記事のアイキャッチ画像
iOSプロジェクトに対してモジュール分割しながらSwiftUIを部分適用している事例
Mirrativ Tech Blog
こんにちは、クライアントエンジニアの竹澤(@to4iki)です。 MirrativのiOSチームでは、開発効率の最大化を狙い以下に取り組んでいます。 データフローの単方向化 (Fluxアーキテクチャの強制) 宣言的UIによるView実装 (SwiftUIの部分適用) 責務分割 (モジュール分割) 今回の記事では、どのような構成でSwiftUIを適用し始めたか、また、MirrativのiOSプロジェクトの構成やプロダクト特性の課題感からセットでモジュール分割を進めている点を紹介します。 背景 前提となるプロジェクト構成 導入に向けて決めたこと SwiftUIでどこまで実装するか 本体アプリではな…
1年前
記事のアイキャッチ画像
UnityチームでGodot勉強会をしました
Mirrativ Tech Blog
こんにちは、ミラティブ菅谷です。ミラティブではUnityチームで定期的に勉強会を行っています。今回はその取り組みの一つとして行ったGodot勉強会について紹介します。Unityエンジニアから見たGodotの特徴や触ってみての感想を記載しました。 背景:Unityライセンス体系の変更 2023年9月、Unityはライセンス体系の変更を発表しました。この変更は、多くのUnityユーザーに影響を与え、さまざまなゲームエンジンに関する議論を促しました。ミラティブのUnityチームもこの動きに注目し、ゲームエンジンの多様化に関する議論を行いました。最終的にライセンス体系は再変更されたため、ミラティブでも…
1年前
記事のアイキャッチ画像
クラウドネイティブなVPNを構築して運用している話
Mirrativ Tech Blog
インフラストリーミングチームの近藤(@udzura)です。 今日は、ミラティブ社内向けツールの話をします。ミラティブではVPNの仕組みをクラウドをフル活用して自前で構築し、1年ほど運用しています。運用中にいろいろ課題はありつつ、現在かなり安定して動作してます。 今回の記事は、そのVPNの仕組みを紹介します。 既存VPNの課題 災害時に稼働できないリスクを避けたい どこに誰がアクセスできるか楽に管理したい 新しいVPNをハッカソンで開発した話 新VPNの設計思想 災害時でも稼働できる どこに誰がアクセスできるか管理できる 攻撃時の影響を限定する 12時間でインスタンスを停止する クラウドネイティ…
1年前
記事のアイキャッチ画像
サービスの管理画面を継続的に改善するためのReact Hook FormとZod活用術
Mirrativ Tech Blog
こんにちは!ミラティブのフロントエンドエンジニア どじねこ です。 今回は、ミラティブを支える社内向けの管理システムにおいて、機能開発の体験を改善する取り組みを「MUI と Zod、React Hook Form の活用術」としてご紹介させていただきます。 前提 ミラティブでは、他の多くの Web サービスと同様に配信者さんの登録した情報や配信の履歴を管理する社内向けのシステムが存在しています。 特に管理システムのフロントエンドにおいては、その特性上入力フォームの実装がその大半を占めています。 日々の機能開発においては、そうした管理システムに実装された入力フォームの新規実装や機能拡張が行われて…
1年前