APIクライアントを作ろう! / Let's make API client!
by
papix
×
Copy
Open
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
APIクライアントを作ろう! by papix (GaiaX Co. Ltd.)
Slide 2
Slide 2 text
papix (GaiaX Co. Ltd.) R&D Div. Technical Basis Gr. • Infrastructure Engineer • “Reactio” Engineer • Recruitment Officer • Perl Community Specialist • “Perl Entrance” headmaster PAPIX papix _̲_̲papix_̲_̲ takayuki.fukumoto.92 Masteries http://papix.hatenablog.com/ _̲_̲papix_̲_̲ papics (Free materials) ※18時50分現在
Slide 3
Slide 3 text
No content
Slide 4
Slide 4 text
突然ですが…
Slide 5
Slide 5 text
APIクライアント
Slide 6
Slide 6 text
作ったことありますか?
Slide 7
Slide 7 text
APIクライアント • WebサービスのAPIを叩く君 – Twitter -‐‑‒> Net::Twitter – ImKayac -‐‑‒> WebService::ImKayac::Simple – Mackerel -‐‑‒> WebService::Mackerel • Perlスクリプトからお⼿手軽にWebサービス を利利⽤用できてとても便便利利 • CPANにもいっぱい公開されている
Slide 8
Slide 8 text
https://reactio.jp/ 先⽇日リリースした 障害対応に特化した コミュニケーションツールという ⾃自社サービス
Slide 9
Slide 9 text
の
Slide 10
Slide 10 text
APIクライアントを作ったので
Slide 11
Slide 11 text
その時に得た(調べた)知⾒見見を 発表しようと思います
Slide 12
Slide 12 text
名前空間
Slide 13
Slide 13 text
APIクライアントでよく使われる 名前空間を紹介するぜ!!!
Slide 14
Slide 14 text
Net !!!
Slide 15
Slide 15 text
WebService !!!
Slide 16
Slide 16 text
WWW !!!
Slide 17
Slide 17 text
以上だ!!!!!
Slide 18
Slide 18 text
名前空間 • Net – Net::Twitter – Net::Travis::API ... • WebService – WebService::ImKayac::Simple – WebService::Livedoor::Weather ... • WWW – WWW::Twilio::API – WWW::NHKProgram::API ...
Slide 19
Slide 19 text
どれ使えばええねん!!!
Slide 20
Slide 20 text
https://pause.perl.org/pause/query?ACTION=pause_̲namingmodules#Net
Slide 21
Slide 21 text
Net / WebService / WWW • ネットワークプロトコル – Net • アプリケーションプロトコル – WebService or WWW WebService or WWWが良良さそう!
Slide 22
Slide 22 text
依存ライブラリ
Slide 23
Slide 23 text
依存ライブラリ • 少ないに越したことはない – 「重い」ライブラリに依存するのは避けたい – 利利⽤用者から敬遠される可能性もある • 良良く使われるライブラリ – HTTP Client: LWP, Furl, HTTP::Tiny ... – Decoder: JSON, XML::LibXML, XML::Simple ... – URI, Class::Accessor::Lite, Encode, Carp ...
Slide 24
Slide 24 text
依存ライブラリ • WebService::Simple – Web ServiceのClientを作る為のシンプルな フレームワーク(yusukebeさん製) – WebService::Simpleを継承して シンプルにクライアントを実装できる • 例例: WebService::Simple::AWS ...
Slide 25
Slide 25 text
テスト
Slide 26
Slide 26 text
テスト • 「実際のAPIを叩く」テストを書くのはNG – ネットに繋がっていないとテストが通らない – テストする度度にWebサービスにアクセスが… • 1. 異異常ケースのテストを書く – パラメータが⾜足りない場合とか… – フォーマットが不不正な場合とか… • 2. APIを叩く部分のmockを作る – 実際にAPIを叩かずにレスポンスを得る
Slide 27
Slide 27 text
Test::Mock::Guard • 任意のメソッドに対するモック
Slide 28
Slide 28 text
Test::Mock::Furl • Furlのモック – レスポンスを偽装できる – LWPならTest::Mock::LWPなど...
Slide 29
Slide 29 text
気をつけるべきところ • ドキュメント – Synopsisで利利⽤用例例を⽰示す – 使えるメソッドやその使い⽅方を⽰示しておく • サンプルコード – 「eg」ディレクトリに配置すれば サンプルコードとして扱ってくれる(MetaCPAN)
Slide 30
Slide 30 text
さいごに
Slide 31
Slide 31 text
APIクライアント作っていこう! • 昨今様々なサービスが開発されている • API ClientがCPANにないものもある – 愛⽤用しているサービスのAPI Clientがないので あれば, 作っていこう! • みんながお得!!! – ⾃自分も便便利利 – サービス利利⽤用者も便便利利 – サービス提供者も嬉しい
Slide 32
Slide 32 text
おわり ご静聴ありがとうございました!