Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Electronで動画プレイヤー開発
Search
Yuta Imanishi
February 25, 2021
Technology
1.5k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Electronで動画プレイヤー開発
Think! FrontEnd by DMM #3 (
https://dmm.connpass.com/event/203178/)での登壇資料
Yuta Imanishi
February 25, 2021
More Decks by Yuta Imanishi
See All by Yuta Imanishi
動画配信の フロントエンドを支える 4年間とこれから
nisshii0313
1
660
動画配信のフロントエンドって何やってるの
nisshii0313
0
140
"動画"配信のお話
nisshii0313
0
57
Prometheusの話
nisshii0313
0
220
Other Decks in Technology
See All in Technology
AIを活用するために決めた "やらないこと" - 価値に注目する / Not betting on AI
soudai
PRO
1
490
AI 駆動 Terraform 開発/SRE_BizReach_MIXI_2
visional_engineering_and_design
5
2.1k
Omarchy Quattro の日本語設定周り
simosako
2
170
銀行勘定系システムにおける開発プロセス刷新×AIによる環境モダナイゼーション / Development Process Transformation and AI-Driven Environment Modernization
muit
0
1.6k
Snowflakeのコスト最適化を支えるアーキテクチャ設計
ktatsuya
1
1.5k
コスト最適化の「めんどくさい」を AWS FinOps Agent でチョット楽にする
classmethod_kaz
0
340
俺の仕事は AIに奪われないし、たぶんその BIも要らない
hikaruri
0
420
山手線を徒歩で一周してわかった、 位置情報アプリは「足」が最強のデバッガー
hinakko
0
140
株式会社シーエーシー エンジニア向け会社紹介資料
cac
0
57k
2026_devsumi_ozono.pdf
o3
3
470
幾何アルゴリズムで なめらかなピン操作を / iOSDC Japan 2026 / smoothpin
kazumanagano
0
330
Claude Code本って、 読む必要あるの?
oikon48
2
440
Featured
See All Featured
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.9k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
520
Between Models and Reality
mayunak
4
450
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
WCS-LA-2024
lcolladotor
0
830
Are puppies a ranking factor?
jonoalderson
2
3.9k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
570
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
330
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
600
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Skip the Path - Find Your Career Trail
mkilby
1
230
Un-Boring Meetings
codingconduct
0
420
Transcript
© DMM.com Electronで動画再生プレイヤー開発 合同会社DMM.com 動画配信事業部 配信基盤グループ 今西勇太 Think ! FrontEnd
by DMM #03
© DMM.com 2 自己紹介 • 名前:今西勇太(@nisshii0313) • 所属:東京理科大学 理学部 数学科
4年 • 現在: 2021卒内定者アルバイトとして動画配信事業部でお世 話になってます • 趣味: 日常系アニメ見たり、ゲームしたり、友人とwebサービ ス作ってみたり、たまーに電子工作 などなど
© DMM.com (余談) 内定者アルバイトの働き方 休日はゼミの準備 や、個人開発をして 自由に過ごしてます こんな感じの生活を かれこれ1年近く続 けています
3 平日のスケジュール (自分の例)
© DMM.com 今日話すこと • Electronの概要 • 新機能をリリースした話 (同時複数再生機能) 今日話さないこと •
Electronでの開発の 0→1部分 (チュートリアルを見た方が早そ う) • Electronの最新情報 (公式docをキャッチアップしてみ てください) 4 はじめに
© DMM.com Electronについてざっくりと 5
© DMM.com Electronとは 6 JavaScript、HTML、CSS でデスクトップアプリを作成できるフレームワーク クロスプラットフォーム対応ができる 中身はChromiumとNode.js Chrome(Chromium)対応だけで良いので、ブラウザ間の差分で苦しまずに済む 一方でクロスプラットフォーム対応の際に、OS間の差分で割と苦しんだりする
(MacとWindowsでのアプリ起動方式の違いなどなど…)
© DMM.com どんな感じで動いているか(ざっくり) Mainプロセス Renderer プロセス Renderer プロセス Renderer プロセス
7
© DMM.com Mainプロセス Renderer プロセス Renderer プロセス Renderer プロセス どんな感じで動いているか(ざっくり)
• BrowserWindowインスタンスを作り、ウェブページを作成 • BrowserWindowインスタンスを破棄することでRendererプロ セスを終了し、ウェブページを閉じる → 全ての作成されるウェブページと、対応するRendererプロセ スを管理している (backend node.js のようなイメージ) 8
© DMM.com どんな感じで動いているか(ざっくり) Mainプロセス Renderer プロセス Renderer プロセス Renderer プロセス
• BrowserWindowインスタンスを作り、ウェブページを作成 • BrowserWindowインスタンスを破棄することでRendererプロ セスを終了し、ウェブページを閉じる → 全ての作成されるウェブページと、対応するRendererプロセ スを管理している (backend node.js のようなイメージ) 9
© DMM.com どんな感じで動いているか(ざっくり) Mainプロセス Renderer プロセス Renderer プロセス Renderer プロセス
Mainプロセスで作成されたBrowserWindowインス タンスによってウェブページが実行される → html/css/jsを使ってChromeの画面に描画す るのとやっていることはほぼ同じ プロセス間通信によって柔軟な表現が可能 10
© DMM.com ここからが本題 11
© DMM.com DMM Player V2とは Silverlight製だった先代に代わる新しい動 画再生プレイヤー 12 ダウンロードした動画をPC上で再生するこ とができる
Electron製
© DMM.com 新機能をリリースしました 13
© DMM.com 複数ウィンドウでの同時再生機能 • 有効にすると、今現在再生しているウィンドウをそのままにして、別ウィン ドウで他の動画を自由に再生できる • ファイル関連付けを行なっておけば、見たい動画を複数選択、ダブルクリ ック、一気にプレイヤーが開かれて再生開始、なんていうこともできたり する
14
© DMM.com 15
© DMM.com 要件の整理 16
© DMM.com • on時に新しくウィンドウが開かれるタイミングは • 既に開いているウィンドウから「ファイルを開く」で複数選択した場合 • 関連付けをした状態で、動画ファイルを複数選択し、ダブルクリック • off時はこれまでのプレイヤーの機能を提供して、デグレーションが無いよ
うにする • 共通して持つべきデータ(認証情報、同時再生機能等の設定情報)と、共 通させないべきデータ(音量、再生速度など)がある 17
© DMM.com 実装 18
© DMM.com 19 Mainプロセス Renderer プロセス Renderer プロセス Renderer プロセス
© DMM.com 20 Mainプロセス Renderer プロセス Renderer プロセス Renderer プロセス
再生する動画情報を、各Rendererプロセスに分配 (Browserwindowインスタンスを立ち上げる時に、プロセス 間通信経由で動画のpath情報を渡す)
© DMM.com 21 Mainプロセス Renderer プロセス Renderer プロセス Renderer プロセス
UIから変更される各種設定(ログイン認証、音量、 再生速度、同時再生のon/offなど)を、 localstorageに保存、都度参照 (音量、再生速度等以外の同期すべき設定につ いては保存時に同期)
© DMM.com 22 これで設計ができたので、後は書くだけ
© DMM.com 23 めでたしめでたし
© DMM.com 24 とはなりませんでした ...
© DMM.com 何がいけなかったのか?? 25
© DMM.com 26 Mainプロセス Renderer プロセス Renderer プロセス Renderer プロセス
UIから変更される各種設定(ログイン認証、音量、 再生速度、同時再生のon/offなど)を、 localstorageに保存、都度参照 (音量、再生速度等以外の同期すべき設定につ いては保存時に同期)
© DMM.com 27 Mainプロセス Renderer プロセス Renderer プロセス Renderer プロセス
UIから変更される各種設定(ログイン認証、音量、 再生速度、同時再生のon/offなど)を、 localstorageに保存、都度参照 (音量、再生速度等以外の同期すべき設定につ いては保存時に同期) 同時再生のon/offはlocalstorageに入れちゃだめだった…
© DMM.com 同時再生設定はlocalstorageに入れちゃだめ なぜか? • localstorageはブラウザの持ち物であり、 Chromiumが立ち上がるまで、 つまりrendererプロセスが立ち上がるまでは参照できない つまり、このままでは 少なくとも1枚ウィンドウが開かれている状況でないと、設定をonにしていて
も同時再生できない… 関連付け再生を使っているユーザーにとっては致命的😢 28
© DMM.com そこで、同時再生設定の保存先を変更 localstorageではなく、アプリケーションディレクトリ内に直に保存する (覗かれて困るようなデータではなかったため、この方法が可能) 使用ライブラリ: electron-store (保存、読み込みのプロセスを扱いやすくラップしてくれる) 29
© DMM.com これで、正真正銘「後は書くだけ」 30
© DMM.com 無事リリースまで辿り着きました 31
© DMM.com ログ分析 32
© DMM.com • リリースして終了、ではなくリリース後のユーザーの反応を可視化し、そ の後の改善につなげています • 弊チームではほぼ全員が、自分でRe:dash(基盤を用意してもらっていま す)を使ってクエリを書いて測定・可視化しています (これは”FEがSQLかけるべき”って話ではないですが、個人的には開発した機能・UI に責任を持つという意味で、書けて困ることはないと思ってます)
33
© DMM.com 同時再生機能の利用者率 34
© DMM.com • コアなユーザー向け機能ではあるかもしれないが、思ったよりも有効化し ているユーザー数が少ない… • 原因の一つであろうレスポンシブ対応について、最新版で対応中 (この動画が流れる頃にはリリースされているかもです!) • 使っていただいて、気になる点・要望・不満等あれば、お寄せいただけれ
ばありがたいです! 35
© DMM.com まとめ 36
© DMM.com まとめ • Electronではブラウザ依存しない形でのクライアントサイドでのデータ保 存ができるので、用途に応じて使い分けていくと良さそうです。 もっと良い方法があれば是非教えていただきたいです! • FEでもクエリを書いて、軽くでもリリースの効果測定ができると良いのか なって個人的には考えてます
37
© DMM.com 良ければこちらもどうぞ 38
© DMM.com 39
© DMM.com • 配信基盤グループの活動についてもっと知りたければこちら https://inside.dmm.com/archive/category/配信基盤 • Electronでのプレイヤー開発についてもっと知りたければ特にこちら 『Electron製動画再生プレイヤー「DMM Player v2」』
https://inside.dmm.com/entry/2020/02/06/evolving_content_delivery_platform _01 40
© DMM.com ご清聴ありがとうございました 41