エンジニアの副業は週1からでも可能?副業の例や探し方も解説
- ITエンジニア
- 副業
REST API(RESTful API)とは、ハードウェア・ソフトウェアの開発者がシステムの異種コンポーネンツを繋ぎ合わせるのに使用する標準アーキテクチャです。最近では、IoT開発でも大きな注目を集めています。
将来的に80%のデバイスがIoT化するとの予測から、社会を大きく進歩させる技術としてIoTに期待が高まっています。IoTが普及すると世の中のあらゆるモノが繋がり合い、私たちの暮らしはますます便利で豊かになっていくでしょう。
しかしIoTはまだまだ黎明期であり、多くの人にとっては「あれば嬉しいけど無くても困らない」程度の認識しかされていません。私は、ソフトウェアが産業を一変させたように、IoTもまた世界を飲み込む存在であると考えています。
そして現在、IoTデバイスの機能を呼び出すため、それに対応したAPIが各所から提供されています。今回は、IoTにおけるREST APIの基本をまとめていきます。
IoTにかかわるAPIは、自動車、医療機器、エネルギー供給網、家のエコシステムにおける温度調節器など、身の回りのさまざまなものに関わっています。そのため、柔軟性・拡張性・安全性を兼ね備えたAPI管理が欠かせません。
APIにより、開発者は実際の世界とやりとりを行うコンテキストベースのアプリケーションを開発できます。そして本当の意味でのIoTを追求するのであれば、各デバイスにREST APIが必要です。なぜなら、RESTによりインターネットプロトコルへのデータ送信が可能となるからです。
有料サービスとして公開されているAPIもあれば、 無料/登録不要で使えるAPIもあります。APIを活用することで、ひとつのアプリで複数のプログラム言語で書かれたソフトウェアを利用できますが、これはRESTと呼ばれる統一されたアーキテクチャスタイルのおかげです。IoTの普及に伴い、さらに多くのアプリケーションが関わっていくことが考えられるため、使用する分野に関係なくRESTfulなサービスが必要となっていくでしょう。
なお、非構造化データにはオブジェクトストレージ、半構造化データにはMongoDBやCassandra、従来型のデータやトランザクションデータにはSQLやMySQLなど、それぞれのデータタイプに適したソリューションが存在します。開発者にとって、これらのデータソースによって提供された私有APIを使うのは容易ではありません。例えばあなたのアプリケーションにひとつの非構造化データ、ひとつの半構造化データ、ひとつの構造化データベース統合する場合、最低でも3種類の私有APIを使う必要があるでしょう。これでは生産性が低く、まったく違うAPIを混ぜ合わせてアプリケーションに組み込んでいるため、コードの間違いが起こりやすくなります。
混雑した道路に車線分離帯や横断歩道、標識がなかったらどうなるか想像してみてください。大混乱を招くことは間違い無いでしょう。現時点のIoTはまさにそのような状態であり、全体論的な情報デザインが欠如しています。そのため今後は、相互運用可能な、モノからモノへの接続を確実なものにするために情報の流れを標準化する必要があります。ありがたいことに、REST APIは一部それに適しています。
IoTシステムと接続する上で、デバイスがノード、APIがアークにあたります。実際にIoTの利点を最大限に活かすには、ウェブ技術が直接組み込まれたOTアセットを設計する必要があります。インタラクションにはHTTP、データ保護にはSSL/TLS暗号化と認証、データフォーマットにはJSONなど……。これはRESTfulアーキテクチャを通して可能となるのです。
RESTはRepresentational State Transferの略で、プロトコルではなくコンセプトです。今日最も広く利用されているAPIの形式の元になっているのがこのRESTとなっています。現代のWebにおいてRESTful APIは広く利用されており、データ転送は通常JSONまたはXMLを使ってHTTP上で行われます。
RESTはステートレスなコンセプトで、セッション管理や状態管理などを行いません。つまりクライアントは必要に応じて接続し、その都度関連したデータを送信してAPIを消費するのです。常時接続を維持しないため、拡張性が高いという特徴があります。
RESTfulなアプリケーションは、APIがアーキテクチャ要件の汎用セットに準じており、複数のプログラミング言語が統一された手法で簡単にAPIに接続できます。SOAPのようなアクションベースのプロトコルとは違い、RESTはリソースベースのコンセプトなのです。
REST APIは一般的にHTTPメソッドを用いてさまざまアクションを行います。例えばPOST、GET、PUT、DELETEなどは必然的にSQL CREATE、SELECT(READ)、UPDATE、DELETEにマッピングされ、これらの機能はCRUDとして知られています。これはリモートサーバーに保存されているデータに対して行うアクションのすべてがREST APIを通して可能であることを意味します。
RESTは重要な役割を担うものであり、スタック全体を通して利用できます。Webにおける事実上のプロトコルとなった今日において、インターネット上のほぼすべてのWebサーバーとエンドポイントがRESTに対応しています。さらにIoTは多くのRESTエンドポイントを活用しています。MQTTのような他のプロトコルも存在しますが、まだ発展途中に過ぎません。多くのサービスが依存するRESTが複数のサービスを繋ぎ合わせる接着剤として機能することで、IoTインフラを素早く構築できるようになるのです。
なお、アプリケーションやデバイスがほぼ普遍的な手法でインターネットを通して通信できるのはRESTfulなサービスのおかげです。REST APIは、接続されたアプリケーションや「もの」を標準的でよく理解された手法でインタラクションさせるための最も簡単な方法なのです。
さらに、接続されたものが送信するデータをさまざまなデータベースのタイプに合わせて取り込み、保存し、処理する必要があります。一貫してREST APIを利用することで、以下のタスクを最も効率のいい方法で達成できます。
【RESTが扱うタスク】
- 性能
- 拡張性
- シンプルなインターフェイス
- 修正可能性
- 可視性
- 移植性
- 確実性
RESTはHTTPを使用していることから、インターネットに接続しWebページをリクエストできるすべてのデバイスがREST APIを使用できます。それぞれのデバイスが簡単に自らの状態を知らせることができ、データの作成、読み取り、更新、削除の方法を標準化を可能にすることから、RESTはIoTの良いお手本だと言えるでしょう。
開発者は多くのIoTデバイス向けに素早くRESTを構築しましょう。そうすることで、例えば電球から「電気が消えている」という状態の知らせを受けたら、電気をつけるようにリクエストを送れます。あるいは、スペースヒーターから「暑すぎる」といった室温に関する情報を受け取ったら、室温を下げる命令が出せます。このモデルはたくさんの問題に直感的に対応し、私たちの生活をより便利にします。
IoT製品の一番の特徴は、効率的に素早くデータを転送できる点です。IoT実装のあらゆる場面においてAPIが中心に存在するのはこのためです。上手く使いこなせば、APIは開発のスピードアップに大いに貢献するでしょう。データをシームレスにユーザーに届けられるので、UXの向上に繋げられます。
デバイスの開発者とソフトウェアの開発者は、お互いをよく理解していません。デバイス側にとってAPIは製品であり、アプリケーション開発者がメインの消費者です。デバイス向けにAPIを構築する際は、デザインや主要なウェブアーキテクチャを真似た好みのプロトコルについて、消費者のニーズを理解することが必要です。
RESTやJSON APIにより、ソフトウェアエンジニアは新たなアプリケーションを開発する際に無駄な作業を繰り返し行なわずに済むようになりました。RESTは主要なWebアーキテクチャであり、Web上のアプリケーションを開発するのであればトレンドのアーキテクチャを利用するのが理にかなうのではないでしょうか。
ソフトウェア開発者がデバイスについて詳細まで理解せずとも開発を進められるようになれば、IoTは開発者にとってより身近なものになります。実際に、REST APIはこの問題を見事に解決します。モノを抽象化し、インターフェイスとして提供することで、開発者がモバイルアプリケーションを開発する際に利用する既存のバックエンドシステムと同じようにデバイスのプログラムを行えるでしょう。ソフトウェア開発者にとっては、そのようなシナリオで電球の電気をつけることは、他のソフトウェアシステムを操作するのと大して変わりません。
『楽観主義者の未来予測』の著者であるピーター・ディアマンディスとスティーブン・コトラーは、新技術の導入とソフトウェアを通した教育により貧困から抜け出せる人々は10億人おり、そのためにもこのモバイル開発がとても重要であると述べています。
2015年7月、CA Technologiesのサム・マックリンとAPIアカデミーは「将来、成功する企業のすべてがソフトウェア企業となり、そしてその中でも最も成功するソフトウェア企業はAPIプロバイダーとなるでしょう」と発言しました。
今、私たちを取り巻く環境は非常にエキサイティングです。堅牢なユーザーにとって使いやすい高品質ソフトウェアのおかげで、ビジネスは成長し問題に対するさまざまな解決策が登場しています。未来はアプリケーションが牽引しており、そこではコーダーやそうでない人にとっての仕事が増え、労働者よりも仕事の数が上回るでしょう。
IoT採用の動きは近年大きく広がっています。今こそがまさにIoTプロジェクトを策定・開発するベストタイミングと言えるでしょう。データ活用には多くの可能性が秘められており、デバイス側とソフトウェア側の両方に多数の開発チャンスが存在します。しかし、実際にIoTが普及するまでの道のりはまだまだ遠いままです。たまには休み(REST)ながら動向を見守る必要があるかもしれませんね。
産業革命以来の社会変化として期待されるIoT。まだまだ黎明期ではありますが、今後IoTを通して私たちの生活がより便利に進化していくのは間違いないでしょう。
REST APIを活用し、IoTプロジェクトの開発をより効率的に進めましょう!
(原文:Alex Bowen 翻訳:Yui Tamura)