Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ウェブAPIのためのRパッケージ作成の勘所
Search
yutannihilation
March 18, 2017
Programming
1.5k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ウェブAPIのためのRパッケージ作成の勘所
第59回R勉強会@東京での発表資料です。
yutannihilation
March 18, 2017
More Decks by yutannihilation
See All by yutannihilation
RパッケージでRustを使うには: extendr入門 / extendr-pkg-dev
yutannihilation
1
7.9k
🦀
yutannihilation
2
860
rayshader入門 / rayshader-tokyor88
yutannihilation
0
1.1k
RとApache Arrow / r-and-apache-arrow
yutannihilation
4
7.5k
そろそろ使ってみませんかApache Arrow / why-dont-you-arrow-now
yutannihilation
2
1.2k
A Graphical Introduction to tidyr's pivot_*()
yutannihilation
5
5.4k
tidyr 1.0.0の新機能 pivot_*() / tidyr-pivot
yutannihilation
4
11k
RとApache Arrow
yutannihilation
0
3.5k
Yet Another Introduction to tidyeval
yutannihilation
10
8k
Other Decks in Programming
See All in Programming
関数型プログラミングのメリットって何だろう?
wanko_it
0
190
5分で問診!Composer セキュリティ健康診断
codmoninc
0
510
全PRの83%がAIレビューだけでマージできるようになった開発組織はその後どうなったか
athug
0
270
Lean は証明の正しさを確認するためだけのツールって思ってませんか?
inoueasei
1
100
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
320
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
shibuchaaaan
0
120
初めてのKubernetes 本番運用でハマった話
oku053
0
130
ローカルLLMでどこまでコードが書けるか -縮小版 / How much code can be written on a local LLM Shortened
kishida
2
200
鹿野さんに聞く!『TypeScriptコードレシピ集』で磨く実践力
tonkotsuboy_com
4
1.1k
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
2
890
1年で人数1.5倍、PR数5.5倍増。 品質とアウトカムはどうなったか、 何が効いたか
ike002jp
0
140
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
170
Featured
See All Featured
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
Optimising Largest Contentful Paint
csswizardry
37
3.8k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
Designing Powerful Visuals for Engaging Learning
tmiket
1
450
GraphQLとの向き合い方2022年版
quramy
50
15k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
How GitHub (no longer) Works
holman
316
150k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
390
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
380
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.3k
Speed Design
sergeychernyshev
33
1.9k
Transcript
ウェブ のための パッケージ作成の勘所 湯谷 啓明
ドーモ • •某グループウェアの会 社の チームに所属 •好きな言語: 、忍殺語 •将来の夢: モジュラーシンセ廃人
本 によるスクレイピング入門 •ウェブスクレイピング •ウェブ • 初心者にも丁寧に説明! •豊富な実例!
パッケージ • • 国土数値情報 • • •つくりかけ: • • •
今日話すこと • を使うにはどこから始めればいいか •困ったときのデバッグ方法 •認証についてのつらかった話(愚痴) •クレデンシャルの管理
( )
の翻訳 ( )
基本はこれを読んでおけば ? わりと でも
None
None
(参考) とは? ( )
情報収集
すでに開発されているパッケージ •車輪を再発明する必要はないので、既存のものが ニーズに合うならそれを使う •ニーズに合わなかったり古くて動かなくても、実 装は参考になることがある •他言語の実装も参考になることもある
ドキュメント • の仕様 • データ形式 • 認証方式 • 細かい部分は試しながらでいい •
どのような制限事項があるかは注意して読む • の利用規約 • データがどういうライセンスなのか • クレジット表示の必要があるか
例:国土数値情報 ( ) ※ パッケージに日本語を含めるのはつらい。。 (参考: )
を使ってみる
まずは簡単そうなものから •認証不要の •指定するパラメータが少なくていい •返ってくるデータが単純な構造の
結果のデータ構造を見る •どんなデータ形式か( ? ?) •ほしいデータがどこにあるか
結果のデータ構造を見る: •データの構造を表示する •慣れるまで時間がかかるけど、キーボードしか触 りたくないという人には便利 •引数を付けて表示を制限 • 長いベクトルやリストをど こまで表示するかを指定 • ネストしたリストを何階層まで下るか
を指定
結果のデータ構造を見る: ( )
結果のデータ構造を見る: ( 、 ) ※ にはリリースされていないので でインストール
結果のデータ構造を見る とりあえず結果をファイルに保存しておくと、あ とでいろいろ試すときに便利 • レスポンス をまるごとバイナリとして保存 • レスポンスをまる ごと のコードとして保存
• レスポンスボディだけでいいなら でも
とりあえずデータフレーム化を目指す
にも期待! ( )
うまく動かない時
まずはエラーを確認 •ステータスコードとレスポンスボディ ステータスコード。 ならたぶん成功、 ~なら失敗 レスポンスボディ。 エラーメッセージが入っていることがある。
例: 認証に失敗しました。アプリケーション を確認して下さい。 ステータスコードは だけどエラー!!! (このパターンはたまにあります。 ドキュメント読みましょう )
送信しているリクエストを確認 オブジェクトの中身 •実は の中に入っている
送信しているリクエストを確認 オブジェクトの中身 •リクエストボディも入っている。ただし 型に なっているのに注意。
送信しているリクエストを確認 •送ったリクエストのヘッダや中身を返すウェブ サービス
認証
認証はつらい。
よくある認証方式 •認証なし:楽 •個人用アクセストークン:楽 •ユーザ名とパスワード:楽だけど注意 • うっかり漏れるとやばい • アクセストークン:注意 • の
が特殊なことも割とある • の実装がバグっていることも •署名を付ける系:死ぬほど大変
よくある認証方式: 個人用アクセストークン •例: など •どこに保存するかが悩みどころ(後述)
よくある認証方式: •「よくある」けど、実装はいろいろ •実装側に任されている部分が大きいので、 がすべてのケースをカバーできるわけではない • レポジトリの 以下のコードを参照 •特に に関しては、 の実装が適当
な感じがする (後述)
例: を使うと書かれている ( )
例: •トークンの取得は成功する。 •でもトークンを使おうとするとエラーが
例: ヘッダの形式が独自だった (注:これは 違反ではない。 トークンを別の 認証方式に転用することを禁じる理由はない) よくあるヘッダはこう (そして はこれしかサポートしていない )
例: •英語だとエラーにならないが日本語だとエラーに 写輪眼
例: の の実装がバグってる ! ( )
例: •ブラウザが開いて承認を求められるところまでは いくけど、エラーが • で調べるとレスポンスにこんなのが。 が余計らしい。
例: の 実装がサボってる! (バグとまでは言えないのがつらいところ ) ( )
よくある認証方式:署名 •リクエストの要素をあるルールでひとつの文字列 に結合、そのハッシュ値をとる。 •例: 、 •自前で実装するとなるとけっこう大変。バグりが ち( しかり)。 •まあでもそんな機会はほぼないはず ※私は一度あって死にました。
認証方式のまとめ •世の中わりとバグっている •気合と根性で乗り切る •実例から学ぶしかないので、「 によるスクレイ ピング入門」をお手元に一冊是非ッッ!
クレデンシャルの管理
認証はつらい。
クレデンシャルとは •ユーザ認証に使われる情報。具体的には 、パ スワード、アクセストークンなど。 •うっかり に公開してしまうとまずい。 •まあそんなうっかりな人いないですよね?
ヒント:
None
クレデンシャルを守るために •ユーザにはコンソールに打ち込ませない • 環境変数 • •ファイルに保存する場合は、 の管理下に置か ない • •
レポジトリとは別の場所に置く
認証の場合 コンソールで を打 ち込む( の場合) ブラウザが開いて別のユーザ認証が動く トークン発行 というフローなので、 が漏れても致命 的ではない(
は公開 !と言っている)。
認証の場合 •取得したトークンは漏れるとまずい。 •トークンをローカルに保存する場合、 が というファイルをつくる。 •このファイルは、 に追記されるので 安心!
None
認証以外の場合 •漏れると即アウトのものが多い • は面倒を見てくれないので自分でやる必要 がある。
インタラクティブな環境変数の指定 • でプロンプ トを立ち上げる。
による環境変数の指定 • のセッション立ち上げ時に読み 込まれるファイル。環境変数を指定する。 •ワーキングディレクトリではなく、ユーザのホー ムディレクトリに配置。 •つまり、レポジトリ外にあるファイルなので に誤って取り込まれる可能性は低い。安心!
による環境変数の指定 ホームディレクトリの特定 そこに以下の内容の を作成 追記 セッションを再起動、環境変数があるか確認 なら ユーザ なら ユーザになる?
最後は空行 のコードではないので記法が違う
None
クレデンシャルの管理のまとめ •環境変数やポップアップを駆使して、なるべくコ ンソールでクレデンシャルを打ち込ませないよう にしましょう •がんばっても結果に結びつかないこともあるけど 強く生きていきましょう
最後に
•ウェブ の世界はまだまだ •今日話した部分は、今の私の力量では体系的に書 けなかったことで心残り •ぜひ本を買ってマサカリをください •あと、 とウェブ 関連で困ってることがあれ ばお気軽にご相談ください
買って、マサカリをぜひ。 によるスクレイピング入門 •ウェブスクレイピング •ウェブ • 初心者にも丁寧に説明! •豊富な実例!