タグ

big5のブックマーク (237)

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

    環境 改善前 改善前計測 untrackedcacheを使った高速化 file system monitorを使った高速化 サブモジュールをオフにして高速化 Appendix: Gitバージョンアップ実験結果 まとめ We are hiring! こんにちは。バックエンドエンジニアのshirakawaxです。 Mirrativのバックエンドリポジトリのgit statusが遅かったので1.941秒 → 0.173秒に改善した話を書きます。 環境 Apple M1 Max メモリ 64 GB macOS Sonoma 14.4 $ git -v git version 2.39.3 (Apple Git-146) 改善前 私の環境では改善前のgit statusは1.941秒かかっていました。 頻繁に実行するコマンドではないですが、若干ストレスになっていました。 $ time git sta

    時間がかかっていた git status を Trace2 で計測しながら10倍速くした話 - Mirrativ Tech Blog
    big5
    big5 2025/02/28
  • MemoryPackでゲームのリプレイデータを作った話 - Mirrativ Tech Blog

    こんにちは、Unityエンジニアのいも(@adarapata)です。 今回は、ミラティブのライブゲーム「スラポンコロシアム」で活用しているリプレイデータについてMemoryPackを使って作成した話をします。 スラポンコロシアムとは スラポンコロシアム(スラコロ)はMirrativアプリ上で動作するライブゲームです。 他のライブゲームにも登場するスラポンなどのモンスターたちが戦う闘技場で、誰が最後まで生き残るかを予想するゲームです。 視聴者も配信者も一緒になって遊べるのが特徴です。 【1/23 ~ 1/30】 //#スラコロ Vol.35 開幕💃⁾⁾ \\ 💥新モード💥 🎶🪩パーリーチャンス🪩🎶が登場🕺 ◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤ 1位🥇2位🥈を当てて🎯 メダルを大量GET🎰💫 そして🤩 ˗ˏˋ✨DJベルチャ🎧がペットに✨ˎˊ˗ 獲得メダル🪙250

    MemoryPackでゲームのリプレイデータを作った話 - Mirrativ Tech Blog
    big5
    big5 2025/01/31
  • 【Swift 6移行】サードパーティのClosureのSendable関連エラーを回避する - Mirrativ Tech Blog

    iOS開発の福山です。 現在Mirrativ iOSではSwift 6への移行を段階的に行なっています。その中でSwift 6に対応していないサードパーティライブラリに関連する問題にぶつかったため、その回避策を紹介します。 問題 open class Some3rdPartyClass { // サードパーティのライブラリなので変更が容易ではない open func doSomething(completion: @escaping (Bool) -> Void) { } } // ------------------------- final class SomeSubclass: Some3rdPartyClass { override func doSomething(completion: @escaping (Bool) -> Void) { // error: // Passi

    【Swift 6移行】サードパーティのClosureのSendable関連エラーを回避する - Mirrativ Tech Blog
    big5
    big5 2025/01/08
  • 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 の途中のバージョンでも変化したという点に注意です。 公式のソースはこちらになります android-developers.googleblog.com 今回はこちらの変更点について紹介したいと思います。 異なる点 以下はスクリーンキャプチャを開始する際の Android

    Media Projection API の Android 14 QPR2 での変更点 - Mirrativ Tech Blog
    big5
    big5 2024/12/24
  • Media Projection APIを使用した簡単なアプリを作成する - Mirrativ Tech Blog

    はじめに こんにちは、Androidエンジニアの菅沼です。 ミラティブは Android 5.0 (API Level 21)から実装された Media Projection API を使用して画面をキャプチャしてサーバーに送り、それを視聴者さんに映像として配信することでアプリを実現しています。 今回は画面をキャプチャする部分にフォーカスし、配信はせず画面をそのまま端末上で表示するだけのシンプルな実装を行う方法を紹介させていただこうと思います。 Media Projection API の公式のドキュメントはこちらにあります。 developer.android.com 順を追って実装してみる View を用意する まずは AndroidEmbeddedExternalSurface と Button をColumn で並べてみました。 AndroidEmbeddedExternalSur

    Media Projection APIを使用した簡単なアプリを作成する - Mirrativ Tech Blog
    big5
    big5 2024/12/23
  • Identity-Aware Proxy(IAP)を利用したローカル環境での開発体験の向上 - Mirrativ Tech Blog

    こんにちは、バックエンドのリードエンジニア兼バックエンド基盤チームのマネージャーの夏(なつ)と申します。バックエンド基盤チームは、バックエンドエンジニアの生産性向上やコスト削減を目的に、エンジニア主導で課題を発見・解決している部署です。 今回は基盤チームが行った、Google CloudのIdentity-Aware Proxy(IAP)を利用したローカル環境での開発体験の向上について紹介したいと思います。この改善により、ローカル環境(Mac)上でも開発環境のデータを参照しながら開発が行えるようになり、開発体験が大幅に向上しました。 背景 基盤チームでは定期的にバックエンドチームのメンバーに対して「開発者体験に関するアンケート」を実施しています。基盤チームにとっての直接のユーザはバックエンドメンバーであるため、生の声を聞くことで、現在解決しようとしている問題や開発リソースの配分、優先順位が

    Identity-Aware Proxy(IAP)を利用したローカル環境での開発体験の向上 - Mirrativ Tech Blog
    big5
    big5 2024/11/29
  • iOSDC Japan 2024のセッションを振り返る社内勉強会を開催しました! - Mirrativ Tech Blog

    こんにちは!iOSエンジニアのmuneです。 今回は、2024年8月22日(木)〜8月24日(土)に開催されました iOSDC Japan 2024 について、セッション内容を振り返る勉強会を社内で開催いたしましたので、その様子をご紹介します! ミラティブはiOSDC Japan 2024をスポンサーとして協賛しております。 tech.mirrativ.stream 勉強会の前に:会場でのエピソード 今年のiOSDCからはスポンサーブースを楽しく回れるようスタンプ形式のビンゴの取り組みが行われていました。 弊社メンバーもスタンプを押してもらいながら気軽にスポンサーブースに立ち寄れるのでとても良い取り組みだと感じたようです! いつか弊社でもブースを出してみたいと話していました。 また弊社インターンのメンバーは初めての現地参加だったそうで、 「実際にiOS界隈で有名な方と直接話すことができたり

    iOSDC Japan 2024のセッションを振り返る社内勉強会を開催しました! - Mirrativ Tech Blog
    big5
    big5 2024/10/30
  • 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 こちらは、Kotlin を活用したマルチプラットフォーム開発について、実際に手を動かしながら学ぶワークショップです。 前半は Kotlin Multiplatform、後半は Compose Multipl

    DroidKaigi 2024 参加レポート - Mirrativ Tech Blog
    big5
    big5 2024/09/27
  • 【ミラティブ】DroidKaigi 2024 にスポンサーとして協賛します - Mirrativ Tech Blog

    こんにちは、ミラティブの野呂です。 ミラティブは、2024年9月11日(水)〜13(金)の3日間にかけて開催される、「DroidKaigi 2024」に協賛します。 DroidKaigi とは 「DroidKaigi」は、Android技術情報の共有とコミュニケーションを目的に開催される、エンジニアが主役のAndroidカンファレンスです。 2024.droidkaigi.jp 協賛する背景 ミラティブは、ミッションである「わかりあう願いをつなごう」のもと、ゲーム配信プラットフォーム「Mirrativ」を運営しています。 ミラティブは「Mirrativ Tech Community & Activity Policy」を掲げ、エンジニアの社内外への発信を強く奨励しています。ミラティブのエンジニアは社外に対して積極的に発信し、イベントに参加し、OSSコミュニティに強く貢献しています。また、社

    【ミラティブ】DroidKaigi 2024 にスポンサーとして協賛します - Mirrativ Tech Blog
    big5
    big5 2024/09/10
  • メンバーの「スキ」をわかりあいたい!フロントエンドのLT会を開催しました - Mirrativ Tech Blog

    こんにちは!フロントエンドエンジニアの どじねこ です。 今回は少し前となりますが 2024年5月に社内で開催したLT会についてご紹介したいと思います。 よろしければ先日公開されました「iOS・Android 合同のLT大会を開催しました!」も合わせてご覧ください tech.mirrativ.stream ⛳️ LT会を開催した背景 ミラティブには多数のエンジニアが在籍しており、配信やライブゲームを楽しんでいただけるよう日々活動しています。メンバーの技術分野はバックエンド、フロントエンドUnity、インフラなど多岐にわたり、それぞれの専門性を活かして課題解決に取り組んでいます。 Webフロントエンドではモバイルと異なりチームではなく、強く興味を持ったメンバーで構成されるギルドが主体となって定期的に勉強会や知見の共有会を行っています。今回はそうした勉強会の延長として、社内外に向けて発信する

    メンバーの「スキ」をわかりあいたい!フロントエンドのLT会を開催しました - Mirrativ Tech Blog
    big5
    big5 2024/08/29
  • ログ基盤のFluentdをFluent Bitに移行して監視ツールを実装した話 - Mirrativ Tech Blog

    はじめまして、Azuma(@azuma_alvin)です。現在大学院の1年生で、2024年2月から4ヶ月間ミラティブのインフラチームにインターンとして参加しました。普段はインフラやMLOpsといった領域に興味があり、最近はVim環境の整備がマイブームです。 記事では、ログ基盤をFluentdからFluent Bitへ部分移行した経緯とその2種類の監視ツールの実装についてお話しします。 記事の最後に、インターンから見たインフラチームの特徴と私が4ヶ月間で学んだことを紹介しています。興味がある方は末尾までスクロールしてぜひご覧ください。 1. 背景と目的 2. ミラティブのログ基盤について 3. ログ欠損の原因調査 Fluentdのバッファリングの仕組み fsnotifyを用いたバッファリングの観察 負荷試験 日付時刻フォーマットとワイルドカードによるログ欠損 ログ保存とサーバータイムスタン

    ログ基盤のFluentdをFluent Bitに移行して監視ツールを実装した話 - Mirrativ Tech Blog
    big5
    big5 2024/06/28
  • AddressableによりWebGLゲームのクラッシュ率が改善した話 - Mirrativ Tech Blog

    こんにちは、ミラティブ菅谷です。MirrativのWebGL製ライブゲームにて、アセットのロード方法をインスペクタでの直接参照からAddressable Asset System(以下Addressable)に変更したことで、クラッシュ率が大幅に改善し、クラッシュせずにプレイが終了した「正常プレイ率」は98%まで改善しました。記事では、その具体的な手順と効果について紹介します。 課題背景 MirrativのライブゲームはWebGLで動いていますが、特にモバイルのWebGLではパフォーマンスに気をつける必要があります。今回改善を行ったプロジェクトではもともとAddressableを使用していませんでした。プロジェクトの初期リリース時点では大きな問題もなく運用できていましたが、アセットやリソースを追加していくにつれてクラッシュが多く見られるようになりました。ただし、WebGLではクラッシュし

    AddressableによりWebGLゲームのクラッシュ率が改善した話 - Mirrativ Tech Blog
    big5
    big5 2024/06/12
  • 【Go】time.Time.AddDateの注意点と対策 - Mirrativ Tech Blog

    こんにちは、バックエンドエンジニアの藤井脩紀です。 今回の記事では日付計算に潜む罠についてお話しさせていただきます。 なお今回はGoでの事例をご紹介しますが、原理的には他の言語やライブラリでも同様の事象が発生する可能性があります点にご注意ください。 time.Time.AddDateの注意点 突然ですがここでクイズです。 来月が何月か知りたいので以下のようなコードを書きました。 このコードを実行したのは10月だとします。 結果は何になるでしょう? // AddDateの引数は順に年、月、日でそれらの値を加算したtime.Timeを返してくれます fmt.Printf("%d月\n", time.Now().AddDate(0, 1, 0).Month()) 「え、11月でしょ?」と思う方もいらっしゃるかもしれませんが正確には異なります。 焦らさずに書きますが答えは「11月か12月のどちらか

    【Go】time.Time.AddDateの注意点と対策 - Mirrativ Tech Blog
    big5
    big5 2023/10/31
  • Jetpack ComposeにおけるViewの多重タップ、複数同時タップの防止策 - Mirrativ Tech Blog

    こんにちは。ミラティブのAndroidエンジニアのかねき@kanesyです。 以前の記事でも何度か紹介していますが、MirrativのAndroidアプリでは新規で作る画面には積極的にJetpack Composeを活用しています。 tech.mirrativ.stream Jetpack Composeでの開発が活発になるにつれて、Viewの多重タップや、リスト中の複数アイテムの同時タップなどの想定外の挙動に向き合う必要が出てきました。 そこで今回は、MirrativのAndroidアプリで採用したJetpack ComposeにおけるViewの多重タップや、リスト中のアイテムの複数同時タップに対する取り組みについて紹介します。 Android Viewにおける多重タップ防止 Jetpack Composeでの実装の説明に移る前に、まずは既存のAndroid Viewにおける多重タップ防

    Jetpack ComposeにおけるViewの多重タップ、複数同時タップの防止策 - Mirrativ Tech Blog
    big5
    big5 2023/04/12
  • マルチモジュールでのリソース整理 - Mirrativ Tech Blog

    みなさん、こんにちは!2022年8月よりAndroidエンジニアとしてインターン中の kitakkun です。 現在MirrativのAndroidチームでは、アプリケーションの品質向上を目指してマルチモジュールの導入を進めています。 Mirrativでは、元々あったmirrorman(当時の開発コードネーム)という巨大なモノリスのモジュールから、新規開発部分をfeatureモジュールに切り出して開発をしています。 モノリスモジュールからfeatureモジュールを分離 元々モノリス部分だったmirrormanが巨大で、mirrormanにあるクラスをfeatureモジュールで使いたいケースがあり、未だmirrormanへの参照が残っている状態です。 なるべくmirrormanへの参照をなくすために、特定のfeatureモジュールでしか使われていないファイルをmirrormanから移動してい

    マルチモジュールでのリソース整理 - Mirrativ Tech Blog
    big5
    big5 2022/11/02
  • DroidKaigi2022に若手3人が参加してきました - Mirrativ Tech Blog

    左から久賀、北川、中脇 こんにちは。Androidエンジニアの久賀と、インターン生の北川、中脇です。 2022年10月5日(水)〜7日(金)に開催された「DroidKaigi 2022」にミラティブのスポンサー枠で行ってきました。 2020年は中止、2021年はオンライン開催なので、2年ぶりの対面での開催となりました。僕ら3人はこのようなイベントに出席することが初めてなので、ワクワクしながら参加しました。 早めに東京ドームシティ会場に着いたのですが、既にたくさんの人がいて交流していたり、ブースの人と話し合っていたりしました。これが国内最大規模のAndroidイベントなのかと、今まで見たことのない景色だったのでびっくりしました。 DroidKaigiで色々な方と話し、たくさん学んできました。ではどう感じたかを書いていこうと思います。 公式アプリのコントリビュート まず、DroidKaigiの

    DroidKaigi2022に若手3人が参加してきました - Mirrativ Tech Blog
    big5
    big5 2022/10/27
  • Swift Concurrencyを利用した表示再開するUIViewControllerの実装 - Mirrativ Tech Blog

    こんにちは、クライアントエンジニアの竹澤(@to4iki)です。 iOSチームでは下記記事にある通り、チーム内でSwift Concurrencyに関してキャッチアップと知見の共有会を行っています。 ブログでは、勉強会を通し既存実装をSwift Concurrencyを利用することで安全に簡潔に書き換えることができそうな箇所があったので、その実装例と、並行処理を表す Task に関して興味深い点を紹介します。 tech.mirrativ.stream tech.mirrativ.stream 置き換え対象の実装 任意の1トリガーに対して、複数の画面を表示するケースを考えてみます。 Mirrativアプリの場合、配信者が視聴者から受け取るギフトに応じて複数のランキングが上昇し、演出用の画面を表示するといった仕様があります。 以下コードのように、上から順に画面を表示する必要があるかを検証し、

    Swift Concurrencyを利用した表示再開するUIViewControllerの実装 - Mirrativ Tech Blog
    big5
    big5 2022/05/31
  • Android12でのピクチャー イン ピクチャーの改善をR&Dしました - Mirrativ Tech Blog

    こんにちは。エンジニアのshogo4405です。普段はAndroidの開発を行いながらときどきiOSの開発を行なっています。稿では、Android12で改善したピクチャー イン ピクチャーをMirrativに導入できないか調査した内容を紹介していきます。 はじめに Mirrativのクライアントチームでは、四半期更新でOKRを運用しています。また、AndroidチームのOKRの取り組みの一環としてAndroid 12でPIPが改善されているので試してみたいなという話になり試してみました。 Android12での、PIPの改善のポイントは次の通りです。 ジェスチャー ナビゲーションでPIP モードにスムーズに遷移するための新しい API フラグ 動画以外のコンテンツのシームレスなサイズ変更を無効にする新しい API フラグ PIP モードの終了時のスムーズなアニメーション 新しいジェスチャ

    Android12でのピクチャー イン ピクチャーの改善をR&Dしました - Mirrativ Tech Blog
    big5
    big5 2022/03/11
  • 社内勉強会「Swiftの並行処理についてのセッションを見る会」を開催しました - Mirrativ Tech Blog

    こんにちは、クライアントエンジニアのちぎら(@_naru_jpn)です。Swift 5.5 で async/await が導入されて久しいですが、皆さま導入はされているでしょうか。プロダクトに導入して活用できればいいですが、すぐには導入できないプロダクトも多くあると思いますし、個人でキャッチアップするにも、温度感の違いや人によってキャッチアップできる分量にも差が出てくると思います。今回は社内勉強会の一環として、 Apple が公開している Swift の並行処理についてのセッションを見る会をした話を書こうと思います。 セッションを見る会をはじめた理由 Swift の並行処理についての機能は、キャッチアップしている人とそうでない人が分かれると思っています。Swift の並行処理については多くの技術記事が書かれていますが、業務にすぐには直結しない内容について技術を吸収する為にはそれなりの気持ち

    社内勉強会「Swiftの並行処理についてのセッションを見る会」を開催しました - Mirrativ Tech Blog
    big5
    big5 2022/03/04
  • ミラティブのUnityアセット運用とそれを支えるCI/CD - Mirrativ Tech Blog

    こんにちは、ミラティブUnityエンジニアの菅谷です。 ミラティブでは週に一回以上のペースでエモモのイベントを行っており、1つのイベントごとに約40個の衣装やエモモアイテムを追加しています。 エモモアイテムの多くはUnityを活用して作られており、アセットバンドルとして追加・更新されます。 今回はハイペースなアセットバンドルの更新と運用を支える技術について解説します。 エモモアイテムがユーザーに届くまでの流れ Unityでのエモモアイテムのセットアップ、アセットバンドルのビルド、アセットバンドルの配信のフローによりエモモアイテムがユーザーに届けられます。 全体の概要は以下となっています。それぞれについて解説します。 1. エモモアイテムのセットアップ 3Dデザイナーがエモモのアイテムを以下のようにしてUnityプロジェクトに追加します。 Mayaなどで3Dモデルを作成する Unity上で3

    ミラティブのUnityアセット運用とそれを支えるCI/CD - Mirrativ Tech Blog
    big5
    big5 2022/02/28