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

    etc... 所属 LINE Fukuoka株式会社 開発センター - DataLabs - DataAnalysisチーム マネージャー 3 / 29
  2. 今日のお話 概要 私が開発/公開している tubeplayR パッケージのお話です tuveplayR とは 機能的な不満 新機能の実装 v1.0への道

    留意事項 分析や業務に関する話はありません 今回はRが大好きな一個人としてお話します かなり駆け足です 今日のスライドは公開した後に、Twitterに#japanr のハッシュタグをつけて流し ますので、細かいところなどはあとでそちらを参照してください 7 / 29
  3. 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
  4. 要件整理 リプレイ(history)機能について 以下の機能を実現する関数を実装すればOK 1. 再生するたびに、その動画情報をどこかにストックさせる 2. ストックしている再生履歴情報を呼び出せる 3. 再生履歴にアクセスしてリプレイさせる 4.

    再生履歴を消去させる urlストック・共有(playlist)機能について 以下の機能を実現する関数を実装すればOK 1. 動画情報をまとめたものを作成/呼び出し/消去する 2. 動画情報をまとめたものをtubeplayにセット(staged)する 3. tubeplayにセットしたものを再生する いざ実装へ 16 / 29
  5. 全体的な変更点 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
  6. 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
  7. history機能の実装(2) 実装の内部的なものは時間の都合により省略 historyの消去 tp_clear_history() 再生履歴をすべて消去 引数なし、Undoなし historyから再生 tp_replay(backto = 1,

    add_history = FALSE) 再生履歴から再生 backto = で遡る件数を指定。デフォルトは直前のを再生 add_history = で履歴に残すかどうかを指定。デフォルトはFALSE 20 / 29
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. Roadmap to v0.2 エラー回避を書く ヘルプを書く vignetteを書く パッケージのWebサイトを作る to v1.0 R

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