タグ

ブックマーク / tech.mirrativ.stream (29)

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

    インフラストリーミングチームの近藤 (@udzura) です。今回は、ミラティブで内製しているオブジェクトストレージサーバ「b3」の紹介記事を書きたいと思います。 今回の記事は、6月にGopher Talkというイベントで発表した「Go製ミドルウェアを実践投入するにあたりやったこと」をベースに、内容を詳細にしたり直近の開発状況に合わせて更新したものです。一部内容はこの発表と重複していますがご了承ください。 オブジェクトストレージサーバを内製した背景 1. 大量オブジェクトの操作や増え続ける転送量に対応したい 2. 一定期間しかファイルの保持をしない 3. オンメモリ/SSD/HDDを組み合わせたチューニングがしたい オブジェクトストレージb3の特徴 S3 互換の基的なAPIを実装 LSM-Tree index+WALなDB/マージ操作に対応 I/O 帯域を制限可能 非同期レプリケーション

    内製オブジェクトストレージサーバ「b3」でコスト最適化を目指した話 - Mirrativ Tech Blog
  • Firebase Crashlyticsを用いたError検知のすすめ - Mirrativ Tech Blog

    こんにちは。shogo4405です。エントリーは、Firebase Crashlytics(以下Crashlytics)を利用しているiOSエンジニア向けにError情報の保存および活用についてのミラティブ社の事例を紹介したいと思います。 Errorの収集 ここで言うError情報とは、protocol Error : Sendableのことを指しています。Mirrativでは、主に次のError情報を収集してアプリケーションの品質向上につなげています。 URLSession#dataTaskでコールバックで得られるError 通信に関わるエラーを検知する用途 DecodableのDecodingError クライアントとサーバー間でデータ交換がうまくいっているか検知する用途 try AVAudioSession.shared.setCategoryでスローされるError 音声系統が意

    Firebase Crashlyticsを用いたError検知のすすめ - Mirrativ Tech Blog
  • Mirrativ のWebフロントエンドで使っているライブラリを紹介する! - Mirrativ Tech Blog

    こんにちは、フロントエンドエンジニア 兼 バックエンドエンジニアの駒木です。 iOS / Android / バックエンドのライブラリ紹介に引き続き、MirrativのWebフロントエンドで使用しているライブラリをご紹介します! JSフレームワーク: React with TypeScript / Vue.js 8割以上のアプリケーションはReact + TypeScriptで実装されていますが、数年前に立ち上げた一部のイベントページはVue.js + Vanilla JSで実装されています。 ビルド・バンドルツール: Vite / Parcel / webpack 2021年5月くらいからViteを利用し始め、以後立ち上げたプロジェクトはViteベースとなっています。 Vite 8割、Parcel + webpackが2割といったところでしょうか。 webpack → Parcel →

    Mirrativ のWebフロントエンドで使っているライブラリを紹介する! - Mirrativ Tech Blog
  • 【ミラティブ】CEDEC2022 にスポンサーとして登壇 & 協賛しました - Mirrativ Tech Blog

    こんにちは、ミラティブの野呂です。 2022年8月23日(火)〜25日(木)に行われた CEDEC2022 にて、スポンサーとして登壇 & 協賛をさせていただきましたのでご報告させていただきます。 稿では、セッションの紹介と、資料を公開します。 ※CEDEC2022については、公式サイトをご覧ください https://cedec.cesa.or.jp/2022 ミラティブ登壇者によるセッション 登壇者 プロダクト開発技術Unityグループ マネージャー 菅谷 琢磨(@tetsujp84) エモモデザイン部 3Dグループ マネージャー 下原 雄大(@Youday313) 発表内容 ミラティブでのモバイル×ライブゲーミングへの取り組みと挑戦 ミラティブで取り組んでいるモバイルでのライブゲーミングの事例とライブゲーミングにおけるUnity技術について紹介しました。 ライブゲームにはMir

    【ミラティブ】CEDEC2022 にスポンサーとして登壇 & 協賛しました - Mirrativ Tech Blog
  • Go製ミドルウェアのメモリリークを解決した話 - Mirrativ Tech Blog

    インフラ・ストリーミングチームの id:udzura (@udzura)です。今回は、Goミドルウェアのメモリリークを見つけて解決する際に、どのようなプロセスを踏んでいったかを解説します。 Go製のミドルウェアの概要 ミラティブでは、Webアプリケーションのみならず、ミドルウェアに相当する部分についても必要なものは内製しています。その中の一つに、社内で「Radisha」と呼んでいる各種集計とキャッシュなどを行うためのミドルウェアがあります。Radishaは以下のような特徴を備えています。 GET、SET、SETEXなど基的なRedis互換のコマンドを実装している。そのため、既存のRedisクライアントライブラリから操作が可能である。 ランキング集計、一定時間内のアクセス集計などが行えるよう、Redis にない独自のコマンドを実装している。 高い可用性を志向しており、オンメモリのデータは

    Go製ミドルウェアのメモリリークを解決した話 - Mirrativ Tech Blog
  • Jetpack Composeを使った複雑なアニメーション事例 - Mirrativ Tech Blog

    ミラティブのAndroidエンジニアのmorizoooです。 MirrativのAndroidアプリでは、新規で作る画面には積極的にJetpack Composeを活用しています。 tech.mirrativ.stream Mirrativは、多くのユーザーがゲームや雑談などの配信をしており、配信を盛り上げるための演出として通常のアニメーションに加えてLottieも織り交ぜ、リッチなアニメーションを実装しています。 Jetpack Compose導入以前は、AnimationListenerのCallbackを入れ子にする形で複雑なアニメーションを実現していたのですが、いざJetpack Composeで実装しようとなるとどう実装するのが良いのか苦心しました。 今回の記事では、実際にアプリで使っているアニメーションを例に、Jetpack Composeで作ったアニメーションを紹介します。

    Jetpack Composeを使った複雑なアニメーション事例 - Mirrativ Tech Blog
  • テスト工程の可視化や自動化に向けた取り組みのご紹介 - Mirrativ Tech Blog

    こんにちは、エンジニアの千吉良(ちぎら)@_naru_jpn です。ここ最近 QA に関して考える機会があり、Systematic Software Testing というを読んでいたところ、色々と刺激を受けるところがありました。計画書の作成やリスク管理などテストの実施以外の領域についても多く書かれていましたが、まずはミラティブの現状に基づいた改善を行うべきだろうと考えました。今回は特にメトリクスの取得などに関して、GAS(Google Apps Script)を活用してミラティブの業務に応用してみたことについてまとめてみました。 以下では細かいことにも触れているので、3行まとめをおいておきます。 手動テストの進捗を見えるようにしたよ GAS(Google Apps Script)で実装したよ ついでに関連業務を自動化したよ ミラティブにおける QA と解決できそうと感じた課題 ミラティ

    テスト工程の可視化や自動化に向けた取り組みのご紹介 - Mirrativ Tech Blog
  • イヤホン配信を支える音のプログラミング〜Accelerate編〜 - Mirrativ Tech Blog

    こんにちは。shogo4405です。エントリーは、iOSエンジニア向けにイヤホン配信を支える音のプログラミング入門 - Mirrativ Tech BlogのiOS実装を紹介したいとおもいます。 稿では、音声信号処理の実装手法としてAppleが提供するAccelerateフレームワークの利用方法を解説しています。音声の信号処理は、AccelerateのvDSPの関連の関数を利用します。 はじめに Accelerateを導入した背景は、for文での実装では、Mirrativで扱うライブ配信の処理速度に合わず体験的に良くありませんでした。そこで、Accelerateを導入することで処理速度の向上に寄与し満足できる体験になったため採用にいたりました。*1 サンプルデータ せっかくなので自分で音声データを作ってみましょう。sin波によるド・レ・ミ・ファ・ソ・ラ・シ・ドのラ(440hz)の音デー

    イヤホン配信を支える音のプログラミング〜Accelerate編〜 - Mirrativ Tech Blog
  • ミラティブを退職します! - Mirrativ Tech Blog

    今日が最終出社、明日から有休消化期間だー!!!!うおおおおおおおおおおおお!!!!! 2019年の春から3年間、ライブ配信サービス「Mirrativ」のバックエンドを書いてきた stakme です。この夏で卒業です!お疲れさま〜!!!!! 頑張った、やりきった、当は退職後半年くらい休みたい。けれど借金と税金がそれを許してくれないので、今後も頑張ります。 この記事では、これからミラティブのバックエンドチームに加わる方に向けて 私はこういう理由でミラティブに来たよ 入社時はこういう経験値だったよ この会社ではこういう経験ができたよ という話をします。あとでのんびり自分のnoteに書いてもよかったんですけど、テンションのおかしい退職者の記事がテックブログに載っていたらクリックレート高い面白いかなって思って… ちなみに執筆時点では掲載許可とか取ってないのですが、たぶん大丈夫です。なので書きますね

    ミラティブを退職します! - Mirrativ Tech Blog
  • 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
  • Cloud Buildによる内部向けGoバイナリのリリース自動化 - Mirrativ Tech Blog

    インフラ・ストリーミングチームの近藤 (id:udzura) です。 ミラティブのインフラ運用では、監視・自動化などさまざまなツールにGo言語を利用しています。ツールはコマンドラインツールとして提供して、バージョンごとにリリースを作成して各環境にデプロイしています。リリースの作成にはGitHubのRelease機能を利用しています。 今回は、GitHub Releaseの作成をGoogle Cloud Build(以下、単にCloud Build)で自動化したことについて、実装内容と効果を書いていきます。 なぜ Cloud Build を採用したか ミラティブの開発はGitHub Enterprise Cloudを利用しています。対応するCI/CDのサービスとしてはGitHub ActionsやCircleCIなど*1数多くありますが、ミラティブにおいてはGCPの利用箇所が多く、既存GCP

    Cloud Buildによる内部向けGoバイナリのリリース自動化 - Mirrativ Tech Blog
  • Apple のサンプルプロジェクトから Swift Concurrency 移行のエッセンスを学ぶ - Mirrativ Tech Blog

    こんにちは、クライアントエンジニアのちぎら(@_naru_jpn)です。AppleSwift Concurrency への移行をサポートするためのサンプルプロジェクト Updating an App to Use Swift Concurrency を公開しているのをご存知でしょうか。 このプロジェクトには、DispatchQueue を用いて記述されたアプリのコードと、それを Actor などの Swift Concurrency を使用したコードに書き換えたアプリのコードの 2 つが同梱されています。運用しているプロダクトのコードを書き換えるのは規模も大きく大変ですが、小さいプロジェクトから書き換えの課題感を掴んだり、ウォーミングアップとして Apple のサンプルプロジェクトから学べることがあるだろうという事から、このプロジェクトを題材にして社内勉強会を開催しました。 勉強会の

    Apple のサンプルプロジェクトから Swift Concurrency 移行のエッセンスを学ぶ - Mirrativ Tech Blog
  • アプリ開発を支える10個のDangerレシピ - Mirrativ Tech Blog

    こんにちわ。shogo4405です。普段は、ミラティブで開発しながら、余暇にOSSのHaishinKit*1をつくっています。エントリーは普段UI開発を行なっているクライアントエンジニア向けに、ミラティブで導入しているDangerの実践レシピを公開いたします。 はじめに Dangerとは「Pull Requestの作法を形式化して指摘を自動化」するツールであり、採用している開発者の方も多いのではないでしょうか。Dangerの導入にあたってはDangerで始めるPull Requestチェック自動化 - コネヒト開発者ブログを参考にして導入いたしました。ありがとうございます。 ミラティブ社でも形式的なチェックは基的にDangerに任せるにようしています。エントリーでは、開発現場のあるある指摘内容をレシピ集という形でまとめました。 レシピ1:githubの更新があった箇所のみ指摘する 定

    アプリ開発を支える10個のDangerレシピ - Mirrativ Tech Blog
  • 【Android】Jetpack Composeの活用法について - Mirrativ Tech Blog

    Mirrativ Androidエンジニアのmorizoooです。 MirrativのAndroidアプリでは、Jetpack Composeの1.0がリリースされた2021年7月から導入をはじめています。 今回の記事では、導入に至った経緯と、ミラティブで採用しているFluxアーキテクチャの中でJetpack Composeをどのように活用しているかについてお話します。 導入に至った背景 Jetpack Compose導入の背景としては公式ドキュメントにもあるように以下の点をメリットに感じて導入しました。 コード量が削減できること ステートレスコンポーネントを簡単に作成できること developer.android.com また、Jetpack Composeの開発に深く携わっているJim Sprochさんもツイートでも、旧Android Viewはメンテナンスモードと宣言されており、Je

    【Android】Jetpack Composeの活用法について - Mirrativ Tech Blog
  • ミラティブのUnityエンジニアになったら学べること - Mirrativ Tech Blog

    みなさんこんにちは。ミラティブUnityエンジニアの菅谷です。 私がミラティブに来てからちょうど2年が経ちました。 以前はソーシャルゲームの会社でゲームの運営や新規開発を行っていました。リードエンジニアとして広くコミットすることで、特にクライアント側の一通りの技術を学ぶことができましたが、ミラティブに来てからも事業が成長していく中で様々なことに挑戦し学んできました。振り返ってみてミラティブのUnityエンジニアとして習得できる技術や、ミラティブで活かせるスキルが分かってきたので一例として紹介します。 ミラティブのUnityエンジニアとしてのスキルは大きく3Dアバター(エモモ)系とゲーム系とに別れます。 どちらの技術もMirrativアプリで直接使われ、メンバーが変わるわけではありませんが開発における性質は異なります。 以下それぞれの特徴について説明します。 エモモ系 3Dアバター(エモモ)

    ミラティブのUnityエンジニアになったら学べること - Mirrativ Tech Blog
  • 社内勉強会「Swiftの並行処理についてのセッションを見る会」を開催しました - Mirrativ Tech Blog

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

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

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

    ミラティブのUnityアセット運用とそれを支えるCI/CD - Mirrativ Tech Blog
  • Mirrativ Engineers & Values - Mirrativ Tech Blog

    はじめに 「ミラティブのエンジニアってどんなことが求められるんですか?」 ドキュメントは、多くの方に聞かれるこの問いに答えるものになります。 Software Engineer MirrativにはiOSアプリからライブ配信基盤まで広い技術領域が存在しますが、ミラティブではそれらに携わるエンジニアを全て「ソフトウェアエンジニア」と呼びます。特定の領域に留まらず、より深く、より広く、技術を追求し、チームに貢献することが、ユーザーに愛される最高のプロダクトを作るために必要であると信じています。 わかりあう願いをつなごう ミラティブはミラティブという1つのチームです。 ミラティブの行動指針は わかりあおうとし続ける 事実に学ぶ 大胆に考える 成果にこだわる そして楽しむ これらはプロダクトのリリース以来、チームが多くの困難を乗り越えた経験に基づく教訓であり、チームのコンセプトでもあります。 た

    Mirrativ Engineers & Values - Mirrativ Tech Blog
  • 接続が途切れないストリーミングサーバの無停止アップデートを実装してみました - Mirrativ Tech Blog

    こんにちは ハタです。 最近 SO_REUSEADDR / SO_REUSEPORT を使ったストリーミング配信サーバの無停止アップデート(Hot Deploy)を実装してみたので紹介したいなと思います ことの経緯 HTTPサーバによる Hot Deploy の仕組み ストリーミング配信サーバへの応用 SO_REUSEADDR/SO_REUSEPORT を使った実装例 Hot Deploy の組み込み Hot Deploy 実装時に気をつけたこと その後 We are hiring! ことの経緯 ミラティブでは以前から何度か紹介したとおり自前の配信基盤設備を持っています。 配信基盤のミドルウェアも内製であり、機能追加やライブラリの更新などがあるたびにミドルウェアのバージョンアップ作業(メンテナンス)も自社で実施しています ストリーミング配信サーバといっても、何か特別な事はなく一般的なHTT

    接続が途切れないストリーミングサーバの無停止アップデートを実装してみました - Mirrativ Tech Blog
  • iOSDC Japan 2021 にエンジニア2名が登壇します!! - Mirrativ Tech Blog

    こんにちは、クライアントエンジニアの竹澤(@to4iki)です。 先日のApple Eventを見てポートがUSB Type-Cとなった新しい iPad mini が欲しくなりました。 さて、今年も毎年恒例のiOSDC Japanの開催時期となりましたね! 昨年と同様にオンラインで開催され、事前収録によるレギュラートークのストリーミング配信、ライブ配信のLT、スピーカーと直接話すことができるAsk the Speakerなどが予定されています。 iosdc.jp そして今年は、ミラティブからは2名のエンジニアのトークが採択され、レギュラートークで登壇します。 2名とも9/19(日) Day2 の登壇となりますので、 コメントと合わせて簡単に紹介します。ぜひご覧ください! 登壇情報 ■ ケースに応じたUICollectionViewのレイアウト実装パターン 日時: 2021/09/19 13

    iOSDC Japan 2021 にエンジニア2名が登壇します!! - Mirrativ Tech Blog