資料公開|マネージャー層向けAPI活用セミナー。最新の事例とDXへの応用手法を知る。

公開 : 2020.07.08 

2020年6月23日にオンラインセミナー「マネージャー層向けAPI活用セミナー。最新の事例とDXへの応用手法を知る。」を開催いたしました。
この記事では当日用いた資料を公開し、そのポイントをご紹介します。

NCDCでは定期的にセミナーを開催していますので、ご興味のある方はセミナー情報ページをご覧ください

Why API(APIがあると何が嬉しいのか?)

APIとは外部からアプリケーションの機能を呼び出すためのインターフェイスです。
OSがプログラムに提供するAPI、モジュール(部品)を呼び出すためのAPIなどさまざまなAPIがありますが、本セッションでは「主にWebサービスを用いて外部から機能を利用するAPI」について説明します。

近年、APIの活用が注目されていますが、APIがあると何が嬉しいのか?主に下記の3つのポイントで説明することができます。

  1. 再利用できる
    APIは一度作ってしまえば、いつでも、いろいろなクライアントから呼び出して利用することができるので、多様な目的に活用することができます。
  2. APIを境界に関心を分離できる
    APIで連携する仕組みは、APIの仕様を維持している限りそれぞれ独立したものとして扱えます。たとえば、フロントエンドとバックエンドをAPIでつないでいるアプリケーションの場合、APIの仕様を維持すれば、フロントエンド側だけを独立して変更するということが容易にできます。
  3. プログラムを用いて自動化できる
    近年、RPAを用いて人手の作業を一部自動化することが注目されていますが、APIが提供されているものであればシステム同士を連携して自動化できるので、最初から人手の作業を介する必要がありません。

APIの活用例

具体例を挙げるとAPIは下記のように活用されています。

APIの活用例① マイクロサービス

マイクロサービスとは、複数の規模の小さなサービスを組み合わせてひとつの大きなアプリケーションを構成する、ソフトウェア開発の技法のひとつです。個々のサービスは依存関係が低く、それぞれのサービスの呼び出しはネットワークを介して行われようにすることで技術的な自由度が高く柔軟なシステムを設計することが可能になります。

このマイクロサービスという構成ではなぜ独立した複数のサービスを連携して動かすことができるのかというと、各サービスをAPIで繋いでいるからです。
APIというインターフェイスが変わらなければ、連携先の言語、実行基盤、実態がどこにあるのかが変わっても影響を受けないためこのような仕組みが可能になります。
(関連情報)
マイクロサービスとは? そのメリットを簡単に解説(初心者・非エンジニア向け)

APIの活用例② 企業間/社内間システム連携

たとえば複数の企業が関わる大規模なプロジェクトがある場合、ほとんどの場合それぞれの企業が独自のシステムを持っており、各社のシステム間で直接的にデータのやりとりを行うことはできません。
具体例を挙げると、A社で設計したデータを製造担当のB社に渡す場合、まずA社が自社システムからエクセルファイルを書き出してB社に送り、それをB社側では手作業で自社のシステムに入れ直すという作業がよく行われています。
もしこれをAPIに置き換えることができれば、A社とB社でリアルタイムなデータの連携が可能になる上に、人手を介すことによる入力ミスなども防げるようになります。

APIの活用例③ UX/UIを高速に改善したい

先の「APIを境界に関心を分離できる」という話も触れましたが、APIを境界にフロントエンド(画面)とバックエンド(機能・データ)を分離することで、それぞれを独立して改善、リリースできるようになります。
近年UX(User Experience)が重視されることが増えており、コンシューマ向けのサービスはもちろん社内でしか使わない業務システムなどでも、デバイスや技術の進化に応じてUI(User Interface)はどんどん改善していくことが求められています。
一方でデータモデルや機能は比較的変化が少ないといえます。
そのため、フロントエンドとバックエンドを分離する(APIでつなぐ)ことでバックエンドの影響を受けずにフロントエンドだけを高速に改善するというような取り組みが容易になります。

API周辺技術の進化

一昔前はWeb APIといえばSOAPというプロトコルで、複雑な仕様やサポートする言語、ミドルウェアが限定的であることが問題でした。
現在はREST(Representational State Transfer)が一般的になり、SOAPの時代と比較してシンプルな仕様、さまざまな言語で扱いやすいものになったためAPIの活用が増えてきたといえます。
たとえば「Java + JAX-RS」「Node.js + Express」などの開発言語やフレームワークを用いて、少ない記述で簡単にAPI化することができます。

APIのプログラムは比較的容易に書けるようになりましたが、APIはサーバーサイドで動くため実行するには何らかの環境が必要です。
代表的なものとして、オンプレサーバー、IaaS、コンテナ、サーバレスなどがありますが、可能であれば、コンテナ、サーバレスなどのクラウドネイティブな技術の活用がおすすめです。
たとえばサーバレスであればAPIが呼び出された量に応じて課金されるため、新規サービスのようなローンチ時に大量アクセスがないAPIの場合、費用をとても安く抑えることができます。また、サーバーの管理が不要なので運用も楽になります。
(関連情報)
資料公開|マネージャー層向けモダンアプリケーション開発戦略セミナー

APIの使い方の公開も重要

社内だけで用いるような限定的な範囲のAPIであれば、ExcelやWordで記載されたAPI仕様書で問題ないですが、幅広く使用してもらいたいAPIの場合は、APIの使い方を公開することが重要です。

たとえばSlackが提供しているAPIを使うと、外部の人間がSlackと連携したチャットボットをつくることが可能です。こうすることでSlackは自社でこのサービスを開発しなくてもSlackを中心としたエコシステムをつくることができているのです。

私たちが提供している「AppPot」というアプリケーションのバックエンド開発支援サービスもAPIを使っているのですが、ユーザにはAppPotをうまく活用してたくさんのアプリケーションをつくってほしいので、APIの使い方を公開しています。

APIの開発に必要なスキルセットは?

基本的には、Java、Node.js、Pythonなどでサーバーサイドのプログラミングが書けるエンジニアであればAPIの開発を任せられるはずです。
従来はサーバーサイドのエンジニアがWebアプリケーションの画面まで開発していたというケースも多いと思いますが、APIをつかってフロントエンドとバックエンドをしっかり分離することができれば、彼らがよりバックエンドに集中できる体制になるというメリットも考えられます。

ただし、新たにAPIの開発に取り組む場合は、以下の2点くらいはキャッチアップする必要があります。

  1. APIの粒度(どのような単位でつくるか)や機能の集約の考え方の理解
  2. APIのお作法(一般的にはこう作るよねというエンジニアの共通認識)の理解

上記の1点目は、もう少し具体的にいうと、ドメイン駆動設計(DDD)やオブジェクト指向などの設計手法を使ってシステムの機能やデータをモデリングし、どのような単位でAPIを作っていくか設計するとことを指しています(この説明はまた別の機会にしたいと思います)。
2点目は、ひとことで表すと「RESTful (RESTの原則の則っている)であることが重要である」という話です。
こうしたお作法に沿ってAPIをつくることで、知識のあるエンジニアが見ればAPIの仕様を見ただけでその機能ややりとりできる情報が想像できるようになります。
また、RESTfulという考え方に沿ったライブラリやツールが豊富にあるので、そういったものを利用しやすくなります。

APIのセキュリティについて

基本的にAPIは機能やデータを公開してつかってもらうためのものですが、当然社外に出してはいけないデータもあるでしょう。そのため、APIをつくる際は、誰にどこまで使わせるのかを慎重に検討し、APIの呼び出し元が意図したものであるかどうかを確認する仕組みも用意しておく必要があります。
APIの呼び出し元の確認には、IPアドレス、APIキー、認証済みトークン、クライアント証明書などがあります。

また、その他のセキュリティの取り組みとしては、特定の利用者による大量のAPIの呼び出しや悪意のあるユーザーの攻撃に対して流量制御をかけるスロットリング、リクエストの傾向や通信内容を見ての不正アクセス検知、HTTPSを使用した通信経路の暗号化、公開レベルに応じたネットワーク的に保護などが挙げられます。

APIの運用について

APIは複数のレイヤーをまたがって処理を行います。そのため、何か問題が起きた際に、どこでエラーが発生したのか、どこで処理に時間がかかっているのかを特定するために処理をトレースできる仕組みがあることが望ましいです。
たとえばリクエストごとにユニークなIDを発行してフロントエンド、API、バックエンドの処理ロジックでログに出力するような仕組みが考えられます。

また、APIを公開するといろいろなところから利用される可能性があります。将来的にインターフェイスを変更した場合に、一方的に「APIをバージョン2に変えてください」と言ってもAPIを利用している多数のクライアントが一斉に対応できない可能性があります。
そうした際にクライアントが困らないようにするためには、複数のバージョンが並行稼動して、クライアントがバージョンを指定して呼び出し分けられるような仕組みがあることが望ましいです。

APIの活用相談はぜひNCDCへ

NCDCでは、APIをどう設計すべきか、どんな技術を採用すべきかといったコンサルティングを含む、システム全体のアーキテクチャの策定をご支援しています。
また、アプリケーション開発者が該当技術に慣れていない場合には、技術移管を視野に入れてNCDCで用意したリファレンス実装を提供するサービスなども行なっています。
APIの活用に関して課題をお持ちの方はぜひご相談ください。

また、先にも説明した当社のAppPotは、下記の各機能を簡単に使用するためのWeb APIと、iOS / Android / JavaScriptのSDKを提供しています。
こうしたバックエンドの機能を提供するサービスにAPIで接続すれば、フロントエンドのエンジニアだけでもアプリケーションの開発を行うことができます。こちらもご興味のある方はお気軽にお問い合わせください。

AppPotの主な機能

ユーザー管理
  • ログイン/ログアウト
  • Active Directory/LDAP/Google Appsとの認証連携
データ管理
  • 端末とサーバー間のデータの同期
  • トランザクション制御によるデータの信頼性の確保
  • オフライン状態での利用と、オンライン時の再送
アプリの使用状況のモニタリング
  • 使用されている機能やエラー情報の収集、参照
プッシュメッセージ、eメール
  • 管理画面やAPI経由でアプリからのPushメッセージの送信
  • API経由でeメールの送信
セキュリティ
  • 端末内のデータの暗号化
  • SQL Injectionなどのセキュリティ対応済み
他システムとの連携
  • 他システムとのWebサービス、ファイル、データベースとの連携
  • 別オプションでERPパッケージ製品との連携コネクター
ページトップへ

お問い合わせ

NCDCのサービスやセミナー依頼などのお問い合わせは
下記のお電話 また、お問い合わせフォームよりお気軽にご連絡ください。

050-3852-6483