既存システムをモバイル化するポイント
常時セッションが張れないことを前提としたアーキテクチャ
IT部門としては、「現状のシステムをどのようにしてモバイル化するのか」という技術面の課題が、最も大きな課題となります。モバイル・システムを構築するということは、ある意味で「最先端技術」を採用しなければならないということです。数年前まで不可能であったことが可能になったからこそ、モバイルで使えるようになったという部分も多くあります。
実は、モバイル化を進めるにあたって最も大きなポイントは、「常時セッションが張れないことを前提としたアーキテクチャ」が必要になるということです。つまり、「電波の届かないところでも使えるモバイル・システムを作ること」です。これは、Web型アーキテクチャの前のアーキテクチャに戻ることを意味します。
Web型アーキテクチャの「すべてがサーバーにある」という長所は、同時に大きな制約にもなります。なぜなら、Webアプリケーションを動作させるためには、クライアント(Webブラウザ)とサーバー(Webサーバー)の間にあるネットワークが常時利用可能な状態にあって(HTTPのコネクションが確立された状態)、そのネットワークを使ってサーバーへログインした状態(業務アプリケーションのセッションが確立された状態)にあることが前提になるからです。
つまり、ネットワークが使えない(コネクションが切れる)などの理由によってセッションが切れた時点で、クライアント側では何もできなくなってしまうことになります。実はこの問題が、モバイル・システムの構築において最も見落としがちなポイントなのです。
残念ながら、モバイルで利用するネットワーク(主に、携帯電話や無線LANなどのワイヤレス回線)には、日本全国すみずみまで同一の品質とサービスを望むのは、無理です。電波が届かない「圏外」は減りつつありますが、不安定な通信状況が皆無にならない以上、セッションが切れることを前提としたモバイルならではのシステム・アーキテクチャを考える必要があります。
具体的には、「サーバーとクライアントがつながらない時があっても画面が見えて」、「多少の制約はあってもほとんどのアプリケーションが実行できる」ことが必須となります。データは基本的にサーバーで管理しておき、サーバーに接続したタイミングで必要に応じて必要なデータだけをクライアントに一時的に移すのです。こうして、「圏外」でも利用できるようにする技術こそ、快適なモバイル・システム実現のキーとなります。
サーバー側のデータベースとモバイル機器上のデータベースを同期する
既存システムのデータをモバイルで活用するということは、既存システムのサーバー側に格納されているデータをモバイル機器で利用するということです。先述した、常時セッションが張れないことを前提としたアーキテクチャにするということは、つまり、モバイル機器側でサーバー側のデータのコピーを持ち歩くということです。
ここで、データ管理は、あくまでもサーバーの役目であり、サーバー側とモバイル機器側でデータを2重管理するような愚は、避けなければなりません。
そこでモバイル・システムでは、モバイル機器側にもRDBMS(リレーショナル・データベース管理システム)を用意することが望ましいことになります。この場合、モバイル用RDBMSには、モバイル機器とサーバーの間でデータの整合性をとるための同期(シンクロナイゼーション)機能と、データの暗号化、以上2つの機能が必要となります。
常時接続の状態であれば、データの同期をとることは、さほど難しくありません。接続されていれば、常にリアルタイムでサーバー側のデータが更新され、モバイル機器はそのデータにアクセスできます。モバイル機器側がサーバー側のデータを直接変更することも可能です。
しかし、常時接続ではないことを前提としたモバイル・システムでは、何らかのルールを作成して同期をとる必要があります。両者のデータベースに不整合が生じないように、適当な頻度で同期をとることが重要なポイントです。また、接続が不安定になる可能性も考慮して、1回に送受信するデータの量はできる限り減らすべきです。
先述した上流設計のポイントでも触れましたが、モバイル機器にサーバーのデータの完全なコピーを持たせる必要はありません。そのユーザーが必要とする情報だけを切り出して持たせれば良いのです。データの種類に応じて、例えば在庫データはリアルタイム性を持たせつつも、製品マスターや購買履歴などは日に何度かの更新でも良いわけです。
また、データベース間の同期方法としては、単一のセッションやコネクションを利用して、双方向に更新部分の同期を行えることが望ましいです。もし、上りと下りの両方で個別のセッションやコネクションを張る必要があったとすると、モバイル機器の数が増えれば増えるほどサーバーに対するネットワークの負荷が大きくなるからです。
次回は、ミドルウエアの具体的な使い方として、モバイル用RDBMSである「SQL Anywhere」と「Ultra Light」、データ同期機能「Mobile Link」について解説します。