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

おわり ご静聴ありがとうございました!