Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
入門書を読みおわったら何しよう?
~Python と WebAPI の使い方から学ぶ次の一歩~
2018.03.07 みんなのPython勉強会#33
Kei IWASAKI at SQUEEZE Inc.
お前誰よ
Kei IWASAKI
Twitter: @laugh_k, Github: @laughk
株式会社SQUEEZE所属
スラスラわかるPython(翔泳社) という本の共著者の一人
最近は Django, AngularJS でWe...
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通知する
今日がゴ...
最初はこじつけでいいから
自分が楽をしたいことを見つけるのがいい
「それ〇〇でできるよ?」は一旦置いておく
「それ結構難しいのでは?」もあまり気にしない
業務・プライベート問わず、よく使う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 Deve...
じゃあスクレイピングは?
スクレイピングはAPIと比べて思い通りの情報を取得するのが大変
「Webサイトを扱うならばスクレイピングだな!」の前にAPIがある
かは調べよう
場合によってはここで諦めて別の課題を探すのも一つの選択
スクレイピングは...
登場人物たちの情報
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 ...
ところでこのライブラリって(ry
A. ライブラリのドキュメントを読みましょう
A. ライブラリのドキュメントを読みましょう
... とはいえ隅々まで目を通す必要はないです
ライブラリを雑に動かそう
コードを書く前にインタラクティブシェルでざっと動作を確認しておく
tokenなどの必要な情報もこのタイミングで取得しておく
>>> from github import Github
>>> github_token ...
ライブラリを雑に動かそう
コードを書く前にインタラクティブシェルでざっと動作を確認しておく
必要なtoken情報などもこのタイミングで取得しておく
>>> import slackpy
>>> WEBHOOK = 'https://hooks....
更に細かな部分は
ライブラリのドキュメントを読みましょう
登場人物たちの情報
APIが提供されていることはわかった。APIの使い方もわかってきた
Github
GitHub API v3 | GitHub Developer Guide
PyGithub 1.37 : Python Package I...
そろそろ処理の流れを大まかに整理しよう
今回は大体以下のような感じ
1. Github から PR の情報を取得する (PyGithubを使ってやる)
2. 取得した PR の情報を処理しやすく形成する (普通にコードを書く)
3. 形成したデ...
ここまで来たら
Try&Error でひたすらコードを書く
Try&Error でひたすらコードを書く
インタラクティブシェルで小さく試行錯誤しながら徐々に広げてい
くとやりやすい
こまめに print() して動作を確認していくのもお手軽でオススメ
40
とにかく書いてみるを大切に
慣れないうちはまずコードを書くことに集中してOK
コードがきれいか汚いかをあまり気にしない
テストコードとかも無理に考えない
41
サンプルコード
import slackpy
from github import Github
GITHUB_TOKEN = '********************'
SLACK_WEBHOOK = 'https://hooks.slack.com/se...
# Github から Pull Request 情報を取得
gh = Github(GITHUB_TOKEN)
repository = gh.get_repo(GITHUB_REPOSITORY)
pull_request_info = [...
保存して実行してみるまでの流れ
github-pr-list-to-slack.py に保存して以下を実行してみると以下の通り
## PyPI ライブラリをインストール
$ pip install slackpy PyGithub
## サンプ...
こんな感じで通知される!
46
まとめ
自分にとって実践的なコードを書いてみるコツ
普段自分がやっていることをネタにするとイメージしやすい
コードを書く前に登場人物を整理してプログラムにやらせることの
イメージを明確にしよう
Python は PyPI に便利なライブラリが多く存在す...
さいごに
入門書の基礎知識でもできることは結構ある
自分にとって身近なところから課題を見つけて行動してみると覚え
たことの「使い方」を実体験として理解できる
次の書籍も良いけど、少ない知識で実際に手を動かすのもオススメ
49
Let's Enjoy Next Step!
Upcoming SlideShare
Loading in …5
×

入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing

3,394 views

Published on

みんなの Python 勉強会#33 の発表資料です
https://startpython.connpass.com/event/73168/

Published in: Technology

入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing

  1. 1. 入門書を読みおわったら何しよう? ~Python と WebAPI の使い方から学ぶ次の一歩~ 2018.03.07 みんなのPython勉強会#33 Kei IWASAKI at SQUEEZE Inc.
  2. 2. お前誰よ Kei IWASAKI Twitter: @laugh_k, Github: @laughk 株式会社SQUEEZE所属 スラスラわかるPython(翔泳社) という本の共著者の一人 最近は Django, AngularJS でWeb開発をやりながらもインフラ周りや それ以外の改善を模索したりしてます。 2
  3. 3. CM Python 入門者向けの本 スラスラわかる Python 発売中! おかげさまで1月に2刷が出ました! 3
  4. 4. 今日話すこと 1. 入門書を読み終わった後の次の課題の見つけ方 2. 最低限の知識で自分のためのコードの書き始め方 ※ 今回は Python の入門書ということが前提です! 4
  5. 5. 早速ですが 入門書っていいですよね!
  6. 6. 入門書のいいところ 初学者のでも学ぶべき内容を体系的に学習することができる 特にプログラミングそのものが初心者の人にとっては心強い存在 6
  7. 7. じゃあ その入門書おわったらどうしよう?
  8. 8. 道は色々ある 1. 入門書の内容を自分でカスタムしてみる 2. 次のレベルの書籍を手にとって見る 3. 自分にとって実践的なコードを書いてみる など 8
  9. 9. 入門書の内容を自分でカスタムしてみる 書籍の中で登場したコードを自分なりにアレンジしてみる方法 スクレイピングなら対象のサイトを変更してみる 簡単なゲームプログラムならルールを追加してみる など 9
  10. 10. 次のレベルの書籍を手にとってみる 入門者じゃないひと対象の本を読んで見る方法 例えば 入門本 - 次のレベルの本 スラスラわかるPython ➔ Pythonエンジニアファーストブック 10
  11. 11. 道は色々ある 1. 入門書の内容を自分でカスタムしてみる 2. 次のレベルの書籍を手にとって見る 3. 自分にとって実践的なコードを書いてみる など 11
  12. 12. 自分にとって実践的なコードを書いてみる
  13. 13. 今日紹介するのは 「自分にとって実践的なコードを書いてみる」 というアプローチ
  14. 14. 「自分にとって実践的なコードを書いてみる」? 例えばこんなこと 微妙にコピペが面倒なCSVファイルをつくるスクリプト 気になる人の1日の Tweet 情報をとってくるスクリプト 自分がアサインされているチケット一覧をSlack通知する 今日がゴミを出す日かどうか教えてくれるbotをつくる 14
  15. 15. 最初はこじつけでいいから 自分が楽をしたいことを見つけるのがいい 「それ〇〇でできるよ?」は一旦置いておく 「それ結構難しいのでは?」もあまり気にしない 業務・プライベート問わず、よく使うWebサービスがあるとネタに しやすいかも 15
  16. 16. 今日考えてみる例 "Github の Pull Request 一覧を Slack で通知してみる"
  17. 17. Githubの Pull Request 一覧をSlackで通知してみる 「ブラウザでGithubのPullRequest一覧を見るのが面倒」 という悩みを解消するための課題 17
  18. 18. やりたいことは思いついた どうやってコードを書いていこう?
  19. 19. A. やりたいことの登場人物と その扱い方を整理しよう
  20. 20. やりたいことの登場人物を整理しよう 今回の例だと以下の登場人物がいる Github Slack これらを Python でどう使うのかを確認する 20
  21. 21. プログラミングでWebサービスを扱う方法
  22. 22. プログラミングでWebサービスを扱う方法 基本的には以下の2つのどちらか Web API* を使う スクレイピングする * すごく雑に言えば「ネットワーク越しに使える関数のようなもの」 22
  23. 23. まずは Web API が使えないかを確認する API と言ってもいろいろ。簡単に使えるものもある Webサービスは API が提供されていることも多い 今回のパターンも API が使える GitHub API v3 | GitHub Developer Guide Slack Web API | Slack 23
  24. 24. じゃあスクレイピングは? スクレイピングはAPIと比べて思い通りの情報を取得するのが大変 「Webサイトを扱うならばスクレイピングだな!」の前にAPIがある かは調べよう 場合によってはここで諦めて別の課題を探すのも一つの選択 スクレイピングはAPIが提供されていないときの最終手段 24
  25. 25. 登場人物たちの情報 APIが提供されていることはわかった Github GitHub API v3 | GitHub Developer Guide ⇐これ Slack Slack Web API | Slack ⇐これ 25
  26. 26. 対象のWebサービスの APIを使えばよさそうだとわかった!
  27. 27. ところで API ってどうやって使うの...?
  28. 28. A. ここで サードパーティーライブラリの出番
  29. 29. PyPI のライブラリを活用しよう 雑に言えば pip install ... で追加できるライブラリのこと PyPI - the Python Package Index に公開されているサードパーティー のライブラリを簡単に利用できる 29
  30. 30. 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
  31. 31. ところでこのライブラリって(ry
  32. 32. A. ライブラリのドキュメントを読みましょう
  33. 33. A. ライブラリのドキュメントを読みましょう ... とはいえ隅々まで目を通す必要はないです
  34. 34. ライブラリを雑に動かそう コードを書く前にインタラクティブシェルでざっと動作を確認しておく 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
  35. 35. ライブラリを雑に動かそう コードを書く前にインタラクティブシェルでざっと動作を確認しておく 必要なtoken情報などもこのタイミングで取得しておく >>> import slackpy >>> WEBHOOK = 'https://hooks.slack.com/services/******/***********' >>> slack = slackpy.SlackLogger(WEBHOOK) >>> slack.info('hogehoge') <Response [200]> >>> 35
  36. 36. 更に細かな部分は ライブラリのドキュメントを読みましょう
  37. 37. 登場人物たちの情報 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
  38. 38. そろそろ処理の流れを大まかに整理しよう 今回は大体以下のような感じ 1. Github から PR の情報を取得する (PyGithubを使ってやる) 2. 取得した PR の情報を処理しやすく形成する (普通にコードを書く) 3. 形成したデータを Slack へ投げる (Slackpyを使う) 38
  39. 39. ここまで来たら Try&Error でひたすらコードを書く
  40. 40. Try&Error でひたすらコードを書く インタラクティブシェルで小さく試行錯誤しながら徐々に広げてい くとやりやすい こまめに print() して動作を確認していくのもお手軽でオススメ 40
  41. 41. とにかく書いてみるを大切に 慣れないうちはまずコードを書くことに集中してOK コードがきれいか汚いかをあまり気にしない テストコードとかも無理に考えない 41
  42. 42. サンプルコード
  43. 43. 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)
  44. 44. # 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)
  45. 45. 保存して実行してみるまでの流れ 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. 46. こんな感じで通知される! 46
  47. 47. まとめ
  48. 48. 自分にとって実践的なコードを書いてみるコツ 普段自分がやっていることをネタにするとイメージしやすい コードを書く前に登場人物を整理してプログラムにやらせることの イメージを明確にしよう Python は PyPI に便利なライブラリが多く存在する。無理せず頼ろ う! コードを書き始めたら細かいことを気にせず思いのままコードを書 いてみよう! 48
  49. 49. さいごに 入門書の基礎知識でもできることは結構ある 自分にとって身近なところから課題を見つけて行動してみると覚え たことの「使い方」を実体験として理解できる 次の書籍も良いけど、少ない知識で実際に手を動かすのもオススメ 49
  50. 50. Let's Enjoy Next Step!

×