SlideShare a Scribd company logo
作って学ぶ Python
Youtube の動画リストを作るアプリの開発

第1回 (全2回予定)
金子純也
(Morning Project Samurai 代表)
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
目次
• MPSとは
• Why Python?
• 本日のオーバービュー
• 基本的な用語の定義
• Python プログラム始めの第一歩
• アプリ作成
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
Morning Project Samurai (MPS)
• Morning

- 土曜の朝を有意義に
• Project

- プロジェクト指向
• Samurai

- 謙虚に学習

- プロジェクトをバッサバッサ

と斬りまくる
プロジェクト
リーダー
シップ
メンバー
シップ
成果
人脈
UP!
UP!
UP!
キャリア
知識・技術
UP!
UP!
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
目次
• MPSとは
• Why Python?
• 本日のオーバービュー
• 基本的な用語の定義
• Python プログラム始めの第一歩
• アプリ作成
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
MPS で主に使う言語
特に規定なし
(プロジェクト依存)
しばらくは Python がメイン
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
ぶらサボり
(東京メトロオプンデータコンテスト出展作品)
Python + Django で開発
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
我々の今後の主な活動の一部
• ぶらサボりのコードの理解
• ぶらサボりのアップデート・リファクタリング
• ぶらサボりの海外展開(Burasabori Abroad)
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
Python 人気上昇中
(出典: http://news.mynavi.jp/news/2014/10/03/017/)
Dropbox, Instagram.
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
目次
• MPSとは
• Why Python?
• 本日のオーバービュー
• 基本的な用語の定義
• Python プログラム始めの第一歩
• アプリ作成
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
本シリーズで作成するアプリ
Youtube の動画を検索して
検索結果の動画URLリストを表示するアプリ
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
応用場面
コンテスト参加者の投稿動画リストを作りたい!
(http://bit.ly/metroodc_sheets)
ガンダム関連動画を集めたまとめサイトを作りたい!
なまけもの関連動画を一気にダウンロードするアプリを

作りたい!
Q. あなたは何を検索して、その結果をどう利用しますか?
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
みんなの回答
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
さらなる応用場面
Youtube 以外のサービスからの動画リスト取得
Yahoo からの株価情報取得
ぐるなびなどの API サービスの利用
etc.
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
本日作成するアプリ
Youtube の動画を検索して
検索結果を表示するアプリ
• • • • • • • • •
• ただ検索結果を表示するだけ
• リストにするのは次回
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
必要となる知識と技術
• 動画検索のメカニズムに関する知識

- HTTP 通信のGETメソッドに関する知識
• 上記を踏まえて動画検索を Python 上で実現する知識と技術

- Python の基礎

- urllib の使い方

- プログラムで現実問題を解決するコツ
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
本日学ぶこと
• Python の基礎

- オブジェクト、

型、モジュール、クラス、関数の使い方、

urllib による GET メソッドを用いたHTTP 通信、

プログラムで現実問題を解決するコツ
• HTTP 通信と GET メソッドの基礎
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
目次
• MPSとは
• Why Python?
• 本日のオーバービュー
• 基本的な用語の定義
• Python プログラム始めの第一歩
• アプリ作成
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
アプリケーションの定義
A program or piece of software designed to fulfill 

a particular purpose
(出典: http://www.oxforddictionaries.com/)
訳:
ある目的を達成するためにデザインされたプログラム
またはソフトウェアの一部
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
ソフトウェアの定義
The entire set of programs, procedures, and related
documentation associated with a system and especially a
computer system
(出典: http://http://www.merriam-webster.com/)
訳:
システム(特にコンピュータシステム)に関連づけられた、

プログラム、プロシジャ、ドキュメント全体の集合
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
アプリ != ソフトウェア
今回作るのは、アプリ。
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
プログラムの定義
A set of instructions that tell a computer what to do
(出典: http://www.merriam-webster.com/)
訳:
コンピュータに何をすべきかを伝える命令の集合
print(‘Hello’) Hello
prin(‘I’m hot!’) …
(出典: https://www.apple.com/)
Python という言葉を用いてコンピュータと対話する

= Python でプログラムを作る
第17回 Morning Project Samurai
定例ミーティング資料
(c) Junya Kaneko
インタプリタ
インタープリタプログラマ
(出典: https://www.apple.com/)
コンピュータ
print(‘Hello’) 1100101
Hello
Python 言語で書かれたプログラマの命令を

コンピュータのわかる01の列に変換する
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
目次
• MPSとは
• Why Python?
• 本日のオーバービュー
• 基本的な用語の定義
• Python プログラム始めの第一歩
• アプリ作成
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
Python 言語でコンピュータと対話してみる!
http://ideone.com/ へアクセス!
①
②
③
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
実行結果
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
プログラム解説
() の中に書かれたオブジェクトを表す文字列を

画面に表示せよ、

と命令するための関数型オブジェクト
print( ‘ケロケロケロケロ’ )
文字列型オブジェクト
 オブジェクト?
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
プログラム実行の流れ
プログラマ
(出典: https://www.apple.com/)
コンピュータ
print(‘Hello’) 1100101
インタープリタ
メモリ上に ‘Hello’ を保存
メモリ上に ’print’ を保存
print を Hello を伴って実行
Hello
Helloを画面に表示しろ!
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
プログラム実行の流れ
プログラマ
(出典: https://www.apple.com/)
コンピュータ
print(‘Hello’) 1100101
インタープリタ
メモリ上に ‘Hello’ を保存
メモリ上に ’print’ を保存
print を Hello を伴って実行
Hello
Helloを画面に表示しろ!
メモリ上に保存されたものがオブジェクト
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
Python プログラムの中に出てくるもの

ほぼ全てがオブジェクト!
例: 数字、文字列、関数、etc.
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
いかにオブジェクトを操作するか!
それを考えるのが Python でプログラムを書くということ。
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
ちょっと待った!
Q. 何か不思議に思ったことはなかったですか??
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
プログラム実行の流れ再訪
プログラマ
(出典: https://www.apple.com/)
コンピュータ
print(‘Hello’) 1100101
インタープリタ
メモリ上に ‘Hello’ を保存
メモリ上に print を保存
print を Hello を伴って実行
Hello
Helloを画面に表示しろ!
なぜインタプリタは、print の機能を知っているの?
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
A. インタプリタが print を実行す
るためのレシピをもっているから
インタープリタ
おれ、print がすべきことを定義したレシピもってるぜ!
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
Q. もし我々がしたいことに関する

レシピをインタプリタが持ってなかったら?
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
A. 我々がレシピを作って教えてやる

必要がある!
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
いかにオブジェクトのレシピを創り、

生成されるオブジェクトを操作するか!
それを考えるのが Python でプログラムを書くということ。
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
インタプリタが

初めから知っているレシピ達 (例)
• 真理値型、数値型、文字列型、配列型
• メソッド、関数
• クラス、モジュール
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
• 真理値型 (Boolean)

- True or False
• 数値型(Numeric)

- 整数 (int), 実数 (float), 複素数 (complex) 

- 整数は、,...., -1, 0, 1, ….
• 文字列型 (Text Sequence)

- ‘Hello’, “こんにちわ”, ‘1’, “2.34567”
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
• 関数型 (Function)

- オブジェクトの操作をまとめたオブジェクト

- 入力としてオブジェクトを受け取り、必要であれば

オブジェクトを出力する

- def ave(lhs, rhs):

return (lhs + rhs)/2

- ave(1, 2)
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
• モジュール (Module)

- オブジェクトのレシピをまとめたファイル

- from モジュール名 import 関数名

- from 親モジュール名.子モジュール名 import 関数名

第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
目次
• MPSとは
• Why Python?
• 本日のオーバービュー
• 基本的な用語の定義
• Python プログラム始めの第一歩
• アプリ作成
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
大切なこと
1. 目的を定め、
2. その目的を達成するのに必要なオブジェクトを特定し、
3. 適切な順序で生成する
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
Q1. 今回のアプリの目的は?
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
Q1. 今回のアプリの目的は?
Youtube で動画を検索して
検索結果を表示する
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
目的のブレークダウン
1. Youtube の動画を検索
2. 検索結果を表示する
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
Youtube の動画を検索 (今まで)
Youtube に動画の検索を依頼
Youtube から返って来る検索結果の受け取り
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
Youtube の動画を検索
Youtube に動画の検索を依頼
Youtube から返って来る検索結果の受け取り
Q. 図を達成するために必要なオブジェクトは??
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
そんなの知らない!
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
そんなの知らない!
グーグル先生!
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
Q. 検索してみよう!
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
Q. 検索してみよう!
さすが先生!
ドンピシャ
Python のバージョンっぽい。
我々のは3.4。要注意!
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
Q. ドキュメントを読んで必要な
部分を取り出してみよう!
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
Q. ドキュメントを読んで必要な
部分を取り出してみよう!
youtube の検索結果のアドレス
に変えたら良いっぽい!
urlopen っていう名前がもう
臭すぎ!
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
Q. ドキュメントを読んで必要な
部分を取り出してみよう!
urllib.request モジュールの中の

urlopen関数を使用
urllib.request モジュールをロード
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
Q. ドキュメントを読んで必要な
部分を取り出してみよう!
urlopen関数の実行結果のオブジェクト
調べてみよう!
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
Just implement.
実装あるのみ
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
GET メソッド
• 指定した URL からデータを取得する一般的な方法

https://www.youtube.com
• パラメータによりデータの取得方法などを、指定できる
https://www.youtube.com/
results?search_query=Aircrash+investigation
?パラメータ名=パラメータ
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
応用
• ユーザーからキーワードを一つ受け取って、

そのキーワードで youtube 動画を検索し、

結果を表示するアプリを作ってみよう。

- まずは、目的達成のために何ができないといけないか

をプログラマの視点で考える!
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko
次回
• 検索結果を解析して、人間に見やすい動画リスト

を作成する
第17回 Morning Project Samurai 定例ミーティング資料 (c) Junya Kaneko

More Related Content

PDF
BDD com Cucumber
PDF
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第2回
PDF
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第4回
PDF
プログラミングで少し世界を広げよう(MPS)
ODP
Introduction of Python
PDF
第36回NDS 発表資料 ちょこっとpython
PDF
第1回python勉強会
PPT
Pythonintro
BDD com Cucumber
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第2回
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第4回
プログラミングで少し世界を広げよう(MPS)
Introduction of Python
第36回NDS 発表資料 ちょこっとpython
第1回python勉強会
Pythonintro

Similar to (Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第1回 (20)

PDF
Introduction Pycon2010
PDF
はじめてのPython
KEY
Hello World Python featuring GAE
PDF
DATUM STUDIO PyCon2016 Turorial
PPTX
2017/12/21 虎の穴 Python勉強会
PDF
Python Kyoto study
PDF
明日からはじめるネットワーク運用自動化
PDF
CodingTips+ 基礎編
PDF
Python研修の作り方 - teaching-is_learning-
PDF
The Zen of Python
PDF
エキ Py 読書会02 2章前半
PPTX
プログラマ人生論
PDF
エキ Py 読書会02 2010/9/7
PDF
Pythonで画像処理をやってみよう!第2回 - 動く物体の抜き出し -
PDF
Python physicalcomputing
PDF
Python & PyConJP 2014 Report
PDF
TAM 新人ディレクター システムスキルアップ プログラム 第7回 「プログラム言語」
PDF
Deep learning reading club @ nimiri for SWEST
PDF
プログラミング学習のための学習
Introduction Pycon2010
はじめてのPython
Hello World Python featuring GAE
DATUM STUDIO PyCon2016 Turorial
2017/12/21 虎の穴 Python勉強会
Python Kyoto study
明日からはじめるネットワーク運用自動化
CodingTips+ 基礎編
Python研修の作り方 - teaching-is_learning-
The Zen of Python
エキ Py 読書会02 2章前半
プログラマ人生論
エキ Py 読書会02 2010/9/7
Pythonで画像処理をやってみよう!第2回 - 動く物体の抜き出し -
Python physicalcomputing
Python & PyConJP 2014 Report
TAM 新人ディレクター システムスキルアップ プログラム 第7回 「プログラム言語」
Deep learning reading club @ nimiri for SWEST
プログラミング学習のための学習
Ad

More from Project Samurai (20)

PDF
数学的基礎から学ぶ Deep Learning (with Python) Vol. 12
PDF
Python で画像処理をやってみよう! -SIFT 第7回-
PDF
数学的基礎から学ぶ Deep Learning (with Python) Vol. 9
PDF
Python で画像処理をやってみよう! -SIFT 第6回-
PDF
数学的基礎から学ぶ Deep Learning (with Python) Vol. 8
PDF
数学的基礎から学ぶ Deep Learning (with Python) Vol. 7
PDF
Python で画像処理をやってみよう! -SIFT 第5回-
PDF
数学的基礎から学ぶ Deep Learning (with Python) Vol. 6
PDF
Mpsy20160423
PDF
Make your Artificial Intelligence
PDF
数学的基礎から学ぶ Deep Learning (with Python) Vol. 4
PDF
数学的基礎から学ぶ Deep Learning (with Python) Vol. 3
PDF
数学的基礎から学ぶ Deep Learning (with Python) Vol. 2
PDF
数学的基礎から学ぶ Deep Learning (with Python) Vol. 1
PDF
Python で画像処理をやってみよう!第11回 - SIFT Vol.1 キーポイント候補 -
PDF
Instagram API を使ってウェブアプリを作ろう!
PDF
Pythonで画像処理をやってみよう!第8回 - Scale-space 第7回 -
PDF
JavaScript でパックマン!第7回 (一旦最終回)
PDF
Pythonで画像処理をやってみよう!第7回 - Scale-space 第6回 -
PDF
JavaScript でパックマン!第6回
数学的基礎から学ぶ Deep Learning (with Python) Vol. 12
Python で画像処理をやってみよう! -SIFT 第7回-
数学的基礎から学ぶ Deep Learning (with Python) Vol. 9
Python で画像処理をやってみよう! -SIFT 第6回-
数学的基礎から学ぶ Deep Learning (with Python) Vol. 8
数学的基礎から学ぶ Deep Learning (with Python) Vol. 7
Python で画像処理をやってみよう! -SIFT 第5回-
数学的基礎から学ぶ Deep Learning (with Python) Vol. 6
Mpsy20160423
Make your Artificial Intelligence
数学的基礎から学ぶ Deep Learning (with Python) Vol. 4
数学的基礎から学ぶ Deep Learning (with Python) Vol. 3
数学的基礎から学ぶ Deep Learning (with Python) Vol. 2
数学的基礎から学ぶ Deep Learning (with Python) Vol. 1
Python で画像処理をやってみよう!第11回 - SIFT Vol.1 キーポイント候補 -
Instagram API を使ってウェブアプリを作ろう!
Pythonで画像処理をやってみよう!第8回 - Scale-space 第7回 -
JavaScript でパックマン!第7回 (一旦最終回)
Pythonで画像処理をやってみよう!第7回 - Scale-space 第6回 -
JavaScript でパックマン!第6回
Ad

(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第1回