Mirrativ Tech Blog

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

2023-01-01から1年間の記事一覧

クラウドネイティブな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アプリのメモリ使用量の改善に取り組んでいます。 今回は、アプリ内でメモリ使用量を増やしている問題点を見つける方法と、それらをクライアント実装で解決する具体的なアプロ…

GitHub APIを利用したスケーラブルなマスターデータ管理システム

こんにちは、バックエンド基盤チームマネージャーの夏(なつ)と申します。ミラティブの基盤チームはユーザが直接触れる機能よりかは、開発者や会社全体の生産性を向上させるためにエンジニア主導で課題を発見・解決している部署です。 今回は基盤チームが主…

UnityでモバイルWebGLゲーム開発を頑張る話

こんにちは。ミラティブUnityエンジニアの菅谷(tetsujp84)です。 ミラティブのライブゲームはUnityで開発し、MirrativアプリのWebGLで動いています。 ライブゲームを支える仕組みと実際のライブゲーム開発で使用した技術については過去の記事で紹介していま…

あてっこ!ぷにまるずで利用したVisualScriptingとデザイナーフレンドリーな開発

皆さんこんにちは。Unityエンジニアのおはぎです。 ミラティブでは先日「あてっこ!ぷにまるず」(以下ぷにまるず)というライブゲームをリリースしました。 使っている技術については以下の記事に概要が書かれています。 tech.mirrativ.stream 本稿ではその…

【Go/GCP】ライブゲーム「あてっこ!ぷにまるず」を支えるバックエンド技術

ライブゲーム「あてっこ!ぷにまるず」のバックエンド技術について紹介します。

あてっこ!ぷにまるずを支える技術紹介 〜モバイルWebGLの開発事例〜

Unityエンジニアのいも(@adarapata)です。 みなさんはUnityでWebGLプラットフォーム開発していますか? ミラティブでは先日「あてっこ!ぷにまるず」というライブゲームをリリースしました。 これはモバイルブラウザで動くWebGLです。 PCブラウザ想定のWebGL…

Unityチームでの輪読会の取り組み紹介とUniRx/UniTaskクイズ

こんにちは。ミラティブUnityエンジニアの菅谷(tetsujp84)です。Unityチームの一員として、私たちが週に1時間を費やして行っている輪読会について紹介したいと思います。輪読会では、チーム内で読む本を都度決め、それを読み進めていきます。これまでにはパ…

iOSプロジェクト内の神クラス解体の進め方

iOS

こんにちは、クライアントエンジニアの竹澤(@to4iki)です。 Mirrativでは、リアルタイムの配信視聴時のコメントやギフト機能を実現するために、WebSocket ベースの仕組みを利用して、サーバー・クライアント間でPub/Subのメッセージングを行っています。*1 …

Flipperを使ったiOSアプリの開発体験向上&iOSエンジニア目線でのミラティブ社の魅力について

iOS

はじめに 初めまして!Mと申します。 私は、2022年8月中旬より現在まで、iOSチームでインターンとして参加させて頂いています。 (実はこのミラティブのTechブログを読んだことがきっかけで、インターンに参加することになりました) これまでの期間、特に私…

Go Conference 2023 にて Go/Cgoで映像・音声のリアルタイム処理をやるまでの道のり というタイトルでお話してきました

こんにちは ハタ です。 このたび Go Conference 2023 Online にて Go/Cgoで映像・音声のリアルタイム処理をやるまでの道のり というタイトルで発表しました 久しぶりの大きなカンファレンスでの登壇だったのでとても緊張しましたが、10周年を迎えた機会に登…

新しいUnity AnalyticsとUnity Cloud Diagnosticsの紹介と使い方

こんにちは。ミラティブUnityエンジニアの菅谷です。今回はUnityのサービスであるUnity AnalyticsとUnity Cloud Diagnosticsについて紹介します。2つのサービスはゲーム開発者がゲームのパフォーマンスを追跡し、ユーザーエクスペリエンスを改善するための強…

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

こんにちは、ミラティブの野呂です。 2023年6月2日(金)に開催される Go Conference 2023にて、ミラティブから2名のエンジニアが登壇します。さらに、ミラティブもスポンサーとして協賛をさせていただきます! Go Conference 2023については以下公式サイトを…

iOSの音声読み上げ時のメモリ消費量について

iOS

こんにちはミラティブ2年目突入の福山です。 今回は、ユーザーが追加でインストール可能な拡張版の読み上げ音声がiOS 16で多くのメモリを消費するということがわかったので、ライブ配信用のアプリ拡張内で対策を行いました。 メモリ使用量50MB制限 Mirrativ…

LeSS Huge を参考にしたスクラムのスケーリング

こんにちは、エンジニアのちぎらです。先日 開発組織にはじめてのスクラムを導入する という記事を公開しました。先日の記事にも課題として記述した通り、組織の一つのチームにスクラムを導入した後は、他のチームにどのようにスクラムを展開していくか、全…

Jetpack ComposeにおけるViewの多重タップ、複数同時タップの防止策

こんにちは。ミラティブのAndroidエンジニアのかねき@kanesyです。 以前の記事でも何度か紹介していますが、MirrativのAndroidアプリでは新規で作る画面には積極的にJetpack Composeを活用しています。 tech.mirrativ.stream Jetpack Composeでの開発が活発…

24年新卒から次の新卒に伝えたい、ミラティブに感じた技術的な面白さ

前書き 初めまして。山倉拓也と申します。 私は2022年9月26日から現在(2023年3月)まで、株式会社ミラティブの基盤開発部でインターンをさせていただいており、2024年度に正社員として入社する予定です。この記事では、私が具体的にミラティブで今までにどん…

SDWebImage起因のクラッシュを解消した話と学び

iOS

こんにちは、iOSエンジニアのいっちー(@0IcchI)です。 最近はインターン終了を迎えるなか、引越しや卒業などでバタバタしており、若かりし頃の自分が広げまくった風呂敷をやっと畳んでるような気がしてます。 ...これからシェアハウスなどを始めるので、まだ…

CI/CD Conference 2023 に参加し、ミラティブのCI基盤移行について発表しました

インフラ・ストリーミングチームの @udzura です。 3月20日、私は日比谷国際ビルのコンファレンススクエアで開催されたCI/CD Conference 2023に参加しました。 event.cloudnativedays.jp このカンファレンスにてミラティブにおけるCI基盤の移行についての事…

MirrativにおけるUnityのWebGLを用いたライブゲームの仕組み

はじめに 2022年のCEDECで講演した内容の詳細について解説します。特に、UnityのWebGLを用いたライブゲームの仕組みに焦点を当てて紹介します。 tech.mirrativ.stream WebGL技術を活用したライブゲーム ライブゲームには、WebGLの技術が使用されています。Un…

【ミラティブ】CI/CD Conference 2023 に登壇 & スポンサーとして協賛します

こんにちは、ミラティブの野呂です。 いよいよ来週開催される CI/CD Conference 2023 by CloudNative Days にて、ミラティブから近藤(@udzura)が登壇します。さらに、ミラティブもスポンサーとして協賛をさせていただきます! CI/CD Conference 2023につい…

【Android】Jetpack ComposeでCanvasを使って凝ったUIを表現しよう

こんにちは Androidエンジニアのなかむらです。 ミラティブでリリースされた視聴ミッションの実装に関してお話ししていこうと思います。 視聴ミッションは視聴開始直後からメーターが進み始めるという機能です。 このメーターをかっこよく表現したいよねとい…