時代はAPIファースト!? イマドキの業務システム開発ことはじめ 第1回 なぜ流行っている?「REST API」 ~アプリもインフラ自動化もAPIで!~

  • テクノロジー

みなさん、こんにちは。富士通ラーニングメディアの松井です。

早速ですが、イマドキの業務システムには、なにが求められ、どのように対応していかなければならないのでしょうか。 
私なりに3つの課題に整理してみました。

  • 課題1:
    PCだけでなく、モバイルでも業務システムを利用できるようにする必要がある。
  • 課題2:
    ビジネス環境の変化に対して、俊敏に対応する必要がある。
  • 課題3:
    自社内のシステムだけでなく、他社のシステムやさまざまなWebサービスと連携できる必要がある。

どうでしょう、いずれも心当たりのある方や、今まさに取り組まれている方などもいるのではないでしょうか。
これら3つの課題を達成するにあたり、近年REST APIが着目されてきています。
今回から3回にわたって、「REST API」をキーワードに、「イマドキの業務システム開発」を読み解いていきます。

<時代はAPIファースト!? イマドキの業務システム開発ことはじめ>
第1回 なぜ流行っている?「REST API」 ~アプリもインフラ作業の自動化もAPIで!~
第2回 REST APIベースの業務システム開発(Java編)
第3回 イマドキの業務システムはフロントエンドも重要です!

初回は、「REST APIってそもそもなに?」「REST APIを使うとなにが嬉しいの?」という疑問を解消していきます。

REST APIとはなにか?

「REST API」とは、APIを呼び出すことでWebを通じてさまざまなサービスを利用できる仕組みのことです。

ここで出てくるREST(Representational State Transfer)とは、2000 年頃に Roy Fielding 氏が提唱した、分散アプリケーション構築においてコンポーネント間連携に適したサービスを構築する際の設計原則の集合のことです。
主に以下の4つ特徴があります。

  • すべてのリソースは汎用的な構文で一意に識別される
  • セッションなどの状態管理を行わない
  • 情報を操作する命令はあらかじめ定義および共有されている
  • 情報の内部に、別の情報や状態へのリンクを含めることができる

ポイントはRESTの設計原則がWeb技術と親和性が高いということです。

REST API以前にもXMLなどを使用したシステム間連携の仕組みはありましたが、厳密な仕様に基づいた実装が必要で、独自の通信プロトコルを使用する必要があるなど、開発には多くの労力がいりました。

それに対し、REST APIはシンプルな設計で分散アプリケーションを実現できることや、すでに普及していたWebのHTTP通信でやりとりをできる手軽さから人気となりました。
このとき、REST APIでのクライアント/サーバ間のデータの受け渡しには、軽量なデータ形式であるJSONが使用されることが一般的です。
JSONはJavaやC#など主要言語で標準的にサポートされているため、使用言語が違うシステム間の連携も容易に行えます。

rest_api_1_01.jpg

REST APIを使うメリットとは? ~システム開発者編~

REST APIベースの業務システムにすると、モバイルアプリケーションへの対応や、外部システムとの連携が従来よりも容易になります。
外部システムとの連携におけるREST APIの優位性は、前項の「REST APIとはなにか?」で述べていますので、ここではモバイルアプリケーションへの対応を中心にみていきます。

まずは、従来のWeb業務システムとREST APIベースの業務システムを比較してみましょう。
2つの大きな違いは「返却するリソース」です。

rest_api_1_02.jpg

従来のWeb業務システムは、ユーザーのリクエストに対して、「画面(HTML)」を返却します。ユーザーは各デバイスからブラウザを使用し、画面を通してデータの参照や機能の利用を行います。
しかし、モバイルのように低速かつ不安定な通信環境で操作する場合、データ量が多い画面だとユーザーの待機時間が増加したり、操作性が低くなったりしてしまいます。
一方、REST APIベースの業務システムは、「データのみ(JSONなど)」を返却します。データのみであれば軽量かつ加工しやすく、クライアント側はブラウザに限らず外部システムやモバイルアプリケーションでも扱うことができます。

さらに、JSONなどのデータのみを返却するアーキテクチャは、「画面制御を行うクライアントサイド」と「業務データの保存・更新や業務処理を行うサーバサイド」との分離を促進します。クライアントサイドとサーバサイドの分離は、メンテナンス性向上や各サイドの分業化、並行開発のしやすさを促します

例えば、一般的に改修要望が多い画面部分の修正について、従来のWeb業務システムでは画面の生成と業務処理とが密接に関連しやすく、改修負荷が大きくなりがちでした。
一方、REST APIベースの業務システムの場合、クライアントサイドの修正がサーバサイドに影響しなくなります。

REST APIを使うメリットとは? ~インフラエンジニア編~

近年の業務システム構築のスピードアップを語る上で、はずすことができないのはクラウドサービスです。

インフラを「自前でもつ」形態から、クラウドサービスで「必要な分を必要なだけ必要なときリソースを利用する」形態が主流になりつつあります。
クラウドサービスには、クラウド上のインフラ環境の構築・運用管理を制御する各種REST APIが提供されています。
そのため、REST APIを利用するスクリプトを用意することで、従来の手動での構築作業に比べ、大幅な工数削減や作業ミスによる障害発生の防止を実現できます。

REST APIの今後

Webを通じて広く公開されたREST API同士を組み合わせることで、新たなサービスを迅速に提供することができるエコシステムは「APIエコノミー」と呼ばれ、注目を集めています。
近年、FinTech(注)に代表されるITによる革新的なサービス登場の裏側には、各社が自社のビジネス機能の一部をREST APIでアクセスできるWebサービスとして提供していることがあげられます。
今後もREST APIの利活用や提供によるビジネス拡大の動きは加速するものとみられています。

(注)FinTech: 「Finance(金融)× Technology(技術)」による造語で、主にIT技術を駆使した革新的な金融商品・サービスの潮流のこと

業務システムの課題と対応策

いかがだったでしょうか。REST APIが流行っている理由、おわかりいただけましたか?
最後に、冒頭でご紹介した業務システムの3つの課題に対する対応策を整理してみます。

  • 課題1:
    PCだけでなく、モバイルでも業務システムを利用できるようにする必要がある。
    → レスポンスにJSONなどのデータを返却するREST APIベースの業務システムを開発する。
  • 課題2:
    ビジネス環境の変化に対して、俊敏に対応する必要がある。
    → REST APIでクライアントとサーバサイドを分離することで、メンテナンス性向上や各サイドの分業化、並行開発のしやすさを促す。
    クラウドによるインフラ構築にあたり、REST APIを利用したインフラ作業の自動化を行う。
  • 課題3:
    自社内のシステムだけでなく、他社のシステムやさまざまなWebサービスと連携できる必要がある。
    → リソースを操作するインタフェースをREST APIで定義し、インタフェースの統一と標準化を図る。

rest_api_1_03.jpg

次回は、REST APIベースの業務システムをJavaで開発する方法についてご紹介します。具体的には、Java EE7という最新の標準フレームワークをとりあげますので、お楽しみに!

今回のコラムでREST APIに興味を持った方は、是非「REST API」のコースマップもご覧ください。

松井 正徳(まつい まさのり) 第二ラーニングサービス部

主にJavaやHTML/CSS/JavaScriptなどのWebアプリケーション開発コースを担当。
最近はRuby、Pythonなどのスクリプト言語やLinux、クラウドなどインフラ技術も勉強中。
アプリケーション開発のオールマイティSEとなるべき、精進の毎日。

プライベートでは、セーリングと日本酒を愛する自由人。
日本酒の今年の目標は、新潟越後の93酒蔵の利き酒を全制覇すること。

(2017/02/23)