DEIM Forum2014 E8-5

Android 端末において Thick/Thin クライアントの切換え制御を行うソフトウェア実装の提案
本橋史帆†

小口正人†

† お茶の水女子大学 〒 112-8610 東京都文京区大塚 2-1-1
E-mail: †g1020536@is.ocha.ac.jp, ††oguchi@computer.org
あらまし近年，無線通信やモバイル通信の高速化が急速に進んだことにより，クライアントでは限定的な処理のみを行い，サーバ側の処理に全面的に頼る，Thin クライアントモデルとして機能する端末が増加した．一方，モバイル端末では，ガラパゴス携帯から Android をはじめとするスマートフォンへと流行が移り，近年スマートフォンの高機能化が進んでいる．スマートフォンは，クライアント側にデータを保持し計算処理も主にクライアント側で行う Thick
クライアントモデルとして動作し，「持ち運べるコンピュータ」としての役割が期待されている．しかしスマートフォンのアーキテクチャは，リソースの制約や，プログラミングおよび実行環境が組込みシステム向けとなっていることなどから，汎用 PC とは大きく異なる．これまでの Thick/Thin クライアントモデルの議論も，クライアント側は基本的に汎用 PC である事が多く，サーバ側に近いアーキテクチャのコンピュータをクライアント側でも用いていた．これに対し本研究では，汎用 PC と環境が大きく異なる Android 端末において，Thick/Thin クライアントモデルを議論し，両者を切り換えて扱うことを可能にする制御ソフトウェアの実装を提案する．またこれを実現するための各要素の具体的な実装方法について議論を行い，実装した例を示す．
キーワード

Android, モバイル端末, Thick/Thin クライアント, 制御機能

A Proposal of Software Implementation for Switching Control ofThick/Thin Client in Android Terminal
Shiho MOTOHASHI† and Masato OGUCHI†† Ochanomizu University
2-1-1 Otsuka, Bunkyou-ku, Tokyo, 112-8610, JAPANE-mail: †g1020536@is.ocha.ac.jp, ††oguchi@computer.org
Key words Android, Mobile phone, Thick/Thin client, Control Mechanism

1. は じ め にクライアント・サーバ型のネットワークコンピューティングにおいては，クライアント側にデータを保持し，計算処理も主高機能/高性能処理が可能というメリットも持つ．しかし Thin
クライアント端末はサーバに接続するための一定レベルの通信帯域が必須となり，オフラインでは使用できないことがデメリットとなる．にクライアント側で行う Thick クライアントモデルと，クライ研究背景として，近年，スマートフォンが爆発的に増加し，そアントではコマンド入力や画面表示などの限定的な処理のみをの高機能化が進んでいることが挙げられる．それに伴い，Thick行い，サーバ側の処理に全面的に頼る Thin クライアントモデ

クライアントとして動作するスマートフォンは「持ち運べるコルが提唱され，各時代のコンピュータやネットワーク環境におンピュータ」としての役割が期待され，Thick クライアント化いてそれぞれの実装が行われてきた．Thick クライアント端末がより進んでいる．その一方で，無線通信やモバイル通信の高はデータやアプリケーションを端末内に保持するため，オフラ速化が進み，通信帯域が太く安定したため，セキュリティ面でインでも操作が可能というメリットを持つが，データ管理・セ注目を集めた Thin クライアント端末も急速に普及した．モバ

キュリティ面には不安が残る．それに対し，Thin クライアント

イル端末を Thin クライアント化してしまおうという動きも見

端末はサーバ側でデータを管理するため，セキュリティ面で注られる．しかし，前述のように Thick/Thin クライアントモデル目を集めている．また，サーバ側のリッチなリソースを用いたにはどちらにもメリット・デメリットが挙げられるため，どち—1—

らが良い/悪いという優劣をつけることは難しいと言える．そことを可能にすると考える．

で本研究では，世界のスマートフォンシェア率の約 80 ％を占める Android 端末 [1] を用いて，ネットワーク環境や起動するアApplication(Home,Telephone,Web)

プリケーションの処理の重さ，端末性能を考慮し，環境に応じApplication Framework
Android Runtimeて Thick クライアントモデルから Thin クライアントモデルへとCore Libraries, Dalvik VM Ware

切換えて処理を実行することができるような切換え制御機能をLibrary

提案する．この制御機能を実現させることにより，Thick/Thin

Linux Kernel 2.6

クライアント両者のメリットを生かした端末の使用ができるのではないかと考える．

図 1 Android のアーキテクチャ

これまで，Thick/Thin クライアントモデルの議論では，クライアント側は基本的に汎用 PC であることが多く，サーバ側に近いアーキテクチャのコンピュータをクライアント側で用いて4. Thick/Thin クライアント性能評価

きた．スマートフォンのアーキテクチャは I/O インタフェース

4. 1 実 験 目 的の機能の乏しさ，限られたハードウェア資源，プログラミングAndroid 端末において，Thick/Thin クライアントモデルを切および実行環境が組込みシステム向けになっているなどの点で，換えて扱う制御機能を提案することに意義があることを示す．

従来の汎用 PC のアーキテクチャとは大きく異なり複雑だからそのためにまず，両者の処理性能比較を行い，Thick クライアである．本研究では，このような理由であまり議論されてこなント端末で十分な速度で実行できるアプリケーションと，Thickかった Android 端末をクライアント側に用いて Thick/Thin クラクライアント端末では実行速度が遅く，Thin クライアントモデイアントモデルの評価や切換えを行っていく．

ルの形で処理を行った方が好ましい Thin クライアント向けの2. 関 連 研 究アプリケーションがあることを示す．

4. 1. 1 Android アプリケーション

携帯性とサーバの利便性を両立する Thin クライアント端末

Android アプリケーションの開発環境は無償で提供されておとしてモバイル端末を利用した Thin クライアントシステムのり，誰でも気軽にアプリケーションを開発できるようになって検討がなされてきた [2] ．関連研究のほとんどはモバイル端末いる．また，Android アプリケーションはキャリア間の制約がを Thin クライアント化させることに焦点を置き，そのためのなく，自由度も汎用性も高い．そのため，様々な機能を持つ数要件やセキュリティ・データ管理に関するものである．実際に多くのアプリケーションが市場に出回っており，ユーザは自由

近年ではモバイル端末を Thin クライアント化させ，端末の紛に欲しいアプリケーションを入手できる．しかし，それらはも失・盗難対策やデータやアプリケーションの管理などセキュリ

ちろん Android 端末上で処理することを前提としており，十分ティ機能を考慮したものも提供されている．それに対し，本研な速さで処理ができるものがほとんどであるため，Thick/Thin

究ではモバイル端末を完全に Thin クライアント化するのではクライアントモデルの切換えは必要としないと考えられる．そなく，Thick クライアントとしての機能を残しつつ，環境に応こで本研究では，このアプリケーション開発環境を利用して，2じて Thin クライアントとして動作させることを目標とする．

節で挙げたような実行条件によっては Android には不向きと考3. Android のアーキテクチャ
Android のアーキテクチャを図 1 に示す [3] ．Android は Linux
カーネルをベースとし，スマートフォンやタブレット端末をえられる処理のうちグラフィクス処理に焦点を当て，あえて実行速度が遅くなる可能性のある重い処理のアプリケーションを実装する．

4. 2 実 験 概 要

ターゲットに，それらに適したコンポーネントが追加されてPNG 形式 182KB の画像を 1 枚用意し，グレースケール化いる．Linux OS と大きく異なる部分は，独自に開発された，するプログラムとネガポジ反転をするプログラムを作成した．

Java で記述された Android アプリケーションの実行環境である

Thick クライアント側は Java で Android アプリケーションとし

Dalvik VM(Dalvik 仮想マシン) を Android Runtime に搭載してて実装し，Android 端末実機で実行させる．一方，Thin クライいる点である．基本的にすべての Android アプリケーションはアント側はネイティブコードで記述したプログラム (今回は CJava で記述され，この Dalvik VM を介して実行される．そのたで書いたプログラムのバイナリ) をサーバ側で処理させ，処理め，ネイティブコードで記述されるプログラムに比べ，Android結果をクライアント端末に表示させる．それぞれ画像処理にかアプリケーションは実行速度が遅くなる．特に，処理をするかる時間を計測することで，このような単純な画像処理におけデータ量が多く，CPU に負荷をかけるようなグラフィクス処理

る Android 端末とサーバの処理性能の比較を行う．

や数値計算処理，データベース処理などに関しては，ネイティ

4. 3 実 験 環 境

ブコードで記述されたプログラムと Android アプリケーション

本実験で使用した実験環境を表 1 に示す．サーバ側に Androidとでは実行速度に大きな差が現れ，Android 端末での処理は不アプリケーション開発環境を整えた．本実験ではグラフィクス向きであると考えられる．本提案制御ソフトウェアはこれらの処理を扱うため，コンピュータビジョンに必要な機能を揃えた処理を Android 端末からの利用でも十分な速度で実行させるこ

C/C++ライブラリ集である OpenCV をインストールし，さらに—2—

Android アプリケーション用に Java から OpenCV ライブラリをサーバ側の処理でも大きな処理時間が出ていることから，Thick呼び出せるよう開発された OpenCV for Android をインストー

クライアント側の Android アプリケーションの実行速度はよりルした．また，実機で OpenCV を利用したグラフィクス処理ア遅くなり，大きな処理時間差が生まれると考えられる．しかし，プリケーションを実行するために必要となる OpenCV Manager

両者の実行コード生成手順が異なることや，C 言語のプログラをインストールした．

ムと Java のプログラムの互換性がないことなどから，異なる環境である Thick クライアントにおいて同等の処理を行うアプリ

表1 実験環境

Galaxy Nexus

ケーションを実装するのは容易ではなく，アプリケーションプ

Android version

4.2.2

ログラマに大きな負荷がかかる．そこで本研究では Thick クラ

ApplicationOpenCV Manager

イアント側のアプリケーションをより容易に実装できるようなOS

Ubuntu 13.04 (64bit)

CPU3.60GHz

Main Memory

4GB

Android Model number

server

フレームワークを用意する．

5. 2. 1 プログラム実行手順

Application Development Tool JDK, Android SDK, Eclipse, ADT
Library

OpenCV-2.2.0, OpenCV for Android-2.4.7

図 2 に実験結果を示す．図から明らかなように，Thin クライ
アントとしてサーバで処理をさせた場合には，Thick クライアントとして Android 端末に処理をさせたときと比較して半分以下の処理時間で処理できていることがわかる．

ฎ⌮᫬㛫ẚ㍑

発手順をそれぞれ図 3，図 4 に示す [4] ．

2 つの図を見てわかるように，ネイティブコードで記述されたプログラムは 1 度のコンパイルで実行コードが生成されるのに対し，Java で記述されるプログラムは Android アプリケー
ションパッケージが生成されるまでにいくつかの段階を経なく΀ŵƐ΁てはならず，その構成は複雑である．このような実行コード生成手順の相違から，異なる環境で同等の処理を行うプログラム

ϯϬを作成することは難しいとわかる．

ϮϬ➃ᮎŶĚƌŽŝĚ(ThickϭϬϬ

ケーションと Thin クライアントのサーバ向けのネイティブコー
ド (C,C++) で記述されたプログラムの実行コード生成までの開4. 4 実験結果と考察ϰϬThick クライアント向けの Java で記述される Android アプリ䜽䝷䜲䜰䞁䝖)

Thickクライアント側

Thinクライアント側

ソースコード(.java)䝛䜺䝫䝆䜾䝺䞊䝇䜿䞊䝹䝃䞊䝞䜽䝷䜲䜰䞁䝖)(Thin

図 2 Thick/Thin クライアント処理時間比較

この結果から，本アプリケーションに関しては Thin クライアントモデルの方が処理性能が大幅に良いことを示すことができた．本実験の考察として，1 枚の画像に対してこれだけの差が表れていることから，より大きな画像，もしくは 1 秒間に 20〜30 枚の静止画を連続表示する動画を処理対象にすることで処理時間差がより大きく表れ，本研究目的である切換え制御機能をJavaコンパイラによるコンパイル

ソースコード(.c/.cpp)
C/C++コンパイルによるコンパイル

クラスファイル(.class)
実行ファイルdxによるコンパイル

Dalvik Executable(.dex)
aaptによるコンパイル

Androidパッケージ(.apk)

図 4 C/C++プログラム実装

図 3 Android アプリ実装

5. 2. 2 Android NDK
5.2 節冒頭で，ネイティブコードと Java のプログラムに互換性がないことが問題であると述べたが，その解決策としてAndroid NDK(Native Development Kit) を用いることにした．本節では，図 5 を用いて Android NDK の仕組みを説明する．

提案することに意義があると視覚的に示すことができると考える．また，今後切換え制御機能を実装し，その性能評価を行う

surface view

記述コード

際にこのような Thin クライアント向けのアプリケーションを必要とするため，処理対象を動画に移したアプリケーションをJava

main process

実装し，本実験と同様の評価実験を行っていく．

5. 動画を処理対象にした性能評価
5. 1 実 験 概 要
AVI 形式の動画 (20 秒，6.43MB) を用意し，動画のフレーム

OpenCV forAndroid(Wrapper)

C/C++

JNI
NativeCodeNDKOpen CV Libraryを取り出し，画像処理を加えて，処理を施したフレームを表示させるという動画処理を行うプログラムを実装する．本実験では，フレームにソーベルフィルタをかける処理を施した．

図 5 Android NDK の仕組み

Android NDK とは Google 社が無償で公開している，Android

5. 2 実験結果と考察

環境において端末のハードウェア上で実行できるネイティブ

Thin クライアント側のプログラムを C 言語で実装した．10

コードのプログラムを開発するための開発環境のことであり，回行った平均処理時間をとったところ，動画読込からフレーJava プログラムからは JNI(Java Native Interface) を利用してネム取得・処理，画面表示にかかる時間は 10.36[s] で，そのうちイティブコードを呼び出すことができる．ネイティブコードでフレーム取得・処理にかかる時間は 4.90[s] という結果を得た．

記述された部分は Dalvik VM を介さずに実行されるため，アプ—3—

リケーションの高速化につながり，また，ネイティブで記述さモデルの切換えを行い，環境に応じた形でアプリケーションをれたコードの再利用が可能となる [5] ．NDK を用いることで，実行するものとする．次節ではこのフレームワーク実現のため本家の OpenCV ライブラリを利用できるだけでなく，Thin クに用いる機能を挙げる．

ライアント側で実装したプログラムの一部を再利用できるよう

6. 2 ソフトウェア実装方法になる．

6. 2. 1 情 報 取 得

本研究ではこの開発環境を用いて，グラフィクス処理部分を本実験で実装した具体的な情報取得手法を説明する．ネッネイティブコードで記述し JNI を介して呼び出す形で Thin ク

トワーク情報としてネットワークの種類 (Wi-Fi，モバイル通ライアント側のプログラムと同等の処理を行う Android アプリ信等) を取得し，さらに Wi-Fi の場合は，RSSI(Received Signal

ケーションをより容易に実装できるようにする [6] ．

Strength Indication) と呼ばれる受信信号強度を取得する．RSSI

6. 切換え制御ソフトウェアの単位は dBm で，RSSI 値は 1mW のときの信号強度を 0dBm

6. 1 ソフトウェアの構成

ど電波強度が強いという指標となる．これらの情報から，Thin

ここで，本研究で提案する切換え制御ソフトウェアの概要をクライアントとしてサーバに接続するために十分なネットワーとしたときの相対数値となっており，取得した値が 0 に近いほ説明する．

ク状況下であるかどうかを判断する．

Thick/Thin クライアント切換え制御ソフトウェアの動きを図

また，端末情報として，搭載メモリ容量，使用可能メモリ量，6 に示す．実験に用いてきたような Android に不向きな処理を端末名などを取得し，選択したアプリケーションを実行するの要するアプリケーションを起動する際に，本提案ソフトウェアに十分なメモリが確保できるか，端末に十分な処理能力が備を介して，3G,LTE,Wi-Fi などといったネットワーク環境や端末わっているか等の判断基準とする．

情報，そして処理の重さなどといった情報を取得し，その情報以上に述べたネットワークや端末の情報取得機能の実装をを元にそのまま Thick クライアントの形でアプリケーションをAndroid 端末上で行った．選択したアプリケーションの情報に起動するか，または Thin クライアントの形で起動するためについては，実行時に情報取得が可能な場合には，メモリ使用量サーバへ接続しサーバ側に処理をさせるかを決定する．

等を取得し，切換え判断基準に追加する．Thick/Thin クライア
ントモデル切換えの条件は評価実験を重ねて定めていくことにする．

アプリ起動時情報取得• ネットワーク環境(3G,LTE,Wi-Fiなど)• 端末性能• 扱う処理の重さ

独自の切換え制御機能

6. 2. 2 Thick クライアントとして動かす場合
Android 特有のインテントという機能を用いる．インテントとはアプリケーションの中の 1 つ 1 つの機能を橋渡しする仕組みのことであり，各アプリケーションはインテントフィルタ

Thickクライアントとして処理に自身が反応できるイベントの種類を格納している [7]．イン

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

テントが発行されると，OS は端末内の全アプリケーションのインテントフィルタを調べ，そのインテントを処理できるアプ

図 6 Thick/Thin クライアント切換え制御ソフトウェア

リケーションを呼び出す仕組みになっている．ここで呼び出されたアプリケーションを選択し起動することで，本切換えアプ

この切換え制御ソフトウェアを図 7 のような切換えアプリケーションとして実装する．ユーザはまずこの切換えアプリケーションを起動する．

リケーションを介して Thick クライアントモデルの形でアプリケーションを実行させることが可能となった．

6. 2. 3 Thin クライアントとして動かす場合
アプリ情報

Android端末サーバに命令を送るために socket 通信を利用する．具体的には，切換えアプリケーションで得た端末情報，ネットワーク情

切換え選択
アプリケーション

起動する
アプリ

報等から Thin クライアントとして動作させることにした際に，起動したいアプリケーションを選択すると，そのアプリケーション名が socket 通信によりサーバに送られ，サーバ側は受けネットワーク情報
端末情報
Thickクライアント

Thin
クライアント

取ったアプリケーション名に対応するプログラムを実行するという仕組みである．同時に，Android 端末側ではデスクトップ共有アプリケーションを起動し，サーバ側の画面を表示するこ

図7

切換えアプリケーション概要とで処理結果を共有する．

このアプリケーションは，起動時にネットワーク環境・端末

socket 通信を利用して，サーバ・クライアント間でデータ送情報を取得する．そしてユーザに起動したいアプリケーション受信を行い，サーバ側で指定プログラムを実行するためのプロを選択させ，実行時の予測が可能な場合は選択されたアプリ

グラムをサーバ側とクライアント側にそれぞれ C 言語で実装しケーション情報を取得する．今後の評価実験により定める切換た．シンプルなプログラム実装を行い，その実行例を図 8 に示え基準と得られたこれらの情報を元に Thick/Thin クライアントす．このプログラムは，サーバ側・クライアント側でそれぞれ—4—

socket を生成/接続した状態でクライアントである Android 側からアプリケーション名をサーバ側へ送信し，サーバ側が受信したアプリケーション名と同名のプログラムを実行する．このクライアント側のプログラムを Java で実装しなおし，切換えアプリケーションに組み込むことで，Thin クライアントとして動作させることが可能となる．
ŶĚƌŽŝĚ

ഃ䝃䞊䝞ഃᩥᏐิƉŝĐƚƵƌĞ䜢ཷಙљ䝥䝻䜾䝷䝮ƉŝĐƚƵƌĞ䜢㉳ືƉŝĐƚƵƌĞ䛸䛔䛖ᩥᏐิ䜢㏦ಙ

図 8 socket 通信を利用したアプリケーション起動例

7. まとめと今後の課題
本研究では，Thick クライアントモデルとして動作する An-droid 端末を，ネットワーク環境や端末性能，起動するアプリケーションの処理の重さなどに応じて，Thin クライアントモデルとして動作させることで，両者のメリットを生かすことができると考え，Thick/Thin クライアント切換え制御ソフトウェアを提案した．また，簡単な画像処理を行うプログラムを実装し，実験を行った結果，Thin クライアント端末としてサーバで処理を行った方が Thick クライアント端末として処理を行うよりも処理性能が良く，実行速度も速いことがわかった．この結果から，本提案ソフトウェアを実装することに十分な意義があることが示せた．
また，本提案ソフトウェアフレームワークを提案し，そのうちの情報取得部分，Thick クライアントとして動作させる部分，Thin クライアントとして動作させる部分をそれぞれ実装した．
今後の課題としては，個々の実装を統一し，1 つの切換えアプリケーションとして完成させる．また，Android NDK を利用して Thick/Thin クライアントモデルの処理性能差が大きく出るような様々な Android アプリケーションを実装し，本提案ソフトウェアの評価実験を行っていく．この評価実験を通して，Thick/Thin クライアント切換え判断基準を調整する．それと同時に切換え制御自体がボトルネックになってしまう可能性も合わせて調査し，より完成度を高めていく．
文

献[1] Android シェア率:http://jbpress.ismedia.jp/articles/-/38424[2] 高橋竜男，高橋修，水野忠則:モバイル向けシンクライアントシス
テムの検討，情報処理学会論文誌，Vol.45 No.5 pp.1417-1431(May2004)[3] Android アーキテクチャ:http://www.techfirm.co.jp/lab/android/outline.html[4] Android application:http://www.atmarkit.co.jp/ait/articles/0812/08/news123.html[5] Android NDK:http://e-words.jp/w/Android20NDK.html[6] NDK 実装:http://www.kkaneko.com/rinkou/js/andk.html[7] インテント:http://techbooster.org/android/application/8346/—5—