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

  • ログ基盤の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
    yug1224
    yug1224 2024/06/29
  • AddressableによりWebGLゲームのクラッシュ率が改善した話 - Mirrativ Tech Blog

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

    AddressableによりWebGLゲームのクラッシュ率が改善した話 - Mirrativ Tech Blog
    yug1224
    yug1224 2024/06/14
  • memcached proxyで使うハッシュアルゴリズムを比較した話 - Mirrativ Tech Blog

    memcached proxyのハッシュアルゴリズム比較 はじめまして!hibikiです(@add_bakkers) 現在大学3年生で、最近はネットワークに興味があり勉強中です。2023年8月からインフラチームにインターンとして参加しました。 記事ではmemcached proxyのハッシュアルゴリズム比較の結果を紹介します。 memcached proxyのハッシュアルゴリズム比較 1. 背景と目的 ミラティブでのmemcachedの利用 課題: クライアントサイドでサーバ決定をしている memcached proxyの検討 2. memcached proxyに求められるアルゴリズム キーの分散 移動率の抑制 パフォーマンス ハッシュアルゴリズムの比較 3. 今回行うベンチマークの概要 計測対象とシナリオ 分散と移動率のベンチ 処理性能のベンチ 4. ベンチマークの結果と比較 移動率

    memcached proxyで使うハッシュアルゴリズムを比較した話 - Mirrativ Tech Blog
    yug1224
    yug1224 2024/06/01
  • CLIツールの管理をSPMからMintに移行した経緯とその課題 - Mirrativ Tech Blog

    はじめに お久しぶりです、iOSチームにインターンとして参加させて頂いておりますMと申します。 MirrativのiOSアプリでは、これまでSwift製のCLIツールをBuildToolsという名前のSwift Packageを作成してこれにまとめて管理していました。 しかしこの度、ある課題や利便性の観点からyonaskolb/Mintでの管理に移行しました。 今回はMintへの移行に至るまでの背景や経緯、および移行に際して起こったいくつかの課題をどのように解決したかについて書いていこうと思います。 目次 はじめに 目次 Mintへの移行に至る背景 CLIツールの利用 SPMによる管理における課題 依存関係の不整合 依存解決の時間 Mintへの移行 Mintへの移行時に発生した課題とその解決 バージョンの自動更新 バージョン更新のためのコマンドを実装 1. Mintfileのパスを取得 2

    CLIツールの管理をSPMからMintに移行した経緯とその課題 - Mirrativ Tech Blog
    yug1224
    yug1224 2024/05/31
  • PerlからGoへのシステム移行のアシスト 〜Perl XSとUnix Domain Socketを活用〜 - Mirrativ Tech Blog

    こんにちは ハタ です。 Mirrativ では 2020年頃から サーバサイドの技術PerlからGoへのシステム移行 を行っており、2024年現在でもサグラダファミリアのように移行作業は継続しています PerlGoという2つの環境を同時に運用していますが、 基的には 新機能は Go で実装 し、 Perlでは積極的に新規実装を行わない というスタイルで進めていました しかし、既存の機能の一部に手を加えたいとなった場合、まだまだ Perl の実装に手を加えることが一定あり、Perl から Go の機能を呼び出したいというニーズが出てきました (配信やギフトといったビジネスの根幹を支えるレガシーな実装においては顕著) そこで PerlXS を利用することで Perl から Go を直接呼び出せるようにできないかと考え検証を進めることにしました Goの -buildmode=c-shar

    PerlからGoへのシステム移行のアシスト 〜Perl XSとUnix Domain Socketを活用〜 - Mirrativ Tech Blog
    yug1224
    yug1224 2024/04/29
  • Neural Audio Codec を用いた大規模配信文字起こしシステムの構築 - Mirrativ Tech Blog

    こんにちは ハタ です。 最近Mirrativ上に構築した配信の文字起こしシステムを紹介したいなと思います 音声からの文字起こしは、各社SaaSでAPI提供されているものがあると思いますが、今回紹介するものはセルフホスト型(自前のGPUマシンを使う)になります 構築していく上で色々試行錯誤したのでそれが紹介できればなと思っています どんなものを作ったか 前提知識: 配信基盤 前提知識: Unix Domain Socket Live Recorder Archiver DS Filter VAD Filter NAC / Compress Transcriber NAC / Decompress Speach To Text コンテナイメージ まとめ We are hiring! どんなものを作ったか 今回作ったものは Mirrativで配信されるすべての音声を対象に文字起こしを行う シス

    Neural Audio Codec を用いた大規模配信文字起こしシステムの構築 - Mirrativ Tech Blog
    yug1224
    yug1224 2024/03/05
  • input type=“date” の沼から、ライブラリを導入する意義を考える - Mirrativ Tech Blog

    はじめまして!2023年7月からミラティブでフロントエンドインターンをしております、かずえもんと申します😺 今回は、インターンでの作業中にハマってしまった Safari のバグについて調査していたら、なんと10年モノの issue だったことが判明し、ライブラリを導入する意義について考える機会となった話を書いてみたいと思います。 Safari の日付入力欄に無効な日付を入れると起こるバグ onChange が正しく呼ばれないのは Safari が原因? Safari 17 以降で再現しないので原因は Safari で間違いなさそう Safari 17 以前での解決方法として DatePicker を使ってみる まとめ: ネイティブを補う存在としてのライブラリ We're Hiring!! Safari の日付入力欄に無効な日付を入れると起こるバグ 2023年8月、私はミラティブの管理シス

    input type=“date” の沼から、ライブラリを導入する意義を考える - Mirrativ Tech Blog
    yug1224
    yug1224 2024/02/20
  • ミラティブCTO交代の挨拶 - Mirrativ Tech Blog

    みなさまこんにちは、ちぎら @naru_jpn とよこて @n0mimono です。noteの方に対談を掲載していますが、テックブログのほうでも記事を書いてみようと思います。社内外の多くの方に読んでいただければ幸いです。 note.com prtimes.jp CTOを交代しました! 今のCTOより こんにちは、ミラティブ3代目CTOの千吉良(ちぎら)です。プレスリリースにあるように2024年1月よりCTOに就任しました、よろしくお願いいたします。 夏さん、横手さんと組織の中でCTOの移り変わりを眺めていて自分がその立場になるとは夢にも思わず生活をしていた訳ですが、せっかく挑戦する機会をいただいたのでお話を受けさせていただくことにしました。 私は2018年の8月からミラティブに副業ではじめて関わり、そのまま同年12月にミラティブに入社しました。 note.com インタビューにも書いたと思

    ミラティブCTO交代の挨拶 - Mirrativ Tech Blog
    yug1224
    yug1224 2024/01/24
  • クラウドネイティブなVPNを構築して運用している話 - Mirrativ Tech Blog

    インフラストリーミングチームの近藤(@udzura)です。 今日は、ミラティブ社内向けツールの話をします。ミラティブではVPNの仕組みをクラウドをフル活用して自前で構築し、1年ほど運用しています。運用中にいろいろ課題はありつつ、現在かなり安定して動作してます。 今回の記事は、そのVPNの仕組みを紹介します。 既存VPNの課題 災害時に稼働できないリスクを避けたい どこに誰がアクセスできるか楽に管理したい 新しいVPNをハッカソンで開発した話 新VPNの設計思想 災害時でも稼働できる どこに誰がアクセスできるか管理できる 攻撃時の影響を限定する 12時間でインスタンスを停止する クラウドネイティブなVPNである アーキテクチャと技術の説明 WireGuard Google Cloud VPCの各機能 Cloud Functions + Pub/Sub + Slack App API Slac

    クラウドネイティブなVPNを構築して運用している話 - Mirrativ Tech Blog
    yug1224
    yug1224 2023/12/29
  • サービスの管理画面を継続的に改善するためのReact Hook FormとZod活用術 - Mirrativ Tech Blog

    こんにちは!ミラティブのフロントエンドエンジニア どじねこ です。 今回は、ミラティブを支える社内向けの管理システムにおいて、機能開発の体験を改善する取り組みを「MUIZodReact Hook Form の活用術」としてご紹介させていただきます。 前提 ミラティブでは、他の多くの Web サービスと同様に配信者さんの登録した情報や配信の履歴を管理する社内向けのシステムが存在しています。 特に管理システムのフロントエンドにおいては、その特性上入力フォームの実装がその大半を占めています。 日々の機能開発においては、そうした管理システムに実装された入力フォームの新規実装や機能拡張が行われています。 課題 一般的な入力フォームでは、画面の初期描画の際にすでに設定済みの値をフォームに適用する初期化処理や、入力された内容を検証して必要に応じてエラー表示するバリデーション処理が必要です。 ミラ

    サービスの管理画面を継続的に改善するためのReact Hook FormとZod活用術 - Mirrativ Tech Blog
    yug1224
    yug1224 2023/11/21
  • 【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
    yug1224
    yug1224 2023/10/31
  • 内製オブジェクトストレージサーバ「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
    yug1224
    yug1224 2023/10/23
  • GitHub APIを利用したスケーラブルなマスターデータ管理システム - Mirrativ Tech Blog

    こんにちは、バックエンド基盤チームマネージャーの夏(なつ)と申します。ミラティブの基盤チームはユーザが直接触れる機能よりかは、開発者や会社全体の生産性を向上させるためにエンジニア主導で課題を発見・解決している部署です。 今回は基盤チームが主体となって運用しているマスターデータ管理システムについて紹介したいと思います。ゲーム運営などではエクセルやスプレッドシートで管理されることがよくありますが、学習コストや安全性の観点で入力者を増やしづらい場合があります。このような問題に対応するため、ミラティブでは一部のマスターデータをGitHub APIを利用した専用の管理画面を実装することで入力作業をスケールできるようにしました。 (なお、記事は社内向けドキュメントを兼ねています) マスターデータとは マスターデータとはユーザによって生成されるデータではなく、主に運営が用意するデータになります。詳細と

    GitHub APIを利用したスケーラブルなマスターデータ管理システム - Mirrativ Tech Blog
    yug1224
    yug1224 2023/09/18
  • 【Go/GCP】ライブゲーム「あてっこ!ぷにまるず」を支えるバックエンド技術 - Mirrativ Tech Blog

    バックエンドエンジニアの makino です。日は、先日リリースしたライブゲーム「あてっこ!ぷにまるず」のバックエンド技術について紹介します。 ライブゲーム「あてっこ!ぷにまるず」について ライブゲームとは、Mirrativアプリ上で遊べるゲームであり、配信中のゲームに視聴者が介入できることが特徴です。 「あてっこ!ぷにまるず」では、配信中に視聴者を招待して一緒にGvGバトルを楽しむことができます。 開発スタッフがプレイした動画をご紹介📺✨ バウンド数に注目👀⁉ こんなに連鎖できたら気持ちよさそう…🐰💕 動画を参考にレッツ❗チャレンジ💁 SNSスタッフは2回バウンドできました🙌 まだまだ道のりは険しい…🏔 pic.twitter.com/YdZMRKxbgv— 【公式】あてっこ!ぷにまるず (@punimals_jp) 2023年7月18日 Mirrativのライブゲーム

    【Go/GCP】ライブゲーム「あてっこ!ぷにまるず」を支えるバックエンド技術 - Mirrativ Tech Blog
    yug1224
    yug1224 2023/07/29
  • Go Conference 2023 にて Go/Cgoで映像・音声のリアルタイム処理をやるまでの道のり というタイトルでお話してきました - Mirrativ Tech Blog

    こんにちは ハタ です。 このたび Go Conference 2023 Online にて Go/Cgoで映像・音声のリアルタイム処理をやるまでの道のり というタイトルで発表しました 久しぶりの大きなカンファレンスでの登壇だったのでとても緊張しましたが、10周年を迎えた機会に登壇できて光栄です gocon.jp 今回発表した資料はこちらになります、当日のアーカイブは近々公開されると思いますのでお待ち下さい speakerdeck.com (2023/06/28追記) アーカイブ公開されたようです! もし当日ご覧になれなかった方はこちらからご視聴ください! zenn.dev さて、今回登壇するにあたり資料を用意していたのですが、発表時間の関係で削除してしまった内容がいくつかあるため、ここで紹介させてください go <-> cgo のオーバーヘッドを何とかしたい トランポリンコードの世界 c

    Go Conference 2023 にて Go/Cgoで映像・音声のリアルタイム処理をやるまでの道のり というタイトルでお話してきました - Mirrativ Tech Blog
    yug1224
    yug1224 2023/06/08
  • LeSS Huge を参考にしたスクラムのスケーリング - Mirrativ Tech Blog

    こんにちは、エンジニアのちぎらです。先日 開発組織にはじめてのスクラムを導入する という記事を公開しました。先日の記事にも課題として記述した通り、組織の一つのチームにスクラムを導入した後は、他のチームにどのようにスクラムを展開していくか、全社的な開発体制をどうやって変えていくかということを考えていく必要があります。 ミラティブでは、その後の半年弱の期間で3つの開発チーム全てにスクラムを導入しました。さらに、LeSS Huge を参考にした開発体制を敷くことで、チーム横断の開発施策の把握や、全社的な開発施策の透明化を推進しています。 スクラムを他チームに展開する 先日の記事を書いた時点では、ひとつの開発チームにスクラムを導入したのみでした。いずれかのチームでスクラムの導入経験があれば、他のチームへのスクラムの展開は比較的簡単です。一方でチームへのスクラム導入のタイミングは重要で、メンバーの混

    LeSS Huge を参考にしたスクラムのスケーリング - Mirrativ Tech Blog
    yug1224
    yug1224 2023/06/07
  • 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
    yug1224
    yug1224 2023/04/13
  • 24年新卒から次の新卒に伝えたい、ミラティブに感じた技術的な面白さ - Mirrativ Tech Blog

    前書き 初めまして。山倉拓也と申します。 私は2022年9月26日から現在(2023年3月)まで、株式会社ミラティブの基盤開発部でインターンをさせていただいており、2024年度に正社員として入社する予定です。この記事では、私が具体的にミラティブで今までにどんな仕事をしたのか、どんなところに技術的な魅力を感じて入社を決意したのかをお伝えします。 目次 前書き 目次 ミラティブを支えるバックエンド&インフラの技術的な話 インフラに、インメモリデータベースであるRedisを内製化して使っている Go/クリーンアーキテクチャ、に現在移行している いままでミラティブでした仕事 エモモランあーるぴーじーで、イベントが切り替わるタイミングでライフを自動回復する機能の実装 背景・概要 学んだこと 1. メンテナンス期間をいれない、シームレスなライフ管理のバージョン移行 2. ミラティブ独自のパーティショニ

    24年新卒から次の新卒に伝えたい、ミラティブに感じた技術的な面白さ - Mirrativ Tech Blog
    yug1224
    yug1224 2023/04/01
  • iOS16.1 以上でピクチャ・イン・ピクチャが CPU を異常に消費する問題の応急処置 - Mirrativ Tech Blog

    こんにちは、エンジニアのちぎら @_naru_jpn です。ミラティブの iOS アプリでは 配信コメントバー 機能の実現のためにピクチャ・イン・ピクチャを活用しています。ピクチャ・イン・ピクチャは iOS16.1 以上の端末において、特定のシチュエーション *1 で異常に CPU リソースを消費することが知られています。コードの調整によってこの現象が抑制できることが分かり、ミラティブの iOS アプリではバージョン 10.0.1 で応急処置を行ったのですが、今回はその詳細とトレードオフについて解説します。 加えて、この問題は既に Apple へバグレポートとして報告済みですが、Apple への事象の説明のために問題を簡単に再現できるプロジェクトを作成したので、そちらも併せてご紹介しています。 ピクチャ・イン・ピクチャが CPU を異常に消費する問題 iOS 16.1 以上の端末でピクチャ

    iOS16.1 以上でピクチャ・イン・ピクチャが CPU を異常に消費する問題の応急処置 - Mirrativ Tech Blog
    yug1224
    yug1224 2023/02/14
  • 開発組織にはじめてのスクラムを導入する - Mirrativ Tech Blog

    こんにちは、エンジニアのちぎら @_naru_jpn です。ミラティブでは開発プロセス改善の一環として、スクラムフレームワークを試験的にひとつの開発チームに導入し、開発を行っています。該当する開発チームでは1週間のタイムボックスでスプリントをきり、導入開始から12スプリント(3ヶ月弱)をこなしてきました。チームのスクラム開発にも慣れが見えはじめ、当初想定していた開発プロセスの改善も実感が湧くようになってきました。今回は、スクラム導入の背景や内容、今後の展望などをご紹介します。 スクラム導入前の開発体制とモチベーション スクラム導入前の開発イメージ スクラム導入前の開発の流れは上図のようです。仕様書と工数の概算をもとにしてガントチャートにスケジュールがひかれ、フェーズごとに開発を進めていきます。もちろんすべて天下り式に開発を進めている訳ではなく、デザインがある程度できた時点でエンジニアも含め

    開発組織にはじめてのスクラムを導入する - Mirrativ Tech Blog
    yug1224
    yug1224 2022/12/24