PyQでAPI学習してAPIの理解が少し変わったのでまとめてみる

投稿日:

プログラミング初心者の勉強ブログ #100

Pythonオンライン学習教材として評判のPyQ(https://pyq.jp/)によるPython学習記録です。Rubyを多少かじり、第二外国語としてPythonを少しづつ学んでいきます。(内容はRubyとの比較が多くなるかもしれません。)

今回は漠然と「API」の現状の理解をまとめてみます。何となくAPIと聞くとOauthとかGoogleMapとかAmazonとか思い浮かべますが、APIはもっと広義であり、APIを作る側の視点もふまえ、「実際何が行われているか」について理解していきます。

 

目次

 

APIとは

アプリケーション・プログラミング・インターフェース(Application Programming Interface)の略。OS(基本ソフト)やアプリケーションソフト、あるいはウェブアプリケーションが、自ら持つ機能の一部を外部のアプリケーション(ソフトやウェブサービス)から簡単に利用できるようにするインターフェース。ここで言うインターフェースとは、機能の呼び出し手順や記述方法などを定めた仕様を指す。APIが提供されている機能は独自に開発する必要がないため、プログラムの開発を効率的に行うことが可能になる。APIは元々1台のコンピューター上でOSやアプリケーションソフトが提供する機能を利用するために生まれた考え方だったが、オンラインサービスやウェブアプリケーションの発達によって、異なるネットサービス間で機能を共有するための概念に拡大した。これを特に「WebAPI」と呼ぶこともある。
API(エー ピー アイ)とは - コトバンク

GoogleMaps APIやOauth機能などは「WebAPI」であり、そもそもと比較すると後天的に発生したAPIだとのこと。APIの「I」はインターフェースの略であり、APIはアプリケーション同士のインターフェースを仕様としてあらかじめプログラムに持たせておいた機能全般を指すことになります。

 

APIがやってること

APIの定義を再度確認した上で、実際にAPIが何をやっているかを理解します。

箇条書きすると、

  • リクエストに対し、JSON形式でレスポンスを返している
  • リクエストが正当なものか判断するために、アクセストークンを生成している
  • リクエストの内容がそのAPIに合っているかどうか判断するために、バリデーションをかけている

APIのやっていることはこんな感じです。

とにかく、「他のプログラムが送信してきたリクエスト」に対し「処理を実行した結果(レスポンス)」を返すことがAPIのやっていることです。リクエスト元が自分か他のプログラムかの違いであり、基本的にやっていることはただの通信だということです。

極端に言えば、他のプログラムのリクエストに応じ、「Hello」というレスポンスをJSONで返す機能が備わっているプログラムは、たったそれだけであっても、他のアプリとのインターフェースを持ちしっかりレスポンスを返しているのでAPIになるという理解です。

 

JSON形式である理由

APIによるレスポンスは基本的にJSON形式になります。理由は主に2つです。

  1. JSON形式は「人間もプログラムもわかりやすい」形式であるため
  2. JSON形式は「多くの言語で簡単に処理が行える」形式であるため

内部向けの通信と異なり、外部向けの通信で求められることは「返したレスポンスがリクエスト元でちゃんと処理されるか」です。内部であったら使っている環境も言語も同じであるのでデータ形式を気にしませんが、外部は全て異なります。このような点を網羅しつつ、かつ人間も理解しやすいJSON形式が、APIで一般的に使われている形式となっている理由です。

 

まとめ

僕には悪い癖がいくつもある。嫌なことは後回しにしがちで、余裕を持った行動を取らずギリギリでやることが多い。小学生の頃好きだった「あたしンち」という漫画のユズヒコは、自分の中に「モヤモヤ時計」(正確な名前は忘れた)なるものがあるみたいな話があったのを覚えている。やらなきゃいけないことが「モヤモヤ」という言葉で表現され、モヤモヤが頭の中に充満し「これ以上はやばいんじゃないか」という段階でユズヒコのやる気のスイッチが入る。僕もそんな感じである。

他にも、僕は0か100に振り切れてしまいがちで、仏教でいう「中道」を気づいたら歩いていない。部屋の掃除をサボり、誰にも見せられないような状況になったかと思えば、極端なまでに部屋を掃除しだすこともある。「同じようなことはまとめてやった方が効率が良い」という言い訳を作り、流しで水につけた状態で食器を2〜3日分溜めてから洗うこともある。一人暮らしだと、それでも大した洗い物の量にならない。僕のなかで「中道」はとても素晴らしい考え方だと思っている。よもや中道至上主義だ。これいうとこの人宗教的な人なのかな、と思われそうだ。それは嫌なので自分の言葉でなぜ中道が素晴らしいか理由を述べておく。中道という考え方との出会いは、「バカボンド」を読んだときである。

ちょうどスラムダンクを読み終え、井上雄彦の漫画を他にも読んでみたいとなっていた時期であり、僕が高校生のときである(スラダンにハマる時期としては遅い方)。そのときの僕はリアルやバカボンドなどを読んで、少年誌にはない「人間味あるストーリー」に面白さを感じ始めていた年頃であった。だから印象深いのかもしれない。バカボンドの主人公は宮本武蔵であり「たけぞう」という愛称で呼ばれている。とにかく武の才に長け、めちゃくちゃ強くてかっこいい。武の道を極めていく中で、たけぞうは多くの人を殺す。中道とはかけ離れた生き方である。そんなたけぞうに対し、沢庵和尚が中道の考え方を説いた。強くありたいという気持ちと、人を殺すことによる罪悪感の間に悩んでいたたけぞうは、沢庵和尚のその言葉を聞き「真ん中が良いのはなんとなくわかる」という。確かこんな感じだったと思う。かなり前に読んだので断片的な記憶で書いている。間違っていたらバカボンドファンに申し訳ない。とにかくこのシーンが僕に刺さっており、今もこうしてここに書いている。

結局、「極端」なことをすると持続ができない。中道は人生を長く懸命に生きていく上で大切な考え方であり、現代の些細な生活のシーンに当てはめるならば「皿は使ったらすぐ洗えよ」という教えなのである。別に宗教を信じているわけではないので、中道の考え方が本来のそれと違っていてもいいと思っている。少なくても「中道」という言葉は「掃除サボるなよ」と言ってくれる訳で、僕に対しプラスに作用している。それでいいと思う。

「僕」という一人称をどれだけ使ったかで、その記事の主観性の強さが出ると思うが、今回は過去最高な気がする。100個目の記事としてこのような自己語りはどうなんだ。めちゃつよエンジニアの技術ブログを目指していた当初の方針が薄れ始めている。

以上ありがとうございました。

-プログラミング学習
-,

Copyright© s u p ? , 2019 All Rights Reserved.