Upgrade to Pro — share decks privately, control downloads, hide ads and more …

tubeplayR v1.0への道

tubeplayR v1.0への道

Japan.R 2020でLT発表した内容のスライドです
https://japanr.connpass.com/event/194867/

※ 資料は 2020-12-05 現在での内容となります。

Kazuhiro Maeda

December 05, 2020
Tweet

More Decks by Kazuhiro Maeda

Other Decks in Programming

Transcript

  1. tubeplayR v1.0への道 Japan.R 2020 kazutan(前田 和寛) 2020-12-05

  2. はじめに 2 / 29

  3. はじめに 自己紹介 名前/アカウント 前田和寛(Maeda Kazuhiro) @kazutan Twitter GitHub Qiita, r-wakalang,

    etc... 所属 LINE Fukuoka株式会社 開発センター - DataLabs - DataAnalysisチーム マネージャー 3 / 29
  4. Rソーシャル本 #宇宙本 #犬四匹本 はじめに 4 / 29

  5. はじめに 担当業務 LINEグループにあるデータを活用して様々な課題にアプローチ サービス関連 サービスの成長につながる分析 施策の効果検証など オペレーション関連 オペレーションの可視化 オペレーションの効率化につながる分析など 福岡で一緒にEnjoyしませんか?

    http://linefukuoka.blog.jp/archives/81637302_people_engineer_interview.html お気軽にご連絡ください 5 / 29
  6. 今日のお話 6 / 29

  7. 今日のお話 概要 私が開発/公開している tubeplayR パッケージのお話です tuveplayR とは 機能的な不満 新機能の実装 v1.0への道

    留意事項 分析や業務に関する話はありません 今回はRが大好きな一個人としてお話します かなり駆け足です 今日のスライドは公開した後に、Twitterに#japanr のハッシュタグをつけて流し ますので、細かいところなどはあとでそちらを参照してください 7 / 29
  8. tubeplayRとは 8 / 29

  9. tubeplayRとは 概要 RStudio上でYouTube動画を再生できるパッケージ Webinerを見ながらコーディング可能 作業用BGMを楽しめる インストール remotes install_github("kazutan/tubeplayR") #安定版 remotes

    install_github("kazutan/tubeplayR", "dev") #開発版 使い方 動画閲覧用URLをコピーしてくればOK(プレイリストにも対応) tubeplayR tubeplay("want/play/the/url") 9 / 29
  10. tubeplayRとは 使用画面はこんな感じです: 10 / 29

  11. 機能的な不満 11 / 29

  12. 利用者からの声 履歴について YouTubeのプレイリストURLを利用して毎日同じURLを再生しているのです が、再生するたびにYouTubeを開いてはURLをコピーしてConsoleで実行して います。 どうせなら、過去に再生したのを簡単に持ってくるようなのはできないものでし ょうか? 匿名希望(40代男性・福岡県) 動画リストについて いつもRで分析するときに利用しています。

    メドレー的な動画を気分によって再生したりするのですが、動画リストをストッ クして自由に再生できるようになりませんか? あと、そのストックしたのを他の人に共有するのを簡単にしたいです。 P.N. ごぼう天うどん大好き 12 / 29
  13. そんな機能はない 13 / 29

  14. ...でも、 14 / 29

  15. なければ 作ればいい 15 / 29

  16. 要件整理 リプレイ(history)機能について 以下の機能を実現する関数を実装すればOK 1. 再生するたびに、その動画情報をどこかにストックさせる 2. ストックしている再生履歴情報を呼び出せる 3. 再生履歴にアクセスしてリプレイさせる 4.

    再生履歴を消去させる urlストック・共有(playlist)機能について 以下の機能を実現する関数を実装すればOK 1. 動画情報をまとめたものを作成/呼び出し/消去する 2. 動画情報をまとめたものをtubeplayにセット(staged)する 3. tubeplayにセットしたものを再生する いざ実装へ 16 / 29
  17. 新機能の実装 17 / 29

  18. 全体的な変更点 user directoryについて historyもplaylistも情報をストックしなければならない そのユーザーのホームディレクトリに.Rtubeplay ディレクトリを作るように tubeplayRパッケージでデータを保存するときは、全てここに格納 消去したいときはtp_clean_user_dir() (引数なし)でOK 関数名について

    メイン関数であるtubeplay() はこれまで通り 各種exportしている関数についてはtp_* で統一 動画情報について title, type(single/playlist), url, timestampを取得 この4つを動画情報として定義し、tube_info とした 18 / 29
  19. history機能の実装(1) 実装の内部的なものは時間の都合により省略 tubeplay() の修正 引数history = TRUE を追加 再生すれば、historyがストックされるように historyの取得

    tp_get_history(view = FALSE, print = FALSE) 再生履歴へアクセス オブジェクトに引き渡せば、tube_info 形式の情報をdata.frameで格納可能 view = TRUE でView() へ送る print = TRUE でprint() へ送る 19 / 29
  20. history機能の実装(2) 実装の内部的なものは時間の都合により省略 historyの消去 tp_clear_history() 再生履歴をすべて消去 引数なし、Undoなし historyから再生 tp_replay(backto = 1,

    add_history = FALSE) 再生履歴から再生 backto = で遡る件数を指定。デフォルトは直前のを再生 add_history = で履歴に残すかどうかを指定。デフォルトはFALSE 20 / 29
  21. history機能の活用例 # 履歴 取得 df_history tubeplayR tp_get_history() # 動画情報 抽出

    tube_infos df_history[c(1, 6),] # 確認 knitr kable(tube_infos) title type url timestamp 1 【初音ミク】グリーンライ ツ・セレナーデ / Greenlights Serenade【オ リジナルMV】 - YouTube single https://www.youtube.com/watch? v=XSLhsjepelI 2020-12-05 13:59:21 6 作業用BGM - YouTube playlist https://www.youtube.com/playlist? list=PLfBmEmueFr_T3q- rHpuXegBPmyM_IJOli 2020-10-30 19:36:10 21 / 29
  22. playlist機能の実装(1) 新規playlist(plist )の作成 tp_create_new_plist(urls = NULL, tube_infos = NULL, label)

    与えたYouTube urlsまたはtube_info のオブジェクトからplaylist(plist )を作成し て保存 urls にはurlの文字列ベクトルを受け付ける tube_infos にはhistoryなどから抽出したtube_info オブジェクトを受け付け る urls とtube_infos の両方を与えると、両方をbind_rowsして一つにする label はそのplaylistの名前を指定 プレイリストは複数作成可能 内部的にはプレイリストのtube_info 形式のdata.frameをリストとして保持 この関数はあくまで作成と保存 プレイリストの呼び出し(staged)は別の関数で準備 22 / 29
  23. playlist機能の実装(2) playlistの確認(show) tp_get_plist(label = NULL, view = FALSE, print =

    FALSE, create_new = FALSE) 保存しているplaylistにアクセス label = NULL で、plist全体にアクセス 指定したい場合は文字列で与えればOK view = TRUE で対象をviewに送り、print = TRUE でリストの要約を出力 オブジェクトに渡せば、返り値として対象のプレイリストを格納 playlistの削除(remove) tp_remove_plist(plist_id = NULL, plist_label = NULL) 保存しているplaylistを削除 plist_id は通し番号、plist_label はlabelによって指定 23 / 29
  24. playlist機能の実装(3) playlistの呼び出し(staged) tp_start_plist(plist_id = NULL, plist_label = NULL, shuffle =

    FALSE) plist_id またはplist_label で指定したプレイリストを呼び出す(staged) plist_id は通し番号、plist_label は付与したlabelによって指定 呼び出しているplaylistの確認(get)、動画を再生(next) tp_get_staged_plist(view = FALSE, print = FALSE) tp_next_plist(skip = 1) tp_get_staged_plist は、呼び出しているプレイリストへアクセス view , print 、および引数は他のget系と同じ tp_next_plist は、呼び出しているプレイリストから再生 skip = 1 で次のを再生 再生された動画はstagedからはdropされる 24 / 29
  25. playlistの活用例 # history 持 tube_infos playlist tubeplayR tp_create_new_plist(tube_infos = tube_infos,

    label = "kosaki") # 作成 playlist 呼 出 tubeplayR tp_start_plist(plist_label = "kosaki") # 呼 出 plist 次 動画 再生 tubeplayR tp_next_plist() # playlist # csv 適切 形 export可能 kosaki tubeplayR tp_get_plist(label = "kosaki") # 作 playlist 削除 tubeplayR tp_remove_plist(plist_label = "kosaki") 25 / 29
  26. 「とりあえず動いたからデプロイしよう ぜ」 現在、devブランチでv0.1.4.9001 で公開中 でも… まだ「動作した」レベルなので、十分に作り込んでない 実はヘルプ全く書いてない ぶっちゃけExperimental そもそもなんでここまで作り込むの?必要なの? でも、私のQOLは向上した

    26 / 29
  27. v1.0への道 27 / 29

  28. Roadmap to v0.2 エラー回避を書く ヘルプを書く vignetteを書く パッケージのWebサイトを作る to v1.0 R

    Consoleからのコマンドで 「再生している動画をコントロール」 できるようにする ...多分できると思う 28 / 29
  29. Enjoy! 29 / 29