5
0

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 1 year has passed since last update.

APIをIT知らない人に説明できないことに気づいた

社内でプログラミング経験があまりない人に対して、Go言語のトレーニングを行えるコンテンツ作成に取り組んでいます。
その中でAPIを作ってもらうのですが、ITについてまだ詳しくない人にAPIをうまく説明できないことに気づきました。
色々と考えてみた結果、APIはSNSでのやり取りに似ているのではないか、と思い記事化してみました。

なぜAPIが必要なのか?

Wikipedia先生によるとAPIというのは、、、(アプリケーションプログラミングインタフェース)

APIは各種システム/サービスがそのシステム/サービスを利用するアプリケーションに対して公開するインタフェースである。

例えば、自作の日記アプリに天気予報機能を実装したい際に、天気予報のアルゴリズムを自分で書くのは大変です。
しかし、自分で天気予報アルゴリズムを書く代わりに、「今日の天気を教えてください」というリクエストを送ったら今日の天気を返してくれる天気予報APIを使えば簡単に天気予報機能を実装できます。

「各種システム/サービス」が「天気予報サービス」で、「利用するアプリケーション」が「自作の日記アプリ」です。
「天気予報サービス」をを利用するために公開しているのが「天気予報API」ということになります。
この天気予報APIは今回のような自作の日記アプリだけではなく、SNSアプリやブログ、研究ログアプリなどでも使用されるかもしれません。

このように、天気予報APIは色々なアプリケーションに対してそのサービスを提供する必要があります。
天気を予測するアルゴリズムをそれらのアプリケーションに組み込むのは現実的ではないため、日記アプリから「今日の天気を教えてください」とうリクエストを天気予報APIに対して送るような形式で天気情報を得ます。

APIを使うときのイメージ

クライアントとAPIとのやりとりはSNSでのやりとりと似ていて、SNSでのやりとりができるようになる要素を準備してあげるとAPIを作ることができます。

まず、日記アプリは天気を知りたいので、天気に詳しそうな天気予報APIとSNSでつながります。
そして、日記アプリは天気予報APIに「天気を教えて欲しい」とメッセージを送り、天気予報APIは日記アプリに天気を教えます。
天気予報APIは几帳面なので、指定した文章で天気予報をお願いしないと天気を教えてくれません。
そのため、天気予報APIが指定した形式で天気予報の依頼をします。

つまり、まずはやり取りを行うための場(SNSでつながる、通信できるようにする)を作ります。
SNSでつながれば、あとは天気予報APIが答えやすいようにメッセージを送るだけです。
これらのルールを難しく言ったのが、プロトコルとかバリデーションと言ったものになります。

そのため、APIを1から作りたいときは、「APIとクライアントがやりとりを行える場の用意」、「どんな質問が来るのかを想定して、それに沿った回答を用意」するとよいということになります。
これらがHTTP通信だったり、リクエストとレスポンスと呼ばれているものです。

image.png

まとめ

APIとクライアント(APIを使いたいアプリ)のやり取りは、SNSにおけるやりとりと似ている。
クライアントはまずAPIとやりとりを行うための場に接続する必要がある。
APIは几帳面なので、クライアントはAPIが指定する書式で欲しい情報をリクエストする必要がある。。
APIはクライアントからのリクエストに答えられるように、想定していたリクエストに沿ったレスポンスを返せるように準備しておく。

5
0
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
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?