About us データのじかんとは?
APIはソフトウェア同士を繋げるインターフェースですが、ソフトウェアにはOperating System(オペレーティングシステム)やマウスやキーボードといった周辺機器を動かすためのデバイスドライバ、ExcelやWordをはじめとするアプリケーションソフトと機器の様々な階層に組み込まれています。
APIは機器内のCPU・ストレージといったハードウェアとデバイスドライバとの間の縦階層、Webブラウザとアクセス先のWebサイトといった機器を跨いだ横階層同士での接続を形成します。
昨今注目されているWeb APIは、インターネットのプロトコルでAPIを介してデータをやり取りすることで、クラウド上にあるサービスとの連携を実現します。
LinuxやWindowsをはじめとするOS(Operating System)は、ハードウェアを利用したり、管理したりするための基本ソフトウェアですが、各種のミドルウエアやアプリケーションといったOS以外のソフトウェアは、OSを介してコンピュータを利用します。
OSは、CPU、メモリー、ストレージ、ネットワークカードなどのハードウェアとのインターフェースを形成し、さらにハードウェアの違いを吸収して、コンピューターリソースとして、これらを管理しています。
OSは、ミドルウエアやアプリケーションがコンピューターリソースを使いやすくするためのインターフェースであるAPIを提供しており、APIを使用することで、プログラム作成とコンピュータの利用を容易にするだけでなく、それに従って作成されたアプリケーションの可搬性、移植性も保証してくれます。
ランタイムとは、アプリケーションを実行するために必要な単体プログラムのほか、開発ツールを用いて開発したファイル群(ランタイム環境)を指します。
プログラムが必要とする単体プログラム(モジュール)のことをランタイムライブラリと言いますが、APIが使用されていたり、単体プログラムでAPIをさらに使いやすくしたインターフェースを形成したりするため、APIという場合があります。
マイクロソフトの「Windowsランタイム」においては、プログラミングモデルであり、アプリケーションを作成するバックボーンとなるAPIとしています。
またランタイムとは、開発者がプログラムを記述し、コンパイルやリンクなどを行って実行可能形式のプログラムに変換した後で、それを実際にコンピュータ上で実行する段階を指す場合もあります。
Javaなどのプログラミングによる開発作業においては、クラスをまとめたクラスライブラリを用いることで、何百行にも及ぶコードを書くことなく、僅か数行で機能を実装することができます。
クラスライブラリとは、オブジェクト指向言語におけるライブラリで、オブジェクト指向プログラミング言語において、外部から利用可能な特定の機能を持つプログラム部品をクラスとして定義し、これを複数集めて一つのファイルなどの形にまとめたものを指します。
Javaのクラスライブラリは、機能や目的ごとにパッケージとして格納されており、特定のソフトウェアや通信プロトコル、機器などを利用するための機能をまとめたものがソフトウェア開発キット(SDK)では提供しています。
これらはクラス定義やAPI、実行可能ファイルで構成されていることから、クラスライブラリは、ライブラリAPIの他、コアAPI、標準APIと呼ぶ場合もあります。
各種アプリケーションからデータベースに接続したり、データを取得したりするには、データベースベンダーが取り決めた仕様に従って実施しており、これらの機能は、APIとライブラリのセットで構成された“ドライバー”で提供しています。
代表的なものとしてはMicrosoft社の「ODBC」やOracle社の「OCL」などで、この中のデータベースAPIは、「アプリケーションとドライバーマネージャーの間」、および「ドライバーマネージャーと各ドライバーの間」でAPIとしての役割を担います。
Web APIとは、HTTP・HTTPS通信によってやり取りするAPIのことです。
インターネットプロトコルであるHTTP・HTTPSでクラウドを介して通信するので、プログラミング言語が異なるアプリケーション同士であっても連携できたり、Webブラウザでも利用できたりします。
例えば、ウイングアーク1stのMotionBoardが備える機能の一つに、「端末機器(モノ)の「いま」のデータをリアルタイムに蓄積できるリアルタイム連携」があり、Web APIを使用することでリアルタイムにセンサーデータなどをMotionBoardに送り続けることができるようになります。
このようにWeb APIは汎用性が高く、また無料で利用できるものも多いため、あらゆるシーンで活用されています。
APIのイメージがついたところで、APIの利点について説明してみたいと思います。API機能には大きく3つの利点があります。
その3つとは、
です。
APIで組み込むことができる信頼できるプログラムが世の中にすでに存在する場合、そのプログラムと連携することで、自分で1からプログラムを組む必要がなくなり、ソフトウェア開発の効率化がはかれます。プログラム開発側にとって、開発時間を短縮することができるのは大きなメリットです。
時間短縮ができれば他の工程に時間を割くことができ、結果的にコスト削減が可能となります。
大手SNSページやアプリ会員登録時、または買い物をする場合など、Googleアカウントやフェイスブックアカウント、またはTwitterアカウントを連携することで登録ができた、という経験はありませんか?
あれは各種サービスとAPI連携が行われているため、別アプリケーションログインによる、ログイン認証ができるようになっています。わかりやすい例を挙げるなら、フェイスブックとインスタグラムです。フェイスブックのアカウントを持っている人であれば誰でもインスタグラムのアカウントをすぐに作成可能です。
自社でセキュリティレベルの高い会員登録システムを入れるよりも、すでにあるセキュリティレベルの高い会員システムを導入する方がユーザーも安心ですよね。ユーザー新たにユーザー登録をしなくても良い、という大きなメリットがあり、より多くの人に使ってもらえる、というメリットが提供側にもあります。ちなみに、提供側は、APIの連携前に必ずユーザーの承諾を得る必要があります。ユーザー側も連携サービスを使うにはユーザー情報が共有されることを許可する必要があります。(どの情報が共有されるか、などはサービスにより異なります。)
APIを使えば、それぞれのサービスの最新情報をこちら側が毎回更新しなくても取得、利用することができます。
例えば、自分のサイトでアマゾンの商品を売っている場合、アマゾンでの販売価格が変わった場合でも、API連携で情報を取得してきている場合、その変更は自動で反映されます。
Twitterやインスタグラムへの投稿をFacebookにも自動で投稿するように設定する、などが可能となっているのもAPIのおかげです。
APIはサービス提供側の事情により、使う側が影響を受ける、といったリスクが潜んでいます。そのため、APIの使用は様々な状況が発生することを想定して、自社のサービスが提供できないときの対応方法の策定や、選定の際に代替となるAPIをピックアップしておくなどは、自社とユーザーが被るリスクの低減に繋がります。
APIの提供側が、何らかの理由でサービスの提供を停止したりすると、それを使用している自社のサービスにも影響を及ぼすため、サービスが提供できなくなってしまう恐れがあります。
APIは提供元で開発、運営しているため、不具合が発覚したり、提供側のサーバーや通信障害等が発生したりした場合、自社側では対応できず、提供側のリカバリが完了するまで、使用やサービスの提供ができなくなってしまいます。
APIの多くは無償で提供されているものの、課金的に費用を課すものもあります。APIにコストがかかる場合とそうでない場合とでは、自社が提供するサービスの利益率にも影響を及ぼします。
今まで無料で利用できたAPIが突如有料化するケースはAPIに限らずクラウドツール等でも起こっており、ユーザー側は、ラーニングコストを負担しても利用し続けるか?それとも代替を探すか?といった判断が迫られることになります。
最近では、Twitterの様々なデータにアクセスし、ソフトウェア開発や分析ができる『Twitter API』の有料化が話題になりました。
『Twitter API』は外部アプリからTwitterに投稿したり、Twitter上の投稿を検索したり、ダイレクトメッセージを送ったりといったことを可能にするAPIで、多くの企業が宣伝・広告、集客を目的に利用しています。
Twitter側の見解としては、botによる詐欺活動や情報操作といった悪用の排除が目的とのことで、これはAPIの価値が高まっている故の致し方のない対策と言えます。
APIにもいくつか種類があり、多くの方が使うことになるのが、WEBの「API」つまりはWeb APIと呼ばれるものです。名前が特に変わっていないので、覚えやすいですね。
Web APIはその名の通り、Web上に公開されていて、外部から呼び出して利用が可能なAPIです。
誰でも使用でき、かつ無料のものが多いので、多くのサービスがAPIを使っています。
例えば、身近な例でいうと、
などがあります。どの企業も一度は耳にしたことのある大きな企業です。データのじかんの読者の方であれば、複数のサービスを使っている方、アカウントを所有している方も多いことでしょう。
AmazonのAPIを利用すれば、自身のWebサイトで最新の売れ筋をすぐさまチェックすることができたりします。
また、前述の通り、FacebookやTwitterなどのSNSが提供するAPIを利用すれば、SNS同士で記事を共有することができ、1つのSNSに記事投稿をしても、他のSNSにも同時投稿が可能になったりします。また、TogetterやNaverまとめなどのサービスもSNSと連携することで、サービスの利便性、そしてサービスの価値そのものを高めています。
Google Calendar APIは、Googleが提供しているGoogleカレンダーの各機能が使えるAPIです。お店の営業時間に使ったり、社内の会議の時間を共有したりすることで、無料で情報共有を不特定多数の人と可能にしてくれる優れものです。
30秒で理解!インフォグラフィックや動画で解説!フォローして『1日1記事』インプットしよう!