Mirrativ Tech Blog

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

DroidKaigi 2024 参加レポート

Androidエンジニアの北川と藤原です。9月11日〜13日に開催された DroidKaigi 2024 に参加してきました! 3日間濃密な時間を過ごしてきましたので、その内容をレポートします。 ミラティブは 2022 年から DroidKaigi に協賛しており、今年で3年目を迎えます。…

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

こんにちは、ミラティブの野呂です。 ミラティブは、2024年9月11日(水)〜13(金)の3日間にかけて開催される、「DroidKaigi 2024」に協賛します。 DroidKaigi とは 「DroidKaigi」は、Android技術情報の共有とコミュニケーションを目的に開催される、エンジニ…

メンバーの「スキ」をわかりあいたい!フロントエンドのLT会を開催しました

こんにちは!フロントエンドエンジニアの どじねこ です。 今回は少し前となりますが 2024年5月に社内で開催したLT会についてご紹介したいと思います。 よろしければ先日公開されました「iOS・Android 合同のLT大会を開催しました!」も合わせてご覧ください…

iOS・Android 合同のLT大会を開催しました!

こんにちは!Androidエンジニアの kitakkun です。 今回は、7月半ばに社内で実施した iOS・Android 合同のLT大会についてご紹介します。 モバイルエンジニアの社内勉強会事情 ミラティブでは、Androidチーム・iOSチーム双方が定期的に社内勉強会を実施してい…

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

こんにちは、ミラティブの野呂です。 ミラティブは、2024年8月22日(木)〜8月24日(土)に早稲田大学理工学部西早稲田キャンパス+ニコニコ生放送で開催される iOSDC Japan 2024 にスポンサーとして協賛させていただきます! iOSDC Japan 2024 については以下公…

ログ基盤のFluentdをFluent Bitに移行して監視ツールを実装した話

はじめまして、Azuma(@azuma_alvin)です。現在大学院の1年生で、2024年2月から4ヶ月間ミラティブのインフラチームにインターンとして参加しました。普段はインフラやMLOpsといった領域に興味があり、最近はVim環境の整備がマイブームです。 本記事では、ロ…

AddressableによりWebGLゲームのクラッシュ率が改善した話

こんにちは、ミラティブ菅谷です。MirrativのWebGL製ライブゲームにて、アセットのロード方法をインスペクタでの直接参照からAddressable Asset System(以下Addressable)に変更したことで、クラッシュ率が大幅に改善し、クラッシュせずにプレイが終了した…

Kotlin Fest 2024 にミラティブのAndroidエンジニアが登壇します!

こんにちは!Androidエンジニアの kitakkun(@kitakkun_pb)です。 6月22日 開催の Kotlin Fest 2024 にて、ミラティブから私が登壇します! www.kotlinfest.dev 登壇内容 ロング(40分) 2024/06/22 14:50〜 トラック2 もっとKotlinを好きになる!K2時代のKot…

memcached proxyで使うハッシュアルゴリズムを比較した話

memcached proxyのハッシュアルゴリズム比較 はじめまして!hibikiです(@add_bakkers) 現在大学3年生で、最近はネットワークに興味があり勉強中です。2023年8月からインフラチームにインターンとして参加しました。 本記事ではmemcached proxyのハッシュアル…

CLIツールの管理をSPMからMintに移行した経緯とその課題

はじめに お久しぶりです、iOSチームにインターンとして参加させて頂いておりますMと申します。 MirrativのiOSアプリでは、これまでSwift製のCLIツールをBuildToolsという名前のSwift Packageを作成してこれにまとめて管理していました。 しかしこの度、ある…

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

こんにちは、ミラティブの野呂です。 ミラティブは、2024年6月8日(土)にAbema Towersで開催される Go Conference 2024 に協賛させていただきます! Go Conference 2024については以下公式サイトをご覧ください。 gocon.jp 協賛する背景 ミラティブはミッショ…

PerlからGoへのシステム移行のアシスト 〜Perl XSとUnix Domain Socketを活用〜

こんにちは ハタ です。 Mirrativ では 2020年頃から サーバサイドの技術をPerlからGoへのシステム移行 を行っており、2024年現在でもサグラダファミリアのように移行作業は継続しています PerlとGoという2つの環境を同時に運用していますが、 基本的には 新…

SwiftGenとSwift-DocCを活用してコード上の画像を一瞬でプレビューする方法

こんにちはiOS開発をしている福山です。 この記事では、SwiftGenとSwift-DocCを用いて、xcassetsを開かずにコード内の画像をQuick Help(右パネルまたは⌥オプションキー+クリック)で直接確認する方法を紹介します。 各ツールの簡単な説明 Swift-DocCは、Swi…

モバイルアプリ上の WebAssembly 製ライブゲームで発生した例外を捕捉して計測する

こんにちは、エンジニアのちぎら(@_naru_jpn)です。ミラティブでは、配信中のゲームに視聴者が介入できるゲームとライブ配信が融合した次世代のゲーム体験を提供しており、この体験を ライブゲーミング と呼んでいます。 ライブゲーミングは、Unity から Web…

Neural Audio Codec を用いた大規模配信文字起こしシステムの構築

こんにちは ハタ です。 最近Mirrativ上に構築した配信の文字起こしシステムを紹介したいなと思います 音声からの文字起こしは、各社SaaSでAPI提供されているものがあると思いますが、今回紹介するものはセルフホスト型(自前のGPUマシンを使う)になります 構…

Cloud BuildでDockerのマルチプラットフォームイメージをビルド

こんにちは、バックエンドエンジニアの藤井脩紀です。 今回は表題の通りCloud Buildを活用してDockerのマルチプラットフォームイメージをビルドする方法をご紹介しようと思います。 マルチプラットフォーム is 何 まず、マルチプラットフォームイメージとは…

input type=“date” の沼から、ライブラリを導入する意義を考える

はじめまして!2023年7月からミラティブでフロントエンドインターンをしております、かずえもんと申します 今回は、インターンでの作業中にハマってしまった Safari のバグについて調査していたら、なんと10年モノの issue だったことが判明し、ライブラリを…

ミラティブCTO交代の挨拶

みなさまこんにちは、ちぎら @naru_jpn とよこて @n0mimono です。noteの方に対談を掲載していますが、テックブログのほうでも記事を書いてみようと思います。社内外の多くの方に読んでいただければ幸いです。 note.com prtimes.jp CTOを交代しました! 今の…

iOSプロジェクトに対してモジュール分割しながらSwiftUIを部分適用している事例

iOS

こんにちは、クライアントエンジニアの竹澤(@to4iki)です。 MirrativのiOSチームでは、開発効率の最大化を狙い以下に取り組んでいます。 データフローの単方向化 (Fluxアーキテクチャの強制) 宣言的UIによるView実装 (SwiftUIの部分適用) 責務分割 (モジュー…

UnityチームでGodot勉強会をしました

こんにちは、ミラティブ菅谷です。ミラティブではUnityチームで定期的に勉強会を行っています。今回はその取り組みの一つとして行ったGodot勉強会について紹介します。Unityエンジニアから見たGodotの特徴や触ってみての感想を記載しました。 背景:Unityラ…

クラウドネイティブなVPNを構築して運用している話

インフラストリーミングチームの近藤(@udzura)です。 今日は、ミラティブ社内向けツールの話をします。ミラティブではVPNの仕組みをクラウドをフル活用して自前で構築し、1年ほど運用しています。運用中にいろいろ課題はありつつ、現在かなり安定して動作…

サービスの管理画面を継続的に改善するためのReact Hook FormとZod活用術

こんにちは!ミラティブのフロントエンドエンジニア どじねこ です。 今回は、ミラティブを支える社内向けの管理システムにおいて、機能開発の体験を改善する取り組みを「MUI と Zod、React Hook Form の活用術」としてご紹介させていただきます。 前提 ミラ…

インターン中、タスクに付随する予想外のエラーと戦った話

初めまして。9月から10月にかけて、インターンとしてミラティブのバックエンド基盤に関わっていた、logicaと申します。 今回は、期間中に扱っていたある1つのタスクにフォーカスしながら、インターンを振り返りたいと思います。 割り当てられたタスク 背景 …

【Go】time.Time.AddDateの注意点と対策

こんにちは、バックエンドエンジニアの藤井脩紀です。 今回の記事では日付計算に潜む罠についてお話しさせていただきます。 なお今回はGoでの事例をご紹介しますが、原理的には他の言語やライブラリでも同様の事象が発生する可能性があります点にご注意くだ…

内製オブジェクトストレージサーバ「b3」でコスト最適化を目指した話

ミラティブで内製しているオブジェクトストレージサーバ「b3」の紹介記事を書きたいと思います。 今回の記事は、6月にGopher Talkというイベントで発表した「Go製ミドルウェアを実践投入するにあたりやったこと」をベースに、内容を詳細にしたり直近の開発状…

SwiftyJSONからDecodableへ移行する際に気をつけてよかったこと

こんにちは、iOSエンジニアのいっちー(icchi (@0IcchI) / X)です。 MirrativのiOSアプリでは4年ほど前にレスポンスパラメータとレスポンスクラスのマッピングにDecodableを採用したAPIクライアントを作成し運用してきました。 新規の実装ではDecodable対応の…

【インフラ】xDS API の EDS に手を加えて動的に Envoy で weight 調整できるようにした

こんにちは、ミラティブのインフラを担当している清水です。 ミラティブではクラウドに Google Cloud を利用しているのですが、稀にインスタンスの性能劣化が発生し動かしているアプリケーションの応答時間が長くなることがあります。 非同期な処理の場合は…

DroidKaigi 2023に参加しました!

こんにちは。Androidエンジニアの北川と久賀です。去年に続き、今年も参加させていただきました!今年は2人とも3日間フルで参加し、本記事ではそこで経験したこと、学んだことを紹介いたします。 DroidKaigi2023について 2023.droidkaigi.jp 去年の記事はこ…

ミラティブでのアウトゲーム設計の紹介

こんにちは。ミラティブUnityエンジニアの菅谷(tetsujp84)です。 今回はミラティブのライブゲーム開発で行ったアウトゲームの設計について紹介します。 以前アウトゲーム設計に関してXでポストしたらレスポンスをいただけたのでできるだけ丁寧に解説してみま…

Mirrativ iOSアプリでのメモリ使用量削減への取り組み

こんにちは、iOSエンジニアのふじのです。 Mirrativの機能開発を進める傍ら、iOSアプリのメモリ使用量の改善に取り組んでいます。 今回は、アプリ内でメモリ使用量を増やしている問題点を見つける方法と、それらをクライアント実装で解決する具体的なアプロ…