Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
ウェブ のための パッケージ作成の勘所 湯谷 啓明
Slide 2
Slide 2 text
ドーモ • •某グループウェアの会 社の チームに所属 •好きな言語: 、忍殺語 •将来の夢: モジュラーシンセ廃人
Slide 3
Slide 3 text
本 によるスクレイピング入門 •ウェブスクレイピング •ウェブ • 初心者にも丁寧に説明! •豊富な実例!
Slide 4
Slide 4 text
パッケージ • • 国土数値情報 • • •つくりかけ: • • •
Slide 5
Slide 5 text
今日話すこと • を使うにはどこから始めればいいか •困ったときのデバッグ方法 •認証についてのつらかった話(愚痴) •クレデンシャルの管理
Slide 6
Slide 6 text
( )
Slide 7
Slide 7 text
の翻訳 ( )
Slide 8
Slide 8 text
基本はこれを読んでおけば ? わりと でも
Slide 9
Slide 9 text
No content
Slide 10
Slide 10 text
No content
Slide 11
Slide 11 text
(参考) とは? ( )
Slide 12
Slide 12 text
情報収集
Slide 13
Slide 13 text
すでに開発されているパッケージ •車輪を再発明する必要はないので、既存のものが ニーズに合うならそれを使う •ニーズに合わなかったり古くて動かなくても、実 装は参考になることがある •他言語の実装も参考になることもある
Slide 14
Slide 14 text
ドキュメント • の仕様 • データ形式 • 認証方式 • 細かい部分は試しながらでいい • どのような制限事項があるかは注意して読む • の利用規約 • データがどういうライセンスなのか • クレジット表示の必要があるか
Slide 15
Slide 15 text
例:国土数値情報 ( ) ※ パッケージに日本語を含めるのはつらい。。 (参考: )
Slide 16
Slide 16 text
を使ってみる
Slide 17
Slide 17 text
まずは簡単そうなものから •認証不要の •指定するパラメータが少なくていい •返ってくるデータが単純な構造の
Slide 18
Slide 18 text
結果のデータ構造を見る •どんなデータ形式か( ? ?) •ほしいデータがどこにあるか
Slide 19
Slide 19 text
結果のデータ構造を見る: •データの構造を表示する •慣れるまで時間がかかるけど、キーボードしか触 りたくないという人には便利 •引数を付けて表示を制限 • 長いベクトルやリストをど こまで表示するかを指定 • ネストしたリストを何階層まで下るか を指定
Slide 20
Slide 20 text
結果のデータ構造を見る: ( )
Slide 21
Slide 21 text
結果のデータ構造を見る: ( 、 ) ※ にはリリースされていないので でインストール
Slide 22
Slide 22 text
結果のデータ構造を見る とりあえず結果をファイルに保存しておくと、あ とでいろいろ試すときに便利 • レスポンス をまるごとバイナリとして保存 • レスポンスをまる ごと のコードとして保存 • レスポンスボディだけでいいなら でも
Slide 23
Slide 23 text
とりあえずデータフレーム化を目指す
Slide 24
Slide 24 text
にも期待! ( )
Slide 25
Slide 25 text
うまく動かない時
Slide 26
Slide 26 text
まずはエラーを確認 •ステータスコードとレスポンスボディ ステータスコード。 ならたぶん成功、 ~なら失敗 レスポンスボディ。 エラーメッセージが入っていることがある。
Slide 27
Slide 27 text
例: 認証に失敗しました。アプリケーション を確認して下さい。 ステータスコードは だけどエラー!!! (このパターンはたまにあります。 ドキュメント読みましょう )
Slide 28
Slide 28 text
送信しているリクエストを確認 オブジェクトの中身 •実は の中に入っている
Slide 29
Slide 29 text
送信しているリクエストを確認 オブジェクトの中身 •リクエストボディも入っている。ただし 型に なっているのに注意。
Slide 30
Slide 30 text
送信しているリクエストを確認 •送ったリクエストのヘッダや中身を返すウェブ サービス
Slide 31
Slide 31 text
認証
Slide 32
Slide 32 text
認証はつらい。
Slide 33
Slide 33 text
よくある認証方式 •認証なし:楽 •個人用アクセストークン:楽 •ユーザ名とパスワード:楽だけど注意 • うっかり漏れるとやばい • アクセストークン:注意 • の が特殊なことも割とある • の実装がバグっていることも •署名を付ける系:死ぬほど大変
Slide 34
Slide 34 text
よくある認証方式: 個人用アクセストークン •例: など •どこに保存するかが悩みどころ(後述)
Slide 35
Slide 35 text
よくある認証方式: •「よくある」けど、実装はいろいろ •実装側に任されている部分が大きいので、 がすべてのケースをカバーできるわけではない • レポジトリの 以下のコードを参照 •特に に関しては、 の実装が適当 な感じがする (後述)
Slide 36
Slide 36 text
例: を使うと書かれている ( )
Slide 37
Slide 37 text
例: •トークンの取得は成功する。 •でもトークンを使おうとするとエラーが
Slide 38
Slide 38 text
例: ヘッダの形式が独自だった (注:これは 違反ではない。 トークンを別の 認証方式に転用することを禁じる理由はない) よくあるヘッダはこう (そして はこれしかサポートしていない )
Slide 39
Slide 39 text
例: •英語だとエラーにならないが日本語だとエラーに 写輪眼
Slide 40
Slide 40 text
例: の の実装がバグってる ! ( )
Slide 41
Slide 41 text
例: •ブラウザが開いて承認を求められるところまでは いくけど、エラーが • で調べるとレスポンスにこんなのが。 が余計らしい。
Slide 42
Slide 42 text
例: の 実装がサボってる! (バグとまでは言えないのがつらいところ ) ( )
Slide 43
Slide 43 text
よくある認証方式:署名 •リクエストの要素をあるルールでひとつの文字列 に結合、そのハッシュ値をとる。 •例: 、 •自前で実装するとなるとけっこう大変。バグりが ち( しかり)。 •まあでもそんな機会はほぼないはず ※私は一度あって死にました。
Slide 44
Slide 44 text
認証方式のまとめ •世の中わりとバグっている •気合と根性で乗り切る •実例から学ぶしかないので、「 によるスクレイ ピング入門」をお手元に一冊是非ッッ!
Slide 45
Slide 45 text
クレデンシャルの管理
Slide 46
Slide 46 text
認証はつらい。
Slide 47
Slide 47 text
クレデンシャルとは •ユーザ認証に使われる情報。具体的には 、パ スワード、アクセストークンなど。 •うっかり に公開してしまうとまずい。 •まあそんなうっかりな人いないですよね?
Slide 48
Slide 48 text
ヒント:
Slide 49
Slide 49 text
No content
Slide 50
Slide 50 text
クレデンシャルを守るために •ユーザにはコンソールに打ち込ませない • 環境変数 • •ファイルに保存する場合は、 の管理下に置か ない • • レポジトリとは別の場所に置く
Slide 51
Slide 51 text
認証の場合 コンソールで を打 ち込む( の場合) ブラウザが開いて別のユーザ認証が動く トークン発行 というフローなので、 が漏れても致命 的ではない( は公開 !と言っている)。
Slide 52
Slide 52 text
認証の場合 •取得したトークンは漏れるとまずい。 •トークンをローカルに保存する場合、 が というファイルをつくる。 •このファイルは、 に追記されるので 安心!
Slide 53
Slide 53 text
No content
Slide 54
Slide 54 text
認証以外の場合 •漏れると即アウトのものが多い • は面倒を見てくれないので自分でやる必要 がある。
Slide 55
Slide 55 text
インタラクティブな環境変数の指定 • でプロンプ トを立ち上げる。
Slide 56
Slide 56 text
による環境変数の指定 • のセッション立ち上げ時に読み 込まれるファイル。環境変数を指定する。 •ワーキングディレクトリではなく、ユーザのホー ムディレクトリに配置。 •つまり、レポジトリ外にあるファイルなので に誤って取り込まれる可能性は低い。安心!
Slide 57
Slide 57 text
による環境変数の指定 ホームディレクトリの特定 そこに以下の内容の を作成 追記 セッションを再起動、環境変数があるか確認 なら ユーザ なら ユーザになる? 最後は空行 のコードではないので記法が違う
Slide 58
Slide 58 text
No content
Slide 59
Slide 59 text
クレデンシャルの管理のまとめ •環境変数やポップアップを駆使して、なるべくコ ンソールでクレデンシャルを打ち込ませないよう にしましょう •がんばっても結果に結びつかないこともあるけど 強く生きていきましょう
Slide 60
Slide 60 text
最後に
Slide 61
Slide 61 text
•ウェブ の世界はまだまだ •今日話した部分は、今の私の力量では体系的に書 けなかったことで心残り •ぜひ本を買ってマサカリをください •あと、 とウェブ 関連で困ってることがあれ ばお気軽にご相談ください
Slide 62
Slide 62 text
買って、マサカリをぜひ。 によるスクレイピング入門 •ウェブスクレイピング •ウェブ • 初心者にも丁寧に説明! •豊富な実例!