生活に密着したAndroidアプリケーションの開発とその評価

情報通信工学科4年 07EC081 武田淳志
指導教員 坂本直志 准教授
Feb 28, 2010

目次

1 はじめに
2 基礎知識
2.1 アンドロイドとは
2.2 Androidの生活密着度について
2.2.1 Androidが搭載されているハードウェアの例
2.2.2 類似したアプリケーション
3 作成したアプリケーションについて
3.1 アプリケーションの説明
3.2 開発環境
3.3 アプリケーションの概要
3.3.1 外部的特徴の説明
3.3.2 内部的特徴の説明
4 アプリケーションを実際に使用した実験
4.1 実験概要
4.2 結果
4.3 評価
5 まとめ・今後の課題など
6 参考文献
付録

1 はじめに

 ここ1,2年で目覚しく注目を浴びるようになったスマートフォン。数年前はBlackBerryや、Windows Mobileなどが有名であったが、iPhoneの登場によって多くの人にスマートフォンが認知されるようになった。そして現在、AndroidがiPhoneと並んで人気のスマートフォンである。

 AndroidはもともとスマートフォンやタブレットPCなどの携帯情報端末向けのプラットフォームである。しかし最近は、ノートパソコンや携帯音楽プレイヤー、カーナビや、ゲーム機などにも搭載されるようになり、生活に密着しつつあるものになっている。

 そこで、生活が便利になるようなAndroidアプリケーションを作成しようと考えた。私は、将来家電にAndroidのようなOSが搭載されてデータの管理や共有が簡単にできるようになる。そして普段持ち歩いている携帯端末でいつでもどこでも情報の共有ができるような、ユビキタス社会の未来が来ると考えている。そのため、家電に関係するアプリケーションを作成したいと考えた。その中で冷蔵庫の在庫を管理することが生活をより便利にし、アプリケーション作成もイメージが付きやすいと考えた。したがって冷蔵庫の在庫管理アプリケーションを作成することにした。そしてそのアプリケーションを利用した結果、生活がより便利になったかを検証した。以下がその結果と評価である。

 2章に事前の基礎知識、3章に作成したアプリケーションの説明、4章にアプリケーションを実際に使用した実験、5章にまとめと今後の課題を示す。

2 基礎知識

2.1 アンドロイドとは

 Android(アンドロイド)とは、2007年11月米グーグル社が発表したプラットフォームであり、前述の通りスマートフォンやタブレットPCなどの携帯情報端末を主なターゲットとして開発されたプラットフォームである。無償で誰にでも提供するオープンソースであり、Linuxベースのモバイル用オープンソース・オペレーティングシステム、ミドルウェア、主要なアプリケーションからなるソフトウェアスタック(集合)パッケージを基にしており、スマートフォンに必要と考えられている携帯電話用ソフトウェアの多くはこの中に含まれている。

Nexus One Nexus S

図1 Androidが搭載されたスマートフォン端末

 ソフトウェアのカーネルとライブラリ、ランタイムはほとんどがC言語またはC++で記述されている。アプリケーションとアプリケーション・フレームワークは、グーグル独自に構築した仮想マシンであるDalvik仮想マシン上のJava SE(Java Platform, Standard Edition)のサブセット+Android拡張環境で記述することになる。

 Android用のアプリケーションは、基本的にプレ・インストール・アプリと、後からインストールするアプリを、公平に扱うのが特徴である。Apache Harmony(オープンソースなフリーなJava実装)からSwingやAWT(Abstract Window Toolkit)などの一部のAPI(Application Programming Interface)を除去し、UIなどのAPIを追加したライブラリとなっている。 Java CDC(Connected Device Configuration)のAPIは、全てではないが概ね含まれている。Sun Javaの互換性テストを通過していない。Googleから提供されているSDK(Software Development Kit)では、Javaプラットフォームによるプログラム環境と、C/C++による開発がサポートされている。Java言語以外にも、Javaプラットフォーム向けの複数の言語で書かれたプログラムがDalvik上で動作する。

 アプリケーション・ソフトウェア開発用にはAndroid SDKが、ランタイムとライブラリの開発用にはAndroid NDK(Native Development Kit)が無償提供されている。Android SDK によって、Android携帯電話機とホストPCとをUSBで接続して、アプリケーション・プログラムを携帯電話機上で実行しながらPC上でデバッグすることもできるが、グーグル社が有償で提供する開発専用携帯電話機や他社の専用の携帯電話機エミュレータでないと、低レベルのランタイムとライブラリを書き換えることは出来ない。対応しているオペレーティングシステムはLinux(Ubuntu Dapper Drakeで動作を確認済みである)、Mac OS X 10.4.8以降、Windows XP/Vista/7である。開発環境には、Eclipseが推奨されている。

 Androidアプリケーションの利点としては、ほとんどがオープンソースなので開発費用が安価である。そのため手軽に開発環境を整え、開発することができる。そして作成したアプリケーションはGoogleのAndroid Marketを介さず、個人で配布することもできるので、個人のみでの利用や、身内のみでの利用も可能である。また、Androidを家電に搭載する流れがあるので、組み込まれた家電上で動かせる可能性がある。

2.2 Androidの生活密着度について

2.2.1 Androidが搭載されているハードウェアの例

 このように、Androidは生活の中の身近なところまで使用されているのである。

GALAXY Tab ServersMan Cast

図2 Android搭載のタブレットとフォトフレーム

2.2.2 類似したアプリケーション

 本研究をするにあたり、類似した生活管理系のアプリケーションにどのような物があるのか調べてみた。

 以下がGoogleのAndroid Marketで調べた結果である。

表1 生活アプリケーション

体重管理・ダイエット 歩数計 ベイビーダイアリー
家計簿・お小遣い帳 ランニング記録 ゴルフスコア
勤怠記録 就職活動記録 ペットケア

このようにして見ると、生活管理の中でも健康系のアプリケーションが多いことが分かった。そのため、今回作成するような物を管理するアプリケーションは珍しい部類であると分かった。

3 作成したアプリケーションについて

3.1 アプリケーションの説明

今回作成したのは、冷蔵庫の在庫を管理するアプリケーションである。これを用いれば店先など外出先でも在庫の確認できる、という想定で作成した。現在はスマートフォン端末でしか実機で実行していませんが、将来冷蔵庫本体にAndroidが搭載されたときに使用してみてもいいかもしれません。

3.2 開発環境

3.3 アプリケーションの概要

3.3.1 外部的特徴の説明

1. トップページ
 左の図3がトップ画面である。
 下のオプションの品物追加から品物を登録し、上のカテゴリから任意のボタンを押すことでそのカテゴリに属する品物が表示される。またオプションの検索から任意の文字で検索できるページに、登録・検索ログでログが見れるページに飛ぶことができる。
 普段は表示されていないが、端末のメニューキーを押すと画面下部の設定・ヘルプ・終了のメニューが表示される。このメニューは他のページでも同様に表示される。
 また、トップ画面で端末のバックキーを押すと図3(右)のようなダイヤログが表示され、Yesを押すとアプリケーションが終了する。このダイヤログはメニューの終了のボタンでも表示される。
トップページ トップページ

図3 トップページ

2.品物追加ページ
 ここでは管理したい品物の登録を行う。
 品物名と個数は手打ちで、カテゴリと期限は選択ボタンを押すと出てくるダイヤログから選択して決める。カテゴリは、野菜、肉類、果物、魚、乳製品、飲み物、調味料、冷凍の8種類から選択制である。仕様上ダイヤログから選択してもボタンの文字は変わらない。
 最後に保存ボタンを押すことで。入力された情報がAndroidのデータベースに保存される。保存されると図4(右)のように保存ダイヤログが表示され、トップ画面に戻る。
品物追加ページ 品物追加ページ

図4 品物追加ページ

3.カテゴリページ
 上記の品物追加ページで保存した品物をカテゴリ別にListView形式で表示される。表示されるのは、データベースのID、品物名、数量、期限である。データベースのIDは削除する際にIDを参照が必要なので表示させている。
 1つ1つの項目を長押しすることで図5(右)のように削除確認のダイヤログが表示され、Yesを押すとデータベースから削除される。そしてトップページに戻る。
カテゴリページ カテゴリページ

図5 カテゴリページ

4.検索ページ
 ここでは任意の文字で検索することが出来る。検索対象は品物名のみ。あいまい検索なので一部始終しっかり書く必要はない。ただし、ひらがな・カタカナ・漢字の違いは検索されないので、登録したカナ方式で検索する必要がある。空白のまま検索すると全ての登録情報が表示される。
 検索すると、検索ボタンの下に何件ヒットしたのか表示されるようになっている。
 品物の表示はカテゴリのページと同様である。そして、同様に長押しで削除することもできる。
検索ページ 検索ページ

図6 検索ページ

5.登録・検索ログページ
 ここでは、日にちごとのカテゴリペーでの表示品目数と、登録ページでの登録品目数が表示される。
 登録も表示も両方0件の場合は、表示されない。
登録・検索ログページ

図7 登録・検索ログページ

6.設定ページ
 ここは形だけのページであり、実際にチェックしても反映されない。
 チェックボックスで項目を選択することができる。
 保存ボタンを押すと「保存できません」と出てくる。
設定ページ

図8 設定ページ

7.ヘルプページ
 ヘルプや注意点が書いてあるページ。
 スクロースして下まで見られる。
ヘルプページ

図9 ヘルプページ

3.3.2 内部的特徴の説明

1. Activityの効率利用
Androidでは画面1つ1つをActivityと言う。今回カテゴリを9つ用意して分類分けしたが、ここで9つのActivityを用意せず、1つのActivityを併用することで、アプリケーションのサイズを小さくした。
2. ダイヤログの多用
初心者の方も使用することを考え、ダイヤログを積極的に使うことで操作に困らないように努めた。
3. データの保存
このアプリでは管理する情報を、AndroidのSQLiteと呼ばれるデータベースに保存している。これにより大量のデータを効率よく保存することができる。
本研究では、情報を1つのSQLテーブルで管理し、SQLiteが自動で値を割り振るid、品名を保存するgoods、カテゴリを保存するcategorie、個数を保存するnumber、期限日を保存するdate、ログの日付のdate2、ログの表示数のshowcount、ログの登録数のrigistercountの8つのデータ列でのデータベーステーブルにて管理している(表2)
SQLテーブル

図10 エミュレータで保存したSQLite内の保存状況例

表2 SQLiteのテーブル定義

カラム名 入力内容 入力型 デフォルト
id ID INTEGER PRIMARY KEY
goods 品物名 TEXT テキスト null
categorie カテゴリ名 TEXT テキスト null
number 品物個数 TEXT テキスト null
date 期限日 TEXT テキスト null
date2 ログの日付 TEXT テキスト null
showcout 品物の表示品目数 INTEGER 符号化整数 null
registercount 品物の登録数 INTEGER 符号化整数 null

 品物追加ページで追加すると、品物名(goods)、カテゴリ名(categorie)、品物個数(number)、期限日(date)に登録される。この時、idは自動で整数値が登録される。 何も入力せずに保存を押すと、idは割り振られるが、他の項目はすべてnullである。また保存ボタンを押すと、ログの日付(date2)の値に当日の日付がなければ、ログの日付(date2)にその日の日付、品物の表示品目数(showcout)が0、品物の登録数(registercount)が1の行が新たに作られる。当日の日付があれば、品物の登録数(registercount)の値が1増える。

 また、カテゴリごとのページに入ると、カテゴリ名(categorie)の列を検索して当てはまる物がそのページに表示される。そして、そのページに表示された品物数が品物の表示品目数(showcout)の値に追加される。このときログの日付(date2)の値に当日の日付がなければ、ログの日付(date2)にその日の日付、品物の表示品目数(showcout)がカテゴリページの表示品目数、品物の登録数(registercount)が0の行が新たに作られる。

 検索ページでは、検索ボックスに入れた文字を品物名(goods)の列を検索して表示する。その時ログは更新されない。

4 アプリケーションを実際に使用した実験

4.1 実験概要

 作成した上記のアプリケーションを使用したことで、実際に生活が便利になるかどうかを調べた。実験した環境は以下の通りである。

表3 実験環境

調査期間 7日間
家庭状況 3人家族
使用人
冷蔵庫の数 1つ母
管理端末 HTC Desire(X06HT) Android 2.2

 本研究では、総登録品目数、1日の登録品目数、1日の確認品目数、1件あたりの登録にかかった時間の推移の調査と、インタビューによって便利具合を調べた。

4.2 結果

 以下に実験結果の表とグラフ化した図を示す。

表4 実験結果

実験日数 総登録品目数 1日の登録品目数 1日の確認品目数 1件あたりの登録にかかった時間 [秒]
1日目 69 2 71 80.5
2日目 69 0 0 0
3日目 68 9 11 0
4日目 67 0 38 0
5日目 67 1 24 79
6日目 66 1 47 83
7日目 65 2 48 70.5
グラフ1

図11 総登録品目数と1日の確認品目数の変化

 このグラフから確認品目数は3日目以降伸びていることが分かる。これより、アプリの利用度が増していることが分かる。そして総登録品目数が減っていることからアプリの使用により無駄な物が減っていると考えられる。

グラフ2

図12 1日の登録品目数と登録入力時間

 図12から入力時間にほとんど変化がないことが分かり、7日間程度ではタッチパネルでの操作に慣れるのは難しいことが分かる。

 [被験者から聞いたアプリケーションの感想]

●便利な面・メリット
・買い物中にチラシで前もって確認したリスト以外で気になった商品を見つけたときに、その場で在庫を確認することができた。それによって買い損ないや、2度買いを避けられた。
・チラシを見て買い物リストを作るときに冷蔵庫で在庫の量を確認しなくてもいいので、冷蔵庫を開けなくてよかった。(冷蔵庫を開けると冷気が逃げるため、できるだけ開けたくないらしい)
・同じ商品で期限が異なる物があるとき、先にアプリで確認すれば期限が近いのだけ探せばよくなった。(アプリがなければ、全て見つけ出して期限を比べなければならない。)
・入力作業をすることで買った物が記憶に残りやすく、料理中にパッと思いつくことが増えた。
●不便な面・デメリット
・品物の登録作業が大変である。タッチパネルに慣れていないと入力に時間がかかる。
・数量の編集ができないので、細かい在庫が把握できない。
・使い終わった品物を消す作業が面倒。
●リクエスト
・数量の編集機能
・期限順に並び替えられるとよい。

 4.3 評価

 本研究はAndroidのアプリケーションを作成し、そのアプリケーションで実験を行ったので、2.2章の後半で示した利点が発揮されたと思われる。開発環境を整えるに当たってJDKや、Android SDK、Eclipseなどは全て無料で手に入る。Androidの実機端末も研究用というよりは、私自身が個人用として欲しくて購入したので、研究費用に含めないとなると、ほぼ無料で開発環境を揃えることができた。またアプリの配布もGoogleのAndroid Marketを介す手間もなく直接端末にインストールすることができたので、実機でのデバッグ作業もしやすく、Androidアプリケーション作成の利点が発揮されたと言える。

 実験結果から言えることとして、品物の登録作業が手打ち入力なので、タッチパネルの操作に慣れていない人にとっては大変な作業なためネックになってしまうことが分かった。図13で登録にかかった時間を見てもほとんど変化がない。日常でタッチパネルを扱っている人なら結果はことなるだろうが、誰でも使えることを目指すとなると、先は長いと感じた。登録作業の簡易化については、カテゴリや期限を決めるときにダイヤログで選択させるという方法で負担軽減に努めた。また、登録した品物の編集ができないのは、私の技術力不足なので、ここは反省すべき点である。

 そして登録さえしてしまえば運用は難しくないので、自宅でスーパーのチラシを見ているときや、外出時など実際に中身が確認できない状況で確認するとこができるため、より便利になったと言えるであろう。アプリ使用前なら買っていたであろう商品を、確認したおかげで買わずに済んだこともあったようでした。そのため総品目数が減り、母も無駄が減ったと実感していた。そして確認品目数も後半にかけて右肩上がりなので、アプリを頼っていると考えると、使ったほうが便利であると言える。 以上より、品物の登録作業が大変、登録内容の編集不可などのデメリットがあるが、品物がどこでも確認できるという点で買いすぎ防止や、冷蔵庫内を探す手間の軽減など、便利になったと考えられる。そして問題の2点を解決出来れば現状短所がなくなるので、より便利になると考えられる。

5 まとめ・今後の課題など

 本研究は生活の身の回りにAndroidが搭載された物が増えてきたことから、Androidで生活が便利にしたい、便利にすることができるか、という題材で進めてきた。自ら自作したアプリケーションで検証を行った結果、自作アプリの出来に不十分な点がありながらも、本質的には便利になったと言える結果が出たと思う。ただし今回は実験例が1件しかないので、他の家庭でも実験を行うなど検証数を増やしていくことが必要だと感じた。

 評価の反省点より品物の登録の簡略化ができるとすれば、よく使いそうな品物をあらかじめ調べておきリストから選択できるような形式か、入力中の補完による入力補助ができるようになると便利になると思った。両方法とも購入頻度の高い物のリストアップが必要になるので、これはもう少し実験期間を長くしてデータを集めてからの実装になると思われる。また、例えば将来全ての商品に共通の形式でタグが付くようになり、そのタグデータを読み込んで一発登録できるような環境になれば嬉しいなと思う。 品物の編集機能については、技術不足もあるが、私がアプリケーション作成に時間がかかり過ぎてしまい、実装する時間がなかったことも原因である。これは、開発が遅れ納期に間に合わずお客様に迷惑をかけるのと同じような行為なので、もう二度とこのようなことがないようにしていかなければならないと思った。

 また、今年1月に行われたCES2011(コンシューマー・エレクトロニクス・ショー)ではインターネット接続に対応した冷蔵庫なども出店された。レシピの検索や庫内の温度確認などが主な用途だが、これを用いれば、冷蔵庫の情報をサーバーにバックアップすることができるのではないか。例えば冷蔵庫にAndroidが搭載され、外部同期を実装した管理アプリを導入すれば、バックアップや、外部から管理データの確認ができるようになり、とても利便性が高くなると考えられる。

6 参考文献

[1] 佐々木幹夫 著 「入門 Android 2 プログラミング」 株式会社翔泳社 (2010年)
[2] 嶋 是一 著 「Google Android入門」 株式会社技術評論社(2008年)
[3] 福岡 俊弘 著 「Google Android完全解説」 株式会社アスキー(2008年)
[4] Open Embedded Software Foundation」
http://www.oesf.jp/
[5] 「Google androidプログラミング入門」
http://libro99.appspot.com/index2?id=1005
[6] 「Android入門」
http://www.javadrive.jp/android/
[7] 「yan note」
http://yan-note.blogspot.com/
[8] 「Androidプログラマへの道 ~ Moonlight 明日香 ~」
http://wiki.livedoor.jp/moonlight_aska/
[9] 「Android Market」
https://market.android.com/
[10] 「Android Developers」
http://developer.android.com/intl/ja/guide/basics/what-is-android.html

付録

ソースファイル