Upgrade to Pro — share decks privately, control downloads, hide ads and more …

APIクライアントを作ろう! / Let's make API client!

APIクライアントを作ろう! / Let's make API client!

120b74af626c2b23f954926ef68ac5d6?s=128

papix
PRO

June 02, 2015
Tweet

More Decks by papix

Other Decks in Technology

Transcript

  1. APIクライアントを作ろう! by  papix  (GaiaX  Co.  Ltd.)

  2. 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分現在
  3. None
  4. 突然ですが…

  5. APIクライアント

  6. 作ったことありますか?

  7. APIクライアント •  WebサービスのAPIを叩く君 – Twitter  -‐‑‒>  Net::Twitter – ImKayac  -‐‑‒>  WebService::ImKayac::Simple – Mackerel

     -‐‑‒>  WebService::Mackerel •  Perlスクリプトからお⼿手軽にWebサービス を利利⽤用できてとても便便利利 •  CPANにもいっぱい公開されている
  8. https://reactio.jp/ 先⽇日リリースした 障害対応に特化した コミュニケーションツールという ⾃自社サービス

  9. APIクライアントを作ったので

  10. その時に得た(調べた)知⾒見見を 発表しようと思います

  11. 名前空間

  12. APIクライアントでよく使われる 名前空間を紹介するぜ!!!

  13. Net  !!!

  14. WebService  !!!

  15. WWW  !!!

  16. 以上だ!!!!!

  17. 名前空間 •  Net – Net::Twitter – Net::Travis::API  ... •  WebService – WebService::ImKayac::Simple – WebService::Livedoor::Weather

     ... •  WWW – WWW::Twilio::API – WWW::NHKProgram::API  ...
  18. どれ使えばええねん!!!

  19. https://pause.perl.org/pause/query?ACTION=pause_̲namingmodules#Net

  20. Net  /  WebService  /  WWW •  ネットワークプロトコル – Net •  アプリケーションプロトコル

    – WebService  or  WWW WebService  or  WWWが良良さそう!
  21. 依存ライブラリ

  22. 依存ライブラリ •  少ないに越したことはない – 「重い」ライブラリに依存するのは避けたい – 利利⽤用者から敬遠される可能性もある •  良良く使われるライブラリ – HTTP  Client:  LWP,

     Furl,  HTTP::Tiny  ... – Decoder:  JSON,  XML::LibXML,  XML::Simple  ... – URI,  Class::Accessor::Lite,  Encode,  Carp  ...
  23. 依存ライブラリ •  WebService::Simple – Web  ServiceのClientを作る為のシンプルな フレームワーク(yusukebeさん製) – WebService::Simpleを継承して シンプルにクライアントを実装できる •  例例:

     WebService::Simple::AWS  ...
  24. テスト

  25. テスト •  「実際のAPIを叩く」テストを書くのはNG – ネットに繋がっていないとテストが通らない – テストする度度にWebサービスにアクセスが… •  1.  異異常ケースのテストを書く – パラメータが⾜足りない場合とか… – フォーマットが不不正な場合とか…

    •  2.  APIを叩く部分のmockを作る – 実際にAPIを叩かずにレスポンスを得る
  26. Test::Mock::Guard •  任意のメソッドに対するモック

  27. Test::Mock::Furl •  Furlのモック – レスポンスを偽装できる – LWPならTest::Mock::LWPなど...

  28. 気をつけるべきところ •  ドキュメント – Synopsisで利利⽤用例例を⽰示す – 使えるメソッドやその使い⽅方を⽰示しておく •  サンプルコード – 「eg」ディレクトリに配置すれば サンプルコードとして扱ってくれる(MetaCPAN)

  29. さいごに

  30. APIクライアント作っていこう! •  昨今様々なサービスが開発されている •  API  ClientがCPANにないものもある – 愛⽤用しているサービスのAPI  Clientがないので あれば,  作っていこう!

    •  みんながお得!!! – ⾃自分も便便利利 – サービス利利⽤用者も便便利利 – サービス提供者も嬉しい
  31. おわり ご静聴ありがとうございました!