APIは現在色々な企業のソフトウェアのAPIが配布されているので、実際に開発をする際になくてはならないものとなっています。
ですので、開発する際には必須となりそれを使用する知識は前提として覚えておく必要があります。
そのため、自身でReact関連の勉強をハンズオンでしている中でAPIの作成と、APIを使用してSNSアプリ等作成している途中で学んだので復習のためまとめようと思います。
【初心者用】APIについて
1. そもそもAPIって何?
API(Application Programming Interface)とは大雑把に形容すると、アプリケーションをプログラミングするためのインターフェースという意味になります。
インターフェースとは、何かしらの境界面や接点のことを指しており異なる2つのものの間をつなぐという意味になります。
例えるとキーボードやマウスなどの周辺機器はユーザーインターフェースと言われています。
また、USBやHDMIななどといった機械同士をつなぐものはハードウェアインターフェースと呼ばれています。
ですので、APIとはアプリケーションやソフトウェア・ハードウェアなどをつなぐものという認識となります。
APIはソフトウェアやアプリケーションなどの一部を外部に向けて公開しているものを、そのシステムが必要な第三者が自身が開発しているソフトウェアと機能を共有できるようにするものです。
APIはハードウェアと違いソフトウェア同士をつなぐことにより、異なるソフトウェアの機能を異なるソフトウェア間で共有します。
APIをわかりやすく例えるとソフトウェアにAPIとやり取りをする外部の窓口を作成し、外部のアプリケーションと連携できる状態にできるということです。
アプリとアプリをつなげることにより、機能拡張などを便利にできるようになり開発の利便性を上げることがAPIの狙いとなっています。
2. APIの仕組み
APIは必要とされるたびにリクエストされて、それがレスポンスとしてデータを得ることにより使用することができます。
リクエスト中は利用しているソフトウェア・アプリケーションでAPIを使い続けている間に行われ、想定している結果が得られない場合でもレスポンスを返却して受け取ることができます。
また、APIは特定の動作のみをするものという決まりはなくAPIの利用者がリクエストをし、それに対しレスポンスを返却するのがAPIの提供者となっています。
ですので、どのようなリクエストに対してどのようなレスポンスを返却するかというのは、APIの提供者が設計段階で考えて実装し利用可能な状態まで作成します。
上記に関してクレジットカードで例をあげると、ネットショップでユーザーがクレジットカードを使用して決済をする機能でAPIを使用した場合は、サイト側がクレジットの決済機能を必要はなくクレジットカード運営会社が用意しているAPIに対してカード情報をリクエストします。
そのリクエストに対して決済の可否を表すレスポンスがクライアントのほうに返ってくるようになっています。
ですので、ネットショップ側では個別でカード情報などを管理する必要性はなく、ユーザー側は安全に買い物をすることができます。
3. APIの種類
APIの種類としては以下が挙げられます。
①ランタイムAPI
②ライブラリAPI
③WEBAPI
④DBAPI
の4つがあります。
①のランタイムAPIに関しては、アプリケーションを使用するための単体プログラムなど開発ツールを使用して開発したものを指します。
単位プログラム(モジュール)などをランタイムライブラリということがありますが、APIが使用されている又は単体プログラムでAPIを使用しやすくしたインターフェースを形成するためAPIという場合があります。
②のライブラリAPIでは、Javaなどのプログラミング作業の開発でクラスをまとめたクラスライブラリを使用することがあります。
そうすることで、多くのコードを書く必要性が無くなり、わずかな記述のみで機能を実装できます。
③のWebAPIに関しては、HTTPやHTTPSなどの通信によりやり取りをするAPIのことを指します。
インターネットでHTTPやHTTPSなどを仲介して通信を行うので、プログラミング言語に左右されず異なるアプリケーション同士で会っても連携して利用することができます。
④DBAPIに関しては、各種アプリケーションからデータベースに接続やデータを取得する際には、データベースベンダーが取り決めている使用の従っています。
これらの機能に関してはAPIとライブラリのセットで構成されているドライバーというものを使用しています。
このようにAPIにも様々な種類があり、利用したいものにより変化しています。
4. APIのメリットとデメリット
色々と便利なAPIですが、類にもれずメリットやデメリットがあります。
最初にメリットをあげるとすると、本来は扱うことのできないデータの交換や処理ができるようになることがメリットになります。
例えば上記で例に出したクレジットカードの決済情報などの、個人情報にかかわる認証関連の処理といった高度で複雑となっている情報処理に関して、APIをとおしてカード会社にアクセスすることにより可能になります。
また、ログイン認証に関してもユーザーや管理者もアカウント管理は面倒です。
新規のパスワードの作成やパスワードを安全に保管することはかなりの手間となります。
その際に、APIを使用して他のサイトなどからアカウント情報をそのまま使用できるのであれば大きな利点となります。
ランタイムAPIではAPIを通してOSやプログラミング言語が提供している機能を使用することで、開発にかかるコストなどが大幅に削減することができます。
こちらを使用することで複雑な処理や信頼性の高い処理を書く必要がなく、簡単に実装できるのはかなり大きなメリットであるといえます。
次にAPIのデメリットをあげるとすると、API経由で送付したデータがAPI提供者によってどのように使用されるのかはわかりません。
また、自社サービスのソフトウェアの機能を外部に依存する場合は、自社のソフトウェアやサービスが不安定になる又は維持費などが増加する可能性などがあります。
さらに、APIを使用することでサービス全体の処理などが不透明になる場合も少なくなく、リクエストに対するレスポンスが想定内のものであってもAPI内部の処理がわからない場合は、予想外のレスポンスなどによりトラブルが起こる可能性もあります。
APIを使用することにより開発は楽にはなりますが、すべてをAPIで補おうとするのではなくある程度は直接実装しておいたほうが機能の修正や更新などを簡単にできます。
最後にAPIは全て無料ではなく利用に応じて費用が発生する場合もあります。
多くのAPIは無償で提供がされているのですが、利用に際して課金的に費用が発生するものもあります。
また、twitterの様に今まで無料で利用できたものが、急に有料になるなどもあり得るのでそちらもデメリットになるかと思います。
5. APIのまとめ
APIを使用することで開発する際に便利になるのですが、使用する際にはメリットだけでなくデメリットの面を踏まえて利用することが大事かと思います。