{{search ? '閉じる':'検索'}}

あなたの会社が「ユーザーが満足するアプリ」を開発できない理由

放置したら生き残れない、アプリ開発の問題点

Related Videos


現代ビジネスの成否は業種業態を問わず「ユーザーが求めるアプリ」をいかに提供できるかにかかっている。
そんな「アプリケーションエコノミー」時代で成功するために、まずはアプリ開発の問題点を整理しよう。



アプリがビジネスをリードする時代に必要な開発プラットフォームとは

現代のビジネスはクラウドサービスの利用を前提に動いていることは少なくない。エンドユーザーは、クライアントPCあるいはスマートフォンなどのモバイル端末を利用し、そこで動くアプリを経由してクラウドを操作する。

クライアントPCとモバイル端末で異なるのは、クライアントPCがWebアプリケーションとしてWebブラウザからクラウドを操作するケースが多いのに対し、モバイル端末では専用アプリを使うケースが多いことだ。これは、ディスプレイサイズや入力デバイス、ネットワーク回線の帯域など幾つかの要因が影響している。

今、クライアントPCの出荷台数が伸び悩んでいる一方で、モバイル端末は順調にその数を増やしており、既に幅広いユーザーにとってモバイル端末がクラウドサービスを利用するためのプライマリデバイスになりつつある。そこに向けて専用アプリが数多く登場するのは当然の流れといえるだろう。

いや、既にそうした専用アプリを組み込んだビジネスが市場を奪いつつある段階にきている。その典型的な例がタクシー業界と「Uber」の関係だ。このようなビジネス環境において企業が事業を成功させるためには、市場やユーザーのニーズに合わせて専用アプリを短期間で開発してユーザーに提供する必要がある。ここでは、それを可能にする開発ソリューションを紹介し、さらに、その開発ソリューションが抱える課題と解決方法について解説する。

クラウドサービスを利用できるモバイル端末と専用アプリがビジネスをリードするようになった現状を、「アプリケーションエコノミー」(Application Economy)と呼んでいる。クラウドで提供するサービスの普及はアプリ、特にモバイル端末専用アプリの使い勝手とユーザーの満足度が決めてしまうといっても過言ではない。それ故に、モバイル端末と専用アプリの組み合わせがもたらす「使い勝手」が製品やサービスの拡大に大きく影響する。もちろん、ビジネス全体で「ユーザー体験の改善」を重視していくのが大前提だ。その上で、モバイル端末向けの専用アプリを、どれだけ短時間で改良しつつ投入していくのかがビジネスが成功するための大きな要因となる。

ここで注意したいのは、「最初から完璧なアプリを作る」ことを目指して時間を掛けるのは、むしろ機会損失につながることだ。取りあえず何とか使えるものをリリースし、ユーザーからのフィードバックや、新たなサービスへの対応などを反映して、なるべく早いサイクルで更新してゆく方法が望ましい。

このように、市場やユーザーの変化に遅れることなく専用アプリを短時間で開発して、高い品質の使い勝手を実現したり、ユーザーからのフィードバックを即座に反映したりするには、開発側のプラットフォームで何が必要になるだろうか。

そこで、典型的なWebアプリの内部構造から考えてみよう。このとき、実体がオフィスのマシンルームにあるのか、クラウドでSaaSをベースに構築しているのか、もしくはIaaSなりPaaSなりの形で構築しているのか、という話は問題でない。問題は、このアプリサーバで動くアプリケーションロジックがしばしば、モノリシック(機能や役割ごとに分割したモジュールではなく、全ての機能を収容した1つの大きなまとまり)な形で構築してしまうことだ。

全ての機能を一体化してしまった巨大なモノリシック構造のアプリは、細かい仕様変更が継続して発生する現代のアプリ開発環境ではビジネス展開の足かせになりかねない



以下に挙げるような状況によってモノリシックなアプリができてしまうのを、筆者も開発現場で実際に経験してきた。

  • アレもコレも、という形で仕様要求がまとめて出てきて、これをがっちりと作り込んでしまった結果、柔軟性がなくなった
  • 継続的に仕様変更や追加要求が出てきたものを、アドホックに追加して実装していった結果、全体像が見えないところまで肥大化してしまった

このようなケースは残念なことに珍しくない。こうなると、アプリサーバそのものが巨大なモノリシック構造になってしまい、ビジネスニーズの変化に対応できなくなってしまう。このような状況では、使い勝手を改善するためにUIデザインを少しだけ変更したい場合でも、変更に時間がかかる、あるいは作業工数が多くて短時間対応が困難ということは珍しくない。

モバイル端末の専用アプリ、あるいはクライアントPCのWebブラウザなどのクライアント側からアプリサーバにリクエストを出した場合、クライアント側からは「GET ……(多くの場合、URLを記述する)」で始まるリクエストをWebサーバに送り出す。Webサーバはこれを受け取ってアプリサーバに問い合わせを掛け、アプリサーバはデータベースを参照して得た結果をWebサーバに返し、これをクライアント側に戻す流れだ。

クライアント側から出したリクエストに応じてアプリサーバが戻すデータのフォーマットには幾かの規格がある。Webブラウザ経由でデータのやりとりをする場合に広く普及しているのがJSON(JavaScript Object Notation)だ。この方式は、RESTful(REpresentational State Transfer full)と呼ぶもので、WebブラウザがWebサーバと通信を行う方式そのものといっていい。クライアント側からすれば、Webブラウザと同じ通信方式でアプリサーバにアクセスできる。

問題は、JSON以外に結果を返す方式が普及していることだ。その1つが「SOAP」だ。こちらはXML(Extensible Markup Language)ベースで、データの格納や交換には便利だが、JSONに比べてデータフォーマットが大きいので、処理能力に制約があるモバイル端末や帯域に制約があるWAN環境での利用に向かない。

以上の話を踏まえて、クラウドサービスを利用する専用アプリが抱える問題をまとめると以下のようになる

  • クライアント側:RESTful APIでJSONで返してほしい
  • バックエンド側:SOAP/XMLでしか情報を提供していない
  • クライアント側:必要な部分の情報だけ返してほしい
  • バックエンド側:全ての結果全部を提供できるが一部だけを返すことはできない
  • クライアント側:APIのURLを勝手に変えないでほしい
  • バックエンド側:APIをバージョンアップするとURLが変わってしまう

双方とも、それなりの理由があってのことだが、それぞれのニーズに明確なギャップが存在する。こうした問題への解決策として日本CAが提唱するのが「API Gateway」の導入だ。

クライアント側からリクエストを出すモジュールとアプリサーバ(バックエンド側)が答えを返すモジュールで使う規格やバージョンが異なると動作がうまくいかなくなる。この“すり合わせ”がクラウドサービスを利用するアプリ開発で問題になる



クライアント側とサーバ側の規格違いやバージョン違いによるクラウドサービス専用アプリの
挙動不良を回避するために 日本CAが提案するのが「API Gateway」だ。

2016年3月24日から「TechTargetジャパン」に掲載の内容を一部変更したものです。
©アイティメディア株式会社 ・掲載記事の無断転載を禁じます ・非売品

Security Café Webcast - #1:

今注目されているマイクロサービスの課題と対策
~シンプルで軽量な手法によるサービスの連携で、競争力、顧客満足度、収益をアップさせるには?

これまでのシステムではWebサーバ、Applicationサーバ、DBなどが密接に結合しているため、新しいサービスや機能拡張を開発し、テストをしてリリースするのに非常に時間がかかってしまいました。

現在のビジネスでは、顧客やマーケティングニーズをベースとしたアプリケーションやサービスをタイムリーに提供することで、競合他社に対する優位性を保ち、顧客満足度を増し、収益を上げることが必求められていますが、それを実現するためにマイクロサービス化が注目されています。

本ウェブキャストでは、マイクロサービスの利点とはなにか、そしてマイクロサービス化を実現する為の課題と対策のポイントをご紹介いたします。

TEL
0120-702-600
お問い合せ

Chat with CA

Just give us some brief information and we'll connect you to the right CA ExpertCA sales representative.

Our hours of availability are 8AM - 5PM CST.

All Fields Required

connecting

We're matching your request.

Unfortunately, we can't connect you to an agent. If you are not automatically redirected please click here.

  • {{message.agentProfile.name}} will be helping you today.

    View Profile


  • Transfered to {{message.agentProfile.name}}

    {{message.agentProfile.name}} joined the conversation

    {{message.agentProfile.name}} left the conversation

  • Your chat with {{$storage.chatSession.messages[$index - 1].agentProfile.name}} has ended.
    Thank you for your interest in CA.


    Rate Your Chat Experience.

    {{chat.statusMsg}}

agent is typing