Android 端末における Thick/Thin クライアント制御機能の実現
本橋1史帆(指導教員：小口 正人)

はじめにクライアント・サーバモデルにおけるクライアント
端末は，端末上にデータやアプリケーションを保持し，全ての処理を端末上で行う Thick クライアント端末と，データ管理やほとんどの処理を全面的にサーバ側に頼りクライアント側は処理結果を表示するだけという Thin クライアント端末の 2 種類に分類できる．
近年，無線通信やモバイル通信が高速化し Thin クライアントとして動作する端末が増加した．一方で，Android 端末などのスマートフォンが普及し，端末の高機能化が進んでいる．それによりモバイル端末のThick クライアント化が進み，「持ち運べるコンピュータ」として注目を集めている．しかしスマートフォンのアーキテクチャは，リソースの制約や，プログラミングおよび実行環境が組込みシステム向けとなっていることなどから，汎用 PC とは大きく異なるため，これまでの Thick/Thin クライアントモデルの議論において，クライアント側は基本的に汎用 PC である事が多かった．そこで本研究では，汎用 PC とは環境が大きく異なる Android 端末において，環境に応じて両者を切換えて扱うことを可能にする制御機能を提案する．

23

Thick/Thin クライアント性能評価実験

3.1

実験目的

扱うデータ量が多く，CPU に負荷をかけるグラフィクス処理に焦点を当て，Thick/Thin クライアントの処理性能比較を行う．それにより Thick クライアント
端末で十分な速度で実行できるアプリケーションと，Thick クライアント端末では実行速度が遅く，Thin ク
ライアントの形で処理を行った方が好ましいアプリケーションがあることを明らかにする．

3.2

実験環境

本実験で使用した実験環境を表 1 に示す．サーバ側にAndroid アプリケーション開発環境を整えた．本実験
ではグラフィクス処理を扱うため，コンピュータビジョンに必要な機能を揃えた C/C++ライブラリ集であるOpenCV をインストールし，さらに Java から OpenCVライブラリを呼び出せるよう開発された OpenCV for
Android をインストールした．また，Android 端末実機で OpenCV を利用したグラフィクス処理アプリケーションを実行するために必要となる OpenCV Managerをインストールした．
表 1: 実験環境

Android とそのアーキテクチャ

Android

Android は全世界のスマートフォンの中で最もシェ
ア率が高く，オープンソースソフトウェアを用いている．また，無償で提供される開発環境において自由にアプリケーションを開発することができ，汎用性が高いため，本研究では Android 端末を用いることにした．
Android 端末は Thick クライアントとして急速に発達しているため，これを Thin クライアントとしても動作させることを可能にすることで両者の良いところを生かした端末にすることができると考える．
Android のアーキテクチャを図 1 に示す．Androidと汎用 PC の大きく異なる部分は，独自に開発された
Android Runtime に Java で記述された Android アプ
リケーションの実行環境である Dalvik VM(Dalvik 仮想マシン) を搭載している点である．

server3.3

Model number
Android version
Application
OSCPU
Main Memory
Application Development Tool
Library

Galaxy Nexus
4.2.2
OpenCV Manager
Ubuntu 13.04 (64bit)
3.60GHz
4GB
JDK, Android SDK, Eclipse, ADT
OpenCV-2.2.0, OpenCV for Android-2.4.7

実験結果と考察

図 2 に実験結果を示す．図から，Thin クライアントとしてサーバで処理をさせた場合には，Thick クライ
アントとして Android 端末に処理をさせたときの半分以下の処理時間で処理できていることがわかる．
ϰϬApplication(Home,Telephone,Web)ฎ⌮᫬㛫ẚ㍑΀ŵƐ΁ϯϬApplication FrameworkϮϬAndroid Runtime
Core Libraries, Dalvik VM Ware
LibraryϭϬϬLinux Kernel 2.6➃ᮎŶĚƌŽŝĚ
(Thick䝛䜺䝫䝆䜾䝺䞊䝇䜿䞊䝹䜽䝷䜲䜰䞁䝖)䝃䞊䝞䜽䝷䜲䜰䞁䝖)(Thin

図 2: Thick/Thin クライアント処理時間比較
図 1: Android のアーキテクチャ

この結果から，本アプリケーションに関しては Thin
クライアントモデルの方が処理性能が大幅に良いことを示すことができた．
本実験の考察として，1 枚の静止画に対しこれだけの差が生じているため，1 秒間に 20〜30 枚の静止画を連続表示する動画を処理するプログラムは大きな処

Android ア プ リ ケ ー ション は Java で 記 述 さ れ ，Dalvik VM を介して実行される．そのためネイティ
ブコードで書かれたプログラムと比較すると実行速度が遅くなると考えられ，Android 端末での処理に不向きなアプリケーションが存在すると予想できる．

13

理時間差が表れ，本研究目的である切換え制御機能を提案することに意義があると視覚的に示すことができると考えられる．また，今後切換え制御機能を実装し，その性能評価を行う時にこのような Thin クライアン
ト向けのアプリケーションを必要とするため，改めて処理対象を動画に変えたアプリケーションを実装し，本実験と同様の処理時間比較を行っていく．

4

提案ミドルウェアとその実装

4.1

切換え制御機能の概要を取得し，Thin クライアントとしてサーバに接続するために十分なネットワーク状況下であるかどうかを判断する．また，端末情報として，搭載メモリ容量，使用可能メモリ量などを取得し，アプリケーションを実行するのに十分なメモリが確保できるか等の判断基準とする．条件は実験を重ねて定めていくことにする．

4.3

Android 特有のインテントという機能を用いる．インテントとはアプリケーションの中の 1 つ 1 つの機能を橋渡しする仕組みのことであり，各アプリケーションはインテントフィルタに自身が反応できるイベントの種類を格納している [1]．インテントが飛ばされると，OS は端末内の全アプリケーションのインテントフィルタを調べ，そのインテントを処理できるアプリケーションを呼び出す仕組みになっている．これにより，本提案切換えアプリケーションから他のアプリケーションを起動することが可能になった．

ここで，本研究で提案する Thick/Thin クライアン
ト制御機能の概要を説明する．
本提案機能のフレームワークを図 3 に示す．一般にモバイル端末にはあまり向いていないと考えられる，実験に用いてきたようなグラフィクス処理や数値計算処理，データベース処理などといった処理を要するア
プリケーションを起動する際に，本提案切換え制御機
能を介して，ネットワーク環境や端末情報，そして実行時の予測が可能な場合は処理の重さ (CPU 負荷，消費メモリ量等) などといった情報を取得し，その情報を元にそのまま Thick クライアントの形でアプリケーションを起動するか，または Thin クライアントの形で起動するためにサーバへ接続しサーバ側に処理をさせるかを決定する．

4.4

情報取得

•

Thickクライアント
として処理

ネットワーク環境(3G,LTE,Wi-Fiなど)• 端末性能• 扱う処理の重さ

Thinクライアントとして処理

5

図 3: Thick/Thin クライアント制御機能概要

アプリ情報
Android端末起動する
アプリ

ネットワーク情報
端末情報
Thickクライアント

Thinクライアント

図 4: 切換えアプリケーション概要

4.2

まとめと今後の課題

本研究では，Thick クライアントとして動作する Android 端末を，ネットワーク環境や端末性能などの情報に応じて，Thin クライアントとして動作させることを可能にすることで，両者のメリットを生かすことができると考え，Thick/Thin クライアント切換え制御機能を提案した．また，簡単な画像処理を行うプログラムを実装した結果，Thin クライアント端末としてサーバで処理を行った方が Thick クライアント端末として処理を行うよりも処理性能が良く，実行速度も速いことがわかった．これから，本提案ミドルウェアを実装することに十分な意義があると予想できる．そして，切換え制御フレームワークを提案し，部分的な各々の実装を行った．
今後は様々なアプリケーションをサーバ側・Android側に構築し，評価実験を進める．また，これまで実装した各々のプログラムを 1 つにまとめ，一連の流れを見て，切換え自体がボトルネックにならないような切換え基準を定めていく．

この切換え制御機能を図 4 のような切換えアプリケーションとして実装した．ユーザはまずこの切換えアプリケーションを起動する．これは，起動時にネットワーク環境・端末情報を取得する．ここで得られた情報を基に Thick/Thin クライアントどちら向けの環境かを判断し，切り換えるといったものである．起動されるアプリケーション例としては，両環境それぞれにおけるグラフィクス処理の実装を行った．

切換え選択
アプリケーションThin クライアントとして動かす場合サーバに命令を送るために socket 通信を利用する．
具体的には，切換えアプリケーションで得た端末情報，ネットワーク情報から Thin クライアントとして動かすことにした際に，起動したいアプリケーションを選択すると，そのアプリケーション名が socket 通信によりサーバに送られ，サーバ側は受け取ったアプリケーション名に対応するプログラムを実行するという仕組みである．同時に，Android 端末側ではデスクトップ共有アプリケーションを起動し，サーバ側の画面を表示することで処理結果を共有する．socket 通信を用いたサーバ・クライアント間での文字列のやりとり，受信したプログラム名の実行は実装済みである．

アプリ起動時独自の切換え制御機能

Thick クライアントとして動かす場合

参考文献

情報取得概要[1] http://techbooster.org/android/application/8346/

本実験で実装した具体的な情報取得手法を説明する．
ネットワーク情報としてネットワークの種類 (Wi-Fi，モバイル通信等) を取得し，さらに Wi-Fi の場合は，受信信号強度 RSSI(Received Signal Strength Indication)[2] 本 橋 史 帆 ，小 口 正 人:Android 端 末 に お い てThick/Thin クライアントの切換え制御を行うソフトウェア実装の提案，DEIM2014,2014 年 3 月
発表予定．
14