hma2motoのブックマーク (343)

  • 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
    hma2moto
    hma2moto 2024/04/25
  • 自動生成を活用した、運用保守コストを抑える Error/Alert/Runbook の一元集約管理 / Centralized management of Error/Alert/Runbook to minimize operational costs using automated code generation

    DevOpsDays TOKYO 2024 の登壇資料です。 https://confengine.com/conferences/devopsdays-tokyo-2024/proposal/19703/erroralertrunbook-centralized-management-of-erroralertrunbook-to-minimize-operational-costs-using-automated-code-generation

    自動生成を活用した、運用保守コストを抑える Error/Alert/Runbook の一元集約管理 / Centralized management of Error/Alert/Runbook to minimize operational costs using automated code generation
    hma2moto
    hma2moto 2024/04/17
  • FFmpeg 7.0が公開される、「ネイティブVVCデコーダーの追加」「CLIツールのマルチスレッド化」「非推奨APIの削除」など

    マルチメディアフレームワーク「FFmpeg」のバージョン7.0(コードネーム:Dijkstra)が2024年4月5日に公開されました。FFmpeg 7.0では「ネイティブVVCデコーダーの追加」「IAMFのサポート」「CLIツールのマルチスレッド化」「非推奨APIの削除」といった変更が加わっています。 FFmpeg https://ffmpeg.org/#pr7.0 ????FFmpeg 7.0 "Dijkstra" has been released!???? It has a native VVC decoder, IAMF support and multi-threaded CLI tool alongside hundreds of other improvements and new codecs, features, APIs and bugfixes.https://t.c

    FFmpeg 7.0が公開される、「ネイティブVVCデコーダーの追加」「CLIツールのマルチスレッド化」「非推奨APIの削除」など
    hma2moto
    hma2moto 2024/04/08
  • SwiftGenとSwift-DocCを活用してコード上の画像を一瞬でプレビューする方法 - Mirrativ Tech Blog

    こんにちはiOS開発をしている福山です。 この記事では、SwiftGenとSwift-DocCを用いて、xcassetsを開かずにコード内の画像をQuick Help(右パネルまたは⌥オプションキー+クリック)で直接確認する方法を紹介します。 各ツールの簡単な説明 Swift-DocCは、Swift言語用のドキュメント生成ツールです。Swiftコード内に書かれたコメントから、ナビゲーションが容易で、見た目も美しいドキュメントを生成することができます。 SwiftGenは、Xcodeプロジェクトで使われるリソース(画像、フォント、色、ローカライズなど)を静的に型付けされたSwiftコードに変換するツールです。自動生成された安全なコードを通じてリソースにアクセスできるため、タイプミスによるエラーや存在しないリソースへの参照をコンパイル時に検出するのに役立ちます。 SwiftGenの生成コード例

    SwiftGenとSwift-DocCを活用してコード上の画像を一瞬でプレビューする方法 - Mirrativ Tech Blog
    hma2moto
    hma2moto 2024/03/21
  • モバイルアプリ上の WebAssembly 製ライブゲームで発生した例外を捕捉して計測する - Mirrativ Tech Blog

    こんにちは、エンジニアのちぎら(@_naru_jpn)です。ミラティブでは、配信中のゲームに視聴者が介入できるゲームとライブ配信が融合した次世代のゲーム体験を提供しており、この体験を ライブゲーミング と呼んでいます。 ライブゲーミングは、Unity から WebGL 向けにビルドされた WebAssembly 製のゲームを、アプリに配置したウェブブラウザ上で動作させることによって実現しています。*1 今回は UnityでモバイルWebGLゲーム開発を頑張る話 の「メモリリークによって発生するクラッシュ」にも書かれているような、捕捉は難しいがユーザー影響があるような例外の発生を捕捉して、計測をするための仕組み作りについて解説をします。 ライブゲームが動作する仕組み 例外を捕捉することを考える前に、ライブゲームがどのように動作しているのかを知る必要があります。 Unity の WebGL 向

    モバイルアプリ上の WebAssembly 製ライブゲームで発生した例外を捕捉して計測する - Mirrativ Tech Blog
    hma2moto
    hma2moto 2024/03/18
  • 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
    hma2moto
    hma2moto 2024/03/04
  • ミラティブ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
    hma2moto
    hma2moto 2024/01/23
  • iOSプロジェクトに対してモジュール分割しながらSwiftUIを部分適用している事例 - Mirrativ Tech Blog

    こんにちは、クライアントエンジニアの竹澤(@to4iki)です。 MirrativのiOSチームでは、開発効率の最大化を狙い以下に取り組んでいます。 データフローの単方向化 (Fluxアーキテクチャの強制) 宣言的UIによるView実装 (SwiftUIの部分適用) 責務分割 (モジュール分割) 今回の記事では、どのような構成でSwiftUIを適用し始めたか、また、MirrativのiOSプロジェクトの構成やプロダクト特性の課題感からセットでモジュール分割を進めている点を紹介します。 背景 前提となるプロジェクト構成 導入に向けて決めたこと SwiftUIでどこまで実装するか 体アプリではなくSwiftPackageを活用する 垂直分割するか水平分割するか 方針やTipsを明文化し育てる 新規開発部分のUI開発をFeatureモジュールで行う SwiftPackage: SwiftUI.

    iOSプロジェクトに対してモジュール分割しながらSwiftUIを部分適用している事例 - Mirrativ Tech Blog
    hma2moto
    hma2moto 2024/01/17
  • クラウドネイティブな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
    hma2moto
    hma2moto 2023/12/28
  • サービスの管理画面を継続的に改善するためのReact Hook FormとZod活用術 - Mirrativ Tech Blog

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

    サービスの管理画面を継続的に改善するためのReact Hook FormとZod活用術 - Mirrativ Tech Blog
    hma2moto
    hma2moto 2023/11/21
  • インターン中、タスクに付随する予想外のエラーと戦った話 - Mirrativ Tech Blog

    初めまして。9月から10月にかけて、インターンとしてミラティブのバックエンド基盤に関わっていた、logicaと申します。 今回は、期間中に扱っていたある1つのタスクにフォーカスしながら、インターンを振り返りたいと思います。 割り当てられたタスク 背景 すぐに終わる想定だった 検証用環境で問題発生! 管理画面へのログインができない タスクの続行 原因究明 403エラー CSRFトークン セッションの非永続性 対処 そもそもCSRFトークンは永続化するべきか セッション用Clientのみ、一定確率で値を返さなくする対応を止める 今回のタスクを振り返って 終わりに 割り当てられたタスク 比較的簡単な1つ目のタスクを終え会社の雰囲気にも慣れてきた頃、出された次のタスクは「開発環境のみ一定確率でmemcachedの値を返さないようにする」というものでした。 背景 Mirrativのバックエンドは設計

    インターン中、タスクに付随する予想外のエラーと戦った話 - Mirrativ Tech Blog
    hma2moto
    hma2moto 2023/11/08
  • 【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
    hma2moto
    hma2moto 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
    hma2moto
    hma2moto 2023/10/20
  • SwiftyJSONからDecodableへ移行する際に気をつけてよかったこと - Mirrativ Tech Blog

    こんにちは、iOSエンジニアのいっちー(icchi (@0IcchI) / X)です。 MirrativのiOSアプリでは4年ほど前にレスポンスパラメータとレスポンスクラスのマッピングにDecodableを採用したAPIクライアントを作成し運用してきました。 新規の実装ではDecodable対応のAPIクライアントを採用していましたが、旧式APIクライアントを用いた膨大な量の実装はそのままにしていたので、今年から気持ちを高めてAPIクライアントの移行作業を開始しました。 気持ちを高めたものの、レスポンスクラスのデコード処理をSwiftyJSONからDecodableへ移行する際に、「レスポンスクラスの継承関係/依存関係の複雑さ」や「マッピングの際の型変換」によって悩まされることが多々ありました。 そんな悩みを乗り越えて、レスポンスクラスをDecodableへ移行する際に気をつけてよかったこ

    SwiftyJSONからDecodableへ移行する際に気をつけてよかったこと - Mirrativ Tech Blog
    hma2moto
    hma2moto 2023/10/10
  • 【インフラ】xDS API の EDS に手を加えて動的に Envoy で weight 調整できるようにした - Mirrativ Tech Blog

    こんにちは、ミラティブのインフラを担当している清水です。 ミラティブではクラウドに Google Cloud を利用しているのですが、稀にインスタンスの性能劣化が発生し動かしているアプリケーションの応答時間が長くなることがあります。 非同期な処理の場合は一時的にタスクキューの時間あたりの処理数が減るものの、遅延を許容できる機能であれば時間経過で回復するのでシステムを継続稼働できます。 一方で、web サーバのように同期処理の場合はリクエストを時間内に返すことができずに timeout したりだとか、worker が埋まって新たにリクエストが返せなくなったりと、正常にリクエストを返すことができずにユーザのクライアントにエラーが返ってしまします。 そこで、今回はクラウドが不調になったときに web サーバへ流れるリクエストの流量を動的に制御し、一時的にリクエスト数を減らしてユーザのクライアント

    【インフラ】xDS API の EDS に手を加えて動的に Envoy で weight 調整できるようにした - Mirrativ Tech Blog
    hma2moto
    hma2moto 2023/10/06
  • 「オーディオ版レイトレーシング」と「物理シミュレーションによる音響空間表現」|Prismaton

    「レイトレーシング」は 3D グラフィックスの重要な技術となっていて、レイトレーシングを使ったリアリティの高いグラフィックス表現を見る機会が増えてきました。 また同時に、「レイトレーシングをオーディオに応用する」といった言及もちょいちょい見かけるようになりました。 しかし、グラフィックスのシミュレーションにレイトレーシングが有効なのは光の特性をレイトレーシングで近似できているからであり、音の特性に関してはレイトレーシングだけで近似するのは困難です。これはもう少し広く知られていて欲しい事実なのですが、何故かあまりきちんと知られていません……。 そもそも悲しいことに、「物理シミュレーションによる音響空間表現(方角、残響、遮蔽などの表現)」を網羅的に真面目に考察した資料は恐ろしく少ないです。この現状では、レイトレーシングだけで音響空間表現が簡単に出来るというような誤解が生まれてしまうのも仕方ない

    「オーディオ版レイトレーシング」と「物理シミュレーションによる音響空間表現」|Prismaton
    hma2moto
    hma2moto 2023/09/20
  • Mirrativ iOSアプリでのメモリ使用量削減への取り組み - Mirrativ Tech Blog

    こんにちは、iOSエンジニアのふじのです。 Mirrativの機能開発を進める傍ら、iOSアプリのメモリ使用量の改善に取り組んでいます。 今回は、アプリ内でメモリ使用量を増やしている問題点を見つける方法と、それらをクライアント実装で解決する具体的なアプローチについて紹介します。 Mirrativアプリが抱える課題 着眼点とアプローチ 画像キャッシュの効率化 UIImageのリサイズ 画像のメモリキャッシュの上限サイズ設定 メモリリークへの対策 Allocationsやmemory graphを利用した手動検出 XCTestを利用したCI上での自動検出 改善の成果と今後の課題 We are hiring! 参考リンク Mirrativアプリが抱える課題 Mirrativアプリはライブ配信機能や視聴機能、Unityを利用したアバター機能やWebGLを利用したゲーム機能など、メモリを多く必要とす

    Mirrativ iOSアプリでのメモリ使用量削減への取り組み - Mirrativ Tech Blog
    hma2moto
    hma2moto 2023/09/07
  • 同時接続数30万超のチャットサービスのメッセージ配信基盤をRedis Pub/SubからRedis Streamsにした話

    LINE株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。 LINEヤフー Tech Blog Overview 30万を超える同時接続数を持つチャットサービスにおいて、リアルタイムでメッセージの受信などのイベントを配信するメッセージブローカーとして、私たちはRedis ClusterのPub/Subを使用していました。 私たちのサービスでは、ユーザー数の増加に伴い、Redis Clusterのシャード数を増やすことでクラスターの性能を向上させてきました。しかし、Redis ClusterのPub/Subでは、シャード数の増加に伴ってネットワーク帯域が圧迫される問題が生じ、これ以上シャードを追加することができない状況になりました。 この課題を解決するために、メッセージブローカーをRedis Pub/SubからRedis

    同時接続数30万超のチャットサービスのメッセージ配信基盤をRedis Pub/SubからRedis Streamsにした話
    hma2moto
    hma2moto 2023/09/06
  • GitHub APIを利用したスケーラブルなマスターデータ管理システム - Mirrativ Tech Blog

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

    GitHub APIを利用したスケーラブルなマスターデータ管理システム - Mirrativ Tech Blog
    hma2moto
    hma2moto 2023/09/04
  • あてっこ!ぷにまるずで利用したVisualScriptingとデザイナーフレンドリーな開発 - Mirrativ Tech Blog

    皆さんこんにちは。Unityエンジニアのおはぎです。 ミラティブでは先日「あてっこ!ぷにまるず」(以下ぷにまるず)というライブゲームをリリースしました。 使っている技術については以下の記事に概要が書かれています。 tech.mirrativ.stream 稿ではその中からVisualScriptingについて詳細を記述していきます。 VisualScripting VisualScriptingはUnity公式が提供しているノードベースのノーコードツールです。 Unity2018からBoltとしてAssetStoreで有料販売されていましたが、 Unity社が買い取りUnity2021からはVisualScriptingとして統合されています。 unity.com ぷにまるずで使われているVisualScripting ぷにまるずのインゲームでは以下のものがVisualScripting

    あてっこ!ぷにまるずで利用したVisualScriptingとデザイナーフレンドリーな開発 - Mirrativ Tech Blog
    hma2moto
    hma2moto 2023/08/03