サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
衆議院選挙2026
tech.mirrativ.stream
はじめに b3とは 背景と課題 b3オブジェクトストレージの再リリース 検証環境 IO性能の事前検証 検証の目的と予測 ベンチマーカーの設計と実装 システム構成 実装の詳細 S3クライアント 並行処理モデル 検証内容と結果 ピーク性能試験 Download の性能 Upload の性能 試験の結果 混合試験 混合試験の結果 考察とトラブルシューティング 性能に関する考察 検証中に発生した問題と対応 まとめと今後の展望 インターンシップで得た学び エンジニアとしての成長 学んだこと We are hiring! はじめに はじめまして、Takata Harunariと申します。現在大学4年生で、分散システムを専攻しています。 2025年6月から12月までインフラチームでインターンとしてお世話になりました。 本記事では、内製オブジェクトストレージ「b3」が実運用を模した負荷に十分に耐えうること
こんにちは、バックエンドのテックリード兼バックエンド基盤チームマネージャーの夏(なつ)です。 採用面接などの場で「バックエンド基盤チームって具体的に何をしているの?」と聞かれることがよくありました。これまでもバックエンド基盤チームのメンバーが取り組んできた内容は、個別のテックブログとして紹介してきました。 2022/12/15 ミラティブのインターンで趣味開発と大規模開発のギャップを体験しました 2022/12/22 Goのtestingパッケージにコミットした話 2023/09/04 GitHub APIを利用したスケーラブルなマスターデータ管理システム 2024/02/29 Cloud BuildでDockerのマルチプラットフォームイメージをビルド 2024/11/28 Identity-Aware Proxy(IAP)を利用したローカル環境での開発体験の向上 2025/08/07
こんにちは、ミラティブのインフラを担当している清水です。 ミラティブは2025年8月28日に10周年を迎え、ユーザーの皆さまに長年ご愛顧いただけて感謝の極みです。 一方で、長年の運用で刷新できないまま残ったレガシーなシステムもあり、古いものと新しいものを混在したまま運用を続けています。 過去記事でもサーバサイドの技術をPerlからGoへシステム移行することを紹介していますが、ミラティブのサーバサイドのアプリケーションは現在も継続してPerlからGoへ移行しています。 このため、GoとPerlをデプロイする必要があり、それぞれの言語特性にあったデプロイの仕組みでアプリケーションを更新しています。 しかしながら、長年の運用でGoの実行環境とPerlの実行環境では、デプロイについてそれぞれに課題が出てきており、2つの環境の差異による管理コストも増え、どうにか仕組みを統一化してそれぞれのデプロイの
こんにちは、バックエンドエンジニアの山倉です。 MirrativではPub/Subサーバーを使ってサーバー - クライアント間のリアルタイム通信を行っており、メッセージ形式はJSONを採用しています。HTTP APIについては従来からOpenAPI Validationをかけていましたが、Pub/Subサーバーで使われるJSONメッセージに対しては十分なバリデーションができていませんでした。 本記事ではJSONメッセージにOpenAPI Validationを適用する仕組みを導入した経緯と実装方法を紹介します。 きっかけは、サーバー - クライアント間のJSONの型不一致による障害でした。この経験から「メッセージをスキーマで守ること」の重要性を実感し、再発防止策としてOpenAPI Validationを導入しました。 1. 要約 2. 背景 3. 障害の説明 何が起きたのか 原因 4
Androidエンジニアの藤原(@fuji_tech7)です。 Jetpack Compose を使った UI 実装で、最近私が悩まされているのが Shadow(影)表現 です。 Material Design の仕様に忠実にしたい デザイナー指定の微妙な影を再現したい それでいてパフォーマンスは落としたくない こうした要求に対して、従来の Compose の shadow() API では 「微調整が難しい」「表現に限界がある」と感じています。 ミラティブでもFigmaで表現している影の再現に苦労する、または妥協案で許容してもらうことがありました。 Compose 1.9 では、こうした課題に応える形で 新しい Shadow API(dropShadow / innerShadow) が追加されました。 本記事では、この新しい Shadow API が何を解決し 従来の shadow 表
はじめに & 今年の振り返り みなさん、お疲れ様です!ミラティブのiOSエンジニア[いっちー]です。 年末が近づき、開発チームでもリリースやメンテナンス対応に追われる時期になりました。 思えば、iOSエンジニアにとっては今年もずっと忙しい1年間だったかもしれませんね? ちょうど1年ほど前にはCocoaPods Trunk Read-only Planが発表され、我々もSwift Package Managerへの完全移行を本格的に進め始めました。 さらに 5月にはAppleからTN3187: Migrating to the UIKit scene-based life cycleがリリースされ、iOSアプリへのscene-basedライフサイクルの導入が必須化されました。 6月にはナンバリングが刷新された iOS 26のベータ版が登場し、不安定な挙動や破壊的変更に頭を抱えた方も多かったは
こんにちは、バックエンド基盤チームの徳森です。 バックエンド基盤チームでは、バックエンドエンジニアの生産性向上やコスト削減を目的に、エンジニア主導で課題の発見や解決を行っています。 今回は、チームでの具体的な業務内容の一部として、二つのOSSにコントリビュートした話を紹介します。 要約 バックエンド基盤チームでは定常業務として依存モジュールの更新を行っていますが、必要に応じてアップストリームへのコントリビュートも行っています。 今回はその中から、sqldef/sqldefとgetkin/kin-openapiに貢献した事例を紹介します。 ミラティブではバックエンド基盤チームを含め、技術的な課題解決を共に楽しんでくれる方を募集しています。 背景 バックエンド基盤チームの定常業務の一つに、依存しているGoライブラリの更新があります。 私たちのプロジェクトではRenovateを導入しているため、
Androidエンジニアの藤原(@fuji_tech7)です。9月10日〜12日に DroidKaigi 2025 が開催されました。 私はカンファレンスデーの11日、12日に参加してきたので、その内容をレポートします。 ミラティブは 2022 年から DroidKaigi に協賛しており、今年で4年目を迎えます。 tech.mirrativ.stream 更に今回はDroidKaigiカンファレンスアプリの開発リードを弊社のkitakkun (@kitakkun_pb)が務めていました。かなり大変だったと思いますがお疲れ様でした! (私自身、軽微ではありますがコントリビュートさせてもらいました) github.com 2日間で48のセッションが行われましたが、その中から特に気になったものをピックアップしてご紹介します。 1日目 基礎から学ぶ大画面対応 〜「Large screen dif
こんにちは、バックエンドエンジニアのogatasoです。今回はDockerコンテナ上でプロセスが残り続けてしまう問題をPTY(pseudo terminal)を噛ませたタイムアウト処理で対応した話を紹介します。 はじめに ミラティブでは、開発環境や本番環境のMySQLのレコードを確認する際、sshで踏み台サーバに接続し、docker exec -it を使ってdockerコンテナ上でMySQL接続用のスクリプトを実行しています。しかし、このときMySQLクライアントのプロセスを終了させずにターミナルを閉じてしまうと、プロセスがサーバ上に残り続けてしまうという現象に悩まされていました。 原因調査 原因は docker exec -it にあったようです。このコマンドは、すでに動いているコンテナ内で追加のプロセスを起動し、擬似TTY (-t) と標準入出力のアタッチ (-i) を通して対話する
ミラティブでソフトウェアエンジニアをしている @8beeeaaat です。 去る2025/9/6に札幌で開催されたフロントエンドカンファレンス北海道2025 にて発表した内容を再構成して公開します! Dateに代わる新たな日時表現・操作APIとしてECMAScript標準化を目指し、2017年にプロポーザルが投稿された Temporal。ついに仕様策定も大詰めとなり、Firefox 139での正式実装リリースを始め、各ブラウザ・JSエンジンへの実装も進められています。 ミラティブでは2022年よりPolyfillを導入して社内業務管理機能を中心に導入を進めてきました。本記事では3年間の業務利用の中で培った業務で利用できるノウハウを共有します! 採用決定の現場 Date型の課題 次世代時刻標準 Temporal 主な特徴 Polyfillによる利用 今日から始めるTemporal移行 Dat
こんにちは、ミラティブの新嘉喜です。 ミラティブは、2025年9月19日(金)〜9月21日(日)に有明セントラルタワーホール&カンファレンス+ニコニコ生放送で開催される iOSDC Japan 2025 にスポンサーとして協賛させていただきます! iOSDC Japan 2025 については以下公式サイトをご覧ください。 iosdc.jp 協賛する背景 ミラティブは、ミッションである「わかりあう願いをつなごう」のもと、ゲーム配信プラットフォーム「Mirrativ」を運営しています。 ミラティブは「Mirrativ Tech Community & Activity Policy」を掲げ、エンジニアの社内外への発信を強く奨励しています。ミラティブのエンジニアは社外に対して積極的に発信し、イベントに参加し、OSSコミュニティに強く貢献しています。また、社内においてもエンジニア同士が積極的に交流
iOSチームの福山です。 Mirrativ iOSでは Flipper (Meta社のOSS) を使っていました。しかし Xcode 16.3 から Flipper が動かなくなるという事象が発生し、リポジトリもアーカイブされていることから、Vapor を利用して代替となる機能を作成しようと考えました。今回の記事では、その基礎となるサンプルの実装をご紹介します。 VaporはSwift言語で書かれたオープンソースのWebフレームワークです。 サンプル作成のフローは次のようになります。 VaporでMac上のWebブラウザにWebページを表示するローカルサーバーをたてる VaporでWebSocket(双方向通信)を行うローカルサーバーをたてる VaporとiPhone上のアプリがWebSocketで双方向通信 VaporとWebページがWebSocketで双方向通信 Vaporの導入 Ho
こんにちは、ミラティブの新嘉喜です。 ミラティブは、2025年9月10日(水)〜12日(金)の3日間にかけて開催される、「DroidKaigi 2025」に協賛することをお知らせいたします。 DroidKaigi とは 「DroidKaigi」は、Android技術情報の共有とコミュニケーションを目的に開催される、エンジニアが主役のAndroidカンファレンスです。 2025.droidkaigi.jp また、今年はミラティブのAndroidエンジニア kitakkun (@kitakkun_pb)が、DroidKaigi 2025 公式アプリの開発リードを担当しております! 公式アプリはオープンソースで開発されており、どなたでもコントリビュートできるそうなので、興味のある方はぜひチェックしてみてください。 github.com 協賛する背景 ミラティブは、ミッションである「わかりあう願い
はいこんにちは!フロントエンドやらバックエンドやらUnityやらなんでもやってるエンジニアの どじねこ です。 今回は少し前の話題になりますが、2025年3月12日に社内で開催した「Mirrativ LT Party 2025Q1」をご紹介します。 よろしければ過去に開催したLT会についてもご覧ください。 tech.mirrativ.stream tech.mirrativ.stream ⛳️ Mirrativ LT Party へのリニューアルの動機 ミラティブでは「わかりあう願いをつなごう」をモットーに、配信やライブゲームを通してユーザーさんに「好きでつながり、自分の物語(ナラティブ)が生まれる居場所」を提供しています。 私たちミラティブを支えるメンバー同士も、業務をともにするだけでなく、好きなものや興味のあるトピックを通じて、より深くわかり合える機会があった方が良いと考えました。 そ
こんにちは、バックエンドエンジニアのogatasoです。 Mirrativでは、配信者にギフトを贈る際に必要なコインをアプリ内課金で購入できます。 今回、不正の検知と対策を目的として、過去および今後のすべての返金履歴を取得し、データベースに取り込む仕組みを導入しました。 本記事では、App Storeから送られてくる返金通知をリアルタイムで受け取る方法と、過去の課金が返金されていないか調べる方法について解説します。 目次 目次 App Store Server Notificationsとは 設定 テスト通知を送る JWTの生成 通知の検証とデコード サンドボックス環境でREFUND通知を取得する トランザクション情報のデコード 過去の返金履歴の取得方法 リトライ処理の必要性 返金トランザクションの見分け方 レートリミットについて We are hiring! App Store Serv
こんにちは、バックエンド基盤チームの藤井脩紀です。 バックエンド基盤チームは、バックエンドエンジニアの生産性向上やコスト削減を目的に、エンジニア主導で課題を発見・解決している部署です。 このチームではCIの整備や依存関係の更新なども担当しており、その一環としてRenovateというソフトウェアのセルフホストを行ったのでそれについてお話しさせてください。 目次 Renovateとは セルフホストに至った背景 セルフホスト GitHubの下準備 Cloud Buildの設定 構成ファイルを準備 script/create-github-token.sh cloudbuild.yaml シークレットの登録 Cloud Buildトリガーの作成 Cloud Schedulerの設定 リポジトリの個別設定 余談:自動生成コードを利用しているがそれをリポジトリに含まない場合の問題 まとめ We are
こんにちは、Unityエンジニアのrioil(@rioil_dev)です。 Mirrativの3Dアバター(エモモ)の描画には、カスタム実装されたシェーダーを使用しています。 カスタムシェーダーにテクスチャシートを用いたアニメーション機能を追加するにあたって、シェーダーでアニメーションカーブを使えるようにしたため、今回はその方法を解説します。 検討した方法 アニメーションカーブをシェーダーで使う方法として、以下の2つの方法を検討しました。 毎フレーム、スクリプトでアニメーションカーブの値を計算して、マテリアルのプロパティにセットする アニメーションカーブをテクスチャにベイクして、シェーダーで参照する 1つ目の方法は、アニメーションカーブを MonoBehaviour に持たせて、毎フレーム Material.SetFloat メソッドで値をセットする方法です。 この方法はシンプルで簡単に実
こんにちは、ミラティブの広報の新嘉喜です。 ミラティブは、2025年8月22日(火)〜24日(木)に開催される「CEDEC 2025」に、スポンサーとしてセッション登壇と協賛をすることを決定いたしました。 ※CEDEC2025については、公式サイトをご覧ください https://cedec.cesa.or.jp/2025/ セッションの内容は、以下の通りです。 ミラティブ登壇者によるセッション 登壇者 井本 大登(技術戦略本部 技術部 Unityグループ マネージャー)@adarapata タイトル ライブゲームという新しい遊びの作り方 〜スラポンコロシアム開発事例から学ぶ配信者・視聴者一体型ゲーム開発〜 セッション内容 株式会社ミラティブでは、配信者と視聴者が一緒に楽しめる新しい形のゲーム「ライブゲーム」の開発に取り組んでいます。 本セッションでは「スラポンコロシアム」の開発経験をもとに
こんにちは、バックエンドエンジニアの makino です! この度、ミラティブは 2025年7月12日(土) にAtCoderにおいて ミラティブ プログラミングコンテスト2025 を開催します。 atcoder.jp 私自身、数年前まで競技プログラミングに熱心に取り組んでおり、夜な夜なコンテストに参加してはレートの増減に一喜一憂する日々を過ごしていました。 今では競技プログラミングから少し離れていますが、あのとき培ったスキルや知識は、日々の業務に確実に活かされていると感じています。 そんな自身の経験から、「AtCoderユーザーにもっとミラティブを知ってもらいたい」「一緒に働く仲間になってほしい」という想いをずっと持っており、この度ついに AtCoder での公式コンテスト主催が実現しました。 この記事では、AtCoderでのコンテストをきっかけにミラティブのことを知っていただいた方に向
こんにちは、Androidエンジニアの藤原(@fuji_tech7)です。 先日、Google I/Oが開催され新しいJetpack Composeが発表されました。 www.youtube.com AutoSize textやMaterial Expressiveなど気になるものは多いのですが、個人的にはModifierに追加されたonLayoutRectChangedが最も気になっています。 onLayoutRectChangedを簡単に説明すると、Composableの座標やサイズを取得する現行のonGloballyPositionedに近いものになっています。 今回はonLayoutRectChangedを掘り下げて、onGloballyPositionedとの違いや活用方法を紹介します。 本記事では2025.06.01のCompose Bomを利用しています。実行環境によっては異
こんにちは、Androidエンジニアの藤原(@fuji_tech7)です。 Jetpack ComposeのコンポーネントにScrollableTabRowがあります。 TabRowが指定領域にタブを敷き詰めて配置するのに対しScrollableTabRowはスクロール可能にすることでより多くのタブを配置することができます。 ただし、ScrollableTabRowは制限があり期待するレイアウトを作れませんでした。 その一つがScrollableTabRow内の子要素であるTabにminWidthを設定できないことです。 この課題について、最近動きがありましたので紹介します。 本記事内では正式リリース前のalpha版の機能を利用しています。 動作環境によっては正常に動作しない、または将来的に仕様が変更される可能性もあるため、ご留意ください。 ScrollableTabRowを使う上での課題
こんにちは、エンジニアのちぎら(@_naru_jpn)です。ゲーム配信アプリであるミラティブではイヤホンを使用しながら配信をすることができますが、動作の安定のために 有線のイヤホンの使用を推奨しています。 昨年 iOS 18 がリリースされてから、稀に AirPods Pro2 で配信の音声が途切れるといったようなお問い合わせがユーザーさんから届くようになりました。サービスとしては無線のイヤホンは推奨していないものの、技術的にどのような事象が発生しているのかは興味がありました。今回は ReplayKit を介して取得した音声の波形を手軽に記録・可視化できるようにした仕組みの話と、その調査結果を書こうと思います。 前提 iOS では、ReplayKit というフレームワークを介して、端末から映像データと音声データを取得することができます。音声データには、アプリケーションが発する音(audio
こんにちは、ミラティブでデータ分析基盤を担当しております芝尾です。 ミラティブでは本年度新卒研修の一環として、エンジニアではないビジネス職向けに、Web開発の研修を行いました。 Web開発研修の様子 研修の目的 この研修の目的は、ビジネス職にエンジニアになってもらおうという意図ではなく、以下のことを意図しています。 エンジニアがどのようなことをしているかをざっくり知ってもらう。 Webの基礎的な概念(HTTP,TCP,DNSなど)を知ってもらう。 研修背景 Web開発では、ビジネス職が企画を考えその企画職の考えた仕様を元にエンジニアが機能を実装することは一般的です。 Web開発を体験してもらうことでエンジニアに仕様を伝える際にどのようなように書くと伝わりやすいかなどの共有言語を身につけることを目的にしています。 研修参加者 研修は、新卒のビジネス職2名、エンジニア2名、中途社員の自由参加2
iOSチームの福山です。 Mirrativ iOSの開発ではSwift Macroを使ってイニシャライザやXcode Previews用のダミー要素を生成するなど活用しています。 しかし、ビルドが成功するにもかかわらず、Swift Macroが展開するコードを利用する部分でエラーが表示されることがありました。XcodeのコンパイルチェックとSwift Macroの展開するタイミングがずれて上手く機能していないのではないかと調べているうちに、Swift Macroをバイナリ化して使う方法があることを知りました。 結果的に表示のみのエラー解消に加えてクリーンビルドの時間を1分以上(約16%)短縮できました。Swift Macroを使う上で必須となるSwift Syntaxのビルドに時間がかかっていたのが原因です。 MyApp プロジェクトルート ├── 📦 MyLibrary (プロジェクト
こんにちは、ミラティブのエンジニア採用担当の野呂です。 いよいよ明日、Swiftに関する世界的な技術カンファレンス 「try! Swift Tokyo 2025」 が開催されます! 株式会社ミラティブは、ブロンズスポンサーとして協賛させていただいております。 try! Swift とは Swiftに関する国際的なカンファレンスです。Swiftの開発のコツや最新の事例を共有し、スキルを磨くことを目的としています。 開催日時: 2025年4月9日(水)〜11日(金) 場所: 立川ステージガーデン 公式URL: try! Swift Tokyo 協賛する背景 ミラティブは、ミッションである「わかりあう願いをつなごう」のもと、Swiftを活用してゲーム配信プラットフォーム「Mirrativ」を開発・運営しています。 エンジニア組織は「Mirrativ Tech Community & Activ
こんにちは!ミラティブの Android エンジニアの kitakkun です。 ミラティブでは年始に Android アプリの Material3 完全移行 QA を行いましたが、スクリーンショットテスト導入の成果もあり、ほとんどバグチケットの報告もなくスムーズに完了することができました。 Mirrativ の Android アプリでは、Jetpack Compose(以下、単に Compose)を2021年7月の1.0リリースから導入を開始しました。以来、新規画面は必ず Compose で実装しており、古い画面も積極的に Compose 化を進めています。 Jetpack Compose の Material ライブラリも2から3(以後簡単に M2, M3)へとバージョンアップし、M3 向けに開発されるコンポーネントも増えてきました。ミラティブの Android チームでは、昨年8月
環境 改善前 改善前計測 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
こんにちは フロントエンドエンジニアの どじねこです。 今回はミラティブのバックエンド開発環境の 2025 年上半期の現状を皆様にご紹介します。 なお 2021 年 12 月 時点での情報が別記事にまとまっておりますので、ここからのアップデート情報と言う形でご覧いただけるとより楽しめると思います。よろしければ併せてご覧ください。 tech.mirrativ.stream Multipass での運用と課題 2021 年 12 月 時点ではミラティブのバックエンド開発では Multipass を活用して VM 上でサーバーアプリケーションの実装が行われていました。より厳密には VM 上で dockerd が起動しておりそこでサーバーアプリのコンテナが Docker Compose により複数起動しています。 canonical.com 記事中では VM に SSH で接続し、VM 内部にコー
こんにちは、Unityエンジニアのいも(@adarapata)です。 今回は、ミラティブのライブゲーム「スラポンコロシアム」で活用しているリプレイデータについてMemoryPackを使って作成した話をします。 スラポンコロシアムとは スラポンコロシアム(スラコロ)はMirrativアプリ上で動作するライブゲームです。 他のライブゲームにも登場するスラポンなどのモンスターたちが戦う闘技場で、誰が最後まで生き残るかを予想するゲームです。 視聴者も配信者も一緒になって遊べるのが特徴です。 【1/23 ~ 1/30】 //#スラコロ Vol.35 開幕💃⁾⁾ \\ 💥新モード💥 🎶🪩パーリーチャンス🪩🎶が登場🕺 ◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤ 1位🥇2位🥈を当てて🎯 メダルを大量GET🎰💫 そして🤩 ˗ˏˋ✨DJベルチャ🎧がペットに✨ˎˊ˗ 獲得メダル🪙250
次のページ
このページを最初にブックマークしてみませんか?
『Mirrativ Tech Blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く