サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
マンガ大賞候補作は
tech.mirrativ.stream
Unityエンジニアの森田です。今回は前回書いた記事の続きで、CI/CDのちょっとした改善をした話を書いていきます。 tech.mirrativ.stream 課題 以下の記事で書いたように、ミラティブでは複数のアプリのバージョンを運用しており、それに合わせてアセットも複数のバージョンを管理しています。 tech.mirrativ.stream アセットの更新がアセットのFix用ブランチとして運用しているmasterブランチに取り込まれると、その更新をリリース用のブランチにそれを取り込まなければいけないのですが、この作業をその都度デザイナーからエンジニアに依頼する形になっていました。またバージョンごとに作られたリリース用ブランチ全てに取り込まなければいけないため、とても煩わしいです。 そのため今回はmasterブランチにアセットの更新が入った時点で各リリース用ブランチに自動的にマージされる
こんにちは。shogo4405です。本エントリーは、Firebase Crashlytics(以下Crashlytics)を利用しているiOSエンジニア向けにError情報の保存および活用についてのミラティブ社の事例を紹介したいと思います。 Errorの収集 ここで言うError情報とは、protocol Error : Sendableのことを指しています。Mirrativでは、主に次のError情報を収集してアプリケーションの品質向上につなげています。 URLSession#dataTaskでコールバックで得られるError 通信に関わるエラーを検知する用途 DecodableのDecodingError クライアントとサーバー間でデータ交換がうまくいっているか検知する用途 try AVAudioSession.shared.setCategoryでスローされるError 音声系統が意
こんにちは、エンジニアのちぎら @_naru_jpn です。ミラティブでは開発プロセス改善の一環として、スクラムフレームワークを試験的にひとつの開発チームに導入し、開発を行っています。該当する開発チームでは1週間のタイムボックスでスプリントをきり、導入開始から12スプリント(3ヶ月弱)をこなしてきました。チームのスクラム開発にも慣れが見えはじめ、当初想定していた開発プロセスの改善も実感が湧くようになってきました。今回は、スクラム導入の背景や内容、今後の展望などをご紹介します。 スクラム導入前の開発体制とモチベーション スクラム導入前の開発イメージ スクラム導入前の開発の流れは上図のようです。仕様書と工数の概算をもとにしてガントチャートにスケジュールがひかれ、フェーズごとに開発を進めていきます。もちろんすべて天下り式に開発を進めている訳ではなく、デザインがある程度できた時点でエンジニアも含め
Illustrated by egonelbre. The Go Gopher was designed by Renee French. こんにちは、バックエンドエンジニアの藤井脩紀です。 今回はGoにコントリビュートすることができたのでそのお話をさせていただきたいと思います! 概要 早速コミットの内容からですが、並列実行されるテストで環境変数を設定できなくするというものです。 コード的にはtestingパッケージのT.SetenvとT.Parallelを組み合わせて呼び出すとpanicを起こすようにするという変更になります。 (正確にはもとからそういった実装になっていたのですがカバーされていないケースがあったのでその対応をしました) testing: T.Setenv can be called after T.Parallel · Issue #55128 · golang/go ·
はじめまして!フロントエンドエンジニアのエンドー(@onikumaruBuu)です! 私は大学3年生で、普段は大学の友人と「学食モバイルオーダーアプリ」の開発をしています。フロントエンドに興味があり、React / TypeScriptを勉強中です! 8月中旬からインターンとしてミラティブに入社し、フロントエンド開発業務を行ってきました。 本記事ではフロントエンドとしてのミラティブでのインターンで身につけた知見を共有します。 目次 目次 ミラティブでのフロントエンド開発 担当したフロントエンドの仕事 イベントLPのTailwind CSSへリプレイス なぜTailwind CSSに置き換える必要があるのか。 grid-templateの実用性 ちょっぴりバックエンド Goの厳格なCIテストとの戦い ミラティブのここがすごい! スゴ飯会 Unipos フルリモートでのインターン 終わりに W
皆さんこんにちは、earlgray(@earlgray329) と申します。 10月17日〜12月19日の期間で、株式会社ミラティブの就業型インターンシップに参加していました。私は基盤開発技術部のバックエンドチームに所属して様々なタスクに携わらせて頂きました。 インターンシップの中で、普段行なっている趣味開発と Mirrativ という規模の大きいアプリケーションの開発の間で様々なギャップを経験することができたので、今回はインターンの中で着手したタスクとそれによって得られた知見等を紹介します。 目次 目次 基盤開発技術部とは 着手したタスク 1. Mirrativ 管理画面のログイン画面の SPA(React) 化 背景・概要 苦労したこと・得られたこと 2. 任意のユーザとしてログインできるようなデバッグ機能の追加 背景・概要 フィードバック 3. エモカラのオススメのアーティスト一覧と
こんにちは、フロントエンドエンジニア 兼 バックエンドエンジニアの駒木です。 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 →
ミラティブでAndroidエンジニアのインターンをしています 中脇です。 個人開発でiOSを1年間した後、インターンでAndroidを1年半やっています。そこでチーム開発だからこそできる最速学習術があると思い、ブログを書いてみることにしました。 もったいぶらずに書くと、毎週金曜日に「コード共有会」というものを開き、新しく書いたコードを共有したり、お互いのコードを指摘したり、先輩エンジニアに指摘されたところを共有しあっています。 毎週コード共有会で集まり議論しています そもそもこのコード共有会はAndroid歴1,2年目の私たちビギナーが自発的にやりたいと言って生まれたもの。ビギナーが中心となって共有会を進めているからこそ、インプットからアウトプットまですることができ、しっかりとした理解に持っていくことができていると思います。 ビギナーは知らないことだらけ 1人で開発をしていた時、何もかも自
こんにちは、バックエンドエンジニアの夏(なつ)です。今回はMirrativのバックエンドで使っているライブラリをご紹介します。 これらの記事のバックエンド版になります!(2年越し) tech.mirrativ.stream tech.mirrativ.stream ライブラリ一覧 https://pkg.go.dev/ オリジナルの The Go gopher(Gopherくん) は Renée French によるデザイン cloud.google.com/go/bigquery 分析チームが生成したユーザの特徴量などがBigQuery上に存在しているため、それらをバッチ処理でMySQL上に取得する際に利用しています。 tech.mirrativ.stream cloud.google.com/go/compute/metadata 開発環境などでしか動いてほしくない処理が本番環境上で動
ピクミンのスマホゲームに歩かされ続けている福山です(現在Lv51 - 合計歩数1,415,248) iOS 16で音楽や動画を流しているときにロック画面がいい感じになりましたよね! 正式名称はわかりませんが、ここに表示される画像はアルバムアートやアートワークなどと呼ばれているようです。 Mirrativ iOSアプリの配信視聴時もいい感じになっているはず... と思ったのですが、ただの灰色の画面になっていました😨 「なんとかしたいなぁ」と思い既存のコードとリソースをほんの少しいじった結果、以下のようになりました!Mirrativアプリv9.88.0から反映されています。 大画面で画像を表示したくない or 他の通知もすぐ見たいという場合には画像部分をタップすることでコンパクトに表示されます。 コントロールセンターの右上のブロックを押すことでも画像を見ることができます。 iPhone 14
みなさん、こんにちは!2022年8月よりAndroidエンジニアとしてインターン中の kitakkun です。 現在MirrativのAndroidチームでは、アプリケーションの品質向上を目指してマルチモジュールの導入を進めています。 Mirrativでは、元々あったmirrorman(当時の開発コードネーム)という巨大なモノリスのモジュールから、新規開発部分をfeatureモジュールに切り出して開発をしています。 モノリスモジュールからfeatureモジュールを分離 元々モノリス部分だったmirrormanが巨大で、mirrormanにあるクラスをfeatureモジュールで使いたいケースがあり、未だmirrormanへの参照が残っている状態です。 なるべくmirrormanへの参照をなくすために、特定のfeatureモジュールでしか使われていないファイルをmirrormanから移動してい
こんにちは ハタ です。 Mirrativのインフラ内で実際に開発・運用している内製のRedisサーバについてお話したいなと思っています。 前回の記事 は、今回紹介する内製Redisサーバで起きたメモリリーク対策に関するお話しとなっておりますので、もし未読であればあわせて読んでいただければと思います。 今回はなぜ Redis サーバを内製することにしたのかの経緯や実装についての簡単な紹介が出来たらなと思っています Redis 導入の経緯 課題感: 揮発しないでほしい 課題感: 生存時間が短いデータを保持したい 課題感: 日次データをなんとかしたい 候補 Redis Cluster のヨシアシ: slot 管理 Dynomite のヨシアシ: sharding/replication radisha = Raft + Redis + HA Raft クラスタ コマンドとデータストア レプリケ
左から久賀、北川、中脇 こんにちは。Androidエンジニアの久賀と、インターン生の北川、中脇です。 2022年10月5日(水)〜7日(金)に開催された「DroidKaigi 2022」にミラティブのスポンサー枠で行ってきました。 2020年は中止、2021年はオンライン開催なので、2年ぶりの対面での開催となりました。僕ら3人はこのようなイベントに出席することが初めてなので、ワクワクしながら参加しました。 早めに東京ドームシティ会場に着いたのですが、既にたくさんの人がいて交流していたり、ブースの人と話し合っていたりしました。これが国内最大規模のAndroidイベントなのかと、今まで見たことのない景色だったのでびっくりしました。 DroidKaigiで色々な方と話し、たくさん学んできました。ではどう感じたかを書いていこうと思います。 公式アプリのコントリビュート まず、DroidKaigiの
みなさまこんにちは。@n0mimonoとshirakawaです。今日はミラティブの中で行われている社内勉強について紹介させていただきます。社外に公開しながら社内にも宣伝をする一石二鳥の作戦です。 ミラティブではエンジニアが自身やメンバーのために勉強会や交流会を開くことを奨励しています。 tech.mirrativ.stream その一つとして、毎週木曜日に行われている勉強会を紹介します。 勉強会 以下、社内文書からの転載になります。 なぜやるのか 新しい知識の獲得・技術レベルの向上のため ディスカッションを通してチームビルディング やらないこと 事前資料準備等: 参加者に負担がかかるため どうやるのか 本を決めます 参加者で読みたかった・読んでみたかった本を出す 投票によって選ぶ 週一回、45分集まる曜日・時間(カレンダーは1時間抑える)を決めます 集まった人で本を順番に音読していきます
インフラ・ストリーミングチームの @udzura です。(一ヶ月経ってしまいましたが)9月8日から9月10日まで、三重県でRubyKaigiがありました。 rubykaigi.org 久しぶりのオンサイト会場での開催ということで、大いに盛り上がり、感想ブログなどもたくさん書かれています。 今回は、Rubyをメインで使っていない会社であるミラティブのエンジニアの立場から、RubyKaigiのトークは勉強になるという話をします。 ミラティブの技術スタックとコミュニティについて ところで、以下に、ミラティブのEngineer's Handbookから、技術スタックについての紹介ページを引用します。 エンジニアハンドブックより引用 この通り、実はRubyはアプリケーション開発のメインは使っていないのです*1。 ですが、今回は、後述する通り私がRubyKaigiのCfPに通過したため、「社内外へ積極
こんにちは。気づいたらミラティブに入って1年が経ってました。早いものですね。ブログを書いてて気づいたんですが、1年前の自分と大きく変わっていたことを再認識しました。プログラミング能力といった技術的なことから、仕事・仲間に対する意識といった内面的なことまで、たくさん変化がありました。そんなことをつらつら書いていきます。 目次 目次 自己紹介 ミラティブでの活動内容・働き方 生まれて初めて見たでっかいコード 毎週の勉強会 場所に囚われない働き方ができる 開発エピソード 1年前の自分と比較して We are hiring! 自己紹介 「お前誰やねん」と思われないように少し自己紹介。アプリ開発を始めたのは大学2年生の時。1年間くらい個人でスマホアプリを作ってました。どんなアプリかというと、同じ大学の友達同士で話し合えるTwitterのようなアプリです。オンライン授業で友達が作りづらい状況にあるため
こんにちは、ミラティブの野呂です。 ミラティブは、2022年10月5日(水)〜7日(金)にかけてオフラインおよびオンラインで開催される、「DroidKaigi 2022」に協賛します。 DroidKaigi とは 「DroidKaigi」は、Android技術情報の共有とコミュニケーションを目的に開催される、エンジニアが主役のAndroidカンファレンスです。 https://droidkaigi.jp/2022/ 協賛する背景 ミラティブは「わかりあう願いをつなごう」をミッションにゲーム配信プラットフォーム「Mirrativ(ミラティブ)」を運営しています。 そしてミラティブは「Mirrativ Tech Community & Activity Policy」を掲げ、ミラティブエンジニアの社内外への発信を強く奨励しています。 ミラティブのエンジニアは社外に対して積極的に発信し、イベント
ミラティブのAndroidエンジニアの chocomelon です。 MirrativのAndroidアプリでは、Androidアプリケーションの内部品質向上のために開発で以下を取り入れています。 データフローの単方向化(Flux導入) Viewからのロジック切り離し(Flux、Jetpack Compose導入など) 責務分割、依存方向の強制(Flux、マルチモジュール導入など) 今回の記事では特にマルチモジュールについてお話します。 MirrativのAndroidアプリは、配信/視聴機能、アバター機能、リッチなアニメーションなど複雑な要素を一つの画面で表現することが多々あります。 これらを考えなしに実装すると、可読性の悪化を招いたり、不具合が発生しやすく調査しづらいコードにしてしまいがちです。 複雑なアニメーションやアバター機能などを持つ配信画面 ミラティブでは多くのメンバーがネイテ
はじめに 「ミラティブのエンジニアの発信の文化やポリシーってどうなってるんですか?」 本ドキュメントは、多くの方に聞かれるこの問いに答えるものになります。 好きでつながり、自分の物語(ナラティブ)が生まれる居場所 ミラティブはエンジニアの技術に対する強い思いによって成り立つチームです。ミラティブのエンジニアのミッションは、ミラティブというチーム・プロダクト・技術に貢献することであります。 一方、私達はナラティブが生まれるコミュニティの会社であり、わかりあおうとし続けるために、エンジニアチームのビジョンとして、ミラティブをテックな組織としてブランディングすることを掲げます。 すなわち、ミラティブのエンジニアは社外に対して積極的に発信し、イベントに参加し、OSSコミュニティに強く貢献するものであります。当然、社内においてもエンジニア同士が積極的に交流し、勉強会を開催し、互いの健やかな成長を促す
紳士淑女、エンジニア、あるいはそれを志す皆様おはようございます。かさいさん @streamwest1629 です。 今この記事を書き始めたのは午後3時。普段、私が個人的な趣味で書く記事だと、冒頭は 「依存関係逆転則含む諸原則に苦しめられた方々,いかがお過ごしでしょうか」 であるとか、「Gopherの皆様、いかがお過ごしでしょうか」 であるとか、ある程度対象読者層を絞った文言で始めています。しかし、この記事の読者層をどの程度絞って書いたものかと少し悩みながら上記冒頭文を選びました。 さて、タイトルにある通り私はこの夏に1ヶ月半という短い期間ではあるのですが、ミラティブのインフラストリーミングチームにてインターンをさせていただきました。 自分の技術力にはある程度自信があったので、心理的に余裕を持った状態でミラティブのインターンに参加しました。 しかし、実際にミラティブのインターンとして参加しイ
こんにちは、ミラティブの野呂です。 2022年8月23日(火)〜25日(木)に行われた CEDEC2022 にて、スポンサーとして登壇 & 協賛をさせていただきましたのでご報告させていただきます。 本稿では、セッションの紹介と、資料を公開します。 ※CEDEC2022については、公式サイトをご覧ください https://cedec.cesa.or.jp/2022 ミラティブ登壇者によるセッション 登壇者 プロダクト開発技術部 Unityグループ マネージャー 菅谷 琢磨(@tetsujp84) エモモデザイン部 3Dグループ マネージャー 下原 雄大(@Youday313) 発表内容 ミラティブでのモバイル×ライブゲーミングへの取り組みと挑戦 ミラティブで取り組んでいるモバイルでのライブゲーミングの事例とライブゲーミングにおけるUnityの技術について紹介しました。 ライブゲームにはMir
こんにちは、ミラティブの野呂です。 いよいよ今週末からはじまる iOSDC Japan 2022 にて、ミラティブからiOSエンジニア千吉良(@_naru_jpn)が登壇 & ゴールドスポンサーとして協賛をさせていただきます! なお本エントリーは「iOSDCチャレンジ」も兼ねています。 ※ iOSDCトークンは半角 # からはじまるスペースを含まない文字列です。 iOSDCについては以下公式サイトをご覧ください。 https://iosdc.jp/2022/ 登壇内容 レギュラートーク(40分) 2022/09/10 17:15〜 Track B PiPを応用した配信コメントバー機能の開発秘話と技術の詳解 by 千吉良 成紀(@_naru_jpn) fortee.jp ※過去の関連記事はコチラ! tech.mirrativ.stream tech.mirrativ.stream ミラティブ
みなさまこんにちは、よこて @n0mimonoです。段々とすごしやすい気温になってきましたがいかがお過ごしでしょうか。今日の話は ミラティブとライブゲーム ライブゲームはUnityを利用したWebGLベースで動いているよ バックエンドアーキテクチャの紹介 行ってみます! ミラティブ × ライブゲーム ミラティブは、スマホで簡単にゲーム配信ができるサービス『Mirrativ』を展開していますが、今年(2022年)からゲームとライブ配信を融合させた『ライブゲーミング』に特に注力してます(次は4月次点のプレスリリース)。 prtimes.jp 「ライブゲーミング」とは、配信中のゲームに視聴者が介入できる、ゲームとライブ配信が融合した次世代のゲーム体験となります。 視聴者は従来のライブ配信のようにコメントやギフトアイテムを贈るだけでなく、実際に配信者といっしょにゲームをプレイする「参加型ライブゲー
インフラ・ストリーミングチームの id:udzura (@udzura)です。今回は、Goミドルウェアのメモリリークを見つけて解決する際に、どのようなプロセスを踏んでいったかを解説します。 Go製のミドルウェアの概要 ミラティブでは、Webアプリケーションのみならず、ミドルウェアに相当する部分についても必要なものは内製しています。その中の一つに、社内で「Radisha」と呼んでいる各種集計とキャッシュなどを行うためのミドルウェアがあります。Radishaは以下のような特徴を備えています。 GET、SET、SETEXなど基本的なRedis互換のコマンドを実装している。そのため、既存のRedisクライアントライブラリから操作が可能である。 ランキング集計、一定時間内のアクセス集計などが行えるよう、Redis にない独自のコマンドを実装している。 高い可用性を志向しており、オンメモリのデータは
みなさま、今年も夏(summer)がやってきました。よこて @n0mimono です。今回はミラティブのプロダクト開発組織を更新したよという話をします。ついでにこれまでの歴史と今後の展望も紹介します。 前回記事はこちら tech.mirrativ.stream プロダクト開発と体制 組織 まず基本情報から、ミラティブの展開するサービスは『Mirrativ』です。メンバーは何らかの形でこのサービスに関わります。前回記事時点で80人と書きましたが、今確認したら100くらいのメンバーがいます。エンジニアが所属する技術部を数えたら40人くらいいます。 前回記事の時点では、単一の技術部の下にグループをぶら下げる構成にしていました。 技術部 アプリ バックエンド インフラ・ストリーミング 人数も増えてきたため、7月から 技術部を2つに分けました 。だいたいこんな感じ。 プロダクト開発 Unity アプ
ミラティブのAndroidエンジニアのmorizoooです。 MirrativのAndroidアプリでは、新規で作る画面には積極的にJetpack Composeを活用しています。 tech.mirrativ.stream Mirrativは、多くのユーザーがゲームや雑談などの配信をしており、配信を盛り上げるための演出として通常のアニメーションに加えてLottieも織り交ぜ、リッチなアニメーションを実装しています。 Jetpack Compose導入以前は、AnimationListenerのCallbackを入れ子にする形で複雑なアニメーションを実現していたのですが、いざJetpack Composeで実装しようとなるとどう実装するのが良いのか苦心しました。 今回の記事では、実際にアプリで使っているアニメーションを例に、Jetpack Composeで作ったアニメーションを紹介します。
こんにちは、エンジニアの千吉良(ちぎら)@_naru_jpn です。ここ最近 QA に関して考える機会があり、Systematic Software Testing という本を読んでいたところ、色々と刺激を受けるところがありました。計画書の作成やリスク管理などテストの実施以外の領域についても多く書かれていましたが、まずはミラティブの現状に基づいた改善を行うべきだろうと考えました。今回は特にメトリクスの取得などに関して、GAS(Google Apps Script)を活用してミラティブの業務に応用してみたことについてまとめてみました。 以下では細かいことにも触れているので、3行まとめをおいておきます。 手動テストの進捗を見えるようにしたよ GAS(Google Apps Script)で実装したよ ついでに関連業務を自動化したよ ミラティブにおける QA と解決できそうと感じた課題 ミラティ
7月からミラティブにUnityエンジニアとして入社した森田です。 弊社ではUnityのCIとしてJenkinsを利用していますが、GitHub Actionsのセルフホストランナーと連携させることで、JenkinsはそのままでGitHubのWeb画面からジョブを実行できるようにしてみたので、書いておきます。 課題 実装 GitHub Actionsのセルフホストランナーの設定 JenkinsのAPIトークンを発行する workflowファイルの作成 結果 残った課題 We are hiring! 課題 弊社ではアプリのUnity部分とアセットバンドルのビルドにJenkinsを利用しています。 tech.mirrativ.stream JenkinsはUnityエンジニアに貸与されているMac miniにそれぞれにインストールして運用をしていたため、CIビルドするためにはその都度Mac mi
ミラティブでiOS開発をしている福山(@fokotate)です。 今回はSwiftFormatをMirrativのiOSプロジェクト(約1500のSwiftファイル)へ導入したときのことを話します。 導入にあたって 私は当初、SwiftFormatについてよく知らなかったため導入にはあまり乗り気ではありませんでした。 しかし調べてみると、実行タイミングによってはチームにとってほぼストレスなくソースコードを綺麗に保てることがわかってきました。 コミット実行時にSwiftFormatがコードを変更してコミットを中断、その変更を取り入れて再度コミットするといった一手間だけです。 導入したい気持ちが高まってきたものの、いきなり新しいツールを持ち込むのはチームから反発も受けそうだったので、Slack上で様子をみたり、ドラフトPRを書いたり、勉強会を開いて徐々に受け入れられる状況を作りました (実際は
次のページ
このページを最初にブックマークしてみませんか?
『Mirrativ Tech Blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く