Slide 1

Slide 1 text

YouTube Live (2020.09.24 Thur. 21:00~)

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

The Zen of Python

Slide 8

Slide 8 text

Python で 驚いた事

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

Python で API を叩く

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

バッチ処理の設計

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

再実行コストが高い バッチ内部で一気に処理 データ取得 データ整形 データ活用 ❌ 1つの処理で全て行おうとすると、例えばデータ整形処理中にエ ラーが発生すると全ての処理が止まり、やり直しになってしまう。 データ取得自体は正常にできているのに、やり直すのはもったいな い。 最初からやり直し

Slide 19

Slide 19 text

再実効性とデバッグ容易性 役割に応じてバッチを分割する データ取得 データ活用 データ整形 取得データ 整形データ グラフなど ❌ ここだけやり直し バッチを分割し、バッチの成果物を残す事で後続のバッチが失敗し ても再実行のコストが低く、かつ中間データを確認できるのでデ バッグなどもやりやすい。 処理途中のデータ が見られるからデ バッグが楽〜

Slide 20

Slide 20 text

競合(?)分析

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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