きっかけ
とあるシステムの開発/検証業務について、システムを構成するアプリケーションが提供しているAPIを用いた自動化を検討しています。そんな中、1日に4人から「APIって何?」と質問されました。頑張って説明してみましたが、半分も伝えられなかった気がします。
自動化を推進していくチームのメンバーとして、同じチームのメンバーをはじめ、上司や他チームのメンバーにわかりやすく説明できないこの現状は非常にマズいです。
つい最近まで、APIやオペレーションの自動化について、勉強させてもらう機会を頂いていたので、「APIじゃなくてもいいんじゃないの?」「APIの良さがイマイチわからない」と言われないように、まとめていこうと思います。
APIとは
APIは、Application Programming Interfaceの略称です。世の中には、いろいろなAPIが溢れています。
- 2018 公開されているAPI一覧まとめ
- [海外・国内の便利なAPI一覧] (http://smsurf.app-rox.com/api/)
RESTful APIとは
自分がAPIという言葉を使うとき、RESTful APIを指していることがほとんどです。
IT用語辞典 e-Wordsでは、下記の通り記載されています。
RESTful APIとは、Webシステムを外部から利用するためのプログラムの呼び出し規約(API)の種類の一つで、RESTと呼ばれる設計原則に従って策定されたもの。RESTそのものは適用範囲の広い抽象的なモデルだが、一般的にはRESTの考え方をWeb APIに適用したものをRESTful APIと呼んでいる。
RESTは設計原則であり、それに準拠したものをREST(ful) APIと呼んでいるわけです。
- 0からREST APIについて調べてみた
- RESTful APIとは何なのか
- [SLideShare RESTful API 入門]
(https://www.slideshare.net/keisuke69/restful-api-56227772)
APIのメリット
CLIやGUIに比べて、APIは自動化の再現性があると考えています。CLIやGUIの使い方について、Aというサービスを習熟したところで、扱うサービスがBに変われば1から習熟する必要があります。
それに対して、RESTに準拠しているAPIについて、RESTを理解していれば、50ぐらいから習熟できると考えています。
50と言っている理由は2点あります。
-
APIでやりたい操作(例えばVM構築など)に対してどんなパラメータを指定するか調査する必要があるためです。これは、GUI/CLIと同様どれだけそのインタフェースの利用方法に詳しくなったとしても避けることはできません。
-
OpenStackやAWSのAPIはあるリソースに対するCRUDが(恐らく)全て用意されていますが、あるサービスではReadのみAPIが用意されていたり、実際はRESTのようなものだったりとリファレンスに「API」と書かれていいても実際に叩いてみるまでわかりません。もちろん「RESTのようなものを読み解く」ことが、「GUI/CLIを1から習熟する」ことより遥かに楽だと考えています。
50くらいから習熟できる例(書きかけ)
Facebookでは、自分のアカウント情報は、__「GET /me」__で取得できます。
FacebookのAPI
対して、Twitterでは、自分のアカウント情報は、__「GET /account/settings」__で取得できます。
TwitterのAPI
もし仮にFacebookで「ユーザ名がすでに資料されていた場合は、後ろに乱数をつけて再度登録を試みる」というロジックをつくこんだ場合、エンドポイントとパラメータを変更すれば、恐らくTwitterでも利用できるはずです。
memo
誤りなどあれば、コメントいただけると幸いです。随時修正していますので、あしからず。