2
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

APIによる自動化

Last updated at Posted at 2018-11-15

きっかけ

とあるシステムの開発/検証業務について、システムを構成するアプリケーションが提供しているAPIを用いた自動化を検討しています。そんな中、1日に4人から「APIって何?」と質問されました。頑張って説明してみましたが、半分も伝えられなかった気がします。

自動化を推進していくチームのメンバーとして、同じチームのメンバーをはじめ、上司や他チームのメンバーにわかりやすく説明できないこの現状は非常にマズいです。

つい最近まで、APIやオペレーションの自動化について、勉強させてもらう機会を頂いていたので、「APIじゃなくてもいいんじゃないの?」「APIの良さがイマイチわからない」と言われないように、まとめていこうと思います。

APIとは

APIは、Application Programming Interfaceの略称です。世の中には、いろいろなAPIが溢れています。

RESTful APIとは

自分がAPIという言葉を使うとき、RESTful APIを指していることがほとんどです。
IT用語辞典 e-Wordsでは、下記の通り記載されています。

RESTful APIとは、Webシステムを外部から利用するためのプログラムの呼び出し規約(API)の種類の一つで、RESTと呼ばれる設計原則に従って策定されたもの。RESTそのものは適用範囲の広い抽象的なモデルだが、一般的にはRESTの考え方をWeb APIに適用したものをRESTful APIと呼んでいる。

RESTは設計原則であり、それに準拠したものをREST(ful) APIと呼んでいるわけです。

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

誤りなどあれば、コメントいただけると幸いです。随時修正していますので、あしからず。

2
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?