Home
Explore
Submit Search
Upload
Login
Signup
Advertisement
入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing
Report
Kei IWASAKI
Follow
Mar. 7, 2018
•
0 likes
15 likes
×
Be the first to like this
Show More
•
6,468 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Check these out next
Python エンジニアの作り方 2011.08 #pyconjp
Takeshi Komiya
次世代言語 Python による PyPy を使った次世代の処理系開発
shoma h
サードパーティパッケージの歩き方
Takesxi Sximada
本気でPythonで宛名書きした話
Satoshi Yamada
10分でわかるPythonの開発環境
Hisao Soyama
Python学習奮闘記#07 webapp
Takeshi Akutsu
勉強会 Cvml python基礎
真哉 杉野
Pythonスタートアップ勉強会201109 python入門
Takayuki Shimizukawa
1
of
50
Top clipped slide
入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing
Mar. 7, 2018
•
0 likes
15 likes
×
Be the first to like this
Show More
•
6,468 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Download Now
Download to read offline
Report
Technology
みんなの Python 勉強会#33 の発表資料です https://startpython.connpass.com/event/73168/
Kei IWASAKI
Follow
Advertisement
Advertisement
Advertisement
Recommended
たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
Kei IWASAKI
8K views
•
90 slides
OSSと私
Hattori Hideo
2.8K views
•
29 slides
Python入門 コードリーディング - PyConJP2016
Shinya Okano
3.8K views
•
6 slides
Pyconjp2016 pyftplib
Shinya Okano
2.4K views
•
23 slides
Pynyumon03 LT
drillan
1.4K views
•
18 slides
PyCon JP 2016 ビギナーセッション
Tetsuya Morimoto
1.4K views
•
6 slides
More Related Content
Slideshows for you
(20)
Python エンジニアの作り方 2011.08 #pyconjp
Takeshi Komiya
•
3.4K views
次世代言語 Python による PyPy を使った次世代の処理系開発
shoma h
•
11.8K views
サードパーティパッケージの歩き方
Takesxi Sximada
•
2.2K views
本気でPythonで宛名書きした話
Satoshi Yamada
•
3.2K views
10分でわかるPythonの開発環境
Hisao Soyama
•
132.3K views
Python学習奮闘記#07 webapp
Takeshi Akutsu
•
2K views
勉強会 Cvml python基礎
真哉 杉野
•
667 views
Pythonスタートアップ勉強会201109 python入門
Takayuki Shimizukawa
•
13K views
Stapy#17LT
drillan
•
1.6K views
stapy#23 LT
NaoY-2501
•
915 views
Bottle使ってPython学習一緒にはじめませんか?
Tatsuya Shinozuka
•
1K views
Pythonによるwebアプリケーション入門 - Django編-
Hironori Sekine
•
28K views
Python界隈の翻訳プロジェクト
Tetsuya Morimoto
•
3.5K views
Python & PyConJP 2014 Report
gree_tech
•
2.9K views
Pyladies tokyo 2nd anniversary LT
drillan
•
1.2K views
私の好きなPython構文 vol.2 #nds46
civicpg
•
1.8K views
Javascriptを書きたくないヒ トのためのPythonScript
Kazufumi Ohkawa
•
21.6K views
S01 t1 tsuji_pylearn_ut_01
Takeshi Akutsu
•
2.1K views
WindowsでPython
drillan
•
10.8K views
LT: 今日帰ってすぐに始められるPython #nds45
civic Sasaki
•
2.2K views
Similar to 入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing
(20)
Hannari python#27
hiroya akita
•
108 views
今時のオンプレなgithubクローン環境構築
You&I
•
165 views
Python × Herokuで作る 雑談slack bot
dcubeio
•
12.1K views
Pythonで作る自作デバッガLT資料
Yuya Masumura
•
854 views
深層学習ライブラリのプログラミングモデル
Yuta Kashino
•
99.3K views
「Python言語」はじめの一歩 / First step of Python
Takanori Suzuki
•
65.8K views
20120915 Pythonは本当にBlenderの役に立っているか?
Tetsuo Mitsuda
•
10.1K views
Django+herokuでCTFスコアサーバを作ろう!(未完)
in0o0o0
•
360 views
ゼロから学ぶPython勉強会
sekikazu
•
91 views
scikit-learnを用いた機械学習チュートリアル
敦志 金谷
•
211.5K views
Clojureの世界と実際のWeb開発
Tsutomu Yano
•
39.8K views
LibPGEN 1st Step Guide
slankdev
•
736 views
Introduction of kabepy
Kenjiro Kosaka
•
1.8K views
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Takeshi Komiya
•
10.3K views
Apilecture for 2014/02/22 at shannonlab
Yutaka Kobayshi
•
645 views
2013_kougi6
ytanno
•
930 views
APIドキュメントの話 #sphinxjp
Takeshi Komiya
•
10.5K views
211120 他人の書いたPythonスクリプトをステップ実行で理解する
Takuya Nishimoto
•
1.2K views
CPythonを読もう
Akira Nonaka
•
213 views
Rdkitの紹介
Takayuki Serizawa
•
4.3K views
Advertisement
More from Kei IWASAKI
(9)
コロナ渦とキャリアの話 / my carrier and covid-19
Kei IWASAKI
•
2.2K views
Collaboration hack with slackbot - PyCon HK 2018 - 2018.11.24
Kei IWASAKI
•
1.8K views
Elasticbeanstalk で Ansible を使っている話
Kei IWASAKI
•
1.7K views
Pelican の紹介 / World Plone Day 2017 Tokyo
Kei IWASAKI
•
1.9K views
3分でサーバオペレーションコマンドを作る技術
Kei IWASAKI
•
12.7K views
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Kei IWASAKI
•
2.7K views
Vagrant+virtualboxを使ってみよう
Kei IWASAKI
•
4.7K views
障害発生時に抑えておきたい基礎知識
Kei IWASAKI
•
2.2K views
監視のススメ
Kei IWASAKI
•
914 views
Recently uploaded
(20)
PCベース制御による集中制御.pdf
ssusercd9928
•
19 views
☀️【中央兰开夏大学毕业证成绩单留学生首选】
25mjhd12
•
4 views
初学者のためのプロンプトエンジニアリング実践.pptx
Akifumi Niida
•
352 views
量子論.pdf
hiro150493
•
0 views
3Dプリンタって いいね
infinite_loop
•
0 views
Forguncy8 製品概要 202305.pptx
フォーガンシー
•
7 views
JSTQB_テストマネジメントとレビュープロセス.pdf
akipii Oga
•
91 views
《杨百翰大学毕业证|学位证书校内仿真版本》
d520dasw12
•
2 views
ChatGPT触ってみた
infinite_loop
•
0 views
20230516 @Mix Leap Hirohiko_Suwa
Masashi Nakagawa
•
82 views
【DL輪読会】Flow Matching for Generative Modeling
Deep Learning JP
•
711 views
JSTQB_テストプロセスの概念モデル.pdf
akipii Oga
•
109 views
Kubernetes超入門
Takashi Suzuki
•
4 views
SoftwareControl.pdf
ssusercd9928
•
15 views
①【戴尔豪斯大学毕业证文凭学位证书|工艺完美复刻】
love445ds
•
2 views
HTTPの仕組みについて
iPride Co., Ltd.
•
0 views
20230523_IoTLT_vol99_kitazaki_v1.pdf
Ayachika Kitazaki
•
107 views
Forguncy製品概要.pptx
フォーガンシー
•
0 views
TestSIP (1).pdf
DeependraSingh712859
•
2 views
SoftwareControl.pdf
ssusercd9928
•
6 views
Advertisement
入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing
入門書を読みおわったら何しよう? ~Python と WebAPI
の使い方から学ぶ次の一歩~ 2018.03.07 みんなのPython勉強会#33 Kei IWASAKI at SQUEEZE Inc.
お前誰よ Kei IWASAKI Twitter: @laugh_k,
Github: @laughk 株式会社SQUEEZE所属 スラスラわかるPython(翔泳社) という本の共著者の一人 最近は Django, AngularJS でWeb開発をやりながらもインフラ周りや それ以外の改善を模索したりしてます。 2
CM Python 入門者向けの本 スラスラわかる Python
発売中! おかげさまで1月に2刷が出ました! 3
今日話すこと 1. 入門書を読み終わった後の次の課題の見つけ方 2. 最低限の知識で自分のためのコードの書き始め方 ※
今回は Python の入門書ということが前提です! 4
早速ですが 入門書っていいですよね!
入門書のいいところ 初学者のでも学ぶべき内容を体系的に学習することができる 特にプログラミングそのものが初心者の人にとっては心強い存在 6
じゃあ その入門書おわったらどうしよう?
道は色々ある 1. 入門書の内容を自分でカスタムしてみる 2. 次のレベルの書籍を手にとって見る 3.
自分にとって実践的なコードを書いてみる など 8
入門書の内容を自分でカスタムしてみる 書籍の中で登場したコードを自分なりにアレンジしてみる方法 スクレイピングなら対象のサイトを変更してみる 簡単なゲームプログラムならルールを追加してみる など 9
次のレベルの書籍を手にとってみる 入門者じゃないひと対象の本を読んで見る方法 例えば 入門本 - 次のレベルの本 スラスラわかるPython ➔ Pythonエンジニアファーストブック 10
道は色々ある 1. 入門書の内容を自分でカスタムしてみる 2. 次のレベルの書籍を手にとって見る 3.
自分にとって実践的なコードを書いてみる など 11
自分にとって実践的なコードを書いてみる
今日紹介するのは 「自分にとって実践的なコードを書いてみる」 というアプローチ
「自分にとって実践的なコードを書いてみる」? 例えばこんなこと 微妙にコピペが面倒なCSVファイルをつくるスクリプト 気になる人の1日の Tweet 情報をとってくるスクリプト 自分がアサインされているチケット一覧をSlack通知する 今日がゴミを出す日かどうか教えてくれるbotをつくる 14
最初はこじつけでいいから 自分が楽をしたいことを見つけるのがいい 「それ〇〇でできるよ?」は一旦置いておく 「それ結構難しいのでは?」もあまり気にしない 業務・プライベート問わず、よく使うWebサービスがあるとネタに しやすいかも 15
今日考えてみる例 "Github の Pull
Request 一覧を Slack で通知してみる"
Githubの Pull Request
一覧をSlackで通知してみる 「ブラウザでGithubのPullRequest一覧を見るのが面倒」 という悩みを解消するための課題 17
やりたいことは思いついた どうやってコードを書いていこう?
A. やりたいことの登場人物と その扱い方を整理しよう
やりたいことの登場人物を整理しよう 今回の例だと以下の登場人物がいる Github Slack これらを Python でどう使うのかを確認する 20
プログラミングでWebサービスを扱う方法
プログラミングでWebサービスを扱う方法 基本的には以下の2つのどちらか Web API* を使う スクレイピングする *
すごく雑に言えば「ネットワーク越しに使える関数のようなもの」 22
まずは Web API
が使えないかを確認する API と言ってもいろいろ。簡単に使えるものもある Webサービスは API が提供されていることも多い 今回のパターンも API が使える GitHub API v3 | GitHub Developer Guide Slack Web API | Slack 23
じゃあスクレイピングは? スクレイピングはAPIと比べて思い通りの情報を取得するのが大変 「Webサイトを扱うならばスクレイピングだな!」の前にAPIがある かは調べよう 場合によってはここで諦めて別の課題を探すのも一つの選択 スクレイピングはAPIが提供されていないときの最終手段 24
登場人物たちの情報 APIが提供されていることはわかった Github GitHub API v3
| GitHub Developer Guide ⇐これ Slack Slack Web API | Slack ⇐これ 25
対象のWebサービスの APIを使えばよさそうだとわかった!
ところで API ってどうやって使うの...?
A. ここで サードパーティーライブラリの出番
PyPI のライブラリを活用しよう 雑に言えば pip
install ... で追加できるライブラリのこと PyPI - the Python Package Index に公開されているサードパーティー のライブラリを簡単に利用できる 29
PyPI のライブラリを活用しよう API が提供されているサービスの場合、PyPIに専用ライブラリが公 開されていことが多い 便利に扱うことができるライブラリがあるので活用しよう PyGithub
1.37 : Python Package Index slackapi/python-slackclient: Slack Developer Kit for Python slackpy 2.2.2 : Python Package Index 30
ところでこのライブラリって(ry
A. ライブラリのドキュメントを読みましょう
A. ライブラリのドキュメントを読みましょう ... とはいえ隅々まで目を通す必要はないです
ライブラリを雑に動かそう コードを書く前にインタラクティブシェルでざっと動作を確認しておく tokenなどの必要な情報もこのタイミングで取得しておく >>> from github
import Github >>> github_token = '********************************' >>> gh = Github(github_token) >>> repo = gh.get_repo('laughk/py3-django-tutorial') >>> repos = repo.get_pulls(state='close') >>> for r in repos: ... print(r) ... PullRequest(title="[wip] 2016-05-24の分", number=7) PullRequest(title="2016-05-17やった分", number=6) # -- -- snip -- -- 34
ライブラリを雑に動かそう コードを書く前にインタラクティブシェルでざっと動作を確認しておく 必要なtoken情報などもこのタイミングで取得しておく >>> import slackpy >>>
WEBHOOK = 'https://hooks.slack.com/services/******/***********' >>> slack = slackpy.SlackLogger(WEBHOOK) >>> slack.info('hogehoge') <Response [200]> >>> 35
更に細かな部分は ライブラリのドキュメントを読みましょう
登場人物たちの情報 APIが提供されていることはわかった。APIの使い方もわかってきた Github GitHub API v3
| GitHub Developer Guide PyGithub 1.37 : Python Package Index ⇐これ Slack Slack Web API | Slack slackpy 2.2.2 : Python Package Index ⇐これ 37
そろそろ処理の流れを大まかに整理しよう 今回は大体以下のような感じ 1. Github から
PR の情報を取得する (PyGithubを使ってやる) 2. 取得した PR の情報を処理しやすく形成する (普通にコードを書く) 3. 形成したデータを Slack へ投げる (Slackpyを使う) 38
ここまで来たら Try&Error でひたすらコードを書く
Try&Error でひたすらコードを書く インタラクティブシェルで小さく試行錯誤しながら徐々に広げてい くとやりやすい こまめに print()
して動作を確認していくのもお手軽でオススメ 40
とにかく書いてみるを大切に 慣れないうちはまずコードを書くことに集中してOK コードがきれいか汚いかをあまり気にしない テストコードとかも無理に考えない 41
サンプルコード
import slackpy from github
import Github GITHUB_TOKEN = '********************' SLACK_WEBHOOK = 'https://hooks.slack.com/services/******/*******/********' GITHUB_REPOSITORY = 'laughk/py3-django-tutorial' gh = Github(GITHUB_TOKEN) repository = gh.get_repo(GITHUB_REPOSITORY) pull_request_info = [] for pr in repository.get_pulls(state='all'): pull_request_info.append({'title': pr.title, 'url': pr.url}) slack_messages = "" for info in pull_request_info: slack_messages += '{0} {1}n'.format(info["title"], info["url"]) slack = slackpy.SlackLogger(SLACK_WEBHOOK) slack.info(slack_messages)
# Github から
Pull Request 情報を取得 gh = Github(GITHUB_TOKEN) repository = gh.get_repo(GITHUB_REPOSITORY) pull_request_info = [] for pr in repository.get_pulls(state='all'): pull_request_info.append({'title': pr.title, 'url': pr.url}) # Github から取得した情報の形成 slack_messages = "" for info in pull_request_info: slack_messages += '{0} {1}n'.format(info["title"], info["url"]) # Slack へ通知 slack = slackpy.SlackLogger(SLACK_WEBHOOK) slack.info(slack_messages)
保存して実行してみるまでの流れ github-pr-list-to-slack.py に保存して以下を実行してみると以下の通り ## PyPI
ライブラリをインストール $ pip install slackpy PyGithub ## サンプルコードの内容を書く (エディタはお好みで) $ nvim github-pr-list-to-slack.py ## 実行 $ python github-pr-list-to-slack.py 45
こんな感じで通知される! 46
まとめ
自分にとって実践的なコードを書いてみるコツ 普段自分がやっていることをネタにするとイメージしやすい コードを書く前に登場人物を整理してプログラムにやらせることの イメージを明確にしよう Python は PyPI
に便利なライブラリが多く存在する。無理せず頼ろ う! コードを書き始めたら細かいことを気にせず思いのままコードを書 いてみよう! 48
さいごに 入門書の基礎知識でもできることは結構ある 自分にとって身近なところから課題を見つけて行動してみると覚え たことの「使い方」を実体験として理解できる 次の書籍も良いけど、少ない知識で実際に手を動かすのもオススメ 49
Let's Enjoy Next
Step!
Advertisement