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

Python で YouTube API 使って競合(?)を分析してみる

mu_zaru
October 01, 2020

Python で YouTube API 使って競合(?)を分析してみる

配信動画はこちら
https://www.youtube.com/watch?v=ziKpwLL52hI&feature=youtu.be

もし良かったらムーザルちゃんねるのチャンネル登録お願いします!
https://www.youtube.com/channel/UCLPHXwLp90A5R69Eltxo-sg

Twitter でもプログラミングネタをつぶやいているのでフォローお待ちしております。
ムー
https://twitter.com/mu_vpoe
zaru
https://twitter.com/zaru

mu_zaru

October 01, 2020
Tweet

More Decks by mu_zaru

Other Decks in Programming

Transcript

  1. YouTube Live (2020.09.24 Thur. 21:00~)

    View full-size slide

  2. 話す人
    現役のエンジニア二人
    赤貝が好きな CTO と
    デザイン勉強中のエンジニア
    @mu_vpoe
    最近の仕事は figma で画
    面設計をつくることで
    す。英語の勉強してる。
    ムー
    zaru
    @zaru
    CTO, Love 赤貝,
    JavaScript, Firebase,
    Web Components.
    Twitter フォロー
    お願いします!

    View full-size slide

  3. 話すこと
    Python 便利わざ
    バッチ処理の設計
    競合(?)分析

    View full-size slide

  4. Python は
    いいぞ
    まず、皆さんにお伝えしたいこと

    View full-size slide

  5. 記法がシンプルで覚えやすい
    Python いいところ
    インデントがブロックの代わり
    ブロックを { } で囲む必要がない
    セミコロンがない
    特殊記号が少ない

    View full-size slide

  6. 誰が書いても似た構造になりやすい
    Python いいところ
    Python の哲学「たった一つの良いやり方」という
    のがあり、同じことを色んなやり方でできる Perl
    とは逆の方針。
    There should be one-- and preferably only one --obvious way to do it.
    https://www.python.org/dev/peps/pep-0020/
    ただ言語自体も進化しているので、その時のたった一つの良いやり方自
    体は変わっていくため、混在している現状はある…。

    View full-size slide

  7. The Zen of Python

    View full-size slide

  8. Python で
    驚いた事

    View full-size slide

  9. id, list は変数名で使わない
    Python で id や list は組み込み関数であり、かつ
    変数で同じ名前を使ってもエラーにはならない。な
    ので避けた方が良い名前を覚える
    うっかり使っちゃいそうなもの
    id, list, str, help, hash
    min, max, sum, zip
    dir(__builtins__) で確認
    オブジェクトの識別値を調べる
    id() を上書きしてしまえる…

    View full-size slide

  10. デフォルト引数は共通
    関数のデフォルト引数は、関数定義時に評価される
    ので呼び出すたびに同じ変数が使いまわされる
    この to は1回しか初期化されない
    [12, 42] が返ってくる!

    View full-size slide

  11. 同じ式でも型で挙動が変わる
    タプルの中に za があるかどうか
    カンマをつければタプルに
    () で囲むだけではタプルにならない
    ので文字列扱いになっている。
    zaru の中に za 文字が存在するか
    のチェック

    View full-size slide

  12. Python は
    いいぞ
    いろいろあるけど、それでも

    View full-size slide

  13. Python で
    API を叩く

    View full-size slide

  14. シンプルすぎて説明がない
    requests ライブラリが定番

    View full-size slide

  15. YouTube Data API
    YouTube に関する操作やデータの取得ができる API。無料で使える
    - 公開されているチャンネルや動画に関する情報の取得
    - 認証したユーザのアクティビティ
    - 動画のアップロードなど含む操作
    今回はチャンネル API と検索 API 、動画 API の3つを使って情報を
    収集する。
    チャンネル API
    https://www.googleapis.com/youtube/v3/channels
    検索 API
    https://www.googleapis.com/youtube/v3/search
    動画 API
    https://www.googleapis.com/youtube/v3/videos

    View full-size slide

  16. バッチ処理の設計

    View full-size slide

  17. バッチ処理は役割に分ける
    役割に応じてバッチを分割する
    データ取得 データ活用
    バッチ処理を作るときは、データフローを作り、処理内容ごとの役割を明確にす
    る事が大事。横着して、1つの処理の中で複数の役割をするのは避けた方が良
    い。
    バッチ内部で一気に処理
    データ取得 データ整形 データ活用
    データ整形


    View full-size slide

  18. 再実行コストが高い
    バッチ内部で一気に処理
    データ取得 データ整形 データ活用

    1つの処理で全て行おうとすると、例えばデータ整形処理中にエ
    ラーが発生すると全ての処理が止まり、やり直しになってしまう。
    データ取得自体は正常にできているのに、やり直すのはもったいな
    い。
    最初からやり直し

    View full-size slide

  19. 再実効性とデバッグ容易性
    役割に応じてバッチを分割する
    データ取得 データ活用
    データ整形
    取得データ 整形データ
    グラフなど

    ここだけやり直し
    バッチを分割し、バッチの成果物を残す事で後続のバッチが失敗し
    ても再実行のコストが低く、かつ中間データを確認できるのでデ
    バッグなどもやりやすい。
    処理途中のデータ
    が見られるからデ
    バッグが楽〜

    View full-size slide

  20. 競合(?)分析

    View full-size slide

  21. pandas + Bokeh で可視化
    pandas でデータ整形して Bokeh に渡すだけで、
    インタラクティブなグラフが簡単に作れる

    View full-size slide

  22. ありがとうございました!
    次回は... 未定!
    質問感想など呟いていただけると嬉しいです!
    - ハッシュタグ #mu_zaru
    - ツイッター情報 @mu_vpoe , @zaru チャンネル登録
    Good ボタン
    お願いします!
    ムーザルちゃんねる

    View full-size slide