公立はこだて未来大学 2011 年度 システム情報科学実習 グループ報告書 Future University Hakodate 2011 System Information Science Practice Group Report プロジェクト名 Smart FUN プロジェクト Project Name Smart FUN Project グループ名 iOS 班/Android 班 Group Name iOS Group/Android Group プロジェクト番号/Project No. 12-A/B プロジェクトリーダー/Project Leader 1006080 Kaku Yamada 山田格 グループリーダー/Group Leader 1009005/1009058 江端竜次/松山陽子 Ryuji Ebata/Yoko Matsuyama グループメンバー/Group Member 1006080 山田格 Kaku Yamada 1009004 岩佐尚史 Naofumi Iwasa 1009005 江端竜次 Ryuji Ebata 1009012 清野僚介 Ryosuke Seino 1009033 瀧澤祐太 Yuta Takizawa 1009058 松山陽子 Yoko Matsuyama 1009062 渡邉憲人 Kento Watanabe 1009091 佐々木龍 Ryou Sasaki 1009112 佐藤史弥 Fumiya Sato 1009123 阿部和哉 Kazuya Abe 1009137 富樫健太 Kenta Tomigashi 1009207 葛西基海 Motomi Kasai 1009221 松浦光輝 Kouki Matsuura 指導教員 高橋信行 新美礼彦 小西修 Advisor Nobuyuki Takahashi Ayahiko Niimi Osamu Konishi 提出日 2012 年 1 月 18 日 Date of Submission January 18, 2012 -2- 概要 いつでもどこでも何でもワイヤレスでネットワーク接続でき, 状況に応じたサービス提供が できるユビキタスネットワーク社会が到来しようとしている. ユビキタスとは, 次世代情報化 社会において,「ネットワークへの接続やコンピュータを使うことを意識させない, 状況に応じ たサービス提供」を意味し, これができるネットワーク社会を「ユビキタスネットワーク社会」 と総称している. ユビキタスネットワーク社会においては, 利用シーンに応じて最適な無線シス テムやサービスを選ぶことにより, 経済的で柔軟なシームレスサービスを享受できるためには, 様々な形態をとり, 管理者なしにネットワーク形態が自在に変化し, 他の端末を検出して通信に 必要なハンドシェイクを行うことが求められる. また, 情報・サービスが接続できる自律分散型 ネットワークを用いて, 次世代移動体システムのシームレス接続できること重要になってくる. 自律分散型ネットワークは, 無線 LAN のようなアクセスポイント, 固定の無線基地局, 電話線, 固定ルータを必要とせず(インフラレス), 無線で接続ができる端末(PC,PDA, 携帯電話な ど)のみで構成されたネットワークであり, 今後大きな発展が見込まれている. このような特徴 を持つネットワークに,「自律分散型ネットワーク」というものが存在する. 本プロジェクトは今年度初のプロジェクトである. 本プロジェクトは先ほど述べた,「自律分 散型ネットワーク」に注目し, 自律分散型ネットワークを利用したアプリケーションの提案, 開 発を行った. プロジェクト名の「Smart FUN」とは, 未来大生の学生生活をより賢く, より効率 良くすることをコンセプトとしている. 今年度の目標として,「自律分散型ネットワーク」を用 いて, 学内にいるユーザのみでネットワークを構成し, 未来大学内の情報を手間なくスマートに 共有できるアプリケーションの開発が挙げられた. 今回, 本プロジェクトは未来大内での情報を 「自律分散型ネットワーク」を用いて共有する地図アプリケーション「FunMap」の開発を行っ た. 前期の活動では, 自律分散型ネットワークの構築を行うネットワーク班と「FunMap」の レイアウトや地図の作成, 開発を行う地図班を編成した. また, 後期の活動ではプラットフォー ムごとに扱う言語が異なり, 開発の部分で連携が取りにくいとの点から,iOS 端末向けの開発を 行う iOS 班と Android 端末向けの開発を行う Android 班を編成した. 今回, 開発する地図アプリケーション「FunMap」とは, 学内にいるユーザを地図上に表示し, さらに文字や画像を使った情報共有ができるアプリケーションである. このアプリケーション は,「自律分散型ネットワーク」で情報共有ができるという今までのプロジェクトにはない新し い企画から提案されたものである. キーワード 自律分散型ネットワーク, FunMap, スマート化, Android, iOS (※文責: 富樫健太) -i- Abstract Today, Ubiquitous Network Society will become ubiquitous is the service that we are not aware of connecting to Internet or using computer under various conditions at Next Generation information-oriented society. Those Network society is called Ubiquitous Network society. To have economical and flexible seamless services by choosing the best wireless systems and services under various conditions, Ubiquitous Network society is required various forms, freely change network forms without administrator, and detecting the other terminals and performing necessary handshake. It is important seamlessly to connect next generation mobile systems by using ad hoc network. Ad hoc network does not need access point such as wireless LAN, fixed wireless base stations, telephone line, fixed routers.(Infrastructure-less) Ad hoc network configuration is configured by wireless terminals(PC, PDA, mobile phone). Ad hoc network are expected significant developments in the future. Such this network, there is ad hoc network. This project is new project this year. We focused on ad hoc network, and suggested and developed application using ad hoc network. Project name ’Smart FUN’ means concept ’smarter and more efficient FUN student life’. This project’s purpose is configuring ad hoc network in university and developing application that we can share informations in university by using this network. We developed map application ’FunMap’ which share informations in university by using ad hoc network. This project was composed of two groups. Network group constructed ad hoc network and map group developed layout and map during the first semester. iOS group developed iOS application and Android group developed Android application during the second semester. This time, FunMap can share other user’s location, textual informations and image informations. This application which can share informations by using ad hoc network is proposed by new and unprecedented planning. Keyword ad hoc network, FunMap, Smart, Android, iOS (※文責: 富樫健太) - ii - 目次 第1章 はじめに 1 1.1 Smart FUN を目指す理由 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 本プロジェクトにおける目的 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 アプリケーションの説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.4 該当分野の現状と従来例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.4.1 自律分散型ネットワークの使用例 . . . . . . . . . . . . . . . . . . . . . . . 3 1.4.2 位置情報の使用例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.5 現状における問題点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.6 課題の概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 プロジェクト学習の概要 7 2.1 目標の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2 組織形態 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 第2章 2.2.1 先生の役割 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.2.2 プロジェクトリーダーの役割 . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3 各プラットフォームの特徴 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.4 具体的な課題の設定と目標 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.5 アプリケーション開発の課題の割り当て . . . . . . . . . . . . . . . . . . . . . . . 12 2.6 2.5.1 開発環境の構築(iOS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.5.2 開発環境の構築(Android) . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.5.3 地図の作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.5.4 位置の測定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.5.5 データベースの構築(iOS) . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.5.6 データベースの構築(Android) . . . . . . . . . . . . . . . . . . . . . . . 13 2.5.7 Bluetooth 通信(iOS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.5.8 Bluetooth 通信(Android) . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.5.9 つぶやき機能の実装(iOS) . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.5.10 つぶやき機能の実装(Android) . . . . . . . . . . . . . . . . . . . . . . . 15 2.5.11 カメラ機能の実装(iOS) . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.5.12 掲示板機能の実装(iOS) . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.5.13 掲示板機能の実装(Android) . . . . . . . . . . . . . . . . . . . . . . . . 16 プロジェクト学習の課題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.6.1 予算・物品 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.6.2 情報共有 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.6.3 中間発表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.6.4 中間報告書の作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.6.5 オープンキャンパス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.6.6 最終発表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 - iii - 2.6.7 2.7 2.8 第3章 最終報告書 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 組織形態 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.7.1 前期 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.7.2 後期 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 年間スケジュール 提案アプリケーション 31 3.1 概要・目的 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.2 開発アプリケーションのアイディア提案 . . . . . . . . . . . . . . . . . . . . . . . 31 3.3 類似アプリケーションの調査 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.4 システム概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.5 実装機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.6 プラットフォーム別実装機能比較説明 . . . . . . . . . . . . . . . . . . . . . . . . 46 課題解決のプロセス 49 第4章 4.1 アプリケーションの機能選定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.2 開発技術の習得 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.3 4.2.1 地図関係作成技術 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.2.2 位置情報技術(iOS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.2.3 位置情報技術(Android) . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.2.4 データベース構築技術(iOS) . . . . . . . . . . . . . . . . . . . . . . . . 52 4.2.5 データベース構築技術(Android) . . . . . . . . . . . . . . . . . . . . . . 52 4.2.6 Bluetooth 通信技術(iOS) . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.2.7 Bluetooth 通信技術(Android) . . . . . . . . . . . . . . . . . . . . . . . 53 4.2.8 報告書の作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 アプリケーション開発における課題の解決 . . . . . . . . . . . . . . . . . . . . . 55 4.3.1 開発環境の構築(iOS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.3.2 開発環境の構築(Android) . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.3.3 地図の作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 4.3.4 位置の測定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 4.3.5 データベースの構築(iOS) . . . . . . . . . . . . . . . . . . . . . . . . . 66 4.3.6 データベースの構築(Android) . . . . . . . . . . . . . . . . . . . . . . . 66 4.3.7 Bluetooth 通信(iOS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 4.3.8 Bluetooth 通信(Android) . . . . . . . . . . . . . . . . . . . . . . . . . 69 4.3.9 つぶやき機能の実装(iOS) . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.3.10 つぶやき機能の実装(Android) . . . . . . . . . . . . . . . . . . . . . . . 72 4.3.11 カメラ機能の実装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 4.3.12 掲示板機能の実装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 4.4 機能の実装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 4.5 動作確認テスト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 4.6 実装機能の仕様 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 4.7 書類の作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 4.7.1 詳細仕様書の作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - iv - 85 4.7.2 4.8 第5章 5.1 5.2 第6章 6.1 6.2 6.3 マニュアルの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 プロジェクト学習における課題の解決 . . . . . . . . . . . . . . . . . . . . . . . . 86 4.8.1 予算・物品 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 4.8.2 情報共有 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 4.8.3 中間発表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 4.8.4 中間報告書の作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 4.8.5 オープンキャンパス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 4.8.6 最終発表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 4.8.7 最終報告書 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 発生した課題とその解決方法 アプリケーション開発 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 5.1.1 問題点と発生した流れ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 5.1.2 解決方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 引継ぎ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 5.2.1 iOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 5.2.2 Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 グループ内のインターワーキング 6.5 104 ネットワーク班 (前期) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 6.1.1 江端竜次 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 6.1.2 岩佐尚史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 6.1.3 清野僚介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 6.1.4 佐藤史弥 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 6.1.5 阿部和哉 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 6.1.6 富樫健太 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 6.1.7 瀧澤祐太 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 地図班 (前期) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 6.2.1 松山陽子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 6.2.2 渡邉憲人 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 6.2.3 佐々木龍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 6.2.4 松浦光輝 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 6.2.5 葛西基海 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 プロジェクトリーダー (前期) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 6.3.1 6.4 101 山田格 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 iOS 班 (後期) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 6.4.1 江端竜次 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 6.4.2 岩佐尚史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 6.4.3 佐藤史弥 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 6.4.4 佐々木龍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 6.4.5 松浦光輝 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 6.4.6 葛西基海 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Android 班(後期) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 -v- 6.6 6.5.1 松山陽子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 6.5.2 渡邉憲人 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 6.5.3 清野僚介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 6.5.4 阿部和哉 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 6.5.5 富樫健太 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 6.5.6 瀧澤祐太 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 プロジェクトリーダー (後期) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 6.6.1 第7章 7.1 山田格 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 結果 137 前期成果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 7.1.1 iOS 班 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 7.1.2 Android 班 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 7.2 解決手順と評価 (前期) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 7.3 中間発表時のアンケート考察 7.4 後期成果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 7.4.1 iOS 班 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 7.4.2 Android 班 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 7.5 解決手順と評価 (後期) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 7.6 後期発表時のアンケート考察 第8章 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 まとめ 148 参考文献 149 - vi - Smart FUN Project 第1章 はじめに この章ではプロジェクトの背景となる事柄や目的について述べる. 1.1 Smart FUN を目指す理由 近年, インターネットや携帯電話の普及率は年々増加し続けており, 現在では世代を問わず, イン ターネットや携帯電話を利用して他人と連絡を取り合ったり, 情報を共有したりすることが当たり 前の時代となり, もはや社会のインフラとなっている. インターネット利用者数は 1 億人近くまで, 携帯電話加入者数は 1 億人以上に増加しており, インターネットの人口普及率は約 80%, 携帯電話 では約 90% にまで達している. ここまでインターネットや携帯電話が普及した理由として, ネットワーク帯域幅のコスト削減が 実現され, 多くの企業やユーザにサービスを提供することが可能になったことが挙げられる. これ からはいつでもどこでもネットワークを利用できることが重要になってくると考えられている. し かし現状では, そのような状況はまだ十分に実現できておらず, 例えば, 無線 LAN を例に挙げると, アクセスポイントが存在するオフィスや家庭, 喫茶店, 空港などの一部の地域に限られており, アク セスポイントの電波の届かない場所があったり, 回線が細い, といった問題が存在する. そこでこれらの問題点を解決する方法として「自律分散型ネットワーク」が注目されている. 自 律分散型ネットワークとは, 近傍にある無線端末同士が数珠繋ぎにつながっていくことで構成され る大きなネットワークのことをいう. 直接接続していない端末同士が通信する場合は, その間に挟 まる端末がそのデータをバケツリレーのように中継するマルチポップという方法で通信している. また, インターネットに繋がる端末が自律分散型ネットワーク内に存在すればそれがゲートウェイ の役割を果たし, 無線 LAN のアクセスポイントが近くになくてもインターネットに繋げられる可 能性が広がる. この自律分散型ネットワークの最大の利点は耐障害性に強く, 運用管理が容易なこ とである. 耐障害性の面では, ネットワークを構成する 1 台の端末に障害が起こっても別の経路が 自動的に確立し, 周囲に全く端末がない状況にならない限り繋がり続ける. また, 端末同士は相互に 連絡を取り合い, 自動的にネットワークを構築するため, 運用管理をする必要がない. 基地局集中型 のネットワークは, ある瞬間における通信は基地局 1 つの端末のみであり,2 つ以上の端末が同時に 通信を行うと干渉してしまう. しかし, 自律分散型ネットワークでは端末同士が直接通信できるた め, 出力を調整すれば, 同時に複数の通信が可能である. また, このネットワークを利用すれば, ネットワークの利用状況が事前に予測不可能な場所で大 いに活躍すると考えられている. 例えば, 巨大なビルで火災があった際, 無線 LAN が使えなくなっ てしまうことが考えられる. この時, 消防隊員が自律分散型ネットワークに対応した端末を持てば, 災害現場限定のネットワークを構築することができる. 外部との中継が途切れそうな位置では, 途 中に据え置き型の端末を置けば通信が途絶えることはなく, このネットワークを利用して災害現場 の隊員の状況, 位置などが逐一把握できるようになる. また, 災害現場にロボットを送りこむような 時代にはさらに有効になるだろうと考えられている. Group Report of 2011 SISP -1- Group Number 12-A/B Smart FUN Project また近年では,iPhone や Android といったスマートフォンの普及が著しく広がっており, さらに 幅広く便利なサービスが利用可能となっている.Android はオープンソースである Java 言語を採用 しているが, 独自のバーチャルマシンである Dalvik(ダルビック)を採用している.GEMU を使用 することにより, 実機と同じバイナリで Eclipse を使用しての開発が可能となる.Java 言語による開 発は自由度の高いアプリケーション開発が可能である.iPhone は開発環境である Xcode を Mac の パソコンにインストールすれば開発することができる. 開発の際のソフトウェアはアップル社から 無償で入手可能となっている このような背景から, 本プロジェクトでは「自律分散型ネットワーク」に注目し, このネットワー クを用いたスマートフォンアプリケーションの開発を行う. (※文責: 富樫健太) 1.2 本プロジェクトにおける目的 本プロジェクトの目的は, 自律分散型ネットワークを用いた, 位置情報を基盤とするアプリケー ションの開発を目標とし, その過程でアプリケーションの提案と開発を行うことで実践的なソフト ウェアの開発手法を学ぶことである. 他のプロジェクトとは違い新規のプロジェクトであるため, 提示されたコンセプトに基づきプロジェクトの方向性の提案, 決定を行った. また, プロジェクト学 習として行うことにより, 面識のないメンバーとのプロジェクトを体験することと共に, グループ ワークによるインターワーキング手法とソフトウェア開発技法, 発表におけるプレゼンテーション 技法等の習得を行う. 前期においては「ネットワーク班」「地図班」に分かれ, ネットワーク班では, 位置情報の算出と 保存,Bluetooth 通信を目的とし, 地図班でははこだて未来大学内の地図の作成とネットワーク班が 取得した情報をもとに現在の位置を地図に表示することを目的とした. 後期においては, グループの再編成をし,「Android 班」 「iOS 班」とした. 各グループで Bluetooth 通信によって自律分散型ネットワークを作成し, 情報の共有を行うとともに, 位置情報精度の更な る向上を目的とした. (※文責: 山田格) 1.3 アプリケーションの説明 ここでは本プロジェクトで開発したアプリケーション FunMap の説明を行う. FunMap とは省電力である携帯デバイスを用いて自律分散型ネットワークを構築し, そのネット ワークを用いて情報共有を行うことができるアプリである. FunMap は Bluetooth を用いて情報共有を行うことができる. 共有できる情報は自分の位置情 報. 掲示板の書き込み情報, 及びつぶやき情報であるそれらを視覚的に表して表示している. 自分の 位置は近くにあるアクセスポイントを検出して, 電波強度の強い 3,4 点を抽出しそれらの点の重心 Group Report of 2011 SISP -2- Group Number 12-A/B Smart FUN Project を求めることで算出を行っている. また既存のネット掲示版や twitter のつぶやき等は Web サーバ にメッセージデータを保存して, メッセージの読み出しにもサーバに保存されているものを用いて るが FunMap のつぶやき, 掲示板には各端末内のデータベースを用いている. そのため既存のサー バにとらわれない通信が可能となっている. 以上が本アプリケーションの説明であるが iOS 端末と Android 端末は若干仕様が異なっていて iOS 端末は以上の機能に加えて, カメラで撮った画像を共有できるなどの機能をもっている. (※文責: 阿部和哉) 1.4 該当分野の現状と従来例 この節では, 本プロジェクトの目的ある分野の従来の使用例について記載する. 1.4.1 自律分散型ネットワークの使用例 現在, 自律分散型ネットワークを用いて構築されてるアプリケーションには,「Skype」,「LINE」, 「Viber」のようにインターネットを用いたコミュニケーションツールや「LimeWire」,「Winny」, 「Cabos」,「BitTorrent」のようなファイル共有ソフトなど P2P 技術を使用したものが代表として 挙げられる. P2P とは,Peer to Peer を省略したものであり, 一般ユーザの端末装置(パソコンやスマートフォ ン)などに対して, 他のユーザの端末装置が相互にアクセスすることが出来る通信方式, 通信モデル である.[6] Skype は,P2P 技術を応用した音声通話ソフトである. インターネットを通じてパソコンや携帯 情報端末を接続し, 音声通話やテレビ電話, 文字によるチャットを手軽に行なうことができるアプ リケーションである. また, 一般的な IP 電話システムなどと異なり, 中央サーバを介さずユーザ同 士が直接接続して通話することができるようになっている.[7] Viber はスマートフォン向けのアプリケーションである.Viber をインストールしているスマー トフォン同士で無料通話・テキストメッセージの送受信ができる . また,Skype と異なる点は, アプ リケーションを起動していなくても着信を受けることが出来るアプリケーションである.[8] LINE も, データー通信料のみでトーク機能(テキストや画像・位置情報の送信)を含む全て無 料で行うことが出来るスマートフォンのアプリケーションであり, Skype と同様にチャットなどの データを自分の端末で保存する自律分散型のアプリケーションである. こちらもアプリケーショ ンを起動していなくても着信を受けることが出来る点である. さらに Viber が英語なのに対して, こちらはすべて日本語で表示されている.[9] LimeWire は, P2P を用いたファイル共有ソフトであり, 複数のホストから同時にダウンロード したり、複数のファイルを同時にダウンロードしたりといったことが可能である. また、Java で 開発されたマルチプラットホームであり,Windows,Mac OS,Lunix など複数の OS に対応してい る.[10] Winny は, 日本で開発されたファイル交換ソフトの1つであり, 高い匿名性と, 独自の P2P 型匿 名掲示板システムが特徴である. ファイルの検索・送受信を効率よく行うため, キーワードによる利 用者のグループ化が行われる. これをクラスタ化と呼ぶ. また, ユーザ ID などがなく, どのファイ ルがどこから送受信されているのか利用者にはわからないようになっている.[11] Cabos は,LimeWire をもとにして作られたファイル共有ソフトである. LimeWire との違いは Group Report of 2011 SISP -3- Group Number 12-A/B Smart FUN Project インストール後に使用環境に合わせて設定作業を行わなければならないが, Cabos ではいっさいの 設定を必要とせず動作させることができる.[12] BitTorrent も,P2P 技術を応用したファイル共有ソフトであり, ファイルを取得するためには回 線環境の悪いユーザであってもファイルを提供しなくてはならない規則があるため, 人気のファイ ルはそれだけ多くのユーザから配信され, トラフィックを集中させずに高速にファイルを配布でき る仕様である.[13] 1.4.2 位置情報の使用例 現在, 位置情報は自動車のカーナビゲーションや携帯電話のアプリケーションから GPS を使っ て自分の現在位置を測定し, 地図の上に表示したりすることに用いられる. Google ストリート ビューのように立体的に表示できるものや Around me のように現在地から近い建物を探索するこ とが出来るものがある. また, バスロケーションシステムのようにバスに GPS の受信機をつけてバ スの停留所までの接近情報を知ることが出来るものもある. GPS とは, グローバル・ポジショニング・システム(Global Positioning System)の省略したも ので自分が地球上のどこにいるのかを正確に割り出すシステムであり,3 個の GPS 衛星からの距離 がわかれば, 空間上の緯度と経度を決定できる. 本来 GPS は, 受信している機器の緯度・経度・高 度などを数 cm から数十 m の誤差で割り出すことができる. しかし, 衛星の発信する電波に含まれ る時刻データは暗号化されたものと暗号化されていないものの 2 種類があり, 民生用に利用できる ものは暗号化されていないデータで、故意に精度が落とされているため誤差は 10m 程度となる. そ のため, 建物内のどこにいるかなどの詳細な位置情報は得ることが出来ない.[14] Google ストリートビューとは, あらかじめ自動車に搭載されたカメラで撮影した写真を合成して パノラマ化し, 位置情報と一緒に保存することで, 図 1.1, 図 1.2 のように GoogleMap 及び Google Earth の地図上で立体的に表示できるものがある.[15] 図 1.2 Google ストリートビュー 図 1.1 GoogleMap Around me は, 図 1.3, 図 1.4 のように現在地から近くの銀行, バー, ガソリンスタンド, 病院, ホ テル, 映画館, レストラン, スーパーマーケット, 劇場, タクシーの連絡先などを探索することが出来 る地図アプリである.[16] バスロケーションシステムとは,GPS 等を用いてバスのリアルタイムの位置情報をバス停の表 示板や携帯電話、パソコンに情報提供するシステムである. バスは道路状況や天候による影響が 大きいため, 他の交通機関に比べて定時どおりの運行が難しい. そこで, バスに GPS を搭載して走 らせることにより, リアルタイムの現在地の情報を事業所や停留所もしくは携帯端末に送信するこ とで遅延状況を知らせることができ, これによりバスの運行システムの問題を緩和することが出来 る.[17] Group Report of 2011 SISP -4- Group Number 12-A/B Smart FUN Project 図 1.3 Aroud me1 図 1.4 Around me2 (※文責: 葛西基海) 現状における問題点 1.5 この節では従来の自律分散型ネットワーク・位置情報を使っているアプリケーションの問題点を 述べる. • 「Skype」,「LINE」,「Viber」などのコミュニケーションツールは通信料のみで通話がで きるため, 非常に便利ではあるが他の端末の接続方法としてネット回線に依存しているため サーバや回線に障害が起こると使用できなくなる. • 「LimeWire」,「Winny」, 「Cabos」,「BitTorrent」などのファイル共有ソフトもネット 回線がないと他の端末に接続できない. • • GPS で取得できる位置情報の精度は自分の現在いる建物がわかる程度で, 建物内のどこにい るかは取得できない. • Google ストリートビューや Around Me では自分の位置情報と建物の取得できない. (※文責: 葛西基海) 1.6 課題の概要 この節では従来におけるアプリケーションを改良するための今後の課題について述べる. 従来の自律分散型ネットワークだとインターネットに繋がっている状態でなければ, 端末間での 通信を行う出来ない為, 災害時などでインターネットが繋がらなくなったときに連絡をとる事が出 Group Report of 2011 SISP -5- Group Number 12-A/B Smart FUN Project 来ない. また,GPS の精度では自分がどの建物にいるのかはわかるが, 建物のどこにいるかまでは取 得することが難しい. そこで, 今後の課題としては, インターネットを介さずに Bluetooth を用いて端末間で通信でき る自律分散型ネットワークを構築すること. GPS を使用せずに建物の中でも正確で詳細な位置情 報を取得すること. そして, 自律分散型ネットワークと地図を組み合わせることでより新しい情報 を共有できるようにすることである. (※文責: 葛西基海) Group Report of 2011 SISP -6- Group Number 12-A/B Smart FUN Project 第2章 プロジェクト学習の概要 この章では本プロジェクト学習の概要について述べる. 2.1 目標の設定 この節では, 本プロジェクトの目標の設定を述べる. 本プロジェクトの目標は, スマートフォンアプリケーションの提案, 作成が目標である. 本プロジェクトのアプリケーションは,Bluetooth 通信を用いて各々の端末がホストとなり分散して 情報を共有する自律分散型ネットワークの構築をする. この自律分散型ネットワークは Bluetooth 通信を用いて行なっているので, サーバを使うことはない. それにより, ユーザがいる限りネット ワークはなくなることはない. 自律分散型ネットワークは, 学内の情報を共有することに用いてい る. (※文責: 瀧澤祐太) 2.2 組織形態 このプロジェクトでは, 端末開発担当としてプラットフォームごとの技術班として大きくふたつ に分けた. iOS 端末向けの開発を担当する iOS 班,Android 端末向けの開発を担当する Android 班を置き, それぞれアプリケーション開発のための技術習得, 環境構築を行なった後, プログラムソースの作 成, アプリケーションの実装を行なった. メンバー構成, グループ構成は以下のようになっている. <プロジェクトリーダー> • 山田格 < Android 班> • リーダー:松山陽子 • メンバー:阿部和哉 • メンバー:清野僚介 Group Report of 2011 SISP -7- Group Number 12-A/B Smart FUN Project • メンバー:瀧澤祐太 • メンバー:富樫健太 • メンバー:渡邉憲人 < iOS 班> • リーダー:江端竜次 • メンバー:岩佐尚史 • メンバー:葛西基海 • メンバー:佐藤史弥 • メンバー:佐々木龍 • メンバー:松浦光輝 (※文責: 岩佐尚史) 2.2.1 先生の役割 このプロジェクトでは,3 人の担当教員が参加している. 教員は, プロジェクト運営において問題が発生した場合に手助け, プロジェクトに関しての知識 指導, さらに, 成果を発表する機会の提供, 発表に使用する機材の提供, スケジュール管理の方法の アドバイス, 資料の添削などをしていただいている. (※文責: 瀧澤祐太) 2.2.2 プロジェクトリーダーの役割 このプロジェクトでは, プロジェクトリーダーが 1 人おり, 各グループリーダーと協力して活動 している. 主な活動はプロジェクト全体のスケジュールの作成や, 全ての活動に対する進捗確認で ある. スケジュールについてはグループリーダーと会議することで決定し, メンバーに報告することで 連絡を行った. スケジュールは, メンバー全員に共有できるようサイボウズ社の「サイボウズ Live」 によって共有することで確認できるようにし, サイボウズ Live のそれぞれのページにもスケジュー ルを記載することで, 担当者がスケジュールを意識して活動できるように工夫した. Group Report of 2011 SISP -8- Group Number 12-A/B Smart FUN Project 進捗確認については開発に関してはそれぞれのグループリーダーに進捗確認を行った. また, グ ループリーダーには進捗確認だけでなく, 自分の班のメンバーのスケジュールや技術習得を管理し てもらった. (※文責: 瀧澤祐太) 2.3 各プラットフォームの特徴 • iOS iOS(iPhone OS)は,Mac OS と同様に,Darwin をベースにした OS のことである. マルチタッチ 操作や iPhone が持つ様々なハードウェア機能に対応しており, 最新版がリリースされると,iTunes を使って更新することができる. その際, 対応する iOSSDK もアップデートされる. また,「iPhone OS 4.0」から iOS という名称に変更された. • Android Android は元々スマートフォン用のプラットフォームとして開発されたが, 現在ではタブレット や組み込み分野での利用も始まっている. 様々な用途に適するように Android には下記に示す特徴 がある. • コンポーネントの再利用と置換が可能なアプリケーションフレームワーク Android アプリケーションは, コア・アプリケーションによって使用されるフレームワーク API のすべてにアクセスすることが可能である. また, コンポーネントの再利用を容易にするような設計が行われているため, 適切なセキュリティ の設定を行ったアプリケーションの機能を, 他のアプリケーションが使用することが出来る. この 仕組みによって, ユーザーによるコンポーネントの入れ替えも出来る. • 携帯電話用に最適化された Dalvik 仮想マシン Android 用のアプリケーションは, 基本的に Dalvik 仮想マシン(Dalvik VM)上で動作し, 独自 プロセスとして実行される. Dalvik Vm は携帯電話で複数の VM を効率よく実行出来るように設 計されており,Dalvik Vm はメモリの使用量を最小にするように最適化された「Dalvik 実行可能 (.dex)フォーマット」のファイルを実行する. • オープンソースのレンダリングエンジン「WebKit」をベースにした統合ブラウザの搭載 Group Report of 2011 SISP -9- Group Number 12-A/B Smart FUN Project 「WebKit」とは,Apple が中心となり現在はオープンソースで開発されている HTML レンダリ ングエンジン群の総称のことである. 元は Apple が Mac OS X 用ブラウザとして開発した Safari の基礎で, 現在は iPhone,Android などでも利用されている. HTML レンダリングエンジンとは Web ページ記述用言語で書かれたデータを解釈し, 実際に画 面に表示する文字や画像などの配置を計算するプログラムのことある. Android で使われているも のの他に,Internet Explorer で使われている「Tridnet」や,FireFox で使われている「Gecko」など がある. Android では WebKit をベースとしたブラウザ機能を Web ビューというビュークラスからアク セスすることが出来る. これにより HTML ファイルを表示したり,Web サイトを閲覧するアプリ ケーションを制作することが出来る. • 最適化されたグラフィックス Android はグラフィックスエンジンに, カスタム 2D グラフィックスライブラリと OpenGL ES 1.0 仕様に基づいた 3D グラフィックスを備えている. もっとも共通的な 2D グラフィックス API は,drawable パッケージに多く見られる. Open GL API は Khronos Open GL ES パッケージから, いくつかの Android Open GL ユー ティリティを利用することが出来る. また,3D グラフィックスである Open GL ES では, 複雑な図形の描画にはポリゴン, 線, 点, など の基本図形を組み合わせた 3D グラフィックスを用いたアプリケーションの開発が出来る. • SQLite による構造化データストレージ Android には「SQLite」というデータベースが標準で組み込まれている. これらの API を使用 すると, アプリケーションからデータベースを利用することが出来る. SQLite は,Apple AIR や Gears,GoogleChrome,Fire Fox3 など,Web ブラウザアプリケーショ ンなどのオフライン機能/ローカルデータ操作機能で使われることが増えている軽量データベース のことである. データ保存には単一ファイルを使用し, 一般的なデータベースサーバとは異なり, アプリケーショ ンに一緒に組み込む. また, データベースの操作は API を呼び出して行うため, プロトコルやプロ セス間通信を使わない. これによって, 一般的に高速で動作する. • 音声, 映像, 静止画の一般的なメディアフォーマットのサポート 音声, 映像, 静止画などのメディアに関するフォーマットに, 標準で対応している. • その他, ハードウェアに依存する機能. 開発環境など • デバイスエミュレータ, デバッグ用ツール, メモリとパフォーマンスの分析 Group Report of 2011 SISP - 10 - Group Number 12-A/B Smart FUN Project • eclipse IDE 用プラグインを含む機能の豊富な開発環境 ハードウェアに依存 • GSM テレフォニー機能 • Bluetooth,EDGE,3G,WiFi のサポート • カメラ,GPS, コンパス, 加速度計のサポート (※文責: 松山陽子) 2.4 具体的な課題の設定と目標 1. 開発環境の構築 課題:各プラットフォーム(iOS, Android)ごとの言語(Java, Objective-C)を扱うソフ トウェアをインストール, その他開発に必要なものをインストールし, 動作を確認する. 2. 地図の作成 課題:FunMap を作るために必要な学内の地図を作成する. 3. 位置の測定 課題:位置を取得する方法を検討する. 4. データベースの構築 課題:スマートフォン端末上にデータベースを構築し, データを蓄える方法を確立する. 5. Bluetooth 通信 課題:Bluetooth 通信を用いて自律分散型ネットワークを構築する. 6. つぶやき機能の実装 課題:Bluetooth 通信を用いて自律分散するつぶやき機能を実装する. 7. カメラ機能の実装 課題: iOS が入った端末のカメラを用いた画像共有機能を実装する. 8. 掲示板機能の実装 課題:Bluetooth 通信を用いて投稿した文字列を自律分散させて共有する掲示板機能を実装 する. (※文責: 瀧澤祐太) Group Report of 2011 SISP - 11 - Group Number 12-A/B Smart FUN Project 2.5 アプリケーション開発の課題の割り当て ここでは, アプリケーション開発の際の課題とその割り当てについて記載する. 2.5.1 開発環境の構築(iOS) ここでは,iOS アプリケーション開発環境構築における課題について述べる. iOS のアプリケーションを開発するためには OS に Mac OS X がインストールされたものが必 要であるため, 開発機の調達が課題である. 次に,iOS の総合開発環境である Xcode を使うために iOS Developer に登録し, 実機でテストするために iOS Developer Program に登録することが課 題である. また, 予算を抑えるために iOS Developer のアカウント 1 つのみで開発するという課題 がある. (※文責: 岩佐尚史) 2.5.2 開発環境の構築(Android) ここでは,Android アプリケーション開発環境構築における課題について述べる. Android アプリケーション開発環境を構築するにあたり、まず各自の PC で開発できるよう環境 を整える必要であった。そのため、予算などの面から有料ソフト等を使用せずに、早めに環境を整 えることが課題であった。 また、作成したアプリケーションを確認するため Android 端末が必要であったが、Android 開発 担当者の中に Android 端末を所持するのがいなかった。予算で購入することとなったが、Android 端末の画面サイズやバージョンが各種異なり、実行結果も異なることが予測されたため、様々な端 末を準備し、確認を行えるようにすることが課題となった。 実機が準備できた後、実機で確認を行えるように eclipse にドライバのインストールを行った。ド ライバのインストールを行ったのは以下の機種である。Motoroler XOOM ZTE Ziio7 LifeTouch インストールを行うだけでは実行が行えない機種があり、PC の設定や実機側の設定を変更する ことが課題となった。 (※文責: 江端竜次) 2.5.3 地図の作成 この節では, 地図の作成について述べる. 地図班でどのような地図を使うべきかの議論を行った. 議論の結果, 学生便覧の地図を使用するこ とになり, 学生便覧をトレースして画像化し, 縮尺をあわせるため一部を拡大・縮小して合わせた. 学生便覧の地図は正確でない部分があり, 位置情報の精度にも影響してくるため, 実際に学内を 測量して新たに地図を作ることになった. 測量および地図の作成は佐々木と松浦が担当した. Group Report of 2011 SISP - 12 - Group Number 12-A/B Smart FUN Project (※文責: 渡邉憲人) 2.5.4 位置の測定 この節では, 位置の測定について述べる. 一般的に位置情報を取得する手段としては,GPS(Global Positioning System,全地球測位シス テム)を用いる. しかし GPS では, 屋内では使用することが困難であり, かつ, 標準誤差が 50m あり, 学内の位置 情報としては利用できるほどのものではなかった. (※文責: 佐藤史弥) 2.5.5 データベースの構築(iOS) ここでは iOS アプリケーションのデータベース構築における課題について以下に述べる. まずデータベースを扱うのに何を使うかという課題. 次にデータベースは他の機能と連動して使う 事が多いので, データベースをどう使うかという課題が出てきた. またデータベースの構築や実装 は全て江端が担当をした. (※文責: 江端竜次) 2.5.6 データベースの構築(Android) この節では, データベースの構築について述べる. まず, 自律分散型ネットワークを構成し, 情報を共有するにおいてデータの保存方法を検討しなけ ればならなかった. サーバを用いてしまうと自律分散型ネットワークではなくなってしまうため他 の手法でデータを保存しなければならないという課題があった. そこで, 本プロジェクトではデー タベースの使用を検討した. また, データベースを扱うのにどのような方法で行うかという課題が あり,Core data,SQLite などどのようなデータベースを扱うか検討した. 今回は Android 端末内に 存在し、簡単に使える SQLite を用いて開発を進めることになった. データベースの構築にあたっ て,Java によるデータベースの操作を学習する必要があった. データベースの構築, データベースでのデータの保存処理などの開発は阿部, 瀧澤, 富樫で行なった. (※文責: 冨樫健太) 2.5.7 Bluetooth 通信(iOS) この節では,iOS における Bluetooth 通信について述べる. 自律分散型ネットワークを構築する際に, 端末に付属している無線通信機能としては,WiFi と Bluetooth がある. 本プロジェクトでは, スマート化を目指しているので,WiFi より省電力な Group Report of 2011 SISP - 13 - Group Number 12-A/B Smart FUN Project Bluetooth を使うこととした. iOS で Bluetooth を使う場合は,GameKit フレームワークを使う必 要がある.GameKit フレームワークを使えばすれ違い通信も可能である. しかし,GameKit フレー ムワークを使うと,Android との Bluetooth 通信が出来ない. すれ違い通信も可能であるが方法が わからなかった. また, 文字情報だけではなく, 変数としての数値や画像データなどの送受信方法もわからないまま だったため, それらすべてをまとめたクラス・配列を送信する方法を見つけなければならなかった. (※文責: 江端竜次) 2.5.8 Bluetooth 通信(Android) ここではアプリケーションの開発の Bluetooth 通信技術の開発においてどのような課題が発生 し, またその課題を誰に振り分けたのか, その課題の説明について述べる. • サンプルの Bluetooth を利用した接続要請法の把握(阿部, 清野, 瀧澤) Bluetooth の接続を行うための課題 • Bluetooth を利用した情報の送受信法の把握(阿部, 清野, 瀧澤) Bluetooth 通信において情報を行うための課題 • アプリ起動時自動で一対一での Bluetooth 通信接続の確立(阿部, 清野, 瀧澤) Bluetooth 機能実装の初めのステップとして一対一での Bluetooth 通信の確立を行う • アプリケーション起動時に FunMap 起動アプリとの多人数接続の確立(阿部, 清野, 瀧澤) 自律分散型ネットワークを構築するために各端末が複数の端末との通信を可能とする. (※文責: 阿部和哉) 2.5.9 つぶやき機能の実装(iOS) この節では,iOS 版の FunMap のつぶやき機能の実装について述べる. つぶやき機能を実装するにあたり, つぶやきの表示方法や, 吹き出しの表示方法, 吹き出しの作 成,Bluetooth のすれ違い機能の実装,Bluetooth でのデータ送受信の形式関係, データベース関係の 実装などが課題として挙げられた. データベース関係の実装を江端が担当し,Bluetooth のすれ違い機能の実装を岩佐が担当し,Blue- tooth でのデータ送受信の形式関係を佐藤が担当し, つぶやき吹き出しの表示や吹き出しの作成を iOS 班の UI 班全体が担当した. (※文責: 渡邉憲人) Group Report of 2011 SISP - 14 - Group Number 12-A/B Smart FUN Project 2.5.10 つぶやき機能の実装(Android) この節では, つぶやき機能の実装について述べる. つぶやき機能を実装する上で課題になったことは, つぶやきを表示する際にどのように表示させ るかという問題担当者:清野, 渡邉やつぶやきの文字を見やすく表示するためにはどのようにすれば いいか担当者:渡邉, またつぶやいた文字をどのように相手に送るか担当者:清野があった. つぶやきを表示させる際に Android には文字のトースト表示があり, 簡単に実装できるが, 見た 目がつぶやきに見えないかつ文字を維持できない問題もあり, ピンの少し上に文字を表示し続ける ようにした. このとき背景画像などが更新され続けていたため, つぶやいた文字が表示されてもす ぐに後ろに隠れてしまう問題もあった. また, つぶやきを見やすく表示するために吹き出しを表示してその上につぶやきを表示すること で, つぶやき文字を見やすく表示することにした. つぶやいた文字を相手に送るのには Bluetooth 通信を行い, 自分の位置情報に繋げて区切り文字を付け, つぶやき文字を送ることにした. (※文責: 清野僚介) 2.5.11 カメラ機能の実装(iOS) この節では,iOS におけるカメラ機能の実装について述べる. カメラ機能を実装する上での課題は, カメラ自体が付いている端末とついていない端末でも基本的 に同じプログラムを作成するのでカメラ自体の有無を判断するプログラム, カメラ機能を動かすた めのプログラム作成, 画像の保存先,Bluetooth 通信の際の負担軽減のための画像サイズの縮小, な どであった. iOS では, カメラ機能を動かすためのプログラムは UIImagePickerController クラスを使うこと で比較的に簡単に実装できる. カメラ自体の有無を判断するプログラムや画像処理に関するプログラムの方が書かなければなら ない量が多い. (※文責: 瀧澤祐太) 2.5.12 掲示板機能の実装(iOS) この節では,iOS における掲示板機能の実装について述べる. 掲示板のように文字情報を表示する機能は iOS には,UITableView クラスというものがある. し かし, このクラスでは標準では表示できる形式に制約が多い. このクラスの表示する形式をオリジ ナルで作成することも可能であるが方法がわからない. 掲示板機能の実装における課題は, 掲示板 としての最適な表示方法のプログラムの作成である. (※文責: 瀧澤祐太) Group Report of 2011 SISP - 15 - Group Number 12-A/B Smart FUN Project 2.5.13 掲示板機能の実装(Android) この節では, 掲示板機能の実装について述べる. 掲示板機能を実装する上での課題は, まず端末同士で掲示板の書き込みを共有するために自律分 散型ネットワークを構成することである. 掲示板機能の実装にあたって,iOS 班,Android 班それぞ れから掲示板機能を実装する. 掲示板機能の開発は iOS 班から佐藤史弥,Android 班から(冨樫, 瀧 澤)が行なった. 掲示板機能の開発は Android 班から冨樫と瀧澤が担当した. 掲示板機能の開発にあたっての課題 は, まず掲示板を表示する際にはどのように表示させるかという問題や, 掲示板の情報を見やすく 表示するためにはどのようにすればいいか, また掲示板に書き込んだ情報をどのように他のユーザ と共有するかなどがあった. 掲示板を表示させる際に Android には文字をリストビューに表示するという方法や, 掲示板用の 画像を作成しその画像に文字を書き込む方法などがあるが, 書き込み情報と投稿日時を同時に保存 すること, 重複した内容を掲示板に書き込まないようにすること, 投稿日時順に書き込み情報を並 び替えるなどの問題が挙げられた. また, 掲示板機能はつぶやき機能と異なり複数の情報を通信す るため, 動作が遅くなってしまったり, 端末が落ちてしまうという問題があった. (※文責: 阿部和哉) 2.6 プロジェクト学習の課題 ここでは, プロジェクト学習の際の課題とその割り当てについて記載する. 2.6.1 予算・物品 この節では, 本プロジェクトにおける予算・物品についての課題を述べる. 本プロジェクトでは,iOS と Android のアプリケーションを開発するための環境とそのアプリ ケーションを実行するための端末や周辺機器が必要となる.iOS のアプリケーション開発では開発 のための Apple の Mac と, アプリケーションを実行するための iOS を搭載した端末が必須であ る.Android のアプリケーション開発は WindowsPC に統合開発環境を整え,AndroidSDK をイン ストールすることで開発は可能であり, 必須なのは Android を搭載した端末である. 本プロジェク トにおける予算・物品についての課題は上記の条件を満たし, また, 円滑に開発を進めることが可能 な物品の組み合わせを決定することである. (※文責: 岩佐尚史) 2.6.2 情報共有 この節では, 本プロジェクトで用いた情報共有における課題について述べる. 本プロジェクトでは, プログラムのソースや画像などのデータを共有するため, 比較的大きな Group Report of 2011 SISP - 16 - Group Number 12-A/B Smart FUN Project データを共有できる方法を使うことが課題である. また, 連絡事項やタスクを管理することができ, 安全性の高い方法を用いて情報共有を行うことが課題である. (※文責: 岩佐尚史) 2.6.3 中間発表 この節では, 未来大学で行われた中間発表会について述べる. 2011 年 7 月 15 日, 未来大学で前期の活動成果を報告する中間成果報告会が行われた. 報告会に 向けて, 作成するアプリケーション「FunMap」のプロトタイプの作成と,6 月下旬から発表資料の 作成, 発表練習を行なった. 以下に中間成果報告会で用いた各種発表資料の準備と内容と分担を示 す. • FunMap プロトタイプ(プロジェクトメンバー全員) 中間成果発表会に向けて,FunMap の開発班として Android,iOS の 2 つのプラットフォームによ りプロトタイプを作成した. 開発環境構築からはじまり,Android ではアプリケーション用の地図の 作成, アクセスポイントの電波強度を用いた現在位置の算出機能,Bluetooth 通信を用いた文字情報 の共有を行なった.iOS では Android と同様に地図の作成と現在位置の算出,Bluetooth 通信での情 報共有を行なった. • スライド(冨樫, 瀧澤) 発表用の資料として, 本プロジェクトの概要, 目的, 運営方法, 活動報告, 開発するアプリケーショ ン「FunMap」の説明を主な内容とした発表用スライドを作成した. 内容としては, 本プロジェクト の特徴, 自律分散型ネットワークについての説明, 開発アプリケーションの説明について, 実機デモ と共に説明したわかりやすいものに仕上げた. 担当教員からのアドバイスや, プロジェクトメンバー 間での意見を取り入れることで, 何度も修正した結果, 報告会では本プロジェクトについてうまく 表現できた. • ポスター(松山) 報告会のブース設営に使用するポスターとして, メインポスターが 1 枚, サブポスターが 1 枚の 計 2 枚を作成した. メインポスターでは, プロジェクトの概要, 前期での活動内容を, サブポスター では, 開発するアプリケーション「FunMap」の説明と, 開発内容の説明を主なコンテンツとした. ポスター作成の際に, アプリケーション名, タイトルバナーやデザイン, レイアウトや内容をプロ ジェクトメンバーで検討したことで, 来場する人達が見やすくわかりやすいようなポスターを作成 することができた.(図 2.1) • プレゼンテーション発表(阿部, 岩佐, 江端, 葛西, 佐々木, 佐藤, 清野, 瀧澤, 冨樫, 松浦, 松山, 渡邉) Group Report of 2011 SISP - 17 - Group Number 12-A/B Smart FUN Project 中間成果報告会に向けて作成したスライドを利用して, 当日割り当てられたプロジェクトメン バーで前期の活動成果を発表した. 発表の際,「プロジェクト概要」と「活動背景」,「FunMap の説 明」と「今後の活動計画」の 2 つに分けて発表者を 1 人ずつ割り当てて, それぞれ発表した. 事前に 発表練習を行い, 報告会当日には本プロジェクトの活動内容を理解してもらうことができた. • アンケート集計(プロジェクトメンバー全員) 報告会に来場し, 本プロジェクトの発表を聞いていただいた人を対象にアンケート調査を行ない, 報告会終了後にアンケートの内容を集計した. Group Report of 2011 SISP - 18 - Group Number 12-A/B Smart FUN Project 図 2.1 メインポスター (※文責: 阿部和哉) 2.6.4 中間報告書の作成 この節では, ワーキンググループに提出する中間報告書の作成について述べる. 中間報告書を作るにあたり, 担当の振り分け, 進捗の確認,Tex を用いた文書の作成, 添削を行った. まずは章立ての決定を前期プロジェクトで行ってきたことから山田, 清野, 葛西で行った. 次に担 当の振り分けは, 清野が行い, その人が前期中に行ってきた活動内容を踏まえて, なるべく均等にな るように割り振り, 各担当者が文書の作成を行なった, 担当者でもわからない部分はその部分を理 解している人とコンタクトをとって書いた. 書いた文書はサイボウズ Live にアップロードし, その 文書を清野が Tex ファイルに変換, 編集と文書の添削を行ない, その後担当教員に添削をしていた だいた. 進捗の確認としては, 期限よりも早めに締め切りを作り全員に提出させることによってなるべく 提出を遅れる人がでないようにした. Tex による文書作成は学校側から提案された,Tex 講座を受講した者(清野, 松山)が Tex の使い 方を学習し, 講座で学習した内容をプロジェクトメンバーに教え, 中間報告書を作成した. (※文責: 清野僚介) 2.6.5 オープンキャンパス この節では, オープンキャンパスについて述べる 2011 年 8 月 7 日, 未来大学で主に高校生へ向け て行われたオープンキャンパスに出展した. 作成するアプリケーション「FunMap」のプロトタイ Group Report of 2011 SISP - 19 - Group Number 12-A/B Smart FUN Project プによるデモ実演と配布資料の作成を行った. 高校生にプロジェクトの内容と大学生活についてや, 勉強, 受験に対する心構えなどをわかりやすく伝えることが課題としてあげられる. (※文責: 山田格) 2.6.6 最終発表 この節では, 最終発表の課題の割り当てについて記述する. 最終発表を行うに辺り, 発表用のスライド, ポスター, サブポスターの準備を行った. 更に発表資 料の捕捉としてアプリケーションのデモンストレーションを行う事となり, そのための操作説明書 を作成することとなった. 他にも客観的な評価を得るため, 成果発表のアンケートを作成した. 各々 の課題に対する人員の割り当ては以下のとおりである. • 発表用のスライド :渡邉憲人 • ポスター :松山陽子 • サブポスター :清野僚介 • 操作説明書 :松浦光輝, 佐々木龍 • アンケート作成 :清野僚介 次に最終発表を行う人員だが, 傍聴者からの質問に対応できるようにするため,Android 班と iOS 班から各 3 名出した. 発表は前半と後半にわかれていたため, アプリケーションのデモンストレー ションの補佐やアンケート等資料の配布をする人員が必要で, 他のメンバーの担当時間によって班 が偏らないようにするため, 発表時間の割り当てをする人員を決めた. 割り当ては以下のとおりで ある. • 発表時間割り当て :渡邉憲人 • 前半発表者 :渡邉憲人, 阿部和哉, 松浦光輝 • 後半発表者 :富樫健太, 佐藤史弥, 岩佐尚史 • 前半補佐 :松山陽子, 江端竜次, 葛西基海 • 後半補佐 :山田格 , 清野僚介, 佐々木龍, 瀧澤祐太 次に各担当ごとの課題である. Group Report of 2011 SISP - 20 - Group Number 12-A/B Smart FUN Project • 発表用スライド:中間の振り返りを交えつつ, 後期にどのような活動を行ったのかを発表す るために必要なスライドの情報は何か, 情報を少ない文字でどのように伝えるのか, 時間内 にまとめられるような資料であるかどうかという課題があげられた. • ポスター:プロジェクト概要の伝え方, 自律分散型ネットワークの説明,1 年の活動内容の説 明を入れるためにどういった見せ方をすればいいのかという課題があった. また FunMap の 略説をどのようにするかという課題もあった. • サブポスター:サブポスターは, ポスターの補完として各プラットフォーム毎のネットワー ク構築の詳細と,FunMap の仕様, 操作説明を行うため画像の選別やわかりやすい言いまわし を考える必要があった. • デモンストレーション:担当は特に決めておらず, 最終発表会当日に手の空いている者が行 う事となっており, スライドや口頭での説明だけではなく, アプリケーションを直接触って もらうことで, 傍聴者のイメージをより直接的に伝えることとした. その際, どのようなデモ ンストレーションを行えば, 傍聴者にアプリケーションンの魅力が伝わるのかを考える必要 があった. • 操作説明書:アプリケーションでデモンストレーションを行うにあたり, どのような操作を 行なってもらえばアプリケーションの概要が伝わるか, そのためにどのような書き方をすれ ばわかりやすく説明できるかという課題があった. 画面の説明も兼ねていたので実機が回ら ない間も, 見るだけで画面が理解できるような内容を作る必要があった. • アンケート:いかに, アンケートを書きやすくし意見を引き出すことができるか, また必要な 情報を得られる質問であるかが課題であった. 以上の課題の他にも発表練習, デモの進め方など当日の流れに関する課題があった. (※文責: 渡邉憲人) 2.6.7 最終報告書 この節では, ワーキンググループに提出する最終報告書の作成について述べる. 最終報告書を作るにあたり, 担当の振り分け, 進捗の確認,Tex を用いた文書の作成, 添削を行った. まずは章立ての決定を後期プロジェクトで行ってきたことや中間報告書に作成した項目から山 田, 葛西で行った. 次に担当の振り分けは, 清野が行い, その人が前期にどの項目を担当していたの か, また後期の活動内容を踏まえて, なるべく均等になるように割り振り, 各担当者が文書の作成を 行なった. 担当者でもわからない部分はその部分を理解している人とコンタクトをとって書いた. 書 いた文書はサイボウズ Live にアップロードし, その文書を清野が Tex ファイルに変換, 編集と文書 の添削を行ない, その後担当教員に添削をしていただいた. 進捗の確認としては, 期限よりも早めに締め切りを作り全員が提出させることによってなるべく Group Report of 2011 SISP - 21 - Group Number 12-A/B Smart FUN Project 提出を遅れる人がでないようにした. (※文責: 清野僚介) 組織形態 2.7 ここでは, プロジェクトの組織形態について記載する. 2.7.1 前期 作業が進むにつれて, 開発に使用する言語の違いなどで iOS 班,Android 班の組織間での連携が とりづらくなってきたため前期と後期で班の編成を変えることにした. それによって, 後期では効 率的に情報の交換ができるようになったため作業を円滑に進めることができた. 前期のメンバー構成, グループ構成は以下のようになっている. <リーダー> • 山田格 <ネットワーク班> • リーダー:江端竜次 < iOS 班> • メンバー:岩佐尚史(技術リーダー) • メンバー:江端竜次 • メンバー:葛西基海 • メンバー:佐藤史弥 < Android 班> • メンバー:阿部和哉(技術リーダー) • メンバー:清野僚介 • メンバー:瀧澤祐太 • メンバー:富樫健太 Group Report of 2011 SISP - 22 - Group Number 12-A/B Smart FUN Project <地図班> • リーダー:松山陽子 < iOS 班> • メンバー:佐々木龍(技術リーダー) • メンバー:松浦光輝 < Android 班> • メンバー:渡邉憲人(技術リーダー) • メンバー:松山陽子 • メンバー:山田格 (※文責: 葛西基海) 2.7.2 後期 後期では, 前期に続けてシステムを構築するネットワーク班と地図班がなくなり新しく UI(User Interface)班のふたつの班に分かれた. 後期のメンバー構成, グループ構成は以下のようになっている. <リーダー> • 山田格 < iOS 班> • リーダー:江端竜次 <ネットワーク班> • メンバー:岩佐尚史(技術リーダー) • メンバー:江端竜次 • メンバー:佐藤史弥 Group Report of 2011 SISP - 23 - Group Number 12-A/B Smart FUN Project < UI 班> • メンバー:葛西基海(技術リーダー) • メンバー:佐々木龍 • メンバー:松浦光輝 < Android 班> • リーダー:松山陽子 <ネットワーク班> • メンバー:阿部和哉(技術リーダー) • メンバー:清野僚介 • メンバー:瀧澤祐太 < UI 班> • メンバー:渡邉憲人(技術リーダー) • メンバー:松山陽子 • メンバー:富樫健太 (※文責: 葛西基海) 2.8 年間スケジュール ここでは, 本プロジェクトにおける年間スケジュールの記録を述べる. このプロジェクトでの大まかな活動の流れは, アイディアの提案, 決定, 開発技術の習得, アプリ ケーションの開発, コーディング, テストという流れで行った. 前期には, アイディア出し, 発表テー マの決定, 基本技術の取得, プロトタイプの作成, 中間発表である. 後期では, コーディングの続き, 付加機能の実装, テスト, 成果発表である. 以下, プロジェクト学習の時間単位における年間スケジュールである. 記載はしていない所でも, Group Report of 2011 SISP - 24 - Group Number 12-A/B Smart FUN Project 全ての日程で開発, 進捗確認, プログラムの調整を行い, 実際にプロジェクト学習の時間に開発を 行っている. ここの年間スケジュールは主な活動, 開発のスケジュールである. 4 月 27 日 • 初めてのプロジェクトメンバーーの顔合わせ, プロジェクトリーダーを決定 • iOS 班,Android 班を決定し, それぞれの班でグループリーダー, 技術リーダーを決定 • グループ内での情報共有の方法を決定 • プロジェクトの進行方法について決めた • 次回までにアイディアを考案 5月4日 • 全員でプロジェクトの方向性についてのアイディアを発表 • プロジェクトに必要と思われる作業・物品をリストアップ 5月6日 • アイディアの面白さと実現可能性についてグループ別で話し合い • リストアップしたものさらに絞るために審議した • これからの活動のスケジュールを作成 5 月 11 日 • 絞ったリストから各リーダーが集まり, 優先順位を決定し全体の予算案として提出した • 位置情報の取得の仕方について調査 5 月 13 日 • 調査結果を全員に報告 • それぞれのグループに分かれて勉強会を行った • 実装環境の整備 5 月 18 日 • 地図の使用の許可をもらい借りた • 使用する地図のデータの共有を可能にした • データの貯め方についての話し合い • 位置取りの決定の話し合い • 学内のアクセスポイントの探索 5 月 20 日 • 中間発表のデモンストレーションを想定し, コンテンツ開発の話し合い • 3 点のアクセスポイントから位置を決定するためのプログラムを作成 5 月 25 日 • 全体で地図を表示する際のインターフェース, アルゴリズムを確認 • 予算申請の結果が出されたため早めに必要な順から発注を依頼 Group Report of 2011 SISP - 25 - Group Number 12-A/B Smart FUN Project • スクロールで画像を切り替えるプログラムを実装 • アニメーションなどのプログラムをテスト 5 月 27 日 • 画像切り替えのテスト版作成 • ネットワークのプログラムの実装 6月1日 • Bluetooth での端末間通信. 文字情報だけでなくファイルを送れるようなプログラムを実装 • オープンキャンパス, 便覧の地図を画面表示用に加工 • 画像の情報を取得できるようなプログラムを実装 • 基準となるアクセスポイントの座標を決定(仮) 6月3日 • 先週までに作ったプログラムとの組み合わせを行った • 組み合わせでの確認と修正 • 未来大オープンキャンパスの打ち合わせ 6月8日 • WiFi 実装 • WiFiscan の応用について話し合い • チャットシステムの基礎を実装 6 月 10 日 • WiFiscan で一部の位置測定が簡易的にできるように実装した • 測定に合わせて画像を動かした • ライセンスが取れたため実機で確認 6 月 15 日 • フリック操作の調査 • チャット機能のレイアウトの改変 • 院棟の地図の準備 • MacBook の開発環境整備 6 月 17 日 • 地図上へのポインタの描画ポインタの準備 • アクセスポイントの正しい位置の調査 • データベース本体とデータベースのプログラムの作成 • Bluetooth の通信についての勉強とプログラム作成 6 月 22 日 • 中間発表に向けて, これまでの活動・成果物の確認 Group Report of 2011 SISP - 26 - Group Number 12-A/B Smart FUN Project • 中間発表までのスケジュールを確認 • プログラムの整理 • アクセスポイントから位置の計測と座標の決定 • Bluetooth で座標を送るプログラムの作成(iOS) 6 月 24 日 • スレッドタイマーの作成 • Bluetooth で座標を送るプログラムの作成(Android) • 中間発表の発表資料作成の割り振りを決定 6 月 29 日 • 全体で現在までの進捗確認 • 中間発表のデモなどの内容を決定 7月1日 • 地図の準備, 座標の調整 • アクセスポイントのデータベースを作成 • プロトタイプの実行 • Bluetooth(認証あり)の完成 • すれ違い通信のプログラム作成 • デモ作成 7月6日 • アプリケーションのデモンストレーションの調整 • プレゼンテーション資料の作成 • ポスターの作成 • プロトタイプの実行 7月8日 • 報告書の担当の割り振りを決定 • スライドの内容の審議, 改正 7 月 13 日 • 中間発表の資料の作成, 発表練習 • スライドを使った中間発表を担当者がメンバーに発表し, 意見, アドバイスをとりまとめる • 中間発表の評価シートのとりまとめ, 会場設営, ブース設置の担当を決定 7 月 15 日 • 中間発表を実施 • 評価シートの結果をまとめ, 個人の反省をまとめサイボウズ Live で共有 7 月 20 日 Group Report of 2011 SISP - 27 - Group Number 12-A/B Smart FUN Project • 中間発表の反省 • 報告書, フィードバックの作成 7 月 22 日 • 後期活動内容の話し合い • 後期活動の割り振り • 未来大オープンキャンパスの打ち合わせ 9 月 28 日 • 夏季休業中の活動報告 • 前期の活動内容の確認 • 後期での予算の使い道を審議 9 月 30 日 • グループごとに分かれ今後の話し合い • 新地図の作成のため, 未来大の測量 • プログラムの構造を改正 10 月 5 日 • 地図の測量 • 電波を一定間隔で扱うプログラムを作成 • これからのスケジュール, メンバーのタスクの話し合い 10 月 7 日 • Bluetooth のすれちがい通信の確認 • アプリケーションの仕様(仮)を決定 10 月 12 日 • 画像表示のプログラム改良 • スレッド処理の改良 • 仕様書の変更 10 月 14 日 • デバイスを常に検出可能にするプログラムの作成 • つぶやきプログラムの作成 10 月 19 日 • 画像のタッチイベント処理のプログラムをこれまでのプログラムに組み込む • 位置座標計算式の改良 10 月 21 日 • ピンの表示の改良 Group Report of 2011 SISP - 28 - Group Number 12-A/B Smart FUN Project • 複数同時情報共有のプログラムの作成 10 月 26 日 • 位置座標計算式の改良 • つぶやきとユーザインタフェースの改良 • これまでのプログラムに, 位置情報を送れるような Bluetooth の機能, 画像スライドを組み 込んだ • FunMap でカメラを使えるようなプログラムの勉強 10 月 28 日 • つぶやき機能に吹き出しの実装 • スレッド処理の改良 • ネットワーク班と UI 班のプログラムを合わせて試してみた 11 月 2 日 • 10 月の進捗確認 • 11 月の製作目標とスケジュールの確認, それに伴うペア再編成(Android 班) 11 月 4 日 • UI の会議 • 掲示板機能の開発 11 月 9 日 • つぶやきを相手に送信できるようなプログラムを作成 • つぶやきプログラムの改良 • 掲示板のレイアウトの決定 • 書き込み機能の実装 11 月 11 日 • カメラ機能の実装 • 画像データの送受信, 表示 • 文字列から位置情報の取得 • イメージボタンの組み込み 11 月 16 日 • つぶやきのメッセージ通信と受信時の動作の実装 • レイアウトの改良 • プログラムの調整 11 月 18 日 • データベースとユーザインタフェースの調整 • 地図のリサイズと改良 Group Report of 2011 SISP - 29 - Group Number 12-A/B Smart FUN Project 11 月 23 日 • 最終発表ポスターの作成 • 現状のプログラムの確認 • アニメーションの作成 • 掲示板書き込み更新時間の表示 • Bluetooth 通信の整備 11 月 25 日 • プレゼンテーション資料の作成 • プログラムの修正 11 月 30 日 • プレゼンテーション資料の作成 • 最終報告書についての話し合い • 評価シートの作成 • 付加機能の作成 12 月 2 日 • プレゼンテーション資料の作成 • 発表に向けてプログラムの調整 12 月 7 日 • プレゼンテーション資料の作成, 発表練習 • プログラム最終調整 • スライドを使って発表し, メンバー間で指摘, 意見, アドバイス 12 月 9 日 • 最終発表を実施 12 月 21 日 • 最終報告書の担当, 締め切り確認, 作成 • 各イベントの参加意思確認 12 月 23 日 • 最終報告書の作成 (※文責: 松浦光輝) Group Report of 2011 SISP - 30 - Group Number 12-A/B Smart FUN Project 第3章 提案アプリケーション この章では, 開発するアプリケーションの提案内容を記載する. 3.1 概要・目的 この節では, 本プロジェクトで企画開発を行ったアプリケーションの概要と開発目的を述べる. 本プロジェクトの目的は, はこだて未来大学内の生活をスマート化するためのアプリケーション 「FunMap」を作成することである.「FunMap」提案の背景には IT などの新技術でエネルギー効率 を高め, 省資源化を徹底した環境配慮型の街づくりであるスマートシティのコンセプトを本大学に 適応し, エネルギー効率を高めた環境配慮型であるだけではなく, 震災などに見舞われても自律分 散型に機能できるためのインフラに着目した. 「FunMap」は現在の位置情報を基盤とし, 地図上につぶやきを表示するアプリケーションであ る.twitter のような感覚でつぶやきをすると, それが地図上に表示される. メイン機能は現在位置の表示, つぶやきの地図上と掲示板への表示と共有である. 現在位置の表 示は本学内のアクセスポイントの座標を調べ, その電波強度を取得して算出しているが, 将来的に はユーザの補正などにより自動でアクセスポイントの座標を取得できるようにしたい. つぶやき・ 掲示板については, 自動で取得した現在地でのつぶやきと位置指定した場所でのつぶやきの 2 種が ある. 掲示板では, 部屋別につぶやいた内容を見ることができる. また, これらの情報は Bluetooth によって共有され, 差分を取得することができる. このように「FunMap」では, つぶやきにより様々な場所の情報をリアルタイムに閲覧できる. この情報をもとに, 大学生活を効率化し, スマート化できると考える. また, 普及のすすむスマート フォンを用いて気軽に利用できるのが強みであると考える. (※文責: 岩佐尚史) 3.2 開発アプリケーションのアイディア提案 ここでは, 開発アプリケーションのアイディア提案の際に出たアイディアについて記載する. はじめに, 以下の基本コンセプトに基づき, ブレインストーミングを行い 1 人 1 つのメインアイ ディアとその他アイディアを箇条書きでの提案を行った. 基本コンセプト IT などの新技術でエネルギー効率を高め, 省資源化を徹底した環境配慮型の街づくりがスマート シティーのコンセプトであるが, 本プロジェクトは, この考えを未来大学に実際に適用し,IT で大学 に集う人が利用し易いが,エネルギー効率を高めた環境配慮型であるばかりでなく, 震災などに見 舞われても自律分散的に機能できる大学に生まれ変わためのインフラの提案と, それを用いた実証 システムの開発を行う. 提案されたアイディアは以下のとおりである. Group Report of 2011 SISP - 31 - Group Number 12-A/B Smart FUN Project 山田格 ◎メインアイディア • 使う端末 スマートフォン • どのようなシーンで使えるか 冷暖房の管理 • 機能(情報)を持つか • 学内の温度の変化状況などを様々な情報と複合し, 効率のよい冷暖房の仕方を見つける. • どこに場所のユーザーがどのように感じるかといった体感温度も含め, 総合的に判断する. • これによって個々が快適かつ, 省エネに貢献できる. ○その他アイディア(箇条書き) • 自販機, 購買など商品の情報 • 教室の利用状況 • 教授の在室状況 • ストリートビュー • 大学構内を FPS のように探索できるマップ 岩佐尚史 ◎メインアイディア • 使う端末 →スマートフォン, タブレット PC • どのようなシーンで使えるか →その場所でのつぶやきが見れる • 機能(情報)を持つか →特定の場所でのつびやきをみれるツイッターみたいなもの. ツイッターは誰がつぶやいた かを見るものだが, これは場所がつぶやくような感じで見ることができる. その際に画像な どの情報を添付できる. ◎あったら良い機能 • 使う端末 →スマートフォン, タブレット PC • どのようなシーンで使えるか →会議など • 機能(情報)を持つか →即席でネットワークを構築する. ネット環境が無い場合でのネットワーク構築による情報 共有ができる. ネット環境のないちょっとした会議(井戸端会議程度でも)で自らの端末にある画像やテキ ストなどを共有できる.(スカイプのようなことができる) 江端竜次 Group Report of 2011 SISP - 32 - Group Number 12-A/B Smart FUN Project ◎メインアイディア • 使う端末 スマートフォンなど Bluetooth が使えるものならなんでも, ゲーム機などでは対応が面倒 かな? • どのようなシーンで使えるか ネットワークない状況でも使えるようなもの. どんな場所でも, つぶやきが見れたらいいなと • 機能(情報)を持つか 教室ごとにつぶやきを時間順にまとめられて, さらに天気, 暑さ, 人の情報などにまとめられ てたら嬉しい ○その他アイディア(箇条書き) • 人が集まる際にはある特定の人が配信してるのを集めるようなゲームができそう 全く違う感じでは • 写真を撮るだけで物や建物の高さが分かるアプリ • 数人で集まったり, 人を追いぬくと反応するアプリ 既存であるアプリは • すれ違いツイッター, すれちがったー,EncountMe のようなすれ違いを利用したアプリ • GPS を使った鬼ごっこ用アプリ • Bluetooth を使ったトランシーバー風アプリ「bluewoki」などが気になった 清野遼介 ◎メインアイディア • 使う端末 携帯電話などの携帯端末, 出来ればゲームとかでもしてみたい • どのようなシーンで使えるか 現在の天気, 緊急災害速報, その日その時に行われるイベントのお知らせ, 休講情報, 空き教 室情報など普段から探したり見に行かないとわからないものをお知らせする. • 機能(情報)を持つか 使用者は受け取りたいお知らせ内容を個別に登録しておくと, 見たいときに望んだ情報が見 られる. ○その他アイディア(箇条書き) • 購買の安売りや今これが売れている!などの商品情報 • 友達検索, 友人登録しておくと気軽に探せる. もちろんジャミングモード(見つからない) 搭載 • リアルタイムで映像処理(カメラが必要?)リアルタイムコメント機能とかあれば面白い かも • 未来大生のみ使える部屋分けされてるチャットとか(portal に関連付ける?) 瀧澤裕太 ◎メインアイディア • 使う端末 Group Report of 2011 SISP - 33 - Group Number 12-A/B Smart FUN Project 携帯電話などの携帯できる端末. • どのようなシーンで使えるか 宴会前などに幹事の人が宴会のメンバー, 人数が知りたい時. • 機能(情報)を持つか サークルなどの歓迎会などがあるときに, 宴会のメンバー, 人数が見れる. 登録制で宴会数時 間前(使用者が設定可能)まで参加登録, 登録解除可能. 宴会費用なども載せることが可能 で, 宴会に参加する人もハッピー. ○サブアイディア(箇条書き) • 空いてる講義室がわかる. • 購買の今日の弁当の写真, 値段が見れる. 松山陽子 ◎メインアイディア • 使う端末 携帯電話などよく持ち歩かれる電子端末 • どのようなシーンで使えるか 携帯端末を持って移動して自分の行動パターンを記録. そのパターンに従い異常なズレがあ るとアラームなどで知らせる.(寝過ごし防止など) • 機能(情報)を持つか 生活リズムのズレ防止やスケジュール管理. ○その他アイディア(箇条書き) • 空き教室情報 • 歩行ルートでカロリー計算 • 個人的に地図にイベント(スケジュール)情報を書ける. それを共有することも可能. • 宝探し・カーペットを全部踏む・自分の定位置発見 • 地図上に口コミ情報などを表示して, 観光客に地元を紹介する. 渡邉憲人 ◎メインアイディア • 使う端末 携帯もしくは PSP,iPhone • どのようなシーンで使えるか ちょっとハイテクな鬼ごっこをしようというアイディア. 使い方次第で情報共有や他にも応 用可能な・・はず・・ • 機能(情報)を持つか :鬼ごっこ前提で付加したい機能共通:学内マップの表示, チャッ ト機能, 鬼と子(追われる側)の機能をスイッチするもの ストップウォッチ 鬼側:子の端末に一定距離まで近づくと, その端末の位置情報を表示する. 鬼同士でのチャット機能 数分に1度, 見たいエリアの子の位置情報を得れる機能 Group Report of 2011 SISP - 34 - Group Number 12-A/B Smart FUN Project 子側:鬼の端末に近づくと, 警告音がなる 子同士のチャット機能 数分に1度, 数秒間だけ鬼のマップに映らず警告音も鳴らなくする機能 他にも特殊な機能つけたり, ある条件でのみ使える機能とかあるといいなぁ・・ ○その他アイディア(箇条書き) • ストラップで迷子(落し物)探し • 学内 twitter 佐々木龍 ◎メインアイディア • 使う端末 iPhone(スマートフォン) • どのようなシーンで使えるか 教室などの利用状況を調べる • 機能(情報)を持つか 今その教室では何の講義をしているのか一目でわかる. スケジュールをあらかじめ作ってお けば, リアルタイムの情報ではなく未来の利用状況もわかる 数分後に講義があればアラームなどで知らせる 教員が教員室にいるか(できればどこにいるかもセンサーを使って把握したい) 椅子にセンサーをつけるなどして, どこに使われていない机があるか調べる(昼食のときな ど便利) ○その他アイディア(箇条書き) • 地図上で人の多い場所をサーモグラフィのように表示(リアルタイム), もしくは, 自分がい る位置の色がだんだん変わっていくようなのでもいい • いつ自分がどこにいたかの情報を蓄積することでなにか新しいことが見えたり, また, 落し 物をしたときに自分が居た席や通った道がわかれば助かる • ドロケイ • 音を拾ってセンサーのように使うのも面白いかも • AR を活用したい • 地図上で自分や他の人の位置を把握することで, 何かゲームが出来るかも 佐藤史弥 ◎メインアイディア • 使う端末 スマートフォン, タブレット PC,(PSP). • どのようなシーンで使えるか 学祭で, 今現在どこで何をやってるか, また, それがどのような状況なのかわかるように. • 機能(情報)を持つか 校内のどこで何をやってるかを地図で示し, 更に詳しいないよう(タイムライン, 出店の商品 の値段等)を文字情報等で示す. それが今どのような状況なのかを, 他の人が撮影した画像・ Group Report of 2011 SISP - 35 - Group Number 12-A/B Smart FUN Project 映像や, 防犯カメラのような感じで撮影した映像を配信する. ○その他アイディア(箇条書き) • 今の存在しているネットワーク以上に距離を感じない物を作りたい. 阿部和哉 ◎メインアイディア 未来大内条件探索 • 使う端末 スマートフォン できればゲーム機も使えれば面白いかも • どのようなシーンで使えるか • 涼しい空き教室でグループ作業がしたいとき, 講義を行っていない温度∼以下(涼しい)空 きスペースの検索など • 一人で静かに作業がしたいときに, 周りに人がいない∼Hz 以下(静かな)の場所の検索など • 機能(情報)を持つか 位置情報, 音量, 温度, 照度などの取得 特定の位置の映像取得 条件に一致する場所の検索 ○その他アイディア(箇条書き) • やはり発表するとき派手なもののほうが○なのだが • 端末はできればゲーム機でやったほうが見た目的には○ • iPhone なんかでも • 何をつなげるか • 温度, 位置情報, 映像 • 何をするか • 食堂の込み具合→カメラ設置 • 未来情報が計算できるなら食堂の込み具合を確認できる? • 鬼ごっこ • 接続できた, だから?みたいなことにならないか・・・? • ゲームみたいなものやるとしたらこのシステムを用いてできることを把握した上でこんなこ とをやってみたてきにやってみたほうがいいか? • ただ鬼ごっこしましたじゃだめ • 後に使うとしたら温度が知れて, カメラで映像が見れるアプリ? • ∼さんの検索 • プライバシーの侵害? • 位置情報(食堂)を読み取れたとしてその情報は完全か?情報の送信をしてない人がいる かも • やはり構築する上でメインとなるのは個々の位置情報, 映像, センサの情報などがメインか? 富樫健太 ◎メインアイディア • 使う端末 Group Report of 2011 SISP - 36 - Group Number 12-A/B Smart FUN Project スマートフォン, 携帯, ゲーム機のうちのどれか • どのようなシーンで使えるか 教室の状況を調べる. 調べたい教室は講義を行っているか, 講義はやっていないけど人が結 構いるか, 静かで集中しやすい状況か, 涼しいか暑いか, などがわかるようにすると空き時間 などでこれから勉強や作業したいという時, 場所を探すのに役立つのではないか. または, リ アルタイムでの情報通信を利用して何かゲーム的なことができたら面白そう. たまにテレビ で放送される「逃走中」みたいなやつとか. • 機能(情報)を持つか 映像, 音声, 温度, 湿度, 照度, その他空調に関わる情報など ○その他アイディア(箇条書き) • 予め自分がいつどこにいなければいけないのかを記録し, 予定した時間の数十分前に, 記録 した場所と自分が今いる場所を比較する機能(受ける講義を間違えたときにすぐ気づける, うっかり忘れがちな補講) • 購買, 食堂の込み具合, お勧め情報, 在庫などの情報がわかる • プライバシーの問題も考慮して設計する • 登校時のバスの乗車者数の記録と未来大の講義情報などから, 下校時のバスの乗車者数の予 測をおこなうシステム 松浦光輝 ◎メインアイディア • 使う端末 → iPad,iPhone • どのようなシーンで使えるか →講義の場所, 担当の先生, 講義の課題を知りたいとき • 機能(情報)を持つか →講義が行なわれている場所の位置情報 →その講義の課題の有無 →必要な教科書の情報 ○その他アイディア(箇条書き) • 先生の居場所 →先生の教室の場所とその教室に今いるかどうか • 本日のイベント情報 →今日何時にどこどこで何かのガイダンスが行なわれるだとかの情報 • ゲーム(鬼ごっこ, 物探し) →発信機みたいなのをを持ってやる? • 食堂, 購買の混み具合 →何曜日の何時は混みやすいとかの統計データ • 教室の使用状況 →今講義をやってなくて使える教室はどこか 葛西基海 Group Report of 2011 SISP - 37 - Group Number 12-A/B Smart FUN Project ◎メインアイディア • 使う端末 携帯電話 • どのようなシーンで使えるか 大学など人が多いところ. • 機能(情報)を持つか 食堂の混み具合をケータイなどの端末で知ることが出来る 発表後, これらのアイディアから開発端末はスマートフォン, 機能は汎用的に使えるであろう現在 位置の表示を当面の目標として開発を開始した. (※文責: 山田格) 3.3 類似アプリケーションの調査 ここでは, 類似しているアプリケーションについて記載する. まず本プロジェクトのアプリケーションでは,Bluetooth で自律分散ネットワークを構築し, 端末 間で位置情報やメッセージの送受信を行うことが出来る. そこで, 位置情報や自律分散ネットワー クを活用した類似アプリケーションの調査を行った. 位置情報や自律分散ネットワークを使用したアプリケーションの例 • EncountMe EncountMe(図 3.1)は,Twitter アカウントを使ってログインし, 他の EncountMe ユーザ とすれ違うと通知が表示されるアプリケーションである.GPS で現在地を測定しすれ違っ た場所を地図上で確認できる. すれ違った相手にコメントやプロフィール情報を公開できる ノート機能が特長で, プロフィール情報は質問になっており, 回答はその質問に答えた人だ けが見られる仕組み. すれ違いから同じ趣味を持つ人と出会ったり, 新しい発見をしたりで きる. すれ違った人数を数える機能も備えている. すれ違いの認識には Bluetooth を用いて おり,Bluetooth ですれ違いが発生しないユーザーのために, サーバーサイドでもすれ違いの マッチングを行っている.Bluetooth は P2P 通信なのでそのときその場所でのすれ違いにな るが, サーバーサイドでのすれ違いはアプリより送信された位置情報を元に距離と時間差を 少し許容してマッチングを行う仕様になっている.[18] • iCloud Apple の iCloud(図 3.2)のサービスの一つに友達を探すという機能がある.GPS を用い て家族や友人の iOS 端末の現在地をマップ上に表示することの出来るアプリケーション で一時的な共有やプライバシーの設定も可能である. また iCloud には,iPhone を探すとい う機能もあり,iPhone を紛失した際に iCloud を利用し, 端末の位置を特定することが出来 き,iCloud 側から端末にメッセージを送ったりロックをかけたりすることが可能である.[19] • twitter twitter(図 3.3)は, 自分がつぶやいたコメントや相手がつぶやいたコメントを共有し, 掲示 板のように表示するアプリケーションである.iOS 版と Android 版があり, アカウントさえ 同じであれば iOS と Android 間の情報共有は可能である. コメントのデータなどはサーバ に保存されているため自律分散型ネットワークではないが, つぶやきの送受信など, 類似し Group Report of 2011 SISP - 38 - Group Number 12-A/B Smart FUN Project 図 3.2 図 3.1 EncountMe iCloud ている部分は数多くある. 図 3.3 twitter • Skype Skype(図 3.4)は,P2P 技術を用いたコミュニケーションソフトであり, コメント共有, 画像 送受信, 通話, ビデオ通話を行うことが可能である. 各通信やデータの保存にはサーバを用い ず, 自律分散型ネットワークを構築している. そのため昨年の東日本大震災時には通信が途 Group Report of 2011 SISP - 39 - Group Number 12-A/B Smart FUN Project 絶えることがなく, ネットワークを構築することができていた.PC のプラットフォームであ る Windows,Mac OS X や携帯端末のプラットフォームであるである Android,iOS 用のク ライアントアプリケーションがあり,OS に依存することなくネットワークを構築することが 可能である. 図 3.4 Skype これらのアプリケーションと本プロジェクトのアプリケーションが類似している点は, 相手の位 置情報を自分の端末から知ることができるものがある点, 自律分散型ネットワークを構築している ものがある点, 情報を共有している点である. 本アプリケーションと異なる点は GPS とサーバを用 いている所であり, 広範囲での通信には便利であるが, 局地的な通信を行うには不便である.GPS 情 報を用いているため建物内での正確な位置を測定することができず, 正確な位置が求められるよう なことには使うことが出来ない. また, サーバを用いているため,3G 回線や WiFi と接続しなけれ ば通信を行うことができず, サーバが機能しなくなると通信を行うことができなくなるという点が ある. (※文責: 葛西基海) 3.4 システム概要 ここでは, システムの概要について記載する. 本システムは、スマートフォン・タブレット PC の Bluetooth を用いた自律分散型ネットワー クでの位置・文字・画像情報の通信を行うアプリケーションである.「FunMap」のユーザが操作 し, インターフェイスで扱う機能として 4 つの機能を実装した.「位置表示機能」,「つぶやき機能」, 「掲示板機能」,「カメラ機能」がこれにあたる. 以下に主な 4 つの機能の概要を記述する. 1 つ目は「位置表示機能」(図 3.5)である. この機能は自分とネットワークを共有しているユー Group Report of 2011 SISP - 40 - Group Number 12-A/B Smart FUN Project 図 3.5 位置表示機能 ザーの現在位置をアプリケーション上の地図画面上に位置を表示する機能である. ネットワークを 共有しているユーザーの位置を表示するピンとして 8 種類(図 3.6)あり, 自分の現在位置を表示す るピン(赤いピン)と, 自分以外のユーザーの位置を表すピンがある. 現在位置の取得として, 自動 取得と手動取得(iOS のみ)である. 現在位置の取得方法として, 学内にあるアクセスポイントの電 波を使った方法を使っている. 図 3.6 ピン 2 つ目は「つぶやき機能」である. この機能は FunMap で文字を入力することで地図上につぶや きを表示し, 他のユーザーと共有する, という機能である. つぶやきのデータは Bluetooth で他の ユーザーと通信し, つぶやきのデータを共有し合うような仕組みになっている. 作成したつぶやき 機能は,Android と iOS でいくつか異なる点がある.Android では,Bluetooth 通信で各ユーザーが 一番最近につぶやいたデータを表示する. iOS では, 各ユーザーがネットワークを共有している状 態で, それぞれのユーザーがつぶやきデータをデータベースに保存し, 共有する. データベースに保 存されたつぶやきデータは一定感覚で更新されるようになっている. また, 端末のカメラで撮影し た画像データをつぶやきと一緒に投稿する機能の実装も iOS のみ行なった. Group Report of 2011 SISP - 41 - Group Number 12-A/B Smart FUN Project 図 3.7 掲示板機能 3 つ目は「掲示板機能」(図 3.7)である. 掲示板機能はつぶやき機能とは異なり, 部屋毎に掲示 板が存在し, その場所の状況について情報共有をすることを目的に実装した. 掲示板機能では, サー バなどを用いずに端末内のデータベースを用いて書き込みデータの保存を行う. ネットワーク内の ユーザー同士でデータベースを共有し合うことで掲示板の情報を共有することができる. 4 つめは「カメラ機能」である. カメラ機能は iOS のみ実装を行なった. カメラで撮影した画像 データをつぶやき機能や掲示板機能を用いることで, 画像を共有する機能である.(図 3.8) 図 3.8 画像共有 (※文責: 佐藤史弥) 3.5 実装機能 この節では, プロジェクトで企画・開発を行なったアプリケーションにおいて, 実装した機能につ いて述べる. Group Report of 2011 SISP - 42 - Group Number 12-A/B Smart FUN Project 本システムは, スマートフォン・タブレット PC の Bluetooth を用いた自律分散型ネットワーク での位置・文字・画像情報の通信を行うアプリケーションである. 主な機能は「Bluetooth 通信機 能」「位置取得機能」「タイマー機能」「地図上にピンを表示する機能」「つぶやき機能」「地図上に つぶやきピンを表示する機能」「カメラ機能」「画像表示機能」「掲示板機能」「画像一覧表示機能」 「地図画像変更機能」「自分の位置を手動で選択する機能」である. これらの機能はそれぞれが独立 しているのではなく, 相互的に呼び出して実行されアプリケーションを動かしている. これらの機 能を利用するアプリケーションの流れを示す. まずユーザはアプリケーションを起動する. システムは地図や各種ボタン・テキストフィールド を表示. 原点座標で自分のピンを表示. データベースに保存されている相手の位置, 自分や相手のつ ぶやきピンを表示, この際に表示されるデータは一定時間内の場合のものである(つぶやきの時間 設定は任意で選択可能).Bluetooth 通信機能の起動. タイマーを起動. これらの処理を終えた後に, メイン画面を表示して, 起動のための処理を終了する. 「タイマー機能」について説明する. 本システムでは, ユーザが操作を行わないで情報共有や位置 情報の取得を行うことを目標にしていた.「位置取得機能」や「地図上に位置ピンを表示する機能」, 「Bluetooth 通信機能」の一部はタイマー機能によって行われてる.「タイマー機能」により, 一定時 間ごとに「位置取得機能」や「地図上にピンを表示する機能」,「Bluetooth 通信機能」の一部は処 理を行うようになっている. 「位置取得機能」が行われると, 端末の周辺にある無線 LAN のアクセスポイントの探索を始める. 探索の結果から SSID が “fun-wlan” であるアクセスポイントを参照し, 取得できた “fun-wlan” の アクセスポイントが 3 ヶ箇所以上の場合, 端末自身が持っているアクセスポイントのデータベース よりアクセスポイントの Mac アドレスを用いて,3 次元の座標の数値を持ってくる. その値を元に 座標計算を行う. 計算方法は, アクセスポイントの電波強度を重みとした,3 点または 4 点の重心を 求める方法を用いた. 求まった, 座標を現在位置として変数に代入し, さらにデータベースにも挿入 されて,「位置取得機能」が終了する. アクセスポイントを参照し, 取得できた “fun-wlan” のアクセ スポイントが 3 ヶ箇所未満の場合, 最後に「位置取得機能」が正常に行われた時の値をもう一度用 いることとした. 同様に座標計算で出た結果が条件に合わない場合, 今回はすべての座標が 0 以上 ではない時, 最後に「位置取得機能」が正常に行われた時の値をもう一度用いることとした. 「タイマー機能」で行われる「地図上にピンを表示する機能」は, 自分の位置をピンで表示する機 能のみである. 相手の位置をピンで表示する機能は,「Bluetooth 通信機能」の一部で行われる.「地 図上にピンを表示する機能」では, 表示するピンがすでに表示されている場合は, ピンの位置をアニ メーションを使って現在の座標まで移動する. 今回は自分のピンなので, 起動後最初のタイマー処 理の場合でも, ピンは原点に表示してあり, 必ず画面上では自分のピンが表示されていないことは 無い. また, 他の端末の位置情報で表示されているピンの位置取得時間が設定された時間外だった 場合, 今回は 1 分以内ではない場合は, ピンの表示を消す機能もある.「タイマー機能」で行われる 「地図上にピンを表示する機能」はこれだけである. 「タイマー機能」で行われる「Bluetooth 通信機能」は,「位置取得機能」で取得した自分の位置 座標の送信と, 時間制限内につぶやかれたつぶやきのデータの送信である.「タイマー機能」で行 Group Report of 2011 SISP - 43 - Group Number 12-A/B Smart FUN Project われる「Bluetooth 通信機能」は Bluetooth 接続されている全端末に対して行われる.「位置取得 機能」で取得した自分の位置座標の送信は, 位置座標のほかに時間情報や端末識別情報が送信され る.「位置取得機能」で正しい値が取得できず最後に取得のされた値を用いていた場合も送信され る. 時間制限内につぶやかれたつぶやきのデータの送信は, 自分のつぶやきや, 受信したつぶやきな ども含め, データベースから時間制限内のつぶやきデータが送られる.「タイマー機能」で行われる 「Bluetooth 通信機能」はこれだけである. 次に「つぶやき機能」について説明する.「つぶやき機能」は, ユーザが自身の周りの状況などを 他のユーザと情報共有するための機能である.「カメラ機能」のにより取得した画像も共有可能であ る.「つぶやき機能」では,「地図上につぶやきピンを表示する機能」の一部や「Bluetooth 通信機 能」の一部も行われる. ここでは,「つぶやき機能」は情報を送信する機能であり, 他のユーザがつ ぶやきを送信し自分が受信し処理する機能は「Bluetooth 通信機能」の一部とする. 「つぶやき機能」を行うには, 画面上のテキストフィールドにつぶやきのコメントを入力するか, 「カメラ機能」のにより画像を取得し, つぶやきボタンを押すことで実行される.「つぶやき機能」が 実行されると, 位置情報を取得, 時間を取得, 画像の有無の確認, テキストフィールドのコメントの 有無の確認が行われる. 続いて, それらの情報と端末識別情報が一つにまとめられる. そのデータを つぶやきのデータベースに挿入される. 「つぶやき機能」で行われる「Bluetooth 通信機能」は,「つぶやき機能」が実行し, すべてのデー タが集められたら, それを Blutooth で接続されている端末すべてに送信する. 「つぶやき機能」で行われる「地図上につぶやきピンを表示する機能」は, 取得された位置情報を もとに, 画面上の地図の上にピンを表示する. ここでのピンはつぶやきのコメントがあればピン画 像の上部に吹き出しを表示し, そこにつぶやきのコメントを表示する. つぶやきに画像がある場合 は, サムネイル用のピンが表示され, ピン画像の上にサムネイルボタンを表示する. 次に「Bluetooth 通信機能」について説明する. ここでの説明は,Bluetooth 通信の接続と受信に 関することである.Bluetooth 通信の送信については,「タイマー機能」と「つぶやき機能」で実行 される.「Bluetooth 通信機能」では「つぶやき機能」の一部や「地図上にピンを表示する機能」の 一部,「地図上につぶやきピンを表示する機能」の一部が実行される. 本システムが起動すると,「Bluetooth 通信機能」の接続機能が実行される. 本プロジェクトでは すれ違い通信が目的であるので, 本システムは常に周囲の端末を探している状態である. 端末が見 つかると, 接続を試みる. 逆に接続の依頼がくると無条件で接続するシステムになっている. 本システムの「Bluetooth 通信機能」の受信機能は常に動いている. 他の端末からデータを受信 した場合は, 受信したデータが位置情報かつぶやきかを判断する. 位置情報を受信した場合は, それらを位置のデータベースに記録し,「地図上にピンを表示する機 能」が実行されて, 画面上にピンが表示される. すでに表示されている端末のピンだった場合は, ア ニメーションを実行し, 受信した位置座標にピンを動かす. 新たに受信したピンの位置座標の場合 Group Report of 2011 SISP - 44 - Group Number 12-A/B Smart FUN Project は, 画面上に新規のピンを表示する. 受信した位置情報が条件に当てはまらない場合, 今回は設定さ れた時間の 1 分以内ではない場合, そのデータはデータベースに記録されない. つぶやき情報を受信した場合は, それらをつぶやきのデータベースに記録し,「地図上につぶやき ピンを表示する機能」が実行されて, 画面上にピンが表示される. ここでのピンはつぶやきのコメン トがあればピン画像の上部に吹き出しを表示し, そこにつぶやきのコメントを表示する. つぶやきに 画像がある場合は, サムネイル用のピンが表示され, ピン画像の上にサムネイルボタンを表示する. 次に「カメラ機能」について説明する. カメラ機能が使える端末では, 周囲の状況を画像として, 他のユーザと情報共有することが可能になる. 画像を送信する方法は「つぶやき機能」で説明した. また, カメラ機能のない端末でも, 画像の受信は可能でありその画像を見ることは可能である. それ は「画像表示機能」で説明する. 画面上の camera ボタンを押すことで「カメラ機能」は実行される. まず, 使用している端末のカ メラの有無の確認. カメラが付いていない場合はエラー文を表示して,「カメラ機能」は終了する. 端末のカメラが使える状態ならば, カメラ起動かすでに撮影されている画像の削除かを選択する. カメラ起動ボタンを押すとカメラが起動する. 画面もカメラ用の画面に変わる. 画像を撮影する と, 端末のフォトフォルダーに保存され, 本アプリケーション用に縮小サイズとサムネイル用の画像 が生成される. 画像を縮小する理由は,Bluetooth 通信の負担軽減が目的である. どちらの画像も, 一 度メモリに記録され, つぶやきを送信する際にローカルメモリに保存される. カメラ起動中にキャ ンセルをすると「カメラ機能」が終了し, メイン画面に戻る. 撮影されている画像の削除するボタンを押すと, 前回の撮影でメモリに保存されている画像を消 去する. つぶやきを送信する際に, 画像がメモリに残っていると画像も添付されるため, つぶやきの 内容が画像と違う場合のための機能である. 本システムはリアルタイムであることが目的であるた め, 削除された画像は使えなくなる. また, 過去に撮影されたフォトフォルダーに保存してある画像 が使えないのもこの方針のためである. 次に「画像表示機能」について説明する. 画像付きのつぶやきが画面上に表示されると, ピン画像 の上にサムネイル画像で作られたボタンが生成される. このボタンを押すことで,「画像表示機能」 が実行される.「画像表示機能」が実行されると, 画面の最前面に画像が表示され, 同時に閉じるボ タンも表示される. 閉じるボタンを押すことによって「画像表示機能」が終了され, メイン画面に戻 る. この機能は, カメラ機能のない端末でも行うことが出来き, 画像を撮影することは出来ないけれ ど, 他のユーザからの画像情報を共有できるシステムである. 次に「掲示板機能」と「画像一覧表示機能」の説明である. これらの機能はメイン画面とは別で 専用の画面が表示される. メイン画面にあるボタンを押すことによってこれらは実行される. 「掲示板機能」が実行されると, つぶやきのデータベースからすべてのつぶやきのデータを参照し て, 掲示板状に表示する. 表示内容は, 日時と位置とコメントである. また, 画像付きの場合はサムネ イル画像のボタンが表示され, このボタンをおすと「画像表示機能」が実行される. Group Report of 2011 SISP - 45 - Group Number 12-A/B Smart FUN Project 「画像一覧表示機能」が実行されると, データベースからすべてのつぶやきのデータを参照して, 画像付きのつぶやきを条件に探す. 画像付きのつぶやきがある場合は, それらの標準の画像を一覧 で表示する. 画像の下には日時と位置とコメントが表示される. これらの機能はメイン画面に戻るためのボタンを押すことによって終了する. 次は「地図画像変更機能」について説明する. この機能は, ユーザに自身の好みのデザインの地図 を選んでもらうための機能である. メイン画面とは別の設定画面から, 変更が可能である. メイン画 面に戻るためのボタンを押すことによって, メイン画面が表示され, 地図画像が変更されている. 次は「自分の位置を手動で選択する機能」について説明する. この機能は, ユーザ自身が正しい位 置をわかっていて, 本システムが正しい位置を取得できなかった際に使われる. 本システムは無線 LAN のアクセスポイントからの電波強度を用いて座標を計算しているので, 場所によって正しい 位置が取得できないことがある. 画面上のボタンを押すことによって,「自分の位置を手動で選択する機能」が実行され,「タイマー 機能」の「位置取得機能」が実行されなくなる. つまり最後に取得した位置からは自動では更新さ れなくなる. この状態でもう一つ別のボタンを押すことによって, 地図を押し現在地を指定できる 状態になる. (※文責: 富樫健太) 3.6 プラットフォーム別実装機能比較説明 この章では, 各 OS で開発された「FunMap」の機能の比較説明をする. Android で開発した機能 • Bluetooth 通信機能 • 位置取得機能 • タイマー機能 • 地図上にピンを表示する機能 • つぶやき機能 • 掲示板機能 • 掲示板選択機能 Group Report of 2011 SISP - 46 - Group Number 12-A/B Smart FUN Project iOS で開発した機能 • Bluetooth 通信機能 • 位置取得機能 • タイマー機能 • 地図上にピンを表示する機能 • つぶやき機能 • カメラ機能 • 画像表示機能 • つぶやき一覧表示機能 • 画像一覧表示機能 • 地図画像変更機能 • 自分の位置を手動で選択する機能 Android では, 開発に当たってのリファレンスの情報が iOS に比べて少なかったため,「カメラ 機能」といった画像の共有機能の実装はできなかった. • 掲示板選択機能 この機能は, 掲示板一覧を表示し, 選択する機能である. 学内 3 階の各場所ごとに掲示板を作 成しており, 目的の掲示板を選んでもらう機能である. iOS が独自に開発した「FunMap」の機能は以下の通りである. • カメラ機能 この機能は, 地図上に端末で撮影した画像をつぶやきと一緒に投稿する機能である. また, 掲 示板にも画像を添付することも可能である. 投稿者以外のユーザは投稿された画像データを 端末に保存するようになっている. つぶやくと吹き出しを表示し, カメラで撮影した画像を ピンにサムネイルとして表示する. サムネイルをタッチすると画像を表示する. また, 地図 上のピンをタッチすると吹き出しを非表示にすることができる. Group Report of 2011 SISP - 47 - Group Number 12-A/B Smart FUN Project • 自分の位置を手動で選択する機能 この機能は, 自分の現在位置を手動で機能である. これは, 現在位置がズレてしまったときの 対策として, 自分の位置を指定してピンを置くことができる. また表示されているピンを削 除することもできる. • 地図画像変更機能 この機能は,1 階から 5 階までそれぞれの階数の地図を選択し, 表示する機能である. 地図は 本棟から院棟の地図を表示する機能である. この機能は,「FunMap」の地図の背景を選択し, 変更する機能である. 余白は白であるが, 背景一覧から好みの背景を選ぶことができる. • 画像表示機能 この機能は, 画像付きのつぶやきが画面上に表示されると, ピン画像の上にサムネイル画像 で作られたボタンが生成される. このボタンを押すことで,「画像表示機能」が実行される. 「画像表示機能」が実行されると, 画面の最前面に画像を表示する機能である. OS 別実装機能の比較 Android と iOS の共通した機能として,「つぶやき機能」があるが, それぞれ異なる仕様がある. Android の「つぶやき機能」では, 通信が繋がると他のユーザがつぶやいた文章を共有し合うよう になる. 通信が繋がる前につぶやいていたデータも共有することができるが, 各ユーザの最新のつ ぶやき 1 件のみ共有が可能である.iOS の「つぶやき機能」では, 通信が繋がると他のユーザがつ ぶやいた文章を共有し合うようになるが,Android とは違い通信が繋がる前につぶやいたデータは 共有することができず, 通信中につぶやいたデータのみを共有するようになっている.iOS では, つ ぶやきデータをデータベースに一定の時間保存するため, 一定時間内に投稿された複数のつぶやき データを表示することができる. また, 位置情報の取得方法は Android,iOS 共に学内のアクセス ポイントの電波を用いた方法を用いているが,iOS では手動で位置を取得することも可能となって いる. (※文責: 富樫健太) Group Report of 2011 SISP - 48 - Group Number 12-A/B Smart FUN Project 第4章 課題解決のプロセス この章では, プロジェクトで行った様々な課題解決のプロセスについて述べる. 4.1 アプリケーションの機能選定 この章では, アプリケーションの機能の選定について記載する. このアプリケーションのメイン機能として位置を自分の位置を他人と共有する機能として「位置 共有機能」を採用した. そのうえ, アプリケーションをより活用したくなる機能として,「つぶやき 機能」,「掲示板機能」を選定した. それらの機能は全て,「FunMap」上に実装され,Bluetooth 通信 で情報を共有し, 自律分散型ネットワークにより情報を拡散させている. 以下に, それらの機能の詳細について記載する. • 位置共有 位置共有機能とは, まず自分の位置表示し知ることができる. 更に自分の位置を他人と共有する ことができ, それにより自分の位置と他人の位置を知ることが出来る(図 4.1 参照). 情報共有はペアリングしてる人でアプリケーションを起動している人としか共有できないが, 自 分と他人は必ずしも情報を共有できないわけではない自律分散型ネットワークなので, 自分とペア リングしてる人のペアリングしている人(自分とペアリングしていない人)とも情報を共有できる. 感覚的には, 友達の友達は友達という感じである. つまり, ペアリングがうまく行っていればすべて の人と情報を共有できるということである. それにより, 空いている教室がわかり, そこにいる人数 も分かる. 空いている教室が分かるということは, そこで快適に課題や講義の予習復習に取り組む こともできるということである. 他にも利用できることもある. 図 4.1 位置の共有 • つぶやき つぶやき機能とは, 人がつぶやいた文字をリアルタイムで共有することが出来る. 文字だ共有す ることができる(図 4.2 参照). しかし, データベースに保存していないので, すぐに消えてしま Group Report of 2011 SISP - 49 - Group Number 12-A/B Smart FUN Project う.iOS では文字だけではなく画像も共有することができる. つぶやきは, リアルタイムで文字が共 有できるので現在の講義室の状況を共有することができる. そのため夏場であれば, 涼しい部屋を 探したり, 冬場であれば, 暖かい部屋が分かる. そのため学内の涼しい場所, 暖かい場所を探しまわ る必要性がなくなりこのプロジェクトのタイトルであるスマートに生活が出来る. 図 4.2 つぶやき • 掲示板 掲示板機能とは, 選択した部屋の文字をその選択した部屋の掲示板を見ている人と共有すること が出来る機能である(図 4.3 参照). 更に, その文字をデータベースに入れることで共有することが できる. この文字は, 常に掲示板機能が動いている間位置情報と共にハッシュタグ付きで送るため更 新ボタンを押すことでその文字を取り出し見ることができる. この掲示板の活用方法の例は,yahoo の知恵袋, 学生内の業務連絡, 出題された課題の情報交換, 落とし物の報告のような活用方法などが ある. 図 4.3 掲示板 (※文責: 瀧澤祐太) 4.2 開発技術の習得 ここでは, 開発技術の習得方法について記載する. Group Report of 2011 SISP - 50 - Group Number 12-A/B Smart FUN Project 4.2.1 地図関係作成技術 ここでは iOS 端末や Android 端末向けのアプリケーション開発においての地図関係について説 明する。 前期では学生便覧の地図をスキャンして使用した。アプリ上で表示出来る形にするため、 Illustrator で線などを見やすく加工することにした。加工するため Illustrator 使用経験のあるメ ンバーが中心となり、加工を行いながら基本操作を学んだ。しかし、学生便覧の地図は縮尺があっ ておらず、後期にアプリケーションの精度をあげるために、実測を行い縮尺の正しい地図を作成 することとなった。また、アプリ上への画像表示技術の習得は Android 系と iOS 系各々で行い、 Android 系は [1] を参考に XML を用いたレイアウト技術や java からの表示技術、画像操作に関 してサンプルプログラムを動かしながら理解をし習得していった。iOS 系は主に Web サイト [20] [21] を参考に Objective-c の基本から表示や画像操作技術について習得を行った。自分の位置座標 を表示するために、三角測量などを学び、地図上に表示を行った。 後期はメジャーを使った実測を行い、正確な地図を作成するため、使用経験のあるメンバーか らグリットなどの技術を学び地図を作成していった。また、地図上につぶやきなどを表示するた め、Android 班は前期と同様の書籍を、iOS 班は [22] [23] の Web サイトを用いて表示技術を習得 した。 (※文責: 渡邉憲人) 4.2.2 位置情報技術(iOS) 位置情報を取得するためにまず始めに考えたのが GPS 情報を用いて位置を取得するという方 法であるが, 建物内では精度が極端に落ちてしまうので,WiFi の情報を用いて位置を測定するとい う方法を考えた.WiFi の情報は数多くあるが, その中でも Mac アドレス,SSID,BSSID, 電波強度 を用いることにした. しかし,iOS で WiFi の情報を取得しようとしたが,Apple が公式で出してい る API の中に WiFi の情報を取得できるものが無かった. そこで Private Framework というもの を用いることとした。Private Framework とは iOS の Framework としては存在しているが, 非公 式である Framework のことである. 具体的には Private Framework である MobileWiFi という Framework を用いるというものである. プログラムは [24][25][26] を参考にしながら作成した. (※文責: 岩佐尚史) 4.2.3 位置情報技術(Android) FunMap の開発において, 位置情報を取得する方法を検討する必要があった. 一般的に位置情報 を取得する手段として GPS を用いることが挙げられたが, 屋内での位置情報を知るには十分な精 度が得られない, また精度も下がってしまう, という点から WiFi の電波強度を用いた検出方法を採 用することになった.WiFi の情報には,Mac アドレス,SSID,BSSID などがある. そこで, 学内にあ るアクセスポイントから fun-wlan を検出し, 電波強度が強い 4 点, または 3 点のアクセスポイント の座標と電波強度から現在位置を割り出すこととした. アクセスポイントが 3 点のときは,4 つめの アクセスポイントの電波強度が小さすぎると現在位置がズレてしまう恐れがあったため, 微弱な電 Group Report of 2011 SISP - 51 - Group Number 12-A/B Smart FUN Project 波はカットし 3 点にすることで精度が向上した. (※文責: 江端竜次) 4.2.4 データベース構築技術(iOS) ここでは,2.5 データベースの構築(iOS)にあげた課題に対する開発技術の習得を以下にあげる。 まず iOS アプリケーションのデータベースを扱うために何を使用するかという課題に対して、Core Data は主に [28] を、Sqlite は [29] のプログラムを参考に使用した。Sqlite はクエリなどの確認に [5] や [30] を使用した。 (※文責: 江端竜次) 4.2.5 データベース構築技術(Android) この節では Android データベースの開発における技術習得について記載する. Android のデータベースの開発技術習得は, 主に URL に書いてあるサンプルを解析して行なっ ていった. 主に解析を行った部分は, • テーブルの定義 • レコードの挿入 • レコードの削除 • レコードの更新 • レコードの参照 であった. これらの技術を習得した後は, これを応用して必要な技術をどんどん盛り込み開発に必要な技術を 実装していった. http://www.ipentec.com/document/document.aspx?page=android-use-sqlite-simple-app http://android.roof-balcony.com/shori/strage/select/ (※文責: 瀧澤祐太) Group Report of 2011 SISP - 52 - Group Number 12-A/B Smart FUN Project 4.2.6 Bluetooth 通信技術(iOS) この節では,Bluetooth 通信技術(iOS)における技術習得について述べる. iOS における Bluetooth 通信は書籍を調べて,[3] より GameKit フレームワークを使うことに よって, 通信可能であることがわかった. (※文責: 佐藤史弥) 4.2.7 Bluetooth 通信技術(Android) Bluetooth 通信の開発技術習得のために Android 2.1 プログラミングバイブル [2] のサンプル BluetoothEx のサンプルを教材に開発を進めることとした. このサンプルはペアリング済みの端末, また検出された端末と Bluetooth 通信を行いデータの送受信を行うものである. このサンプルの機 能を一つ一つ紐解いて見てみることで理解を深めることとした. またサンプルの知識を深めるため に AndroidSDK 逆引きハンドブック [?], また [27] のサイトを参照した. (※文責: 阿部和哉) 4.2.8 報告書の作成 この節では, 期末提出物作成の開発技術の習得について述べる. 今回は Tex を用いて報告書の作成を行った. 学校側から Tex 講座が設けられて, その際にインス トールファイルが配布され, 必要なファイルをインストールすることで報告書の作成が可能になっ た. 以下, 配布されたファイルのインストール方法を記述する. 最初に GhostScript のインストールを行う. • 配布されたファイルの tex lec dist.zip を解凍する • 解凍してできたファイル gs902w32full-gpl.zip を解凍する • 解凍してできた setupgs.exe を実行する • 環境変数を設定する Windows メニュー → コントロールパネル → システムとメンテナンス → システム → システム の詳細設定 → 環境変数で,「ユーザー環境変数」の左の欄にある PATH(Path) という変数で [編 集] ボタンを押して, 変数値の現在の値を残したまま, 最後に ;C:\gs\gs9.02\bin を付け足し → [OK] を押して完了する Group Report of 2011 SISP - 53 - Group Number 12-A/B Smart FUN Project 次に Tex 本体のインストールを行う • まず,abtexinst 0 81r6.zip を解凍する • 次に, 解凍してできた abtexinst.exe を実行する 次へ を押すと,「W32TeX のインストール設定を行います」というウィンドウが出現する • ウィンドウ内で設定を行う 「ファイル保存場所」に解凍した tex lect dist の中にある LaTeX を参照する デスクトップに解凍した場合は C:\Users\owner\Desktop\tex_lect_dist\LaTeX を指定する •「ネットワークを使わない.」にチェックを入れおくこと • 後は, 何も考えずに [次へ] を何度か押す •「各種アプリケーションのインストール中・・・」というウィンドウが出てくるので, しばら く待つ • 完了を押すと, 再起動を求められるのでパソコンを再起動する. WinShell のインストール • まず,WinShell332.exe を実行 • WinShell というアイコンがデスクトップに出てくる • WinShell の初回実行時に利用する言語の問い合わせがあるので「Japanese」を選択 • WinShell を実行し, オプション → 全般 → 主な TeX プログラムの設定で, 右の「プログラ ム」から「PDFLaTeX」を選択して,「exe ファイル名」の欄を「dvipdfmx.exe」とし,「コ マンドライン」の欄を「“%s.dvi”」として決定する. この全工程を行うことで WinShell を用いた Tex 文書を作ることが出来る. この技術を用いて報 告書を作成した. (※文責: 清野僚介) Group Report of 2011 SISP - 54 - Group Number 12-A/B Smart FUN Project アプリケーション開発における課題の解決 4.3 ここでは, アプリケーション開発における課題の解決について記載する. 4.3.1 開発環境の構築(iOS) ここでは,2.5 開発環境の構築(iOS)にあげた課題に対する開発環境の構築(iOS)の開発技術の 習得について以下に述べる. 携帯端末のプラットフォームである iOS の開発環境構築について述べる. 開発するにあたり, 総合 開発環境に Xcode3 を用いたため,Xcode3 を用いた開発環境構築について述べる. 前提条件 • OS: Mac OS X 10.5.7 以上 • 空き容量: 約 4GB 以上 環境構築手順 環境構築を以下のような順番で行う. • Apple Developer の登録 • Xcode,iPhone SDK(現在は iOS SDK)のインストール • iOS Developer Program の登録 • 公開証明書の作成 • 公開証明書の登録 • デバッグで使用するデバイス情報の登録 • AppIDs の登録 • Provisioning Profile の登録 • プロジェクトの設定 • 複数台の Mac で開発 手順 • Apple Developer の登録 1. 以下の URL にアクセスし,Apple Developer 登録を行う. http://developer.apple.com/devcenter/ios/index.action ここで注意したいのが, 必ず英語のサイトで登録し, 英語で登録すること. 日本で登録した場 合, 登録中にエラーが発生しやすい. 2. 「Log in」を選択し,AppleID を登録する.AppleID が無い人は「join now」を選択し, 作成 する. Group Report of 2011 SISP - 55 - Group Number 12-A/B Smart FUN Project • Xcode,iPhone SDK(現在は iOS SDK)のインストール 1. 登録した AppleID でログインし,Downloads の「Download Xcode4」を選択し,「Xcode 4 for Mac OS X and iOS」という項目で端末の OS に対応した Xcode のダウンロードを行 う.Xcode3 を使っている人は,「Lokking for Xcode 3?」の「Download now」を選択する. 2. ダウンロードしたものを開き,「Xcode and iOS SDK」を選択し, 流れに沿ってインストー ルする. • iOS Developer Program の登録 1. 以下の URL にアクセスし,「Enroll Now」を選択する. http://developer.apple.com/programs/ios/ 2. 「continue」を選択する. 3. 既に AppleID を作成したので,「I have an Apple ID I would like to use for my enrollment in an Apple Developer Program.」を選択し,「Continue」を選択する. 4. 今回は個人登録なので,「Individual」を選択する. 5. 作成した AppleID を入力して,「Sing In」を選択する. 6. 必要な項目を全て「英語」で入力して,「Continue」を選択する. 7. 「iOS Developer Program」を選択して,「Continue」を選択する. 8. 入力した項目を確認して,「Continue」を選択する. この時に日本語が書かれてないかを確認 する. 9. 規約を読み, 同意するなら「I Agree」を選択. 10. Apple Online Store でライセンスを購入するために「Add to cart」を選択する. 11. 「iOS Developer Program 」という商品をカートに入れ, 購入する. 12. 入金が完了したら, メールが届いてるか確認する. 13. 送られてきたメールのリンクを開き,「Enter Activation Code」を選択すると, 認証が完了 する. この時, 高確率で「We are unable to activate your Apple Developer Program member- ship.」とエラーが発生するので, サポートに認証できなかった Enrollment ID を書いて送 る. ただ数週間かかる場合もあるので, サポートに電話をかけて対応してもらう方が確実で ある. • 公開証明書の作成 1. Application → utility にあるキーチェーンアクセスを起動し, メニューから「キーチェーン アクセス」→「証明書アシスタント」→「認証局に証明を要求」を選択する. 2. 「ユーザのメールアドレス」に AppleID に登録したメールアドレス,「コモンネーム」に AppleID に登録した名前,「CA のメールアドレス」は空欄にし, ディスクに保存を選択, 鍵 のサイズは「2048」, アルゴリズムは「RSA」を選択し, 続けるを選択する. Group Report of 2011 SISP - 56 - Group Number 12-A/B Smart FUN Project • 公開証明書の登録 1. 以下の URL にアクセスし, 登録した AppleID でログインする. http://developer.apple.com/devcenter/ios/index.action その後, 右側にある「iOS Developer Program」にある「iOS Provisioning Portal」を選択 する 2. 左側にある「Certificates」を選択する. 3. 「Distribution」タブを選択し,「Request Certificate」を選択する. 4. 「ファイルを選択」を選択して,「公開証明書の作成」で作成したファイルを選択して Submit を選択する. 5. 数分後に, 登録した「Status」が「Pending Issuance」が「Issued」 になるので,Download を選択してダウンロードを行う. 6. 「*If you do not have the WWDR intermediate certificate installed, click here to download now.」の「click here to download now」のリンクを選択して証明書のダウンロードを 行う. 7. 5,6 でダウンロードした証明書を実行し,「システム」に登録する. • デバッグで使用するデバイス情報の登録 1.「公開証明書の登録」の 1 を行う. 2. 左側にある「Devices」を選択する. 3. 「Manage」タブを選択し,「Add Devices」を選択する. 4. 「Device Name」にはわかりやすい端末名を入力し,Device Id には登録したい端末の UDID を入力する. ※ UDID の確認方法 登録したい端末を接続し,Xcode を起動する. メニューから「ウィンドウ」→「オーガナイ ザ」を選択し, 表示されている端末の情報の「Identifier」が端末の UDID である. • AppIDs の登録 1.「公開証明書の登録」の 1 を行う. 2. 左側にある「App IDs」を選択する. 3. 「Manage」タブを選択し,「New App ID」を選択する. 4. 「Description」にはアプリの通称や説明を入力し,「Bundle Seed ID (App ID Prefix)」 は「Generate New」を選択し,「Bundle Identifier (App ID Suffix)」には, 他のものと被 らないような名前を入力する. 自分のドメイン名を逆から書いたようなものが良い. その 後,Submit を選択する. • Provisioning Profile の登録 Group Report of 2011 SISP - 57 - Group Number 12-A/B Smart FUN Project 1. 「公開証明書の登録」の 1 を行う. 2. 左側にある「Provisioning」を選択する. 3. 「Development」タブを選択し,「New Profile」を選択する. 4. 「Profile Name」にはアプリ名を入力し,「Certificates」には証明書を作成した時の名前が 表示されているので, それを選択する.「App ID」は,「AppIDs の登録」で登録した App Id が表示されるので, それを選択し,「Devides」は「デバッグで使用するデバイス情報の登録」 で登録したデバイス名が書かれているので, それにチェックを付け,Submit を選択する. 5. 更新を行うと,4 で登録したものの「Status」が「Pending」から「Active」になるので「 , Actions」 の Download を選択し, ダウンロードを行う. 6. Xcode を起動し, メニューから「ウィンドウ」→「オーガナイザ」を選択する. 7. 左側の「DEVICES」からデバッグを行う端末を選択する. 8. 「use for development」を選択し,「Provisioning」の「+」を選択して,5 でダウンロード を行ったファイルを選択する. • プロジェクトの設定 1. Xcode を起動し, 実機でデバッグを行いたいプロジェクトを開く. 2. 「Info.plist」ファイルを開き,「Bundle identifier」の値を「AppIDs の登録」で登録した Bundle Identifier を入力する. 3. メニューから「プロジェクト」→「プロジェクトの設定を編集」を選択する. 4. 「ビルド」タグを選択し,「Code Signing」欄の「コード署名 ID」の「Any iPhone OS Device」 の値を設定した Provisioning Profiles のものを選択する. 5. Xcode の左上にあるメニューから, 実行したい端末を選択する. 以上までの手順を踏めば, 実機でデバッグを行うことができる. ここからは, 1つの ID で複数台の Mac で開発する手順を述べる. • 複数台のマシンで開発 1.「公開証明書の作成」で用いた Mac(以下, 親機と呼ぶ)で,Application → utility にある キーチェーンアクセスを起動し, 左側の「キーチェーン」の「システム」を選択する. 2. iPhone Developer の証明書を探し, 右クリックから「証明書を書き出す」を選択する. 3. 証明書を「個人情報交換(.p12)」の形式で任意のパスワードを設定して保存する. 4. 3 で作成したファイルを, 親機ではない開発したい Mac に移動させ, 実行する. パスワードは 3 で設定したものである. 5. 「Provisioning Profile の登録」で作成した Provisioning Profile をダウンロードし,6∼8 の 手順を行う. 6. 「プロジェクトの設定」を行う. Group Report of 2011 SISP - 58 - Group Number 12-A/B Smart FUN Project (※文責: 江端竜次) 4.3.2 開発環境の構築(Android) Android アプリケーション開発を行う環境として本プロジェクトでは eclipse を使用した.eclipse を使用するにあたり, 下記のソフトウェアを各自の作業 PC にインストールした.eclipse を含め, イ ンストールは記載順に行った. なお, 本プロジェクトでは Windows で開発を行ったため, 手順は Windows 版とする. 開発環境 • Android SDK • Java Development Kit • eclipse • Pleiades(インストールは任意) • Android SDK Android SDK とは Android の開発 Software Development Kit のことである. 環境構築手順 1. http://www.oracle.com/technetwork/java/javase/downloads/index.html にアク セスする. 2. 「Download JDK」を押すと,Pllatform 選択画面が表示される. ダウンロードを行う platform (今回は Windows)を選択し,Lisense Agreement を確認後, チェックボックスへチェックし 「Continue」を選択する. 3. 「jdk-6u23-Windows-i586.exe」を選択し, ダウンロードする. 4. ダウンロードしたインストーラーを実行し, インストールを行う. • JDK JDK とは Java 開発環境 Java Development Kit のことである. 環境構築手順 1. http://java.sun.com/javase/ja/6/download.html にアクセスする. 2. Java SE Development Kit をダウンロードする. 3. Platform は [Windows], または [Windows x64](64 ビット版)を選択し,[Continue] をク リックする. Group Report of 2011 SISP - 59 - Group Number 12-A/B Smart FUN Project 4. ダウンロードしたファイルを実行するとインストーラが起動される. 5. デフォルト設定でインストールを行うため,[OK] や [次へ] などを選択し, 進めていく. • eclipse 統合開発環境.Android SDK の eclipse 用プラグインを使うことで,eclipse 上で比較的簡単に Android アプリケーションが作成できる. 環境構築手順 1. http://www.eclipse.org/downloads/ にアクセスする. 2. eclipse IDE for Java Developers の [Windows] を選択し, ダウンロードアイコンを選 択する. 3. ダウンロードした圧縮ファイルを任意の場所へ展開する. eclipse へ行う ADT Plugin(Android Development Tools Plugin)のインストール 1. eclipse を起動し,workspace 設定画面が表示されたら「OK」を選択する. 2. 「Help」メニューから「Install New Software...」をクリックする. 3. 「Install」画面の「Add...」ボタンをクリックする. 4. 「Add Site」画面の「Name」に「Android Plugin」「 , Location」に https://dl-sl.google. com/android/eclipse/ を入力し,「OK」をクリックする. 5. 「Developer Tools」をチェックし,「Next」をクリックする. 6. 続けて表示される画面以降で,「Next」,「I accept ...」,「Finish」をクリックすると, イン ストールが開始される. 7. インストールが完了すると eclipse の再起動が求められるので「Restart Now」から再起動 を行う. eclipse へ行う Android SDK の設定 1. eclipse を起動し,「Window」メニュー,「Preferences」をクリックする. 2. 「Preferences」画面の左側ペインで「Android」を選択,「SDK Location」にインストール した Android SDK のディレクトリを入力(「Browse」からも選択可能),「Apply」「OK」 をクリックする. • Pleiades eclipse 日本語化 Plugin . インストールは任意である. 環境構築手順 Group Report of 2011 SISP - 60 - Group Number 12-A/B Smart FUN Project 1. http://mergedoc.sourceforge.jp/ にアクセスする. 2. Pleiades 本体のダウンロードという項目から安定バージョンをクリックする. 3. ダウンロードした Zip ファイルを eclipse をインストールしたディレクトリの下に展開する. 4. eclipse イ ン ス ト ー ル デ ィ レ ク ト リ の [eclipse.ini] を テ キ ス ト エ デ ィ タ で 開 き, 最 終 行 に [-javaagent:plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar] を 追 加する. ※ eclipse.ini は編集終了後必ず閉じること. 次工程移行するときに開いていると, インストー ルが成功しない場合がある. 5. eclipse インストールディレクトリの [eclipse.exe] を実行し, 日本語になっていれば成功. また, 開発したアプリケーションを実機でテストする場合, それぞれ対応したドライバーのイン ストールが必要になる. 各ドライバのインストール手順を以下に示す. • Motoroler XOOM 環境構築手順 1. XOOM を USB で PC に繋ぐとインストールが開始される. 2. インストール後, 下記サイトへアクセスする. http://www.motorola.com/Support/US-EN/Support-Homepage/ Software_and_ Drivers/USB-and-PC-Charging-Drivers 3. Motorola 4.9.0 Driver with MotoHelper をダウンロード する. 4. eclipse へ戻り, 作業プロジェクト内の AndroidManifest.xml を開く 5. 下のタブのから Aplication を選択し,Attributes の右にある Debuggable に [true] と 入力 する • ZTE 実機側の設定 1. 設定からアプリケーションを選択し,[提供元不明のアプリ] にチェックをする. PC 側環境構築手順 1. http://www.zte.co.jp/products/handsets/handsets_gallery/softbank/info/ 201104/t20110404_226427.html にアクセスする. 2. USB ドライバツールをダウンロードする. 3. ダウンロードしたインストーラを起動して, インストールを行う. Group Report of 2011 SISP - 61 - Group Number 12-A/B Smart FUN Project • Ziio7 今現在 Creative からはデバッグモード用ドライバは提供されていない. そのため,Google のドライ バを用いる方法で今回は記載する. 環境構築手順 1. android winusb.inf を編集する.[Google.NTx86] と [Google.NTamd64] のセクションの最 後に, 以下の文章を追加する. [;Creative ZiiO%SingleAdbInterface% = USB_Install, USB\VID_2350&PID_0102 %CompositeAdbInterface% = USB_Install, USB\VID_2350&PID_0102&MI_01] 2. Ziio 本体の USB デバッグを ON にする. 3. Ziio を PC に接続し,1 で書き換えた android winusb.inf があるディレクトリを指定し, 更 新する. 4. 自分の PC のホームディレクトリにある.android ディレクトリ内にある [adb usb.ini] に [0x2350] を追加する. • LifeTouch 実機側の設定 機器設定 から [アプリケーション] を選択,[開発] から [USB デバック] をオンにする. PC 側環境構築手順 1. http://smartia.biglobe.ne.jp/support/driver/win.html にアクセスする. 2. 使用許諾契約書 に同意し, ダウンロードを行う. 3. ダウンロードした圧縮ファイルを任意の場所へ展開する. 4. インストーラーを起動させ, インストールを行う. (※文責: 松山陽子) 4.3.3 地図の作成 前期に使用していた学生便覧の地図は正確でない部分があり, 位置情報の精度にも影響してくる ため, 実際に学内を測量して新たに地図を作ることとなった. 測量はメジャーを用い,1mm 単位で記録していった. 測量を通して, 等間隔に柱があることや, 部 Group Report of 2011 SISP - 62 - Group Number 12-A/B Smart FUN Project 屋が柱を基準とした正方形であることなどの法則を発見した. その為, 効率よく測量を進めること が出来た. 当プロジェクトの最終発表は 3 階であり, 他の階ではアプリケーションを使用する予定 が無いため, 時間の節約を兼ねて 3 階のみを測量することにした. 測量結果を元に,Illustrator を用いて地図を作成した. これにより出来上がった地図は学生便覧と 同じく白黒のシンプルなものだったが,Android 班,iOS 班それぞれが独自に改良を加えていった. Android 端末用の地図(図 4.4)は, 主要な部屋に色を付けるなどといった, 見やすさや楽しさを 重視したものになった. また, つぶやき入力欄などの UI との色にも合わせているため, 全体として 纏まりのあるデザインとなっている. 図 4.4 Android 端末用地図 iOS 端末用の地図(図 4.5)は擬似的に立体化されており, 他の階の位置なども見られるように なっている. 測量を行ったのは 3 階のみだが, 未来大学は階が変わっても部屋や廊下の位置などの 構造はあまり変わらないため, 全ての階の地図を作成することが出来た. さらに学生便覧の地図と の縮尺を合わせるよう計算することで, 院棟の地図と連結することも出来た. また, 地図のデザインを多数用意(図 4.6)し, ユーザが自由に切り替えることが出来るように設 定項目を設けた. デザインの種類は全部で 5 種類ある. アクセスポイントの座標が入っているデータベースは地図を元に作成していたので, 新しい地図 に対応する必要があった. まず座標の計算式を新しい地図に合わせて修正し, アクセスポイントの 座標をその計算式を使って表示する. その際アクセスポイントの位置にずれがあったらデータベー スの座標を修正する. これにより, 前期の地図よりも位置座標の精度が上がった. (※文責: 佐々木龍) 4.3.4 位置の測定 本プロジェクトでは,GPS を用いることができないことが判明したので, 学内での位置情報を取 得する方法として, 学内に設置してある無線 Lan の1つの fun-wlan 用のアクセスポイントを用い ることにした. 端末が受信した電波強度が強いアクセスポイント 3 つの座標と電波強度から, 端末 の位置を計算して出すこととした. 本プロジェクトでは, 端末の位置を自動で取得, すなわち, 端末の使用者が現在位置を知らなくて も, 位置がわかるようにすることを目指していた. また, 位置を取得する際に, アプリケーションの 操作を極力さけたかった. 学内のアクセスポイントは固定であり, 多数点在しているので, それを使 うことを考えた. Group Report of 2011 SISP - 63 - Group Number 12-A/B Smart FUN Project 図 4.5 iOS 端末用地図 図 4.6 Group Report of 2011 SISP デザインを変更した場合の例 - 64 - Group Number 12-A/B Smart FUN Project 学内のある一点を原点として, 校舎全体を座標系に置き, アクセスポイントの座標を求めた. 求め 方は直接学内を歩き回り, アクセスポイントを探して歩き, 位置と MAC アドレスを調べ, 地図を使 い縮尺を計算して座標を求めた. アクセスポイントの MAC アドレスと座標で,SQLite を使いデー タベースを制作した.SQLite を用いた理由は,iOS と Android で対応しているベータベースである からである. 端末が受信したアクセスポイントの電波を, 電波強度の強い順でソートし, 上位 3 つの アクセスポイントの MAC アドレスを使い, データベースから座標を引き出した. 次に説明するこ とは, 初期の位置座標を求める方法である. すでに, 違う方法でアプリケーションを開発している. 別の方法についても, 後に記述する. 電波強度を用いて, それぞれのアクセスポイントと端末との距 離を求める.3 点のアクセスポイントの位置と, そこからの距離がわかれば, 端末の位置が求められ る. しかし, 電波強度は, その時の状況などで, 値が一定になることは無く, 同じ位置でも異なった電 波強度が出て, 電波強度が同じ値でも距離が同じでないことがある. そこで, 本プロジェクトでは アクセスポイントからの距離を求める際に, 電波強度の値を用いて場合わけを利用することにした. また, 誤差を修正するために, 本プロジェクトでは距離を一定の範囲で区切り,1m 単位で範囲を全 て計算し, 解を平均化することとした. 計算方法として,3 つあるアクセスポイントのうち一つの座標を(0,0,0)として, 他のアクセスポ イントの座標を平行移動する. 平行移動した値を使って計算する. 計算方法は球の方程式をつかっ た, 連立 3 元 2 次方程式である. 計算して出た解を平均化して, 更に平行移動をし, 学内の座標にあ わせた値を現在地の座標とした. また, 解が全て虚数解だった場合は, 電波強度の一番強いアクセス ポイントを現在地とした. しかし, 以上の方法では, 計算された解を平均化するので, まったく違う位置座標が求まることが 解った. そこで, 新しい計算方法として, 3点の重心を求めることにした. アクセスポイントの座標 をベクトルとして, 電波強度を重みとして用いて, 3点の重心を求める方針とした. 式を使って記述する. 求める現在地の座標を X,Y,Z とし, アクセスポイントのそれぞれの座 標を x1,y1,z1,x2,y2,z2,x3,y3,z3 とする. また, それぞれのアクセスポイントからの電波強度を D1,D2,D3 とする. X=(D1*x1 + D2*x2 + D3*x3) / D1 + D2 + D3 Y=(D1*y1 + D2*y2 + D3*y3) / D1 + D2 + D3 Z=(D1*z1 + D2*z2 + D3*z3) / D1 + D2 + D3 この式によって現在地の座標 X,Y,Z が求められる. この方法を用いると, アクセスポイント 3 点から電波を受信できれば, 必ず解となる座標が求め られる. また,4 点目のアクセスポイントの電波強度が強い場合は,4 点目も計算に入れる。計算式は下記 のようになる. X=(D1*x1 + D2*x2 + D3*x3 + D4*x4) / D1 + D2 + D3 + D4 Y=(D1*y1 + D2*y2 + D3*y3 + D4*y4) / D1 + D2 + D3 + D4 Z=(D1*z1 + D2*z2 + D3*z3 + D4*z4) / D1 + D2 + D3 + D4 (※文責: 佐藤史弥) Group Report of 2011 SISP - 65 - Group Number 12-A/B Smart FUN Project 4.3.5 データベースの構築(iOS) ここでは,2.5 データベースの構築(iOS)にあげた課題に対する解決を以下に述べる. まずデータベースを扱うのに何を使うかという課題に対して,Core data を使用するのか SQLite を使用するのか考えた. これは実際に使用して, より簡単に使えると判断した SQLite を実装し た. 次にデータベースをどう使うかという課題に対しては,FMDB というソースをメインに使用 し,CRUD(Create, Read, Update, Delete) 操作を一通り実装をした. また FMDB を使用する際に 簡単に利用するために, テーブルごとに Data Transfer Object を作成し (表 4.3.5) 効率を上げた. データベースは他の機能と連動して使うことが多いので, 利用応じて適宜に作成を行った. 表 4.3.5 APData アクセスポイントの座標などの情報を格納 Area 教室ごとの座標を格納 Commenter つぶやき, 送受信するコメントをまとめたもの Ichi 通信する相手の位置情報を格納 UserData ユーザのデータを格納 (※文責: 江端竜次) 4.3.6 データベースの構築(Android) この節では Android データベースの開発において発生した問題について解決法を述べる.An- droid データベースの開発について.FunMap のデータベース構築を行う際に発生した以下の問題 について課題解決を行った. • テーブルの定義 • レコードの挿入 • レコードの削除 • レコードの更新 • レコードの参照 開発においては 4.2.3 データベース構築技術で用いられてる方法で開発を行った. 初めにデータベースを利用するにあたってアプリケーション初期起動時にテーブルを定義する 必要があるためテーブル定義の方法を習得した. これは SimpleSQLite クラスの SQLiteDatabase の関数である execSQL 関数から SQL の文をそのまま実行できるためテーブルの定義はこれで 行った. レコードの挿入は SQLiteDatabase クラスの insert メソッドを用いればいいことがわかった. 第 一引数にテーブル名, 第三引数に挿入するレコードの内容を格納した ContentValues 型のインスタ Group Report of 2011 SISP - 66 - Group Number 12-A/B Smart FUN Project ンスを入れればよいことがわかった. 第二引数についてはよくわからなかったが基本ここには null を指定すればいいということなので深くは触れなかった. レコードの削除も SQLiteDatabase クラスの delete メソッドで行うことがわかった. 削除を行 うには第一引数にテーブル名, 第二, 第三引数に where 句のような条件を指定すればいいこととわ かった. レコードの更新に関しては SQLiteDatabase クラスの update メソッドを用いることで行える ことがわかった. 第一引数にレコードの更新を行うテーブル名, 第二引数に ContentValues 型のイ ンスタンス, 第三引数に SQL の where 句を指定することで update を行えることがわかった. レコードの参照については Curor というクラスを使う必要があるためこれの仕様を理解 する必要があった. そのためこのクラスの使い方について調べた. この Curor クラスを SQLite- Database.query() メソッドで初期化する. このメソッドに条件を指定することでレコードの中か ら自分の欲しいレコードを入手できることがわかった. 具体的には第一引数はテーブル名, 第二引 数は, 取得する列名(カラム名, フィールド名)の配列を指定する. 第三引数, 第四引数は取得するレ コードの条件を指定する. 第五引数は group by 句, 第六引数は Having 句, 第七引数は,order by 句 を指定する. 第八引数は,limit 句(取得するレコードの上限数)を指定することがわかった. また開 発を行うにあたって Curor 文でエラーが出たことがあった. 原因を調べてみると Curor は作業終 了時にしっかりと close しておかないとエラーが出ることがあるということがわかった. (※文責: 阿部和哉) Bluetooth 通信(iOS) 4.3.7 ここでは,iOS の Bluetooth 通信について記載する. iOS での Bluetooth を利用する場合は,Apple 社から提供されている GameKit フレームワークを 利用することで, 簡単に Bluetooth を利用できる. 逆に,iOS では GameKit 以外では Bluetooth 接 続を行うことを認めていない. また,GameKit フレームワークを使った接続方法は大きく 2 パター ンある.GKPeerPickerController を利用する方法としない方法がある.GKPeerPickerController を利用した場合は, 専用のインターフェイスが表示され接続先の端末を手動で選択することにな る.GKPeerPickerController を利用しない場合は, 自動的に接続が確立される. 本プロジェクトで はすれ違い通信が目標なので後者の,GKPeerPickerController を利用しない方法でプログラムを作 成した. GameKit フレームワークを使ったすれ違い通信の接続方法の実装は, プログラムの中に下 記の記述をすることで可能になる. こうすることで, 自動的に他の端末が無いか常に探している状 態になる. session = [[GKSession alloc] initWithSessionID:@"test" displayName:nil sessionMode:GKSessionModePeer]; session.delegate = self; [session setDataReceiveHandler:self withContext:nil]; session.available = YES; 自分の端末の Bluetooth の状態が変化する, つまり, 他の端末が見つかったり, 接続が確立した場 合や, 切断された場合には,- (void)session:(GKSession *)session peer:(NSString *)peerID Group Report of 2011 SISP - 67 - Group Number 12-A/B Smart FUN Project didChangeState:(GKPeerConnectionState)state のメソッドが呼ばれる. ここでそれぞれの場 合のその後のプログラムを記述する. 基本的にここの記述はクライアントとしての記述となる. サーバー側, 接続依頼が来た場合に呼ばれるメソッドは- (void)session:(GKSession*)session didReceiveConnectionRequestFromPeer:(NSString*) peerID である. ここでの記述で常に接続 を確立するようなプログラムを記述する. こうすることで,GameKit を使用し,iOS でのすれ違い通 信を実現している. ここまでで, 端末が他の端末を探し, 発見した場合接続することが出来ている.Bluetooth 通信で のデータの送信するプログラムは下記の記述で出来る. 今回は送信するデータの変数は data でる. [session sendDataToAllPeers:data withDataMode:GKSendDataReliable error:nil]; また, データを Bluetooth 通信で受信した場合は,-(void)receiveData:(NSData *)data fromPeer: (NSString *)peer inSession:(GKSession *)session context:(void *)context のメソッドが呼 ばれる. ここで受信した場合のプログラムを記述する. GameKit を用いた Bluetooth 通信のデータは NSData 型の変数である必要がある. 本プロジェ クトのシステムでは, 位置情報である double 型の変数や文字情報である NSString 型の変数, また, 画像データも代入可能な NSData 型の変数も送信しなければならない. それらの情報はすべて一つ のクラスの中の変数に代入されている. 端末の位置情報を代入するクラスや, つぶやきの情報を代入 するクラスなどがあるが, それぞれのクラスには1件分のデータしか代入されていない. 複数件の データを送信する場合もあり, それらのクラスは,NSMutableArray 型の可変長配列に代入してい る. つまり, 本プロジェクトのシステムでは, クラスが入っている NSMutableArray 型を NSData 型にエンコードしなければいけない. そこで, それぞれのクラスは NSCoding クラスを継承してお いて, プログラムの中に,-(void) encodeWithCoder:(NSCoder*)aCoder と言うメソッドを記 述し, そこに NSData 型に変換するプログラムを作成する. そのプログラムは下記の記述で出来る. [aCoder encodeInt:_all_second forKey:@"all_second"]; [aCoder encodeDouble:_x forKey:@"x"]; [aCoder encodeObject:_user_udid forKey:@"user_udid"]; ここでの変数は,int 型の all second,double 型の x,NSString 型の comment である. ここで必ず デコードするための Key を付けなければならない. この記述をすることによってクラス単位で NSData 型にエンコードすることが出来る. NSMutableArray 型を NSData 型にエンコードする には下記のプログラムで出来る. ここでは変数 data は NSData 型, arrayData は NSMutableArray 型である. data = [NSKeyedArchiver archivedDataWithRootObject:arrayData]; ここまでで Bluetooth 通信で送信したい情報を NSData 型に変換することが出来た. 次に,NSData 型の受信したデータのデコードの解説をする. 先ほどと同じように, それぞれのクラスで, プログラ ム中に- (id)initWithCoder:(NSCoder*)aDecoder と言うメソッドを記述しておく. この中に 元の変数にデコードする下記のプログラムを記述する. _all_second = [aDecoder decodeIntForKey:@"all_second"]; _x = [aDecoder decodeDoubleForKey:@"x"]; _comment = [aDecoder decodeObjectForKey:@"comment"]; Group Report of 2011 SISP - 68 - Group Number 12-A/B Smart FUN Project ここでの変数は,int 型の all second,double 型の x,NSString 型の comment である. ここで, エン コードする際に決めた Key を記述する. そうすることで, 変数にあわせたデータを変数に代入する ことが出来る. このプログラムを記述することによってクラス単位で NSData 型からデコードする ことが出来る. NSData 型を NSMutableArray 型にエンコードするには下記のプログラムで出来 る. ここで変数 data は NSData 型, arrayData は NSMutableArray 型である. arrayData = [NSKeyedUnarchiver unarchiveObjectWithData:data]; ここまでで受信した NSData 型のデータをデコードすることが出来る. これで, すれ違い接続の Bluetooth 通信で一度に種類の違う多数のデータを送受信することが出来た. (※文責: 佐藤史弥) 4.3.8 Bluetooth 通信(Android) この節では Android 端末の Bluetooth 開発について述べる.Bluetooth 通信を行う際に以下 の目標を立て, それに関しての技術習得を目標をした. アプリケーションの開発については 4.2.7Bluetooth 通信技術で述べられた開発法を参照した. • サンプルの Bluetooth を利用した接続要請法の把握 • Bluetooth を利用した情報の送受信法の把握 • アプリ起動時自動で一対一での Bluetooth 通信接続の確立 • アプリケーション起動時に FunMap 起動アプリとの多人数接続の確立 まず BluetoothEx がどのように端末に接続要請を出しているのかを調べた. すると BluetoothDevice device=btAdapter.getRemoteDevice(address); chatService.connect(device); のようにして BluetoothDevice クラスの変数を BluetoothAdapter クラスの関数である ge- tRemoteDevice 関数をペアリング済みであったり, 検出した端末のアドレスを元に動かして初期化 しそれを元に connect 関数を呼び出し接続を行っていることがわかった. 次に Bluetooth を利用した情報の送受信の方法を知ることを目標とした. メインクラスであ る BluetoothEx を見てみると送りたい情報を BluetoothChatService クラスの write 関数で行っ ていることがわかった. 情報の送信方法については同じく BluetoothChat クラスの run 関数を while ループで動かして相手端末から情報を受取るまで待機し、情報を受け取ったらメインとなる BluetoothEx クラスに受信データを渡していることがわかった。 アプリケーション起動時に一対一での通信を自動に確立することを次の目標とした. 参照した BluetoothEx での Bluetooth 接続ではメニューから周辺デバイスを検索し接続するものであった. しかしこれでは FunMap での仕様を満たさない. 仕様を満たすためには通信を自動化する必要があ るためペアリング済みの相手限定であるがまず相手を特定して行うこととした.Bluetooth 管理ク Group Report of 2011 SISP - 69 - Group Number 12-A/B Smart FUN Project ラスである BluetoothChatService クラスの Connect 関数に着目し,Bluetooth 通信のアルゴリズ ムに関する仕組みを調べた. さらにペアリング済みのリストを得るために Android SDK 逆引きハ ンドブック pp467 468 からペアリング済みデバイスのアドレスを得る仕組みを習得した. そこから スレッドをアプリ起動時にペアリング済みの相手と自動で Bluetooth 接続を行った. 最後に FunMap 起動アプリとの多人数接続の処理を目標とした技術習得を行った. 開発技術の 習得に BluetoothEx というサンプルを用いていたがこのサンプルは実際に使用してみるとなぜか 1 対 1 の Bluetooth 通信しかできないことがわかった. そこでサンプルがなぜ 1 対 1 の通信しか できないのかを調べるとともに BluetoothChatService クラスの仕組みを調べることにした. まず BluetoothChatService クラスを見てみると 3 つのスレッドが主となって動いてることがわかっ た.Bluetooth の接続待ち(サーバ)の処理をする AcceptThread と Bluetooth の接続要請をする ConnectThread と Bluetooth 接続管理後の処理をする ConnectedThread である.AcceptThread と ConnectThread が ConnectedThread を生成するのだがサンプルでは ConnectedThread が一 つしか宣言されていないことがわかった. これでは接続台数が 1 台に限定されてしまう. そのため 複数台の同時接続をできるように ConnectedThread を配列化し複数台の接続を管理できるように し, その仕様を満たすため AcceptThread,ConnectedThread の仕様を変更し複数台の接続に耐え うるものに変更した. (※文責: 阿部和哉) 4.3.9 つぶやき機能の実装(iOS) ここでは,iOS 版のつぶやき機能の仕様や, それを作成するプロセスについて述べる. つぶやき機能実装にあたり, 各処理の実装を iOS 班内で分担し, 平行して実装していった. 具体的 には,iOS 班のネットワーク班の江端がデータベース関係の実装を行い, 佐藤が Bluetooth 通信で 送受信するデータの形式関係の実装を行い, 岩佐がすれちがい通信についての実装を行い,iOS 班の UI 班が UI の構成やつぶやきの表示, 吹き出しの表示を実装した. 初めに Bluetooth のすれ違い通信機能が完成した. 前期の段階では, 他の端末と Bluetooth 通信 するにはこちらから通信要請し, 相手の端末から通信許可を行う必要があった. しかしすれ違い通 信を使うことで, アプリを起動すると自動的に他の端末と Bluetooth 通信を行うことができる. こ れによって初心者でも面倒な操作が必要なく, お互いのつぶやきピンやサムネ付きつぶやきピンを 共有することが出来た. 次にUI面, 実験としてまずはシンプルなつぶやきの表示を目指した. まず入力フォームを実装 し, 入力した文字を送信することで, 自分の位置に入力した文字を表示することが出来た. 次に行っ たのは文字数制限と改行処理である. 長文のつぶやきになると文字だけで地図が隠れてしまうため, 一定幅まで達すると自動的に改行するような処理を実装した. しかし今度は行数が増えると文字で ピンが隠れてしまうため, 行数によって文字の位置を上にずらす処理が必要になった. 横幅制限は 全角 11 文字, 行数制限は 5 行, 文字数制限としては全角 55 文字までの入力を可能にした. 次に吹き出しの表示を実装した. 吹き出しは画像を用意し UIImageView として表示し, その上 Group Report of 2011 SISP - 70 - Group Number 12-A/B Smart FUN Project からつぶやきの UILabel を貼り付ける方法を取った. 吹き出し画像は,iPhone の SMS/MMS アプ リに使われている吹き出しを参考に,SAI と GIMP2 を用いて作成した. また, つぶやきが重なって 見えないときのために, ピンをボタンに変更しつぶやきの表示/非表示を切り替えられるようにし た. しかし吹き出しは文字数によって大きさを変える必要がある為, 吹き出し画像を上中下の 3 種 類用意し, 改行のたびに真ん中の画像を追加するという処理を行った(図 4.7). この処理を用いる と, いくら文字数が増えても対応できるという強みがある. しかし 1 行ごとに別々の画像として追 加するため, メモリを多く使用してしまったり, つぶやきの表示/非表示の処理が難しいという欠点 もあった. 図 4.7 iOS 版吹き出し旧バージョン そこであらかじめ吹き出し画像を結合させた画像を用意し, 行数により別々の画像を用いるとい う処理に変更することにした(図 4.8). また, つぶやきが重なって見えないときのために, ピンを ボタンに変更しつぶやきの表示/非表示を切り替えられるようにした. 図 4.8 iOS 版吹き出し新バージョン 最後に, データベースを介してつぶやきを管理する仕様を実装した. つぶやきの際データベース に以下のものを送信するようにした. • つぶやきの本文 • つぶやいた日時 • つぶやいた位置の座標 • UDID(端末を一意に判別することが出来る ID) • 画像データと画像のファイルパス アプリ起動時にデータベースからこれらのデータを読み込むため, 起動していなくても過去のつ ぶやきを見ることが可能になった. 画像データと画像のファイルパスは, カメラ機能を用いてつぶ やいた際に付属されるもので, これにより他の端末と画像の共有が可能になった. つぶやいた日時 は掲示板のソートは利用したり, 経過時間によるつぶやきの自動消去にも利用する. 初期段階では 通信している相手が一人でも,Other ピンが何個も出てしまうバグがあったが,UDID で相手を認識 することで解決した. (※文責: 佐々木龍) Group Report of 2011 SISP - 71 - Group Number 12-A/B Smart FUN Project 4.3.10 つぶやき機能の実装(Android) ここでは,Android のつぶやき機能の実装の方法を記載する. つぶやき実装にあたり, ネットワーク構成班と UI 班から一人ずつの二人で開発を行った. ネット ワーク班が Bluetooth 通信でつぶやき文字列の送受信や受け取った文字列の表示を行い,UI 班が UI やつぶやきの表示, 吹き出しの表示を実装した. Android 版の吹き出しは iOS の吹き出しと違い, 画像を使わずにプログラムで楕円を描画するこ とで表現している(図 4.9). そのプログラムは, 始点となる X,Y 座標と終点となる X,Y 座標を決 めると, その 2 点から楕円形を描画するというものである. しかし楕円の大きさは固定でなく, 文字 列によって変動させなくてはならない. そこで位置座標に値を加減算した座標を始点とし, つぶや きの文字列の長さをもとに終点の座標をずらすことで文字列に合わせた吹き出しを実装することが 出来た. 図 4.9 Android 版吹き出し つぶやきの管理のシステムとしては, つぶやきを送信する際に, 自分の位置情報と文字情報を一 つの変数でまとめて送るという方法を取った. しかしこのままでは文字情報と一緒に位置情報が表 示されてしまう. そこで, 位置情報と文字情報の間に区切り用の記号(##)に判別文字を付けて判 別することにした. 例えば,X:23.23#x#Y:234.54#y#さむいねえ#t# という情報が送信されて きたとき,「#y#」を受け取ったあとの「#t#」より前の文字列を別の変数に抽出し, その文字列 をつぶやきとして表示したり, 吹き出しの大きさ計算に使用したりする. また, 初期段階では画面上につぶやきが残り続けて邪魔になったため, 一定時間(8 秒)でつぶや きを消すという処理を追加して回避した. (※文責: 清野僚介) 4.3.11 カメラ機能の実装 ここでは, カメラ機能の実装の方法について記載する. iOS でカメラ機能を実装するには UIImagePickerController クラスを使用する.UIImagePickerController クラスは画像の取得を行う. 取得先は, カメラ, 写真アルバム, フォトライブラリから指 定する事ができる. 実機によっては, カメラが付いていないものもあった. カメラの有無の判別も UIImagePickerController クラスを用いることで出来る. その他, カメラ機能の実装での課題の解 決を, 実装したプログラムの流れに沿って説明していく. Group Report of 2011 SISP - 72 - Group Number 12-A/B Smart FUN Project インターフェイスのボタンからカメラ機能の起動用メソッドが呼ばれる. そこではまず, カメラ が実機に付いているかを判断する. 判断するプログラムは [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera] とすることで,YES または NO が返り値となっている. NO が返ってきた場合は, 警告表示の機能 である UIAlertView を用いて, エラー文を表示させた.YES が返ってきた場合も,UIAlertView を 用いて, カメラの起動, すでに撮影され変数に代入されたデータの削除, キャンセルの選択肢を表示 させた. UIAlertView でいずれかのボタンを選択した場合は,- (void)alertView:(UIAlertView *) alertView clickedButtonAtIndex:(NSInteger)buttonIndex メ ソ ッ ド が 呼 ば れ る. 引 数 と し て,UIAlertView の情報とボタンのインデックスが渡される. カメラの起動のボタンが押された場 合のプログラムをここに下記のように記述する. pic = [[UIImagePickerController alloc] init]; pic.delegate = (id)self; pic.sourceType = UIImagePickerControllerSourceTypeCamera; pic.allowsImageEditing = NO; [self presentModalViewController:pic animated:YES]; 変数 pic は UIImagePickerController 型である. pic.sourceType で画像の取得先を決める ことが出来る.UIImagePickerControllerSourceTypePhotoLibrary とするとフォトライブラリか ら,UIImagePickerControllerSourceTypeSavedPhotosAlbum とするとカメラロールから,UIIm- agePickerControllerSourceTypeCamera とすることでカメラから取得できる. 本プロジェクトの 目的として, リアルタイムでの情報交換という目的があった. 撮影されてから時間が経過した画像 では, リアルタイムではなくなってしまう. なので今回はカメラのみを画像取得先とするために UIImagePickerControllerSourceTypeCamera としている.[self presentModalViewController:pic animated:YES] とすることでカメラが起動する. カメラを用いて画像を取得すると,- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo メソッドが呼ばれる. ここではまず, ユーザ自身が撮影したので自分の端末のカメラロールに画像を 保存する.UIImageWriteToSavedPhotosAlbum(image, self, @selector(savingImageIsFinished: didFinishSavingWithError: contextInfo:), nil)とすることでカメラロールに画像を保存する. 次にカメラ機能の終了プログラムです.[[picker parentViewController] dismissModalViewCon- trollerAnimated:TRUE]; とするとカメラ機能が終了する, ここでの picker とは引数で渡された UIImagePickerController 型の変数 pic である. 次に Bluetooth 通信の負担軽減のための画像サイズ縮小とサムネイル用の画像作成を行う. UIGraphicsBeginImageContext (CGSizeMake(image.size.width / 3, image.size.height / 3)); [image drawInRect:CGRectMake (0, 0, image.size.width / 3, image.size.height / 3)]; tsubuyakiImage = UIGraphicsGetImageFromCurrentImageContext(); Group Report of 2011 SISP - 73 - Group Number 12-A/B Smart FUN Project UIGraphicsEndImageContext(); まず, 画像編集用のメモリを確保する.UIGraphicsBeginImageContext(CGSizeMake(,)); と することで, 画像編集用のメモリを画像サイズ分確保することが出来る. 今回は取得した画像の縦, 横の大きさを 1/3 となるように,image.size.width / 3, image.size.height / 3 としている,image と は UIImage 型の変数で, 取得した画像が代入してある. 次に画像の縮小である. [image drawInRect:CGRectMake(0, 0, image.size.width / 3, im- age.size.height / 3)]; とすることで取得した画像を縮小し, 前述のメモリに代入する.tsubuyakiImage = UIGraphicsGetImageFromCurrentImageContext(); は UIImage 型の変数 tsubuyakiImage に, 前述の確保したメモリに入っているデータを代入している.UIGraphicsEndImageContext (); で確保したメモリを開放する. 続いて, サムネイル画像の作成を行う. UIGraphicsBeginImageContext(CGSizeMake(30, 30)); [image drawInRect:CGRectMake(0, 0, 30, 30)]; tsubuyakiImageSam = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); 画像サイズ縮小と流れは一緒で, 作成する画像のサイズが 30*30 となっている. 作成した 画像を Bluetooth 通信で送りやすく, また, 本アプリケーションが管理できるローカルメモリ に保存しやすい形式,NSData 型に変換する.myTsubuyakiJPEG = [[NSData alloc] initWith- Data:UIImageJPEGRepresentation(tsubuyakiImage, 0.5)]; とすることで,UIImage 型の変数 に代入されていたデータを JPEG 形式の品質 0.5 に変換し,NSData 型の変数に代入した. サムネ イル用の画像データもどうように NSData 型に変換し, 代入した. 前述したカメラロールに画像を保存するプログラム UIImageWriteToSavedPhotosAlbum(im- age, self, @selector(savingImageIsFinished: didFinishSavingWithError: contextInfo:), nil) の@selector()に savingImageIsFinished: didFinishSavingWithError: contextInfo:とすること で, 保存が完了した際に呼ばれる- (void)savingImageIsFinished:(UIImage *)image didFin- ishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo メソッドを呼ぶこと が出来る. カメラロールに保存する際に時間がかかることもあり, エラーになる危険性があるため このようなプログラムにした. ま た, カ メ ラ が 起 動 し て か ら, キ ャ ン セ ル を 選 択 し た 場 合 に は,- (void)imagePickerCon- trollerDidCancel:(UIImagePickerController *)picker メソッドが呼ばれる. ここには, カメラ 機能を終了させるプログラム [[picker parentViewController] dismissModalViewControllerAni- mated:TRUE]; を記述する. ここまでの流れをフローチャートに示す.(図 4.10 参照) 変数に代入された NSData 型の画像データは, つぶやきが送信される際にアプリケーションが管 理しているローカルメモリに保存した. まず,NSHomeDirectory クラスを用いて,homeDir = NSHomeDirectory(); とすることで NSString 型の変数 homeDir にアプリケーションが管理しているローカルメモリのパスを代入 する. 続いて docDir = [homeDir stringByAppendingPathComponent:@”Documents”]; とすること で前述のパスに Documents の文字列を追加する. stringByAppendingPathComponent を用いる ことで, 元の文字列 homeDir の最後尾に「/」が無い場合に「/」を追加してから, 文字列を追加 する. Group Report of 2011 SISP - 74 - Group Number 12-A/B Smart FUN Project 図 4.10 カメラ機能のフローチャート ファイルの名前は今回はつぶやいた日付と時間とした. ファイル名が決まったら, 先ほどと同じ ように filePath = [docDir stringByAppendingPathComponent:fileName]; として, ファイルのパ スにファイル名を追加する. NSData 型のデータをメモリに保存する際には NSFileManager クラスを用いた.fileMng = [NSFileManager defaultManager]; として, NSFileManager 型の変数 fileMng を defaultManager で初期化する.[fileMng createFileAtPath:filePath contents:gazoData attributes:nil]; とすること で, 画像のデータが代入されている NSData 型の変数 gazoData を前述のファイルパスで保存す ることが出来た. サムネイル画像のファイルパスは, パスの文字列の最後に SAM を追加して保存 した. カメラ機能の実装には,[4] を参考にした. (※文責: 佐藤史弥) 4.3.12 掲示板機能の実装 ここでは,「FunMap」の掲示板機能の実装について述べる. 従来の Web 掲示板はサーバにデータを蓄え, そこからデータの書き込み取り出しを行い情報を 共有している. しかし FunMap ではこのようなサーバを用いたシステムではなくデータベースの共 有によって掲示板の情報を共有するシステムになっている. 掲示板機能は,Bluetooth 通信による自 律分散型ネットワークの構築が可能となってから実装を行い始めた. 掲示板機能の実装に当たって, 掲示板機能を完成させるにはどのようなアルゴリズムにすればよいかを検討し, そこから開発に取 り組んだ. Group Report of 2011 SISP - 75 - Group Number 12-A/B Smart FUN Project 図 4.11 iOS 掲示板 掲示板機能(図 4.11,4.12)では, 投稿した文字を各端末の位置情報と同時にハッシュタグを付け 送っている. 更に, 更新ボタンを新しく投稿された情報を得られるようになっている.iOS では画像 の共有もでき, カメラボタンを押すとカメラ機能の画面に変わり, 撮影した画像を添付することが できる. 図 4.12 Android 掲示板 (※文責: 瀧澤祐太) 4.4 機能の実装 以下に, 本アプリケーションの機能の実装に関して記述する. まず,5 月に行われた開発アプリケー ションの提案において決定した「FunMap」についてどのような機能が必要なのかを検討し, そこ で検討時に提案されたアイデアの中から実現性の高く, 応用のきく機能の提案を選定した. そして 7 月に行われた中間発表に向け, 学内の地図を表示し, そこに自分の位置を載せて Bluetooth 通信 を用いて位置の共有を行うようなプロトタイプを作成し, 実際にアプリケーションを見て, そのア プリケーションに足りない必要な機能を全員で検討し, その機能の中で実現性の高い機能の選定を Group Report of 2011 SISP - 76 - Group Number 12-A/B Smart FUN Project 行った.9 月からは, 未だ位置の共有ができていなかった Android 班のネットワーク班は Bluetooth による位置の共有を行い, 既に出来ていた iOS 班はつぶやきと掲示板のデザインとインターフェー スを考え, 実装を行なっていた.10 月には Android アプリケーションの Bluetooth による位置の共 有が出来たので,Android もつぶやきと掲示板のアプリケーションの実装を行った. その結果,12 月 の成果発表時には 2 班ともにアプリケーションを完成させていたが,iOS 班のアプリケーションに はちょっとした付加機能(つぶやきの非表示, 画像の投稿)が付いている. 表において「FunMap」 が現状保有する機能について述べる. 表 4.4.5-1 機能名 主な機能 内容 位置の共有 位置の表示 アプリケーションにより算出された学内 での自分の位置を学内地図の上に表示する. 位置の共有 位置の表示で表示された自分の位置以外にもアプリケーションを 起動していて, かつ Bluetooth によって自律分散されたネットワーク上 の人達の位置を表示する. つぶやき つぶやきの入力 twitter のように今どこにいるか, 今何を考えていること, なにか面白いこと, 豆知識などをつぶやく事ができ, それを自分の位置を 示しているピンがしゃべっているように見せかけることが出来る機能 (図 4.13 参照) つぶやきの共有 つぶやき機能でつぶやいた事をアプリケーションを起動していて, かつ Bluetooth によって自律分散されたネットワーク上の人たちの位置を表 示する. 掲示板 部屋の選択 自分が見たい掲示板の部屋を選択することができる. 掲示板への書き込み 自分が伝えたい業務用連絡, 落とし物報告, 課題の情報共有 を行うことができる機能. 掲示板の共有 掲示板経の書き込みをアプリケーションを起動していて, かつ Bluetooth によって自律分散されたネットワーク上にいて, その 書き込みが行われた部屋の掲示板を表示している人と共有する機能. 図 4.13 つぶやき機能 (※文責: 瀧澤祐太) Group Report of 2011 SISP - 77 - Group Number 12-A/B Smart FUN Project 4.5 動作確認テスト Android,iOS 端末においてどのように動作確認を行ったかについて記す. まず初めに動作確認を 行なっている最中にエラーが出た場合のデバック手法を記す. 次にアプリケーションにおいて実際 に行った動作確認テストの項目ついて述べる. 以下がアプリケーションを開発する際に行ったデバック手法である. iOS 端末エラーデバック手法: ● 全般 エラーが出て止まったら 1. ブレイクポイントをつけて, 一行分ずつ動作させて確認した. 2. ログを出力するようにして, どこまで動作してるかコンソール画面をチェックした. 3. デバッガを使用して, どこで止まったか確認した.(変数もチェックできる) 4. パフォーマンスツールを使用して, メモリリークがどこで起こっているのか確認した. ● Bluetooth 関係 1. 2台以上の端末を接続して, 動作するかテストした. 2. 受信したデータ, 送信したデータが正しいか, ログを出力させてテストした. ● UI 関係 1. 実際に端末で表示させて動作するかテストした. Android 端末エラーデバック手法: ● 全般 1. eclipse のメニューから Window → ShowView → Other の中の LogCat を選択 2. Android の Log クラスのメソッドを用いて Log を出力する. 以下は Log クラスの使用法で ある. Group Report of 2011 SISP - 78 - Group Number 12-A/B Smart FUN Project Log.v(TAG, ”VERBOSE”); // 冗長(詳細な)ログの出力 Log.d(TAG, ”DEBUG”); // デバッグログの出力 Log.i(TAG, ”INFO”); // 情報ログの出力 Log.e(TAG, ”ERROR”); // エラーログの出力 3. アプリケーション起動時に(図 4.14) のようなエラーメッセージが表示された場合(図 4.15) の LogCat 上のエラーメッセージをテキストエディタ上に貼り付ける. テキストエ ディタ上のエラーメッセージからエラーを出したクラス, 行番号を読取デバックを行う. 図 4.14 Android エラーメッセージ ● Bluetooth 関係 1. 2 台以上の端末を接続した上で動作確認を行った 2. 受信データ, 送信データを logCat 上に出力し情報の確認を行った. 図 4.15 LogCat メッセージ Group Report of 2011 SISP - 79 - Group Number 12-A/B Smart FUN Project ● UI 関連 1. 実際に動かし, 操作, 見た目を確認した. 次に以下の項目について動作確認テストを行った. アプリケーションの仕様が多少異なるため iOS と Android それぞれ分けて動作確認テストを記述する. iOS 側動作確認テスト: ● メイン画面の処理 • つぶやき入力フォームが表示される • つぶやきボタンが表示される • カメラ起動ボタンが表示される • カメラボタンを押すとカメラが起動される. • カメラで撮った画像がつぶやきとしてピン(大)で表示される. • 学内地図が表示される. • 学内地図に指で触れてスライドさせると地図もスライドに合わせて動く. • 自分の位置を表す赤ピンを表示する • 自分のピンの位置がおおよそ誤差なく表示されている (363 教室にいる場合 363 教室にピン が表示されている). • 階数表示ボタンが表示される. • 階数表示ボタンを押すと階変更ボタンが表示される. • 階変更ボタンを押すの各番号を押すと各階の地図が表示される. • 自動位置表示取得ボタンが表示される • 自動位置表示取得ボタンを押すと数秒毎にピンの位置が取得される. • 位置指定ボタンが表示される. • 位置指定ボタンを押してから地図をタップするとその位置に自分の位置を示す赤ピンが移動 Group Report of 2011 SISP - 80 - Group Number 12-A/B Smart FUN Project する. ● つぶやき関連の処理 • つぶやき入力フォームに文字が入力できる. • つぶやきボタンを押すと自分のピンの位置に入力フォームで入力した文字列が書かれたつぶ やきの吹き出しが表示される. • つぶやきボタンを押して追加されたつぶやきはほぼ自分の位置を示した赤ピンと同じ場所で ある. ● メニューからの処理 • メニューボタンを押すと ReturnMap ボタンが表示される. • メニューボタンを押すと Comment ボタンが表示される. • メニューボタンを押すと ImageView ボタンが表示される. • メニューボタンを押すと Setting ボタンが表示される. • ReturnMap ボタンを押すとメイン画面に戻る. • Comment ボタンを押すと全体のつぶやき一覧が表示される. • ImageView ボタンを押すことでつぶやきに添付された画像の一覧が表示される. ● 掲示版関連の処理 • 地図上の部屋に表示された+マークを押すとその部屋の掲示板が表示される. • 掲示板の書き込み時の日時が正しく表示される. • 掲示版に画像でつぶやかれた書き込みの画像が表示される. ● Bluetooth 関連の処理 • FunMap を起動した近くの端末に Bluetooth 通信を用い自動接続を行う • 他の端末の位置が青ピンで表示される. • 他の端末のつぶやきが表示される. • 他の端末が撮った画像が表示される. Group Report of 2011 SISP - 81 - Group Number 12-A/B Smart FUN Project Android 側動作確認テスト: ● メイン画面 • つぶやき入力フォームが表示される. • つぶやきボタンが表示される. • 学内地図が表示される. • 自分の位置を表す赤ピンを表示される. • 自分の位置がおおよそ誤差なく表示されている (363 教室にいる場合 363 教室にピンが表示 されている). • 学内地図に指で触れてスライドさせると地図もスライドに合わせて動く. ● つぶやき関連の処理 • つぶやき入力フォームに文字が入力できる. • つぶやきボタンを押すと自分のピンの位置に入力フォームで入力した文字列が書かれたつぶ やきの吹き出しが表示される. ● メニューからの処理 • メニューボタンを押すと掲示版一覧のボタンが表示される. • メニューボタンを押すと終了ボタンが表示される. • 掲示板一覧ボタンを押すと書き込むことができる部屋の掲示板の一覧を取得する. • 終了ボタンを押すとアプリケーションを終了する. ● 掲示版関連の処理 • 各部屋の掲示板に書き込み入力フォーム, 書き込みボタンがある. • 掲示板画面からメニューを開くと掲示板一覧, 更新とメニューに表示される. ● Bluetooth 関連の処理 • FunMap を起動した近くの端末に Bluetooth 通信を用い自動接続を行う (Android 端末は はペアリング済み限定) • 他端末からデータが送られてくる (送られてくる情報は LogCat で確認). Group Report of 2011 SISP - 82 - Group Number 12-A/B Smart FUN Project • 他の端末位置が青ピンで表示される. (※文責: 阿部和哉) 4.6 実装機能の仕様 この節では, 実際にアプリケーションに実装された機能の詳細について記述する. まずはじめに,FunMap とはどういった機能を持ったアプリケーションかを紹介する. FunMap とは, 従来のネットワークで行われているサーバを用いて端末間を繋ぎ, データの共有を行うアプ リケーションとは違い, サーバを介さずに従来のネットワークサービス「twitter」や「ネット掲示 板」の再現ができるアプリケーションである. 詳しい機能の仕様については機能毎に紹介していく. • ネットワーク構築 ネットワーク構築とは,FunMap における基盤となるもので, つぶやき, 位置情報, 掲示板の情報 を共有する際に用いられる. 本プロジェクトでは, サーバを頼らない自律分散型ネットワークの構 築を目指していたため, 通常のサーバと端末間での通信のやりとりではなく端末同士をサーバを介 さずに繋ぐことで, 自律分散型ネットワークを目指した. 今回 FunMap はスマートフォン向けアプ リケーションであり, スマートフォンがほぼ標準で搭載している Bluetooth を用いて実現をした. ネットワーク構築のタイミングはアプリケーションを起動した時点からなので特別な操作は必要 としない. ここから Android と iOS ではプログラミング言語の違いや API, 技術習得の進度の違 いから細かな仕様が異なっているため, 別々に説明する. • Android Android における Bluetooth 通信は, 予め許可(ペアリング設定)した端末としか通信を確立で きず, 開発初期段階では一対一の通信のみ出来る状態だった. そこで, ペアリング設定を行なってい る端末をプログラムによってリスト化し, そのリストを順に接続, 切断をしていくことで擬似的に ネットワークを作りだした. しかしこの方法では, ソースコードの煩雑さや, 処理にかかる負荷が かかるためメンバーによって新しいアルゴリズムを考えた. それが,Bluetooth の接続を管理する BluetoothSocket というクラスを従来一つだったところを複数用意し, 各端末の接続を保ったまま ネットワークを構築した. Android は開発段階でペアリングしていない端末との通信方法が分から なかったため, ペアリング設定の行った端末のみと通信しており, それ以外とはできない. • iOS iOS における Bluetooth 通信は,Android と違い, ペアリング設定の行なっていない端末との通 信が可能であったため, すれ違いざまにネットワークを作るという事が可能である. そのためペア リング設定を行う煩雑さもなく, 楽にネットワークを構築できる. その反面, ターゲットを絞った端 末への通信は出来ず, 無差別に通信行なっている. 更に Android と iOS 間の通信は技術習得が間に合わず行うことができない. • 位置情報 Group Report of 2011 SISP - 83 - Group Number 12-A/B Smart FUN Project 位置情報の取得とその共有の仕方について説明する. 位置情報の算出には本学内に点在するアク セスポイントを利用している. まず学内のアクセスポイントを見つけ出し, 地図上の座標としてデー タベースに予め保存しておき, アプリケーション起動後その座標をもとに現在地を割り出している. 算出方法は以下の順番で行われている. 1. アプリケーション起動後アクセスポイントとの距離を電波強度により割り出し, そのうち電 波強度の強い 3 点または 4 点を検出する.4 点目の電波強度が弱すぎるときは精度低下につ ながるので, その場合は 3 点となる. 2. 近くにあった 3 点または 4 点のアクセスポイントを線でつなぎ三角形, 四角形を作る. 3. 作った図形を電波強度により重み付けしその重心を求める. 次に共有方法だが,Bluetooth を用いて, 算出した位置座標を相手に送りその座標をもとに青いピ ンで表示している. • つぶやき機能 つぶやき機能は自端末で打ち込んだ文字情報を通信している相手に送る機能である. こちらも Andriod と iOS により違いがあるため分けて説明を行う. • Android Android のつぶやき機能は, 画面上部のテキストフィールドをタッチすることでキーボードが出 てきて, 文字を打ち込んだ後画面上部左側にある「つぶやく」というボタンをおすことでつぶやく ことが出来る. 文字情報を受け取った側は吹き出しと一緒に受け取った文字を相手のピンの位置に 付近に表示する. 文字の長さが長くなるにつれ, 吹き出しも大きくなる. つぶやきの表示タイミングは, 通信している相手からの文字情報を受け取った直後だが, 通信状 況によって数秒のラグが起きる. 表示された文字に関しては 8 秒ほど表示した後, 吹き出しと文字 は表示されなくなる. これによって多くのつぶやきが画面に常に残り続けることを避けた. これに より, どこで現在どうなっているかという情報をリアルタイムで知ることが出来る. • iOS 基本的な操作方法は Android と同じだが, こちらは技術習得が早く進んだため細かな設定及び画 像共有を実装している. カメラ機能の実装や API の違いにより,UI が Android と大きく異なって いる. Android では画面上部左端だったつぶやくが右に行き, その代わりに camera ボタンが置いてあ る. このボタンをタッチすることで, カメラが起動し写真を取ることができる. そしてその取った写 真をつぶやきの文字と一緒に送信できる. さらに, 過去のつぶやき(文字・画像双方)を貯めておく ことができて, 一覧で確認することが出来る. さらに細かい設定として, 画面の表示されたつぶやきをリセットするまでの時間, ピンの色など の設定を出来るようになっている. • 掲示板機能 掲示板は書き込みを端末内のデータベースに文字データを保存して, 通信した際に各端末のデー タベース同士を共有することによってネット掲示板と同じような機能をサーバを用いること無く Group Report of 2011 SISP - 84 - Group Number 12-A/B Smart FUN Project データ共有と保存が出来る. こちらも Android,iOS の二つに分けて説明していく. • Android Android は教室毎にデータベースを用意することで, 各教室に掲示板を用意した. これにより教 室毎に得られる情報が変わり, 自分の行きたい教室の状況を調べることができる. • iOS 基本画面の右下に i と書いたボタンがありそれをタッチすることでつぶやき一覧をのせた掲示板 が呼び出せる. 教室毎の掲示板は, 技術習得が間に合わず, 実装することは出来なかった. 以上が本プロジェクト開発アプリケーション「FunMap」に実装されているの仕様である. (※文責: 渡邉憲人) 4.7 書類の作成 この節では, 仕様書やマニュアルなどの各種書類作成について記載する. 4.7.1 詳細仕様書の作成 ここでは, 開発アプリケーションである iOS 版の FunMap の詳細仕様書作成について述べる. 作 成した詳細仕様書の内容は, 画面一覧, 処理の流れ, 関数の一覧の 3 項目である. 作成は最終報告書 の作成と同時に進行した. 担当は iOS 班で手の空いている者が行った. 画面一覧は, 画面の遷移, 画面の名称, 画面の役割を書き表したものである. 厳密には別々の画面 とは定義されるべきでない画面もあるが, ここでは別々の画面と扱うことにした. 処理の流れは,FunMap 内部でどのように処理が行われているかを表したもので, フローチャート 図と解説によって示した. 関数の一覧は,FunMap のソースに含まれるクラスの説明と, クラスごとの関数の一覧, そしてそ の関数の説明を記したものである. (※文責: 佐々木龍) 4.7.2 マニュアルの作成 ここでは,FunMap の iOS 版のマニュアル作成について述べる. 最終発表では,iPad を聴衆に配り, 実際にアプリケーションを操作し体感してもらう, というアプ リケーションのデモストレーションがある. しかし, アプリケーションの操作方法などをスライド や口頭で説明するというのは困難で分かりにくい. そこで,FunMap のマニュアルを製作・印刷し, 最終発表が始まる時(デモストレーションの事前)に配布することした. マニュアルの製作は松浦 と佐々木が担当した. 当初の予定では, マニュアルは画面説明や操作説明が書いてあるだけのものであった. しかし, 「初めて触るユーザにとっては, 例となる使い方が提示されたほうが迷い無く使えて良い」と先生か Group Report of 2011 SISP - 85 - Group Number 12-A/B Smart FUN Project らアドバイスを頂いたため, 画面説明や操作説明を書いた説明書と, 使い方の例を書いた手順書の 2 つに分けて製作することとなった. • 説明書 アプリケーションのデモンストレーションで使用するアプリケーションである,iOS 版の Fun- Map の画面の説明や操作説明が書かれたマニュアルである. 図 4.16 と図 4.17 に実際に使用した説 明書を提載する. 画面にあるオブジェクトの名称や, そのオブジェクトの意味, 操作方法などが記されている. しか しオブジェクトが多いため, 初めてアプリケーションに触るユーザはどこから操作したらいいのか 迷う可能性がある. そこを補うのが次に説明する手順書である. • 手順書 アプリケーションのデモストレーションの際にどこから操作して良いのか分からなくならないよ うに, 基本的な操作の例を提示したものである. 図 4.18 に実際に使用した手順書を掲載する. 基本的な操作の例として, つぶやく際の操作方法とカメラ機能の操作方法を記載した. ユーザの 手間を省くため, ボタン等の位置を文字や画像で示している. (※文責: 佐々木龍) 4.8 プロジェクト学習における課題の解決 ここでは, プロジェクト学習で発生した課題の解決方法について記載する. 4.8.1 予算・物品 この節では, 本プロジェクトにおける予算・物品についての課題解決のプロセスについて述べる. プロジェクトワーキンググループに対して, 開発環境を整え, 円滑に開発を進めれるな物品・予 算請求をおこなった. 請求内容は,iOS のアプリケーション開発のための Mac を 3 台,iOS 端末を 4 台,Android 端末を 7 台, そのほかに開発に必要と思われる周辺機器の請求を行った. 下記に請求内 容の詳細を表に示す. 予算申請内容 品物 詳細 参考価格 数量 MacBookPro 13 インチ(メモリ 4GB) 86900 円 3台 iPad2 16GB 57500 円 2台 iPod touch 8GB 17800 円 2台 iOS Developer Program ライセンス料 開発したアプリケーションを 10800 円 3 実機で実行するために必要 Android 端末(キャリアなし) MOTOROLAXOOM Wi-Fi × 3 Creative ZiiO × 3 6台 BluetoothWireless アダプタ BT-MicroEDR1X 1400 円 13 台 センサー類 Wii リモコンプラス 3800 円 5台 Group Report of 2011 SISP - 86 - Group Number 12-A/B Smart FUN Project 図 4.16 アプリ説明書 p1 上記の内容で申請した結果, 予算が 344000 円が降りた. この予算では Mac 等の PC を購入する ことは出来ないとなっていたが, ワーキンググループから Mac mini が支給された. その他に, 担当 教員から開発用に PC や端末を借りた. 本プロジェクトで使用した物品を下記にまとめる. ・Mac mini 1 台 ワーキンググループから支給された. iOS のアプリケーション開発用 PC. Group Report of 2011 SISP - 87 - Group Number 12-A/B Smart FUN Project 図 4.17 アプリ説明書 p2 Group Report of 2011 SISP - 88 - Group Number 12-A/B Smart FUN Project 図 4.18 Group Report of 2011 SISP 手順書 - 89 - Group Number 12-A/B Smart FUN Project ・MacBookPro 1 台 担当教員から借りた. iOS のアプリケーション開発用 PC. ・iMac 1 台 担当教員に借りてもらった. iOS のアプリケーション開発用 PC. ・iPod touch 2 台 予算で購入したものと, 担当教員から借りたもの. iOS のアプリケーション開発用端末. ・iPad 1 台 担当教員から借りた. iOS のアプリケーション開発用端末. ・iPad2 1 台 予算で購入した. iOS のアプリケーション開発用端末. ・MOTOROLA XOOM 2 台 担当教員から借りたものと, 予算で購入したもの. Android のアプリケーション開発用端末. ・ZTE Light Tab 1 台 担当教員から借りたもの. アプリケーション開発用端末. ・Creative ZiiO 1 台 予算で購入した. Android のアプリケーション開発用端末. ・USB ケーブル 2 本 予算で購入した. Android のアプリケーション開発用端末を PC と接続するケーブル. ・BluetoothWireless アダプタ 3 個 予算で購入した. 開発用端末と PC を Bluetooth で接続するアダプタ. Android のアプリケーション開発では各自の PC に統合開発環境を導入した. 以上の物品で本プ Group Report of 2011 SISP - 90 - Group Number 12-A/B Smart FUN Project ロジェクトではアプリケーション開発を行った. (※文責: 岩佐尚史) 4.8.2 情報共有 この節では, 情報共有における課題の解決について述べる. 本プロジェクトでは, 予算を抑えるために無料で情報共有が行える方法を考えた. そこで候補に あがったのがサイボウズ Live と Skype である. サイボウズ Live とは, 無料で使用することができ るグループウェアサービスで, 掲示板機能, 共有フォルダ,ToDo リスト等, 基本的な情報共有に必要 な機能が揃っていた. そして, サイボウズのアクセスを全て HTTPS 通信で行うため安全性が高く, プロジェクトを進めていく上で大切な安全性を備えていた. サイボウズ Live でまず始めに行ったことは, アカウントを作成し, プロジェクト全体のグループ と, 班単位のグループを作成した. しかし, プロジェクトが進むにつれて細かいことでもプロジェク ト全体に関わるようになったので, プロジェクト全体のグループしか用いないようになった. プロ グラムのソースや提出物関連のデータは共有フォルダで管理し, 連絡事項は掲示板に書く事で管理 を行った. また進捗管理は ToDo リストにタスクを書く事で管理した. 実際のサイボウズ Live の様子は(図 4.19)に示した. 図 4.19 サイボウズ Live サイボウズ Live は主にデータの共有や連絡事項を伝えるために用いたが, 素早く簡単に連絡を 取る必要がある時には Skype を用いた. まず始めに行ったことは, メンバー間のコンタクト共有で あった. 前期では班分けを行った際に, 地図班内, ネットワーク班内それぞれ SkypeID を教え合っ た. また, その後は情報の共有が必要になった際に随時コンタクトの追加を行っていった. 情報共有の手段に Skype を選んだ理由として, 様々な利点が挙げられた. チャットが使用可能な ため即座に連絡を取り合うことができ, さらにマイクや Web カメラを用いることでより詳細な意 思疎通が可能なこと, ファイルの受け渡しが容易なこと, コンタクトの追加が容易なこと, 相手のロ グイン状況を見ることができるため, 連絡が取りやすいという利点があった. Skype での情報共有の例としては, プロジェクトの日程などの連絡の取り合い, 問題が起きた際 Group Report of 2011 SISP - 91 - Group Number 12-A/B Smart FUN Project の緊急連絡や報告, ソースコードや必要書類の受け渡しなどがあった. 実際の Skype の様子は(図 4.20)に示した. 図 4.20 Skype (※文責: 岩佐尚史) 4.8.3 中間発表 この節では, 未来大学で行なわれた中間発表会について述べる. 2011 年 7 月 15 日, 未来大学で前期の活動成果を報告する中間成果報告会が行われた. 報告会に 向けて作成するアプリケーションのプロトタイプの作成と,6 月の下旬から発表の資料作成, 発表練 習を行なった. 以下に中間成果報告会で用いた各種発表資料の準備内容と役割分担を示す. • プロトタイプ 中間成果報告会に向けて, アプリケーションの開発班として Android,iOS の 2 つのプラット フォームと自立分散型ネットワークによりプロトタイプを作成した.2 つのプラットフォームでは, 位置情報を取得して, それを自立分散システムを使って 2 つの端末に表示する. • スライド 発表用の資料として, このプロジェクトの概要, 目的, 運営方法, 活動報告, そして開発するアプリ ケーションの説明を主な内容とした発表用スライドを作成した. 内容としては, このプロジェクト の特徴, そして, この開発アプリケーションについて, 構造, イメージ, 実機でデモンストレーション を説明したわかりやすいものに仕上げた. 担当教員の助言や他大学の意見を取り入れることで, 内 容を何度も修正した結果, 報告会ではこのプロジェクトについてうまく表現できた. • ポスター 報告会のブース設営に使用するポスターとして, メインポスターが 1 枚, サブポスターが 1 枚の 計 2 枚を作成した. メインポスターでは, プロジェクトの概要, 前期の活動, 今後の活動の 3 つにつ いてを, サブポスターでは, 屋内の位置情報の取得方法, サーバの代わりにデータの保存方法として データベースを使用したこと, 自律分散型ネットワークについてを主なコンテンツとした. ポスター 作成の際に, タイトルやデザイン, レイアウトをプロジェクトメンバと話し合って決定することで, メンバ全員が納得のいくような次のポスターを作製することができた.(図.4.19) Group Report of 2011 SISP - 92 - Group Number 12-A/B Smart FUN Project 図 4.21 ポスター • 発表者 中間成果報告会に向けて作成したスライド利用して, 当日未来大学の全員でプロジェクトの前期 の活動成果を発表した. 発表の際, プロジェクトの概要や前期の成果, 活動内容などの前半部分と現 時点でできているアプリケーションの説明や今後のスケジュールの後半部分の 2 つのコンテンツに 1 人ずつ割り当て, それぞれ発表した. 事前に, 発表内容について何度も話し合い, 発表内容の向上を 図ったおかげで, メンバーみんなが納得したものを発表することが出来た. • アンケート集計 報告会に来場し, このプロジェクトの発表を聞いていただいた人を対象にアンケート調査を行っ Group Report of 2011 SISP - 93 - Group Number 12-A/B Smart FUN Project た. アンケート内容としては, 発表技術と発表内容を 10 段階で評価してもらい, 発表についての意 見・感想を自由記述で回答してもらった. 合計 65 名の来場者にアンケートに回答していただき, 結 果としては, 発表技術, 発表内容の得点がそれぞれ 7.01 点,7.53 点であった.(図 4.20)自由記述の 指摘として,「Twitter のようにするなら「誰がしゃべったのか」も重要になってくるのではない か」,「もう少し「他にない」感を出せればなお良い」,「FunMap の機能をうまく使うと, いろんな ゲームのようなものができると思うのでやってほしい」,「ユーザーの立場についてさらに検討し てほしいです」といった指摘をいただいたので, これを参考に今後の最終成果報告会などの行事に 向けて改善していければ良いと思う. 䜰䞁䜿䞊䝖⤖ᯝ 10 9.5 9 8.5 8 ᖹᆒ 7.5 7 6.5 6 5.5 5 Ⓨ⾲ᢏ⾡ Ⓨ⾲ෆᐜ 図 4.22 アンケート結果 (※文責: 松浦光輝) 4.8.4 中間報告書の作成 この節では, 前期末提出物(中間報告書)作成の過程について述べる. 中間報告書作成にあたり, まず章立てを行った. グループ自体は開発班に別れていたのだが, 開発 以外は全体で行ったものが多かったため, 共通で報告書を作成した. 報告書の作成は, 項目ごとに担当者を決めていき報告書を清野がまとめる, という過程で作成を 行った. 以下は報告書の作成のプロセスを示す. 1. 章立ての決定 まず, 山田が前期の活動内容から章立てを行った. 2. 担当者の割り振り 作業量に偏りのない様にプロジェクトメンバーに担当箇所を決め割り振った. 3. 文書作成 各担当者が, 割り振られた項目の文書作成を行った. 4. 編集 清野が各文書をまとめ, サイボウズにアップした. 5. 添削と改訂版の作成 まず, 清野による添削が行われ, 改訂版を作成した. 次に教員が添削を行い, それらに対して Group Report of 2011 SISP - 94 - Group Number 12-A/B Smart FUN Project 各担当者は再度改訂版を作成した. 反省点として, 報告書担当者との連携がうまくいかず, 作業がスムーズに進まなかったことや, 時 間が足りなかったために項目が足りなかった点が挙げられる. 後期では, 前期の反省点を活かして 進捗状況や情報の共有を早めに行うようにする. また, 前期よりも機能が増え, 足りなかった項目も 付け加えるために, 再度, 期末報告書に向けて章立てを構成しなおす必要があると考えられる. (※文責: 清野僚介) 4.8.5 オープンキャンパス 本プロジェクトは,8 月 5 日に行われた本学で行われたオープンキャンパスに参加した. 参加者は, 山田格, 葛西基海, 富樫健太, 瀧澤裕太, 佐々木龍である. 事前準備としては,PR の作成(図 4.23) と, 配布用資料の作成(図 4.24)である. 図 4.23 パンフレット 当日は, 中間発表で使用したポスターを展示し, スライドの一部をプロジェクタで流し続けた. 本 プロジェクトはスタンプラリーの一部であったので多くの高校生やその親に来てもらうことができ た. プロジェクト内容以外にも大学生活についてや, 勉強, 受験に対する心構えなど様々なことを伝 えることができたと思う. (※文責: 岩佐尚史) 4.8.6 最終発表 ここでは前述(2.5 章)にて挙げた課題に対する各々の取り組みについて紹介していく. • 発表用スライド まず今回最終発表を行うにあたり一番に伝えるべきこと, 二番目に伝えるべきことといったよう に, 何を重点的に紹介するのかという優先順位から決定した. この順位を決めることで余計な説明を 省き, 重要な情報を伝えられるようなスライドを目指した. そのためアプリケーションの説明には 多くスクリーンショットやイメージ画像を取り入れ口頭での説明も力を入れるよう作った. 逆に前 期の活動は中間発表もあったので, 多く時間を取らず活動内容, 前期に残った課題をメインに不足 しすぎない説明で短く終わるようなスライドの構成にした. 更に仮完成段階で一度, 先生, プロジェ クトメンバー前で発表練習を行い発表スライドにおかしな点はないか, しゃべりにくい点はどこか というのを確認した. 結果時間のオーバーはなくスムーズに発表できた. • ポスター Group Report of 2011 SISP - 95 - Group Number 12-A/B Smart FUN Project 図 4.24 オープンキャンパス資料 ポスターでは, 自律分散型ネットワークの説明のためによりイメージしやすい画像を作成しそれ を利用することで対象者にわかりやすく伝えることを心がけた.FunMap の説明はポスター 1 枚で はスペースが足りないということもあり簡単な説明を一文と機能をいれ, 詳細はサブポスターにの せるという形を取った. 更に, 中間発表時のポスターでは前期活動のみだったが, 今回は前期後期合 わせた通年の活動も載せるため, レイアウトを変えて時系列を追いやすく見やすいモノを作成した. (図 4.25) • サブポスター サブポスターはスペースの都合上載せられらなかったアプリケーション FunMap の詳細説明 が載せてある. ネットワークに詳しくないユーザでも見たときに理解できる用に多く画像を使用 し,FunMap の使い方ものせた. 画像がメインだったため難し言い回しというのがなく, 初めて見た 人にも伝わるサブポスターとなった.(図 4.26) • デモンストレーション デモンストレーションを行うと決定した当初はスクリーンに iPad2 の画面を表示し, 残り 2 端末 を配布することで, 参加者に直接自由に触って貰う予定だったが, 先生からの指摘により, つぶやい てもらうというタスクをしてもらうことで端末が回ってきた人がデモンストレーションに参加しや Group Report of 2011 SISP - 96 - Group Number 12-A/B Smart FUN Project 図 4.25 ポスター すくすることとなった. これによって, アプリケーションの入った実機が手元に回って来た際に, 何 をすればいいのか分からないということを回避した. しかし, アプリケーションの不具合で, 通信がうまく出来なかったり, 打ち合わせ不足で発表者が デモンストレーション中に手持ち無沙汰になってしまうということがあった. • 操作説明書 最終発表ではアプリケーションのデモンストレーションを行った. デモンストレーション決定時 はスクリーンに iPad2 の画面を表示し, 残り 2 端末を配布することで, 参加者に直接自由に触って 貰う予定だったが, 先生からの指摘によりつぶやいてもらうというタスクをしてもらうことで端末 が回ってきた人がデモンストレーションに参加しやすくすることとなった. そのため, つぶやくた Group Report of 2011 SISP - 97 - Group Number 12-A/B Smart FUN Project 図 4.26 サブポスター めの操作手順書を作成した. 凝ったデザインではなく, シンプルな形にすることで, 内容がすぐ理解 できるようになっており, 実機が配布されていなくても使い方がわかるものを心がけ作成した.(図 4.27) • アンケート アンケートは記述式だと, 答えにくく欲しい情報が入ってこないのではないかという話がプロ ジェクト内であがり, できるだけ選択式を多くした. 例えば,FunMap に今後欲しい機能は何です か?という質問を記述式で聞いてしまうと, 先程初めて知ったアプリケーションの追加機能を0か ら考えろと言われても次の発表との兼ね合いで急いでたので空欄という事になりかねない. そのた めある程度こちらで機能の例を出しておきそれにチェックしてもらう, なにか機能が思いついた方 Group Report of 2011 SISP - 98 - Group Number 12-A/B Smart FUN Project 図 4.27 操作説明書 にはその他の欄に書いてもらうという方法で意見を集約した. (※文責: 渡邉憲人) 4.8.7 最終報告書 この節では, 期末提出物(最終報告書)作成の過程について述べる. 最終報告書作成にあたり, まず前期で作成した章立ての見直しを行なった. その後, 項目ごとに担 当者を決めて報告書を作成した. 前期同様, 報告書担当者を決めてまとめた報告書を清野がまとめ る, という過程で作成を行なった. 前期の反省点を踏まえ, 最終報告書では早い段階からメンバーに 担当項目を公表した. 以下は報告書の作成のプロセスを示す. 1. 章立ての決定 まず, 山田が後期の活動内容を確認し, 前期に作成した章立てを修正した. Group Report of 2011 SISP - 99 - Group Number 12-A/B Smart FUN Project 2. 担当者の割り振り 作業量に偏りのない様にプロジェクトメンバーに担当箇所を決め割り振った. 3. 文書作成 各担当者が, 割り振られた項目の文書作成を行った. 4. 編集 清野が各文書をまとめ, サイボウズにアップした. 5. 添削と改訂版の作成 まず, 清野による添削が行われ, 改訂版を作成した. 次に教員が添削を行い, それらに対して 各担当者は再度改訂版を作成した. 後期では,2 度目の作成ということで, 全体的に前期より効率よく作業が進めることができた. (※文責: 清野僚介) Group Report of 2011 SISP - 100 - Group Number 12-A/B Smart FUN Project 第5章 発生した課題とその解決方法 この章では, ある時に発生した課題とその解決方法を述べる. アプリケーション開発 5.1 5.1.1 問題点と発生した流れ ここでは,「FunMap」を開発する過程で発生した問題点と発生した流れについて述べる. • 開発における知識取得の問題 アプリ開発の情報をインターネットで検索したが, 不十分だったため, 開発の教本を用いて 問題の解決に当たった.Bluetooth の開発などがあげられる. • 班同士での情報共有不十分の問題 前期は地図班とネットワーク班で分かれていたが, 班ごとに各プラットフォームで開発言語 が違うため情報の共有が行われず, 地図班とネットワーク班の間で情報共有も上手く行われ ていなかったため, アプリ開発や中間発表時に認識のずれが発生し, 認識の統一に時間が掛 かった. • FunMap の見た目の問題 前期の成果発表時点での FunMap は見た目がシンプルに作られており, 見た人には未完成と いう印象を与えた. それは学校の便覧に載っている地図をトレースした上に自分の位置座標 にピンを表示するだけのプログラムだったためである. • 画像の送信 iOS 側は公式 API で難なく画像の送信を行うことが出来たが,Android 側は画像の送信を行 うことが出来なかった. 5.1.2 解決方法 ここでは,「FunMap」を開発する過程で発生した問題点の解決方法について述べる. • 開発における知識取得の問題 開発の教本を読み, サンプルプログラムとその解説サイトを参考にして, 知識取得に励んだ. それでも解決できなかった問題は, 基礎の知識を付け, アルゴリズムを理解するために時間 を費やした. Group Report of 2011 SISP - 101 - Group Number 12-A/B Smart FUN Project • 班同士での情報共有不十分の問題 後期には iOS 班と Android 班で分け, その中で UI 班とネットワーク班に分かれた. 班分け を変えることによって各プラットフォーム内での意思疎通や情報共有を積極的に行うことに した. 結果プラットフォーム内での連携は上手くいったが各プラットフォーム間の情報共有 が一層行われなくなってしまい, アルゴリズムや機能に違いが出てしまった. • FunMap の見た目の問題 見た目のシンプルさを改善するためにピンをさまざまな用途ごとに色分けしたり, 地図を 縮尺通りに作り直し, 色を付け, 立体的に見えるようにした. その結果, 色彩豊かな見た目に なった. • 画像の送信 開発の教本や, インターネットの情報を調べたが, 思うように情報を得ることが出来なかっ たため開発期間の問題もあって Android 側の画像の送信機能を見送ることにした. (※文責: 清野僚介) 引継ぎ 5.2 ここでは, アプリケーションの引継ぎの作業について記載する. 5.2.1 iOS iOS 班の引継ぎ資料の作成として, コメントの記述を行った. コメントはプログラムの作成時か ら記述していたが, 引継ぐために十分な分量が無かったため, 不十分な部分にコメントを書き足し た. コメントはクラス, プロトコルが設定されたインスタンス変数, ヘッダーファイルで宣言された 関数に重点的に付けた. プロトコルが設定されたインスタンス変数やヘッダーファイルで宣言され た関数は, 外部からアクセスできる変数や関数で, これを知ることができればクラスの具体的な内 容を知る必要は無いため, 重要な部分である.OS には決まったコメントの書き方は無いため,iOS 班 でコメントの書き方を統一して書くこととした. 形式は下記に記述した. • クラス /** * クラスの説明 */ • 変数 変数名 //変数の説明 • 関数 /** Group Report of 2011 SISP - 102 - Group Number 12-A/B Smart FUN Project * 関数の説明 * Parameters * 第 1 引数 引数の説明 * 第 2 引数 引数の説明 * 第 3 引数 引数の説明 … * Return Value * 戻り値の説明 */ (※文責: 葛西基海) 5.2.2 Android Android 班の引継ぎ資料の作成として,Javadoc の生成を行った.Javadoc を用いると, ソース コードに所定の形式でコメントをつけることにより,HTML 形式の API 仕様書を作成することが できる. 開発環境として eclipse を用いたので,Javadoc が標準でインストールされているものを用 いた. 引継ぎ資料の作成にあたり,Javadoc コメントをクラスと public な関数に付けた.public な関 数は他の関数からもアクセスできる関数であるので, この関数の内容がわかれば, 関数の中身を知 らなくても再利用が可能となり, 効率的に引き継ぐことができる. 今回使用した Javadoc コメント の形式は下記に記述した. クラス /** * クラスの説明 */ 関数 /** * 関数の説明 * @param 第 1 引数の説明 * @param 第 2 引数の説明 … * @return 戻り値の説明 */ (※文責: 葛西基海) Group Report of 2011 SISP - 103 - Group Number 12-A/B Smart FUN Project 第 6 章 グループ内のインターワーキング この章では, 各人の課題の概要とプロジェクト内における位置づけを記載する. ネットワーク班 (前期) 6.1 この節では, ネットワーク班 (位置情報班) のメンバが前期に行ってきた課題について記載する. 6.1.1 江端竜次 ネットワーク班グループリーダー江端竜次の担当課題は以下のとおりである. 前期では, グループリーダーとしてグループの取りまとめやデータベースの構築を行った. 4月 ・プロジェクトメンバーの顔合わせで自己紹介を行い, ネットワーク班 8 名, 地図班 6 名と 編成を行った. 私はネットワーク班へ入り, グループリーダーとなった. その後は各班, プロ ジェクト全体で今後の方針を話し合った. またプロジェクトの情報提供場として「サイボウ ズ Live」に登録を行った. 5月 ・新たに始まったプロジェクトであったので, アイディアの話し合いや調査などに時間を儲 けた. このプロジェクトでは Android と iOS を使うことに決定したのでグループ内でそれ ぞれに分かれた. 私は iOS 班に入った. ・位置取りの決定の話し合いやこれからの日程の決定を行ったことで, アクセスポイントの 位置が必要なことが分かった. この時 iOS 班の開発環境が整っていなかったため, 私達が学 内にある fun-wlan のアクセスポイントを探し歩いた. またこの間,Objective-C の基礎勉強 を行った. ・月末には予算申請の結果が出たので, 予算の使用方法の検討を行った. 6月 ・前月と同様に, アクセスポイントの位置を計測しつつ, アクセスポイントを格納するデー タベースを参照するプログラムを Web にあるサンプルプログラムを基に作成した. データ ベースは CoreData と SQLite について勉強した. 最終的には SQLite で FMDB を使用す ることにした. ・このあたりから各々が勉強をし始め, 状況がつかめないことが起きていたので, 議事録の取 り方を「各々が行ったことを一言にして私に提出しそれをまとめて提出する」というやり方 に変更した. Group Report of 2011 SISP - 104 - Group Number 12-A/B Smart FUN Project ・アクセスポイントの座標決定をするのに学内の距離が必要であったため, 学内を歩きま わって計測を行った. 7月 ・アクセスポイントに対して座標を割り当て,iPhone 用のデータベースを作成した. この時, 学内の地図が無かったので, 縮尺から学生便覧にある地図を使えるようなものに変更した. 上 記のことを含めて, 中間発表に向けて修正など行った. (※文責: 江端竜次) 6.1.2 岩佐尚史 ネットワーク班技術リーダー岩佐尚史の担当課題は以下のとおりである. 前期では, 技術リーダーとして率先して技術を習得し, 技術取得の手引きをした. 4月 ・リーダー決め ・チーム編成 ・ブレインストーミング 班員の顔合わせ後, リーダー決めを行い, 私はネットワーク班の技術リーダーとなった. そ の後, 班員間の連絡方法を決め, ブレインストーミングを行いどのようなアプリケーションを 作成するかを考えた. ブレインストーミングで出たアイディアは以下で述べる. アプリケー ションを作成するために地図班とネットワーク班に分かれ, 私はネットワーク班となった. ブ レインストーミングでは, 施設の利用状況を表示する, 地図を用いたツイッター, リアルタイ ムなストリートビュー, リアルタイムなお絵かき, 鬼ごっこ等の意見が出た. 5月 ・勉強 ・位置情報の取得方法の検討 ・Bluetooth 通信の利用方法の検討 最初に行ったことは Hello World を表示させることだった. そのために Xcode の使用方 法や実行方法,Objective-C について勉強した. アプリケーション開発に必要な課題をフロー チャート化し, 現在までに達成していることと必要なことを書き出し, 割り当てが悪かった かもしれないが班員に仕事を割り振った. 私は iOS における WiFi の情報の取得方法を考え ることが担当だったので取得方法を検討した. また,Bluetooth 通信で iOS と Android が通 信できないかを検討した. 6月 ・iOS Developer Program の登録 Group Report of 2011 SISP - 105 - Group Number 12-A/B Smart FUN Project ・WiFi の情報を取得するプログラムの作成 ・位置情報取得アプリケーションのプロトタイプ完成 一ヶ月ほどかかって iOS Developer Program に登録し, 開発環境を整えて実機でテストが 行えるようになった. 自分の担当であった WiFi の情報を取得するプログラムを実機で動く ように書き, 分担してあった位置情報の取得のアルゴリズム,SQLite を用いたデータベース を利用するプログラムをまとめ, 位置情報取得アプリケーションのプロトタイプを作成した. 7月 ・中間発表用のデモアプリケーションの作成 Bluetooth 通信と, アプリケーションのインターフェイスの作成を手伝いつつ, アプリ ケーションとして微調整を行って中間発表用のデモアプリケーションを作成した. (※文責: 岩佐尚史) 6.1.3 清野僚介 ネットワーク班清野僚介の担当課題は以下のとおりである. 前期の活動では, 中間報告書の責任者を担当した. 4月 ・第1回プロジェクト学習では, プロジェクトメンバーの顔合わせを行い, グループ編成の 後, 各種リーダーを決め, 今年が初めてのプロジェクトだった為どの端末を使って何をした いかの方針を話し合った. ・ブレインストーミングを行いどのようなアプリケーションを作成するかを出し合い決定し た. 5月 ・必要な物品の調査をし, その物品にいくらかかるのかを調べ, 予算案の決定を行い, 各自調 査を行ってきた結果の報告会を行った. そして, 学習しなければならない点を出し学習のス ケジュールや前期中間発表までの予定を立てた. ・各班で携帯の端末の種類ごとにグループわけを行った.Android 班と iOS 班があり自分は Android 班になった. ・位置情報の取得方法をどうやって行うかについて話し合った. ここで WiFi を使って進め ていくことを決めた. ・位置情報の計算の為に fun-wlan のアクセスポイントを探索する. ・Android の参考書からアクセスポイントの MAC アドレスを表示させるプログラムを完成 Group Report of 2011 SISP - 106 - Group Number 12-A/B Smart FUN Project させた. ・予算申請の結果が届いたので, 予算の使用方法を全員で検討した. ・アクセスポイントの座標や過去のデータを蓄えるために Android で使えるデータベース 「SQLite」を勉強し始めた. ・MAC アドレスのフィルタ化を行い, 電波強度を高い順にソートできるようにプログラムを 改変した. 6月 ・プロジェクト専用ロッカーが届いたので, ロッカーを運び配置した. ・位置情報データの自動更新が行えるようにプログラムを改変した. ・予算で注文していた品が届いたため,XOOM,Ziio7 の開発環境やドライバを整える. ・Bluetooth についての勉強を行いプログラムの編集を行い, プログラムのエラーに関する 情報を集める. ・Bluetooth で座標を送るプログラムの作成を行う. ・メインポスターに書くプロジェクトの概要を一部で話し合ってまとめた. 7月 ・中間報告書の項目から各項目の担当者を決める. ・プリンタ講座に出席し, 中間発表会で使用するポスターの印刷に関する説明を受ける. ・Tex 講座に出席し,Tex のインストール方法や Tex の使い方を覚えてくる. ・プロジェクトメンバーに Tex のインストール方法や使い方を教える. ・中間発表用のスライドとポスター, サブポスターの内容についての話し合いを行い, 当日に はプレゼンテーションを行った. ・皆から中間報告書の文書を集め,Tex ファイルにまとめて pdf 化して, 指導教員に添削を 行っていただいた. 修正版を作ってもらい, まとめを行い提出した. (※文責: 清野僚介) Group Report of 2011 SISP - 107 - Group Number 12-A/B Smart FUN Project 6.1.4 佐藤史弥 ネットワーク班佐藤史弥の担当課題は以下のとおりである. 4月 自己紹介を行い, それぞれが配属する班を決めた. 私は iOS 班に入った. ブレインストーミングを行い, プロジェクト方針, 自律分散型ネットワークで何が出来るか, 考えた. 5月 スマートフォンで, どのようなプログラムを作れば, 自律分散型ネットワークを構築できる か検討した. 予算で, 購入するものを検討. iPhone で使うプログラミング言語である Objective-C について勉強を始めた. 端末の位置取得方法を決定する. 私は初期の位置座標を求める計算プログラムを C 言語で作 成した. また, 開発用でワーキンググループから貸し出された,Mac mini の開発環境を整えた. 6月 新たに借りた,iMac の開発環境を整えた, しかし,OS のバージョンが古いため, 制作したプロ グラムを実機に移すことが出来なかった. 後に,OS のバージョン UP ディスクが届いたの で, 実機に移せるように開発環境を整えた. iOS で Bluetooth を使うための勉強をはじめ, 端末同士で接続認証をしなければならないが Bluetooth 通信のプログラムを制作した. 7月 Bluetooth のプログラムを,iOS 班で制作しているメインのプログラムに組み込んだ. 中間発表用のスライドの制作に協力した. (※文責: 佐藤史弥) 6.1.5 阿部和哉 ネットワーク班阿部和哉の担当課題は以下のとおりである. 前期ではネットワーク班内の Android 班のリーダーを務めた. 4月 ・プロジェクトメンバーの顔合わせ, 挨拶を行った. Group Report of 2011 SISP - 108 - Group Number 12-A/B Smart FUN Project ・リーダー決めを行った. ・ブレインストーミングを行った. ・グループを地図班, ネットワーク班に振り分けられネットワーク班に就くこととなった. ・プロジェクト全体で今後の方針を話し合った. ・情報共有の場としてサイボウズ Live に登録を行った. 5月 ・ネットワーク班を Android 班,iOS 班に振り分けられ,Android 班に就くこととなった. ・前期の活動では学内の位置情報を取り扱うこととなり, これからの日程や取得方法につい て話し合った. ・GPS は屋内の適応には適さないとのことから無線アクセスポイントを用いて位置を割り 出すことに決めた. ・Android ネットワーク班のリーダーに就くことになり, 班員の進捗の確認や次の課題を設 定しながら作業を進めた. 6 月 ・Android アプリケーションの開発環境を整えるため,eclipce,Android SDK,JDK のインス トールを行い eclipce 上で Android アプリケーションのエミュレータを動かせるようにし た. ・Hello World の表示, 簡単なテキストの表示など基礎となる技術習得を行った. ・Android ネットワーク班をデータベース班と位置情報班に分け位置情報班に就いた. ・位置座標取得プログラムの開発が完了するとデータベース班の補助に回ることとなった. ・データベースプログラムを位置座標の表示プログラムに組み込み,Android 地図班にソー スを提供した. ・デモアプリの作成を行った. 7月 ・デモ作成に当たって位置座標の表示の精度を確かめながら改善策を探した. 計算プログラ ムの見直しなどを行いながら位置情報取得精度の向上に努めた. ・中間発表練習を行った. Group Report of 2011 SISP - 109 - Group Number 12-A/B Smart FUN Project ・中間発表を行った. ・報告書の作成を行った. (※文責: 阿部和哉) 6.1.6 富樫健太 ネットワーク班富樫健太の担当課題は以下のとおりである. 前期の活動では, ネットワーク班の Android 端末向けアプリケーションの開発を行った. また, 中間発表責任者を担当した. 4月 第 1 回のプロジェクト学習ではプロジェクトメンバーとの顔合わせをし, グループの編成後 に各リーダーを決め, 本プロジェクトは今年初のプロジェクトであったため, 今後どのよう な活動をしていくかを決めた. メンバー全員でブレインストーミングを行い, 今年はどのようなアプリケーションを開発す るのかアイディアを出し合って決定した. 5月 開発に必要な機材や物品などを検討し, それらの予算を見積もって予算案を提出した. 今後アプリケーションを開発するにあたって必要な知識を学習しなければならない点を出し 勉強のスケジュールと, 中間発表までの大まかなスケジュールを立てた. 各班で携帯の端末の種類ごとにグループわけを行った.Android 班と iOS 班があり自分は Android 班になった. 屋内での位置情報の取得方法をどのようにしてするかを話し合った. その結果 WiFi の電波 を使って位置情報を取得することになった. Android の参考書借りてプログラムの勉強をした. 予算申請の結果が届いたので, 予算の使用方法を皆で検討した. アクセスポイントの座標や過去のデータを蓄えるために,Android で使えるデータベース 「SQLite」を勉強し始めた. SQLite を使ってデータの保存方法を学んだ. 6月 予算で注文していた品が届いたため,XOOM,Ziio7 の開発環境やドライバを整えた. Group Report of 2011 SISP - 110 - Group Number 12-A/B Smart FUN Project メインポスターに書くプロジェクトの概要を一部で話し合ってまとめた. 引き続き SQLite について勉強し,Android 班で制作しているメインのプログラムに組み合 わせた. 中間発表責任者になり, 中間発表までの具体的な予定を決め, 中間発表のポスターや資料の 作成などを担当する人を割り当てた. 7月 中間発表のスライド作成. メインポスターとサブポスターの下書きを作成し, ポスター作成を担当する人と一緒にポス ターの内容を話し合った. 発表原稿の作成と発表形式を決定した. (※文責: 富樫健太) 6.1.7 瀧澤祐太 ネットワーク班瀧澤祐太の担当は以下のとおりである. 4 月 ・プロジェクトメンバーの顔合わせをして, 地図班, ネットワーク班にのどちらグループに入 りたいか希望を出した. ・プロジェクトの今後の活動方針を話し合った. ・プロジェクト内での情報共有のためサイボウズ Live の登録, 設定を行った. 5月 ・開発に必要な機材や物を検討し, それらの予算を申請した. ・開発環境設定を行った. 各々のパソコン上で Android アプリケーションの作成をするた めに Java アプリケーョン作成ソフトウェアである eclipse の拡張,SDK のインストール, Android エミュレータのインストール, 動作確認を行った. ・Android アプリケーション開発の基本技術取得をした.Andorid のアプリケーションを作 成するために, まず Andorid 上に Hello World を表示するアプリケーションを作ったり, イ ンターネット上や本に書いてあるソースコードに改良を加え,Android アプリケーションを 開発するための基礎技術を習得した. ・位置情報取得をした.Android で位置情報取得する基本の GPS,WiFi での位置情報取得ア プリケーション作成を本のソースコードを参考にしながら行った. しかし, これらの位置情 報取得するための技術は屋内使用するために必要な精度を持ち合わせていないという問題が Group Report of 2011 SISP - 111 - Group Number 12-A/B Smart FUN Project 発生した. 6月 ・メンバーの話し合いにより位置情報の取得はアクセスポイントの電波強度の強い 3 つの電 波強度を重みとして 3 点のアクセスポイントの重心を求めるという方法になった. その技術 を Android アプリケーションのプログラムに反映させた. ・データベース構築. 私たちの目的は省電力の携帯デバイスでのサーバを使わないネット ワークの構築, すなわち自律分散型ネットワークの構築である. なので, サーバを使ってはい けないネットワークの構築という技術を実現をして, さらに, アクセスポイントの座標とア クセスポイントの個体を識別するための MAC アドレスを格納するためにデータを貯めな ければならない. そのため, データベースを用いた Andorid アプリケーションを作成するた めに Android のデータベースに関する情報をインターネット上や本から学び, 基礎を理解 し,Android 上でデータベースを作成し, データを格納・取り出しをするための技術を実現で きるアプリケーションプログラムを作成し, そのプログラムが自分の意思どおりに Android エミュレータ上で正常作動することを確認した. 7月 ・中間発表の資料作成をした. 前期のプロジェクト成果を発表する中間発表会のためのメイ ンポスターの原案を考え, スライドの構成や文章の作成, 目に見えない概念や測量法方法を 分かりやすく説明するための図の作成, アニメーションの設定を行った. (※文責: 瀧澤祐太) 地図班 (前期) 6.2 この節では, 地図班のメンバが前期に行ってきた課題について記載する. 6.2.1 松山陽子 地図班グループリーダー松山陽子の担当課題は以下のとおりである. 前期は地図班のグループリーダーとしてグループ全体スケジュール管理を行った. また Android 担当として開発環境の構築, 基本的な技術の取得,XML を用いた画面作成などを行った. その他位 置情報を描画するための地図の準備や中間発表の際のメインポスターのレイアウトを担当した. 4 月 ・プロジェクト全体の顔合わせを行い, 地図班とネットワーク班の編成をした. またプロジェ クト全体のリーダーと各班のリーダー, 技術リーダーを選出し, 地図班のチームリーダーと なった. 5月 ・現在の技術を調査しながら, プロジェクトテーマから今後何を制作していきたいかブレイ ンストーミングを行った. その結果からプロジェクト全体の方針決定を行い携帯端末を用い Group Report of 2011 SISP - 112 - Group Number 12-A/B Smart FUN Project ることとなった. ・使用する端末を iOS 系,Android 系とし,Android 担当となった. ・Android 開発を行うための開発環境を整えた. 環境が整った後は基本的な技術取得として Holloworld の表示, 画像の表示, 入力したテキストの表示を行った. ・技術取得をしつつ, そのようなアプリケーションを作るのか構想を決定していった. ・位置を描画し, 拡張機能をつけることで情報を得られるものを制作することになったので, 位置情報を描画するための地図の準備を始めた. まずオープンキャンパスの地図を担当の教 員から借り, 適切な表示が出来るように地図の調整を行った. 6月 ・オープンキャンパスで使用されている地図では想定している位置描画が出来ないことと なったので, 学生便覧に使用されている地図のトレーシングを行った. その際開発に用いて いる端末の画面サイズに合わせ, なるべくファイルの重さを軽くするようにした. 地図の準 備に伴い, 位置を描画するためのアイコンを作成した. ・Android の画面デザインを行うために XML を用いた画面デザインの技術習得を行った. まず画像にアニメーションをつけた. これは Android 開発環境の XML レイアウト画面で簡 単に作成できるものを使用した. 続いてチャット機能の基礎となる edittext とボタンを連動 させてテキスト入力画面以下に入力した文字列を表示させるプログラムを制作した. ・画像を使用することに伴い, マルチタッチによる画像の拡大縮小のプログラムをサンプル コードを参考に作成したが想定どおりには動かなかった. ・ネットワーク班の制作した位置描画を地図と照らし合わせたが, 地図の縮尺がずれている こと, 画面サイズが各機種異なることなどが理由で誤差が大きく表示された. そのため, 後期 では縮尺が正しい地図を制作するために実測を行う. 7月 ・中間発表に向けて活動の概要を紹介するメインポスターの制作を行った. 主にレイアウト を担当し, 文章の補填をおこなった. ・中間報告書の担当分を作成した. (※文責: 松山陽子) 6.2.2 渡邉憲人 地図班技術リーダー渡邉憲人の担当課題は以下のとおりである. 前期は技術リーダーとして, 率先して技術の取得をし, アプリケーションの作成を行った. Group Report of 2011 SISP - 113 - Group Number 12-A/B Smart FUN Project 4月 顔合わせ, 班編成をし地図班の技術リーダーをすることに決まった. 技術習得のためのスケ ジュールを作った. 使いたいハードやどんな機能を実装したいかの意見出しをした. 学内で携帯端末をつかった一風変わった鬼ごっこを提案したが, 最終発表を見据えたときに 鬼ごっこだけでなく利用出来る状況を増やしたいということで保留となった. 5月 4月から続いていた何を作るかのアイディア出しは, まず位中間発表までに置情報表示の機 能を作り, 後期から更にその情報を利用した拡張機能を実装していくという方向で話がまと まった. 予算申請をするため, 必要な物品をリストアップしていった. 地図班が必要だと考えた物品 は,Android 端末・iPhone・iPad があげられた. 位置情報を使用する際の地図として, 学生便覧についる学内地図やオープンキャンパスのパ ンフレットに使われていた地図などを試し, 中間発表は学生便覧の地図を使うこととなった. しかし, 縮尺の関係上今後違う地図を検討するということになった. 更に技術習得をするため, 中間発表時に使うと予想される画像表示に関する技術習得を目指 した. 私は Android 端末のアプリケーションをメインとしていたので,Java と AndroidSDK による開発と iOS 用アプリケーションをメインで開発しているメンバーとの技術の共有で きる部分の共有や, インターフェースの話し合いをした. 5月末には今後の参考として Bluetooth に関する勉強や通信可能範囲をしるための実験を した. 6月 Bluetooth を用いたチャットを実装できないか考え, それに関する技術習得のための勉強を する. ネットワーク班から位置情報を算出するプログラムのプロトタイプが出来たため, それを用 いて地図上にポインタを表示するというプログラムを組み, 精度や不具合を確かめる. 精度 による誤差や, 計算式の仕様上起こってしまう位置情報の解なしや虚数解が出て位置情報が 表示できないときの処理を考えた. 結果として誤差に関しては表示する画像に対して掛け算 などを加え簡単な補正をかけ, もし値が取れなかった場合は前回の位置を表示するという処 理をすることとなり, それを実装した. 下旬から中間発表のためのおおまかなポスターの内容を考えた. 7月 中間発表に向けてポスターの中身を固めていき, サブポスターのレイアウトをすることと なった. さらに中間発表でデモンストレーションを行うことになっていたのでそのデモンストレー ション用アプリケーションの調整のため細かな補正を位置情報にかけていった. Group Report of 2011 SISP - 114 - Group Number 12-A/B Smart FUN Project 発表用資料のスライドに対する意見や発表方法に関する提案を行った. 大型印刷機を使ってメインポスターとサブポスターの印刷をした. 発表は自分は後半のスライドの後半を担当することになったのでそこを重点的に行い, 質問 に対して返答に困らないように練習した. 当日は返答に困る場面もあったが, 聞かれた質問にはちゃんと返答することが出来た. (※文責: 渡邉憲人) 6.2.3 佐々木龍 地図班佐々木龍の担当課題は以下のとおりである. 4月 プロジェクトメンバーの顔合わせ, 挨拶を行った. プロジェクトの目的やテーマなどの説明を受けた. 班分けを行い, 地図班,iOS 班に所属することとなった. プロジェクトリーダー, 技術リーダーなどの役割決めを行った. 今後何をするべきか, 何を作るかを各班に分かれて話し合った. 5月 メンバー全員でブレインストーミングを行い, プロジェクトでどんなものを作るのかアイ ディアを出し合い決定した. 情報収集を行い, その情報をまとめ提出した. 必要なものの洗い出しを行い, 予算案を決定した. iOS 班で集まり勉強会を行い,Objective-C の文法や,Xcode の使用方法について知識の共有, 向上を図った. アプリケーションの開発を行い, 画像表示, 画像遷移, 画像切り替えまで実装した. 先生から MacBookPro をお借りし, 環境を整えた. 教室が使えないときや自宅でも開発が可 能になり, 開発がよりスムーズに行えるようになった. Group Report of 2011 SISP - 115 - Group Number 12-A/B Smart FUN Project 6月 ボタンの表示, 非表示の切り替えをアニメーション化させて, 位置座標の場所にピンを表示 させた. アプリケーション開発に必要なライセンスを取得し, 証明書の登録, アプリケーションの登 録, デバイスの登録を行った. それにより, アプリケーションの実機テストが可能になった. 開発環境のアップデートを行った. それにより,iPod touch での実機テストが可能になった. ネットワーク班で開発したプログラムと結合させ, アプリケーションのプロトタイプを作成 した. その際, 多くのエラーが発生したためデバッグ作業に時間をとられた. 取得した座標データのままでは地図上に表示する際に誤差があるため, その誤差を修正する 調整を行った. 7月 スレッド処理を実装し, アプリケーションの動作がスムーズになった. iOS デバイス間での Bluetooth 接続ができるようにした. 接続相手の位置情報を取得し, 表示できるようにした. 操作なしで, 自動的に相手の位置を取得できるようにした. 操作なしで, 自動的に階層を切り替えるようにした. 報告書の作成を行った. 自分の位置を表示するためのピンの画像を作成した. 中間発表を行った. 後期の目標や班分け, アプリケーションの最終イメージを決定した. (※文責: 佐々木龍) 6.2.4 松浦光輝 地図班松浦光輝の担当課題は以下のとおりである. 4月 ・グループ分け ・リーダー決め Group Report of 2011 SISP - 116 - Group Number 12-A/B Smart FUN Project ・ブレインストーミング プロジェクトメンバーで自己紹介を行なった. 地図班 5 名と, ネットワーク班 8 名に分けて, 私は, 地図班になった. そして, プロジェクトリーダーとグループリーダー, 技術リーダーを 決めた. その後, プロジェクトの今後の方針を話し合った. さらに, アプリケーションを作成 するために Androoid 班と iOS 班に分かれて, 私は iOS 班になった. 5月 ・日程決め ・基礎勉強 ・位置情報の取得方法の検討 ・開発環境 ・予算申請 位置情報の取得方法の話し合いや今後の活動の決定を行なった. そして,xCode の使用方法 や実行方法,Objective-C を勉強した. それと同時に,iOS 班では開発環境を整えた. 整った 後,Helloworld の表示, 画像の表示などを行なった. 技術取得をしながら, 最終的にどのよう なアプリケーションを作るのか決めた. 必要な予算の申請のための話し合いと, 予算の使用方法の検討を行なった. 6月 ・位置情報取得アプリケーションのプロトタイプ作成 ・ポスター, スライド作成 ボタンの表示, 非表示の遷移をアニメーション化させて, 位置座標のところにピンを表示さ せた. アプリケーション開発のライセンスを取得し, 証明書の登録, アプリケーションの登録, デバ イスの登録を行なった. よって, 実機テストが可能になった. 次に, 開発環境のアップデート を行い,iPod touch での実機テストを可能にした. ネットワーク班で開発したプログラムと結合させ, アプリケーションのプロトタイプを作成 した. 6 月の後半は, ポスターやスライド作りを行なった. 7月 ・ポスター, スライド作成 Group Report of 2011 SISP - 117 - Group Number 12-A/B Smart FUN Project ・中間報告書の担当の部分を作成 ポスター, スライドの作成の補助をしつつ, 中間報告書の作成を行なった. (※文責: 松浦光輝) 6.2.5 葛西基海 ネットワーク班葛西基海の担当課題は以下のとおりである. 4 月・リーダー決め ・チーム編成 ・ブレインストーミング 班員の顔合わせ後, リーダー決めを行い, 私はネットワーク班となった. その後, 班員間の連 絡方法を決め, 情報共有のするためにサイボウズ Live に登録した. また, ブレーンストーミ ングを行いどのようなアプリケーションを作成するかを考えた. アプリケーションを作成す るために Android 班と iOS 班に分かれ, 私は iOS 班となった. 5 月・勉強 ・位置情報の取得方法の検討 ・Bluetooth 通信の利用方法の検討 ・アクセスポイントの特定 ・電波強度の測定 iOS アプリケーションの開発環境である Xcode の使用方法や実行方法,Objective-C につい て勉強した.iOS における位置情報の取得方法を検討した. 無線 LAN のアクセスポイントか らの電波強度で位置情報の取得することになったためアクセスポイントの特定と電波強度の 測定を行った. また,iOS と Android 間で Bluetooth 通信ができないか検討した. 6 月・WiFi の情報を効率よく取得するプログラムの作成 ・アクセスポイントの座標化のための大学の測定 Group Report of 2011 SISP - 118 - Group Number 12-A/B Smart FUN Project WiFi から電波を受信する際の受信方法を効率よく行うためにプログラムにスレッド処理 の追加, またタイマー処理を設けて自動的に更新されるようなプログラムを作成した. アクセ スポイントを座標化させるために大学の縦・横の長さや教室・廊下の大きさなどを測定した. 7 月・中間報告書の各項目の内容や担当者を決め ・中間発表に向けてプレゼンテーションの練習 中間報告書を書く際の各項目のページ数の設定や各項目の担当者を割り振った. また, 中間 発表に向けてプレゼンテーションの原稿の暗記や発表練習を行った. 8 月・オープンキャンパスに向けての発表資料の変更 ・オープンキャンパスでの発表・デモ機の説明 (※文責: 葛西基海) プロジェクトリーダー (前期) 6.3 この節では, プロジェクトリーダーが前期に行ってきた課題について記載する。 6.3.1 山田格 プロジェクトリーダー山田格の担当課題は以下のとおりである. 前期では, 毎回の準備, 議事進行を行い, 各グループのスケジュール管理, 様々な責任者の補佐を 行うことで, プロジェクトの統括を行った. 4月 ・第 1 回のシステム情報科学実習の顔合わせの際に, 各グループのリーダーと技術リーダー の選出を行い, プロジェクトリーダーに立候補した. また, 今後の方針について各リーダーと 検討した. また実装したい機能案を次回への課題としメンバーに提出を求めた. 5月 ・4 月に出した課題により, 意見をまとめ中間発表までに実装する機能を決定した. それに伴 い, 技術習得スケジュールと開発環境の整備を行った. ・最終的に必要な物資を検討し, それによって予算案を決定した. またその予算案から中間発 表までに必要な物資を優先して発注した. ・位置情報を推定するために, アクセスポイントの捜索とそのアクセスポイントから位置情 報計算方法を考察した. Group Report of 2011 SISP - 119 - Group Number 12-A/B Smart FUN Project ・日経 BP 記事検索サービスと北海道新聞データベース講座へ参加し, それぞれのデータ ベースの使い方を学んだ. 6 月 ・全体の進捗確認を行いながらスケジュールを調整するとともに, 随時中間発表, 中間報告書 などの責任者を決め, それぞれの活動の管理を行った. ・Bluetooth を用いて相互通信を行う方法を検討した. ・提出物や, プロジェクトワーキンググループ主催の講座への確認を行った. 7月 ・中間発表, 中間報告書への準備を担当者と共に行った. (※文責: 山田格) iOS 班 (後期) 6.4 この節では,iOS 班 (UI 班, ネットワーク班) のメンバが後期に行ってきた課題について記載する. 6.4.1 江端竜次 iOS 班のグループリーダー江端竜次の担当課題は以下のとおりである. 後期には, グループリーダーとしてグループの取りまとめや前期に引き続き開発を行った. 10 月 ・効率良く動くために後期の予定を考え, メンバーそれぞれの担当の仕事を割り振った. 私 の仕事として, データベースをどのように使うか, どのようなメソッドを作るかなど細かく 決定した. プログラムとしては FMDB の動向を調べた. 11 月 ・前期に作成したデータベースのプログラムを決定したとおりに動くように作成した. 作成 したプログラムを本プログラムに組み込みを行った. アプリに使用する地図を調整し, 作成 した. 12 月 ・発表に向けてプログラムを調整し, 発表用の資料を作成した. 成果発表を行った. 1月 ・報告書の作成を行った。 (※文責: 江端竜次) 6.4.2 岩佐尚史 iOS 班 (ネットワーク班) 技術リーダー, 岩佐尚史の担当課題は以下のとおりである. Group Report of 2011 SISP - 120 - Group Number 12-A/B Smart FUN Project 後期では, 技術リーダーとして率先してアプリケーション開発を行った. 10 月 ・班の再編成 ・後期の日程の検討 ・Bluetooth によるすれ違い通信の検討 前期の班編成の動きづらさを考え,OS 別に班の再編成を行い,iOS のネットワーク班となっ た. 後期に作成するアプリケーションの全体像を決定して,Bluetooth 通信や DB のテーブル 定義などの大まかな仕様を決定した. その後, アプリ完成までに必要なタスクを考えて iOS のネットワーク班のタスクを班員と相談しながら決めた. 今まで完成していた Bluetooth の機能に加え, 接続認証を行わずにすれ違いにより接続でき ないかを検討し, すれ違い通信機能をアプリに組み込んだ. 11 月 ・DB を用いた機能を組み込む ・アプリケーションの調整 ・Funmap の仮完成 前期から続いていた不安定さの一員である強制終了が起こるバグを修正することができた. これにより安定性を増し, 長時間起動し続けることが可能となった. 作業を分担していた DB を用いた機能が完成したので,Funmap にその機能を組み込む作業を行った. カメラ機能と掲 示板機能, つぶやき機能も同時に完成したので, それらを組み込みアプリケーションを仮完 成させた. 12 月 ・発表用アプリケーションの完成 ・最終発表 Bluetooth 通信において1対1接続では安定していたが, 多台接続時に不安定になる不具合 があったので修正した. 最終発表直前にミスで Bluetooth 通信を行うと強制終了が起こるバ グが発生したので, それを修正した. その他にも細かい調整を行い, 最終発表用アプリケー ションを完成させた. 1月 ・報告書の作成 プロジェクト学習の個人報告書, グループ報告書の作成を行った. (※文責: 岩佐尚史) Group Report of 2011 SISP - 121 - Group Number 12-A/B Smart FUN Project 6.4.3 佐藤史弥 iOS 班 (ネットワーク班), 佐藤史弥の担当課題は以下のとおりである. 10 月 前期末の Bluetooth 通信で送受信できる情報が一件のつぶやきと位置情報の文字列だけ だったので, それを複数件送受信できるように, 文字列の中身を XML にすることにした. 最適な XML の構造作成するために, まず,XML と iOS での XML の利用方法を勉強した. iOS の Bluetooth 通信で, 文字列以外のデータの送受信の方法がわかった. XML の勉強を中止し,Bluetooth 通信で送受信できる NSData 型に変数やクラスを変換す る方法の勉強を始めた. 変数をそれぞれ NSData 型に変換する方法を取得. 11 月 クラスの NSData 型に変換する方法を取得. 変数やクラスを NSData 型への変換方法がわかり, プログラムの作成が始まった. Bluetooth 通信のつぶやきの複数件の送受信が可能なプログラムが完成. メインのプログラムに組み合わせた. iOS でのカメラ機能を実装するプログラムの作成に入った. カメラ機能のプログラムの勉強を始めた. 画像処理を行うためのプログラムの勉強を始めた. 画像を保存するためのプログラムの勉強を始めた. カメラ機能と画像処理と画像保存・送受信が可能なプログラムを完成させて, メインのプロ グラムに組み合わせた. つぶやきピンに撮影した画像のサムネイルボタンを表示させるプログラムを作成. サムネイルボタンが押された時にその画像が最前面に表示させるプログラムを作成. つぶやきや撮影した画像・受信した画像の一覧表示をするプログラムの作成に入った. Group Report of 2011 SISP - 122 - Group Number 12-A/B Smart FUN Project 12 月 つぶやきや撮影した画像・受信した画像の一覧表示をするプログラムが完成した, メインの プログラムに組み合わせた. 地図画像をユーザーが選択可能なプログラムを作成. 自分の位置を示すピンの色を変更するプログラムを作成. つぶやきのピンを一定時間後に表示させなくするプログラムを作成. サムネイルボタンが押された時にその画像が最前面に表示させるプログラムの機能が使えな くなっていたことが発覚したため, そのプログラムの修正を行った. つぶやきや撮影した画像・受信した画像の一覧表示をエリア別で行うプログラムの作成. 現在位置を自分で決めることが出来るプログラムの作成. つぶやきの一斉送信際のどこかでエラーがでた. エラーの原因を探し始めた. 最終発表用のスライドの制作に協力した. エラーの原因が見つからず, 最終発表までの時間が無かったため, エラーが起こる部分のプ ログラムを実行しないように変更した. (※文責: 佐藤史弥) 6.4.4 佐々木龍 iOS 班 (UI 班), 佐々木龍の担当課題は以下のとおりである. 9月 各班のリーダー決めを行った. 今後の予定を決定し, 後期の予算を話し合った. 正確な地図を作成するため, 未来大学内の測量を開始した. 10 月 測量を終え, 地図を作成し、地図の基盤が完成した. つぶやき機能に必要な吹き出しの実装を行った. Group Report of 2011 SISP - 123 - Group Number 12-A/B Smart FUN Project スレッド処理を改良させ, 前期よりもスムーズに動作するようにした. UI 班の作ったプログラムとネットワーク班の作ったプログラムを結合させた. 11 月 つぶやきの改行処理を完成させた. データベースの座標を新しい地図に対応させた. ピンをボタンに変更し, タッチ処理によって吹き出しの表示/非表示を切り替えるようにし た. 吹き出し画像を自作した. 座標を計測する計算の修正を行った. 12 月 掲示板のタブにアイコンを導入した. また, 一部のアイコンを自作した. 最終発表会に向け,FunMap のマニュアルの作成を行った. ピンの自動移動 ON/OFF の設定に用いるアイコン画像を自作した. 最終発表を行った. (※文責: 佐々木龍) 6.4.5 松浦光輝 iOS 班 (UI 班), 松浦光輝の担当課題は以下のとおりである. 9月 ・グループのリーダー決め ・スケジュールの調整 ・未来大学の測量 後期では,iOS 班 6 人の中からネットワーク班 3 人,UI 班 3 人に分かれて, 私は UI 班になっ た. グループのリーダーを決めた後, 後期のスケジューリングをした. そして, 位置情報の精 度向上のために未来大学内の地図を正しく作成することになった. Group Report of 2011 SISP - 124 - Group Number 12-A/B Smart FUN Project 10 月 ・未来大学の測量, 作成 ・付加機能の作成 9 月から開始していた大学の測量の結果を計算して新しく地図を作成した. 付加機能として は, つぶやきと掲示板の UI の作成を行った. つぶやきは, 吹き出しの画像の上に文字がのる ようにした. 細かい調整は 11 月に行った. 11 月 ・付加機能の整備 ・精度の向上 10 月から作成していた付加機能がうまく機能しなかったため引き続き制作を続けた. 主に つぶやき機能の改行処理や吹き出しの表示に関して行った. 精度をより上げるためにデータ ベースの中に入っている座標の修正をした. 12 月 ・精度の向上 ・マニュアル作成 ・最終報告書の担当の部分を作成 位置情報を取得するために必要な計算を見直した. よって, 精度が少しよくなった. 画面説明や操作説明など記したアプリケーションの説明書となるマニュアルを作成した. マ ニュアルは, 最終発表の時に使用した. スライド作成の補助をしつつ, 最終報告書を作成した. (※文責: 松浦光輝) 6.4.6 葛西基海 iOS 班 (UI 班), 葛西基海の担当課題は以下のとおりである. 9月 ・今後の活動概要の話し合い ・班編成 ・予算の話し合い 後期活動開始時に前期活動の振り返り, 今期の活動について話し合いを行った. 今後どのよ うな開発を行うのか, 班編成の変更についての話し合いを行った. 班体制は, 前期の地図班と Group Report of 2011 SISP - 125 - Group Number 12-A/B Smart FUN Project ネットワーク班から各 OS ごとの IOS 班と Android 班への変更を行った. 全体を Android 班と iOS 班に再編成し, その中で UI 担当, ネットワーク担当に分かれた. 私は IOS 班の UI 担当となり,UI 担当のチームリーダーとなった. また, プロジェクト予算について未使用分 を各班ごとで前期の開発状況を考慮しながら議論した結果, 新規に購入はせず返上する事と なった. 10 月 ・位置情報の取得方法の再検討 ・地図の改良 電波強度が取得される回数を増やすことによって, より位置情報を正しく表示できると考え プログラムの改良を試みたが, 電波強度を習得する動作自体が本体に負荷がかかり時間が掛 かっていため, 電波強度の更新動作の頻度を早くすることができなかった. そこで, 前期と同 じ方法で位置情報の取得を行うこととした. 前期も開発段階で用いた地図の縮尺に誤差があり, 位置情報の精度が落ちている原因にも なっていたため, 大学の3階部分の間取りをより正確に実測し, 正確な地図の作成を行った. 11 月 ・つぶやき UI の作成 ・掲示板 UI の作成 つぶやきや掲示板についてのレイアウトについて話し合いを行った. つぶやきや掲示板をどのような形で表示させ, どのような機能をつけたほうが使いやすいか などのユーザインタフェースについてアイディア提案を行った. また, 実装する際は, プログ ラムをどのように構成するかなど議論を行った. 12 月 ・つぶやきの調整 ・掲示板の調整 ・最終報告書の項目分け ・最終発表に向けての発表練習への参加 つぶやきのピンを隠す機能や掲示板の表示方法など, つぶやきと掲示板をより使いやすいよ うに表示させるように試行錯誤しながらプログラミングを行った. また, 最終報告書でどのよ うな項目が必要なのか考え, 本プロジェクトで活動内容を明記できるよう項目の設定を行っ た. 1月 ・フィードバックシートの記入 Group Report of 2011 SISP - 126 - Group Number 12-A/B Smart FUN Project ・最終報告書の作成 ・最終個人報告書の作成 ・仕様書の作成 1 月は, 本プロジェクトでの活動内容をまとめるため最終報告書, 最終個人報告書, 仕様書な どの作成を行った. (※文責: 葛西基海) Android 班(後期) 6.5 この節では,Android 班(UI 班, ネットワーク班)のメンバが後期に行ってきた課題について記 載する. 6.5.1 松山陽子 Android 班, グループリーダー松山陽子の担当課題は以下のとおりである. 後期には地図の作成や最終発表のポスター製作などを行った. 9月 ・後期活動開始時に前期活動の振り返り, それをふまえた今期の活動について話し合いを 行った. 今後どのような開発を行うのか, 班編成を見直す必要があるかなどを話しあった. ・活動内容として開発する内容が決定した際, 班編成を前期の地図班とネットワーク班から 各プラットフォームごとに変えたほうが良いということになった. 全体を Android 班と iOS 班に再編成し, その中で UI 担当, ネットワーク担当に分かれた. このとき,Android 班の UI 担当となり,Android 班のチームリーダーとなった. ・プロジェクト予算の未使用分があったため, 各班ごとに前期の開発状況を考慮しながら予 算をどうするか議論した. その結果, 特に実機などを増やす必要が無く, その他の機器に関し ても十分な環境が揃っていたため, 新規に購入はせず予算を返却することとした. 10 月 ・前期よりも位置情報の精度を上げるため縮尺が正確な地図を作成することになった. 位置 が上がるかテストを行うため, まず 3 階部分のみ実測を行い, 地図を作成することにした. 地 図を作製する際の土台データを作成した. ・付加機能の UI について議論を行った. 各機能にボタンを持たせて起動させるか, 画面上を タッチするか, どのように出現させるかなどを議論した. また,iOS と Android で開発に差が Group Report of 2011 SISP - 127 - Group Number 12-A/B Smart FUN Project 出ており API 等がない Android 班が遅れていた. そのため, 各 OS ごとに UI に差が出そう だったため, 最低限あわせるポイントを決定するなどして対応した. ・開発は, 画像スライドのプログラムを作成した. 前期は画像をタッチするとタッチした部分 に画像の端が移動するようになっていた. サンプルプログラムを参考に端が移動しないよう に修正し, プログラムを作成した. 11 月 ・画像スライドプログラムが完成したので, 現行のプログラムに組み込む作業を行った. ・プログラムを見直し, テスト版の地図を用いると位置精度が向上した. そのため, テスト版 の地図をより分かりやすいように改良を行った. 部屋ごとに配色を見直し, 線の乱れをなく し, 部屋名を追加した. ・掲示板機能の UI がボタンで起動することに決定していたため, 地図画像上にボタンを配置 できるかテストプログラムを作成した. いくつかのサンプルプログラムを元に何パターンか 試したが, 現行の表示の方法ではボタンを作成することが出来無かった. そのため, ボタンダ イアログで表示することした. 12 月 ・最終成果発表に向けて, メインポスターとサブポスターの作成を行った. ・中間発表時のポスターを見直し, プロジェクトとしてポイントとなる部分がここであって いるのかを主要メンバーと話し合った. 随所で担当教員からアドバイスを頂いた. ・活動全体を通してのポスターだったため, 後期の活動を各班ごとの週報などを参考にしな がらまとめた. 共通部分をまとめ, どのように書けば活動としてやってきたことをアピール できるか考えながら記載していった. ・サブポスターを成果物に関してのポスターとすることとした. ・サブポスターを制作するにあたり, 成果物がどのような仕組みで動いているのか理解する 必要があった. そのため, 各班の開発者に協力をお願いし, 位置取得に関すること, つぶやき 機能や掲示板機能がどのように動作し内部的にどのような処理をしているのかをまとめても らった. まとめてもらったものを参考に, 機能ごとに動作をまとめ, ポスターを制作していっ た. 1月 ・最終報告書の作成を行った. (※文責: 松山陽子) Group Report of 2011 SISP - 128 - Group Number 12-A/B Smart FUN Project 6.5.2 渡邉憲人 Android 班(UI 班)技術リーダー, 渡邉憲人の担当課題は以下のとおりである. 後期はつぶやき機能の実装や, 最終発表の資料作成を行った. 9月 中間発表までのチーム編成では OS 間の言語の違いから連携が取りにくいということにな り, チームの再編成が行われ,UI 班として位置情報の精度向上と見た目の改善を行うことと なった. 技術リーダーとしてネットワーク班にも顔を出すこととなった. 後期の最終目標として, 位置情報共有, つぶやき, 掲示板機能の実装までを行うという確認を した. 更に夏休みをはさんでいたため, ソースコードの確認と整理を行った. 10 月 位置情報の精度向上のためのディスカッションが行われ, 電波強度の平均化を目指したが, 習得すべき技術と精度向上に当てられる時間を照らした際に厳しいと判断し,4 点での座標 算出によって精度を上げることにした. 下旬からはネットワーク班の Bluetooth 通信にある程度めどが立って来たため, つぶやき機 能の実装に移行することとなった. この時掲示板機能,UI の調整のメンバーも割り当てた. つぶやき機能を実装するに辺りサンプルコードの中に Bluetooth によるチャットを行うも のがあったので改良して文字が送れないかを試行錯誤した. つぶやきのために必要なテキストフィールド, つぶやきボタンの設置と, 打ち込まれた文字 の取得の実装も行った. 11 月 文字情報を位置情報を送るための変数に保存し, 相手に送り表示することが出来た. この時, つぶやいた文字だけでなく位置情報の X,Y 座標も表示されてしまうため, つぶやき部分のみ を表示する方法を模索し, つぶやき部分のみの表示に成功した. しかし, 文字を受け取ったとき相手のピンの近くに文字のみが表示されてしまうためつぶや いているというらしさがなかったため吹き出しを文字の表示にあわせて出せる方法を考え, 実装することが出来た. 中旬から下旬にかけ最終発表の準備が始まり, 発表スライドの作成 及び最終発表者をすることとなった.11 月末に発表スライドの第1案が完成し, メンバーに 見て貰った. 12 月 第 1 案をもとに先生方に発表を行い, 指摘を頂き訂正をした. その後も発表練習にて声の大 きさなど発表態度の注意やスライドの細かな訂正を繰り返した. 更にデモアプリの流れをメ ンバーで考えその準備も行った. Group Report of 2011 SISP - 129 - Group Number 12-A/B Smart FUN Project 当日はデモアプリが正常に動かない端末がありぐだついてしまったところもあったが, 時間 内にわかりやすく説明することが出来た. 1月 最終報告書の作成を行った. (※文責: 渡邉憲人) 6.5.3 清野僚介 Android 班(ネットワーク班), 清野僚介の担当課題は以下のとおりである. 後期の活動では,Bluetooth 通信の開発, つぶやき機能の実装や最終報告書の責任者を担当した. 9月 ・後期最初のプロジェクトでは, チームの再編成を行い. 自分は Android 班のネットワーク 班になった. ・後期の活動方針を決めた. ネットワーク班では Bluetooth を利用して自律分散的に情報の 通信を行えるようになることだった. ・Ziio7 の開発環境やドライバが正しく整えられてなかったので, ドライバを作成し Ziio7 で も開発が出来るようした. 10 月 ・プラットフォームに関係なくどういった仕様にするか, またどのような機能が欲しいかを 全体で話し合い, 機能の開発に取り掛かった. ・位置情報などの各種情報を相手に送信するために,Bluetooth を用いて情報の通信を行える ように Android 開発の教本を読んだり Bluetooth を用いたチャットのサンプルプログラム を参考にしながら開発を進めた. ・精度は悪いが Bluetooth を用いた通信がペアリング登録済み同士の間で出来るようになっ たのでつぶやき機能の実装を行うことになった. ・アプリケーションが重くなってフリーズするのを防ぐためにメモリの開放を学び, 画像を 参照する際にメモリを開放するようにした. ・つぶやきをテキストフィールドに打ち込み, つぶやくボタンを押すと画面に打ち込んだ文 字が表示されるようにした. 11 月 ・つぶやきを相手に送信するために,Bluetooth で位置情報を文字で送る際に, 区切り文字 を付けて一緒に送り, 受信側は受け取った文字列を区切り文字で判別し, それぞれの変数に 入れるようなアルゴリズムでつぶやき文字の通信を行い, 実装に成功した. Group Report of 2011 SISP - 130 - Group Number 12-A/B Smart FUN Project ・通信が連続で行われた際につぶやき文字が短くなってしまうことがあったので修正を行っ た. ・アニメーションの学習を行ったが, 思うように組み込むことができず断念した. ・画像の送受信を行うために画像の送信方法とカメラ機能の組み込み方を学習していたが, 思うように上手くいかず辛うじて出来たモノも使い勝手が悪かったため, 開発期間の問題も あり今回は見送ることにした. ・Bluetooth を用いた通信の精度が悪かったので精度を上げるために調整を行った. ・後期成果発表に使うアンケート用紙を Tex ファイルで作成した. 12 月 ・色々な資料を参考にして, 最終報告書の項目を決めた. ・自分は最終発表の発表者には選ばれなかったので, 発表者の発表を聞いてアドバイスを出 しながら成果物ポスターの作成をしていた. 成果物ポスターを作る際に自律分散型ネット ワークを図で書いて人にわかりやすく伝えることができなかったため, 何回か指導教員に話 を聞きにいき, 完成させることができた. ・最終発表ではアプリケーションのデモンストレーションを担当したり, 細かい雑用を行っ た. ・決定していた最終報告書の項目に, 中間報告書やプロジェクト中にどのようなことをして いたかなど様々なことを加味し担当者を決めてサイボウズにアップした. 1月 ・皆に書いてもらった各担当文書を回収し,Tex 文書に編集し, 添削を行い, 指導教員に提出 した. (※文責: 清野僚介) 6.5.4 阿部和哉 Android 班(ネットワーク班), 阿部和哉の担当課題は以下のとおりである. 後期にはネットワーク班内のリーダーを務めた. 9月 ・中間発表までのグループ編成では OS 間の言語の問題から連携が取りにくいとのことでグ ループの再編成が行われた. ネットワーク班に配属され Bluetooth を用いた自律分散型ネッ トワークの構築に励むこととなった. 10 月までの目標として Android ネットワーク班で以 下の 4 つの目標を立てた. Group Report of 2011 SISP - 131 - Group Number 12-A/B Smart FUN Project ・後期の活動計画を決定した, 位置情報の共有, つぶやき機能, 掲示板機能, カメラ機能の実 装を行うことになった. ・前期活動で完成したソースコードの確認, 整理を行なった. 1. ペアリング済み端末に自動的に接続を行う 2. 文字情報の伝達を可能に 3. 数秒毎に次の端末への接続を行う 4. 前期 FunMap とのソース組み合わせ 10 月 ・Android2.1 プログラミングバイブルの BluetoothEx を元に Android の Bluetooth プロ グラムの開発を始めた. ・サンプルのデータの送受信の手法, データの接続法の理解に努めた. ・BluetoothEx では仕様として 1 対 1 通信しか行えない, また 2 度接続受け入れができない などの欠点を発見した. ・Bluetooth 通信の自動化としてスレッドを導入して開発を行った. ・FunMap の Bluetooth 導入版を開発した. FunMap に Bluetooth 関連のクラスを追加し, メインとなるクラスに変数, 関数を追加するだけであったのでそこまで抵抗もなく作業が進 んだ. しかし通信を 1 対 1 通信を繰り返し多人数接続にように扱うという一時しのぎの手法 で開発を行うこととなった. 11 月 ・プログラムの統合作業担当に指名される. ・FunMap の位置精度の向上プログラム版と Bluetooth 通信プログラムの導入版を統合 した. ・画像スライドプログラムのサンプルを渡され, レイアウトの学習を始める. ・以前に統合した最新版の FunMap に画像スライドプログラムを導入する. ・つぶやきボタン, つぶやき入力欄, 地図のレイアウトを配置した. ・FunMap の Bluetooth が情報をほとんど情報を送れないためことに問題を感じ, このまま ではアプリケーションの仕様として問題が出ると考え Bluetooth 通信の改良に踏み切った. Group Report of 2011 SISP - 132 - Group Number 12-A/B Smart FUN Project ・FunMap の Bluetooth 管理クラスである BluetoothChatService のクラスである Accept- Thread,ConnectThread,ConnectedThread を多人数への接続に対応させるために ConnectedThread を配列化し, またそれぞれを大きく仕様変更した. ・FuuMap の Bluetooth 接続を多人数接続に耐えうる仕様に改良した. ・自分の位置につぶやきを表示できるようにした ・掲示板実装担当のデータベース構築の手助けを行った. ・Bluetooth を利用して送られてきた他の端末の位置情報を自分の端末に表示できるように した. ・Bluetooth を利用して送られてきたつぶやきと位置を関連づけて地図上に表示した他端末 の位置につぶやきを合わせて表示した. ・FunMap に掲示板プログラムを統合する. 12 月 ・発表会の前半の発表担当になる. ・発表会の練習を始める. プロジェクトのメンバーと発表の声量, 態度を注意される. また当 日のアプリケーションのデモンストレーションの流れの確認を行う. ・当日の発表は後に発表を聞いた人に聞くと声は出ていたと言われたが終始テーブルに置か れていたノートパソコンのスライドに目を向けていたのが反省点である. 1月 ・報告書の作成を始める. ・フィードバックシートを作成を始める. ・報告書, フィードバックシートを提出する (※文責: 阿部和哉) 6.5.5 富樫健太 Android 班(UI 班), 富樫健太の担当課題は以下のとおりである. 後期の活動では, 掲示板の開発を行った. 8月 ・未来大学で行われたオープンキャンパスへの参加. Group Report of 2011 SISP - 133 - Group Number 12-A/B Smart FUN Project 9月 ・中間発表までのチーム編成から, プラットフォーム間で扱うプログラムが異なるため連携 が取りずらいという点があったためチーム再編成を行い,Android 班と iOS 班を編成した. また, それぞれの班からさらに UI 班とネットワーク班を編成した.Android 班の UI 班にな り, 位置情報の精度向上と地図のレイアウトの改善, つぶやき機能のレイアウトの作成など を行うこととなった. ・後期の活動計画を前期よりも細かく設定をし, 位置情報の共有, つぶやき機能, 掲示板機能, カメラ機能の実装を行うことになった. ・前期活動まで完成したソースコードの確認, 整理を行なった. 10 月 ・位置情報の精度の向上するための方法を色々と検討した. アクセスポイントの電波の電波 強度のブレを少なくする方法を調べ, プログラムを改良するため前期活動までに完成してい たソースプログラムを理解することからはじめ, そこから SQLite を中心に勉強もした. 提案 された方法を試行錯誤したが位置情報の精度の向上は上手くいかず, 開発に当てられる時間 も余裕がなかったため, 前期ではアクセスポイントを 3 点使った測定方法を 3 点, または 4 点を使った測定方法を採用することになった. ・後期の目標として決めたカメラ機能に関しては,Android 端末では Bluetooth による画像 の共有が行われた前例が見つからなかったため,iOS のみカメラ機能を開発することに決定 した. 11 月 掲示板機能の作成を担当することになり, 以下の実装を中心に行なった. ・Android アプリケーションの XML によるレイアウトの作成 ・プログラムによるレイアウトの作成 ・画面遷移 ・画像ボタン, ラジオボタンの作成 ・3 階の場所別の掲示板のデータベースの作成 ・メニューの作成 ・掲示板の書き込み, 表示, 保存 ・書き込み時間の取得と表示 ・掲示板別に書き込みを行うプログラムの作成 Group Report of 2011 SISP - 134 - Group Number 12-A/B Smart FUN Project ・リストビューの作成 掲示板機能の作成にあたって場所別の掲示板を作成することになった. 開発を進めてくうち に, 指定した掲示板以外の掲示板にも書き込みがされていたり, データが保存されていなかっ たりと動作が思い通りにならなかったため, 何度もデバックや違うアルゴリズムを提案する ことで問題を解決することができた. 12 月 ・引き続き掲示板機能の実装を行なった. ・中間発表で作成した資料と反省点を振り返り最終発表の資料作りについて話し合いを行 なった. ・新しく作った地図の縮尺が合っていなかったため縮尺を合わせた. ・iOS 班の位置算出のプログラムが改良されていなかったため,iOS 班の位置算出のプログラ ムを作成した. ・最終発表に向けて発表練習を何度も行なった. 1月 最終報告書の作成を行なった. (※文責: 富樫健太) 6.5.6 瀧澤祐太 ネットワーク班瀧澤祐太の担当は以下のとおりである. 8月 ・新しい Android 端末のドライバを PC に導入した. 9月 ・前期に作ったプログラムの見直し, 再度確認をした. ・Android アプリケーションの Bluetooth 通信が載っているプログラムの解析をした. ・現在の FunMap に Bluetooth 機能を盛り込むために試行錯誤をした. 10 月 ・Bluetooth 通信による画像の共有のため Obex の勉強をした. ・10 月段階にできていたプログラムに Obex を入れるために試行錯誤をした. 11 月 ・掲示板機能の作成のために掲示板機能のレイアウトを検討した. ・掲示板機能の部屋を選択する画面のボタンの設定, ダイアログのレイアウトを作成した. Group Report of 2011 SISP - 135 - Group Number 12-A/B Smart FUN Project ・掲示板機能の掲示板の文字の共有を行うために Bluetooth 通信の使用をした. ・掲示板機能の処理が重くなったためレイアウトの変更があったのでそれに合わせて中の機 能のレイアウトに依存していた部分の修正 ・掲示板機能の共有する際に新規にネットワークに介入してきた相手に対しての対応を考え, それに対しての対策は掲示板の全文字列を送ることにした. そこで, その文字列を何番目の 文字列かを判断するための対策を考えた. それについては, 何行目かを判断するための数字 を添付して送ることにした. ・掲示板機能のデータベースの改良をした. 12 月 ・掲示板機能の改良, 調整をした. ・Android アプリケーションの統合をした. 1月 ・グループ報告書の作成した. ・学習フィードバックを作成した. (※文責: 瀧澤祐太) プロジェクトリーダー (後期) 6.6 この節では, プロジェクトリーダーが後期に行ってきた課題について記載する. 6.6.1 山田格 プロジェクトリーダー山田格の担当課題は以下のとおりである. 後期には, 毎回の準備, 議事進行を行い, 各グループのスケジュール管理, 様々な責任者の補佐を 行うことで, プロジェクトの統括を行った. 9 月 ・前期での班編成では言語の違いから連携が取りにくいということで編成を見直し,Android 班と iOS 班に変更した. ・後期の最終目標として, 位置情報共有・精度の向上, つぶやき, 掲示板機能の実装と決定し た. Group Report of 2011 SISP - 136 - Group Number 12-A/B Smart FUN Project 10 月 ・進捗からこれ以上の予算は必要ないと判断し, 残った予算を返還した. ・未来祭とメンバーの多数が受験する資格試験があったためスケジュールの調整を行った. 11 月 ・プロジェクト内での中間発表を行うために各グループでの調整を行った. 12 月 ・最終発表, 最終報告書への準備を担当者と共に行った. 1月 ・最終報告書の執筆と, プロジェクトの最後のまとめを行った. (※文責: 山田格) Group Report of 2011 SISP - 137 - Group Number 12-A/B Smart FUN Project 第 7 章 結果 この章では, プロジェクトを通じて得た成果について記述する. 7.1 7.1.1 前期成果 iOS 班 成果としては,Objective-C の基礎技術,Xcode の使用法の取得, 開発環境の構築, 位置情報を取得 し表示する機能の実装,Bluetooth 通信機能の実装, データベース作成技術の取得, ユニバーサルア プリケーション開発技術取得, 作業の分担・連携の手法取得, アプリケーションの企画・提案の手法 取得などが挙げられる. • 開発環境 本プロジェクトでは iMac,MacBookPro を用いてアプリケーション開発を行った. プロジェ クト開始当初は開発環境がなく, 先生から MacBookPro をお借りした. また,iPad を 1 台,iPad2 を 1 台,iPod touch を 1 台を予算で購入し, アプリケーションの実機テストに使用した. ま た,iPhone/iPod touch と iPad の両方の端末で動作する, ユニバーサルアプリケーションの作成方 法を取得することができた. 開発環境を整えるために, 1.iMac や MacBookPro の OS のアップデート 2.Apple ID の取得 3.iPhone SDK (Software Development Kit) のインストール 4.iPhone Developer Program の登録 5. 証明書を作成し登録 6. 使用する端末 (iPhone や iPad) を登録 7.AppID を登録 8.Provisioning Profile の登録 Group Report of 2011 SISP - 138 - Group Number 12-A/B Smart FUN Project 9. 作成した Provisioning Profile を Xcode で設定 を行った. • 技術調査と取得 まず各自で Xcode の使い方や Objective-C について勉強をした. その後 iOS 班で集まり勉強を 行い, 知識の共有, 向上を図った. その後ネットワーク班と地図班で別々に作業を行なった. ネットワーク班は, まず学内のアクセスポイントの場所や電波強度などの調査を行ない, 調査結果 を元にアクセスポイントに関するデータベースを作成した. アクセスポイントから位置情報を取得 するために三角測量を行い, 自分の位置の座標データを求めるための式を作った. それらを使い, 位 置情報を取得し, 画面上に表示させるアプリケーションを作成した. これらのことより, ネットワー クに関する知識やアプリケーション開発の技術が身についた. また, 端末間での Bluetooth 通信を 行なうアプリケーションの作成も行い, 実際に端末間での通信, データのやり取りが可能になった. 地図班は, まず Objective-C や Xcode の知識と経験を得る作業から始めた. サンプルコードを用 いて Xcode の仕組みや Interface Builder の使い方を学んだ. 地図班では主にアプリケーションの GUI 面の開発を行なった. 先行する Android 班のアプリケーションの GUI を参考にして作成して 行ったが, 最終的に iOS 独自の API や Interface Builder により,iOS らしい動作と見た目のアプリ ケーションになった. そして地図班で作成したプログラムと, ネットワーク版で作成したプログラ ムとを結合させ,FunMap の基盤を完成させた. これらにより, 画面のレイアウト技術やアプリケー ション開発技術が身についた. (※文責: 佐々木龍) 7.1.2 Android 班 前期成果としては開発環境の構築, 開発する上でのレイアウト技術などの取得, 位置情報を取得, 描画するためのプログラムの作成,Bluetooth 通信の精度調査と簡単な機能の実装, データベースの 調査が挙げられる. • 開発環境整備 本プロジェクトの Android 開発は各自の所有パソコンで行った. 開発環境を整えるために 1.JDK(Java Development Kit)のセットアップ 2.Android SDK(Software Development Kit)のセットアップ 3.eclipse のセットアップ Group Report of 2011 SISP - 139 - Group Number 12-A/B Smart FUN Project 以上の 3 つを行った. また, 必要な場合は Eclipse に日本語パッチをあてるなど最適な開発環境を整えるために各々工 夫を行った. 制作したプログラムを動かすために契約せずに使用できる Android 端末をさがし, そ の結果担当教員の私物である「Light Tab」を1台と「XOOM」を1台を使用し, さらに「XOOM」 1 台を購入することとした. 実機で動作を確認する際には各端末に対応したドライバをインストー ルした. • 技術調査と習得 ネットワーク班 ネットワークを構築に関する調査を行った. 様々な通信技術を調査し, 結果 Bluetooth 通信が最 適という結果が得られた. Bluetooth を用いることが決定してからは Bluetooth に関する調査, 技術取得を行った. 実際 に実機を用いてチャットアプリケーションを動かし, ソースコードを見ながら勉強した. その後 Bluetooth でファイルや文字列を送るとき主に使用されている BASE64 のサンプルコードを探 し, サンプルを解読して Bluetooth の今後付属機能のチャットアプリケーションに組み込むことと した. またデータベースに関する調査を行いデータベースの担当者を決め,SQLite をインストール し,Eclipse で開発できるようにデータベース設定を行った. その後,Java で SQLite を操作する方法を勉強し, 基礎技術は使用できるようになった. 地図班 ネットワーク班が位置情報の取得を行うまで, 基礎技術の取得を行った. 基礎技術の取得は主に 書籍を用いて行い, 実装したものは画像のスクロール, 画像のタブ切り替え,Edittext と button を もちいたチャット機能の基礎画面の構築などである. 取得する際は位置情報を取得し, 描画できた 時を想定し今後の発展に使用できそうなものを中心に行った. 次に実際に位置情報を描画するため の地図の準備をした. まず参考にする地図としてオープンキャンパスで使用されている地図を用い たが, この地図は真上から見た平面図ではなく, 位置情報を描画して今後調整をかけていくには不 適切であった. 次に参考にした地図が学生便欄に用いられている地図であった. この地図は真上か ら見た平面図であるため位置方法を描画するには適していた. まずその時点でネットワーク班が位 置情報の取得を行っていた研究等の地図を準備することにし, 研究棟 2 階地図のトレースを行った. その後研究棟 1 階, 本棟 3 階,4 階,5 階の地図を準備した. • 位置情報の取得, 描画 ネットワーク班 アクセスポイントの電波強度を用いた位置情報の測定,MAC アドレスの取得が出来るようになっ た. 電波強度を用いた位置情報の測定は iOS 班と同じ原理を用いて Android 用に書き換えた. 取 得後は地図班とともに地図に合わせて取得に関する微調整と, 中間発表に向けてのアプリケーショ Group Report of 2011 SISP - 140 - Group Number 12-A/B Smart FUN Project ンのデモンストレーションの調整を行った. 地図班 学生便欄を参考にした地図を準備している段階で, ネットワーク班が位置情報を取得することが 出来たため, 地図上に位置を描画する作業を開始した. ネットワーク班とともにどこを 0.0 点とし ていくか話し合い, 地図上に位置情報を描画した. 描画出来た後は端末ごとに画面サイズがことな ることや, 学生便覧の地図の縮尺が正しくないことから誤差が大きく出てしまったため補正をか けた. (※文責: 松山陽子) 7.2 解決手順と評価 (前期) 中間発表のアンケートにはスライドがしっかりわかりやすく作られていることや, アプリケー ションのデモンストレーションについて実際に見てもらうことが高評価だったことが多く書かれ ていた. これは実際に具体的なイメージ像を見せることで, こちらのイメージを相手に伝えやすく なったからだと思われる. しかし, アプリケーションを使う意義が見当たらないと言う意見や位置情報の取得精度の向上を 望む意見も多かったことから, 多くの人がこのアプリケーションを, 自律分散型ネットワークで機 器同士を繋ぐことが出来るアプリケーション, というよりも人の位置がわかるマップとしか見られ ていないようである. 今後はユーザが少しでも多くの時間, このアプリケーションを使いたいと思えるような機能や 「楽しい」要素を取り入れるようにしたり, 地図や計算式を見直し, 位置情報の取得精度を向上さ せていくことも視野に入れて活動し, 自律分散型ネットワークを有効活用出来るようにアプリケー ションの作成を行う. (※文責: 清野僚介) 7.3 中間発表時のアンケート考察 発表会に来場し, このプロジェクトの発表を聞いていただいた人を対象にアンケート調査を行っ た. アンケート内容としては, 発表技術と発表内容を 10 段階で評価してもらい, 発表についての意 見・感想を自由記述で回答してもらった. 合計 65 名の来場者にアンケートを回答してもらい, 結果 としては, 発表技術, 発表内容の平均がそれぞれ 7.01 点,7.53 点であった. 自由記述の指摘として, 「Twitter のようにするなら「誰がしゃべったのか」も重要になってくるのではないか」,「もう少 し「他にない」感を出せればなお良い」,「FunMap の機能をうまく使うと, いろんなゲームのよう なものができると思うのでやってほしい」,「ユーザーの立場についてさらに検討してほしいです」 といった指摘をいただいたので, これを参考に今後の開発に反映させていきたい. (※文責: 山田格) Group Report of 2011 SISP - 141 - Group Number 12-A/B Smart FUN Project 7.4 後期成果 ここでは, 後期にそれぞれで行った班ごとの成果を記載する. 7.4.1 iOS 班 iOS 班が本プロジェクトでの成果を以下に記載する. 前期に作成したアプリケーションを拡張し, 機能を作成していった.iOS 班の主な成果は以下の通 りである. • すれ違い通信 • Bluetooth での送受信 • SQLite を使用したデータベース操作 • iOS で XML を解析(使用はしなかった) • つぶやき機能の作成 • カメラ機能 • 掲示板の作成 • 地図などのデザイン • UI の調整 などである. すれ違い通信と Bluetooth での送受信近くに居る端末に Bluetooth を用いて情報を送信を行い, 受信側は受け取った情報を更新することにより, 自立分散型ネットワークの構築(図 7.1)が可能に なった. 図 7.1 自立分散型ネットワークの構築 データベースの使用データベースを使用することにより, アプリケーションを起動していなくて も保存し続け, 上記した Bluetooth での送受信したデータや, アクセスポイントの座標などを蓄え る. また後述する場所別掲示板もここで操作した. Group Report of 2011 SISP - 142 - Group Number 12-A/B Smart FUN Project つぶやき機能, 掲示板, カメラ機能つぶやき機能(図 7.2, 図 7.3)により現在居る場所にコメント を残すことができる. 図 7.2 つぶやき入力スペース 図 7.3 つぶやき表示 そのつぶやきは掲示板(図 7.4)として, まとめて表示を行う. このコメントを上記した Bluetooth での送受信に使用する. 図 7.4 掲示板 またカメラを使用することができ, 画像を付属してつぶやくことができた.(図 7.5) 地図などのデザイン,UI の作成地図は精度を上げるため再測量を行い(図 7.6), 作りなおした. またボタンなども使った人が分かりやすいようにデザインを変更した. その他細かい機能を設定を行った. 地図上のピンを消すボタンや現在位置を手動で変更できる機 能(図 7.7), また地図をデザイン変更ボタンも追加した. Group Report of 2011 SISP - 143 - Group Number 12-A/B Smart FUN Project 図 7.5 画像付属つぶやき (※文責: 江端竜次) 7.4.2 Android 班 Android 班が本プロジェクトでの成果を以下に記載する. まず FunMap では同アプリケーションを起動したペアリング済みの相手複数と自動で Bluetooth 通信を行うことが可能である.Android の API には Bluetooth に関するものがあるが Bluetooth による通信を全て自動でやってくれるわけではなく自動で通信を行うためにスレッドなどの仕組み を用いて通信を行った. ここで作成した自律分散型ネットワークは本プロジェクトの成果の一つで ある. Android 班で開発した FunMap を見てみると Android 端末 3 台を用いての Bluetooth 通信に 成功した. よって Bluetooth を用いた自律分散型ネットワークの構築が成果としてあげられる. FunMap を作成するに当たって学内の自分の位置を知るために地図を作成した. この地図は便 覧の地図を参考に公立はこだて未来大学の研究棟を(0,0,0)の基準点とし各部屋, 区画ごとにメ ジャーを用いて計測したものである. そのため便覧の地図より正確な縮尺でそれぞれの部屋や通路 が表示されているため, 地図による誤差の少ないものとなっている. FunMap ではアクセスポイントの電波強度を用いて, 公立はこだて未来大学学内の位置(3F)を 表示している. まず自分の現在地を算出するために大学内のアクセスポイントに座標を振った. ここ で現在地を算出するのに GPS を使わなかったのは室内の細かな場所の特定には不適当だったから である. そして自分の現在地を算出するために自分から電波強度の強いアクセスポイント3点, ま たは4点を特定し, そのアクセスポイントの座標と電波強度から位置情報を算出した. これらの処 理から一座標を算出したことも成果の一つである. Group Report of 2011 SISP - 144 - Group Number 12-A/B Smart FUN Project 図 7.6 地図 図 7.7 現在位置を手動で変更できるボタン Group Report of 2011 SISP - 145 - Group Number 12-A/B Smart FUN Project またネットワークを利用した掲示板の作成を行った. 普通の掲示板はサーバを用いて情報の保存 を行うが FunMap の掲示板は各端末ごとのデータベースを用いるため, 既存のサーバにとらわれな い情報の交換が可能である. 以下が Android 班の本プロジェクトでの達成内容である • 公立はこだて未来大内での位置情報(3F) • 公立はこだて未来大学内地図 • Bluetooth を用いた自律分散ネットワークの構築 • ネットワークを利用した掲示板の作成 (※文責: 阿部和哉) 7.5 解決手順と評価 (後期) 最終発表でのアンケートから発表技術, 内容ともに中間発表時よりも良くなっていると考えられ ることから, 中間発表の反省を踏まえた上でよりいい発表内容に出来たと思われる. また中間発表同様アプリケーションのデモンストレーションについて実際に見てもらうことが高 評価だったが, アプリケーションのデモンストレーションに集中することで発表者が黙ってしまう 点にはネガティブな意見が寄せられた. このアプリケーションを使いたいかの項目では 86% が使いたいという結果であった. これは中 間発表時にアプリケーションを使う意義が見当たらないと言う意見が多かったことから考えると, アプリケーションを使いたいと思えるような機能や「楽しい」要素を取り入れることに成功したと 考えられる. 更に中間発表時に今後の課題とした位置情報精度の向上や地図の作り直し, 自律分散的に端末間 通信を行い, 自律分散型ネットワークの構築を実装することが出来たので, 今期のプロジェクトは 全体を通して成功した言えるだろう. (※文責: 清野僚介) 7.6 後期発表時のアンケート考察 発表会に来場し, このプロジェクトの発表を聞いて頂いた人を対象にアンケート調査を行った. アンケート内容としては, 発表技術と発表内容を 10 段階で評価してもらい, 発表についての意見・ 感想を記載して頂いた. また, 欲しい機能を我々でリストとして提示した「ユーザーアカウントの有 無」 「各部屋の気温表示」「行動パターンの記録」「友達検索」「その他」としてチェックを入れても らった. 最後にこのアプリケーションを使いたいかどうかを Yes/No で回答してもらった. 合計 71 名の来場者にアンケートを回答してもらい, 結果として発表技術, 発表内容の平均がそれぞれ 7.38 点,7.79 点であった (図 4.28). 来場者数とそれぞれの平均得点が中間発表の際よりも向上している ため, 発表技術, 内容ともに前回よりも良くなっていると考えられる. 欲しい機能については,「ユー ザーアカウントの追加」が 39%,「各部屋の気温表示」が 30%,「行動パターンの記録」が 23%,「友 達検索」が 59% となり, その他アイディアでは「twitter との連携」「フィルタ機能」「スケジュー ル機能」「ダイレクトメッセージ機能」などがあった (図 4.29). このアプリケーションを使いたい かの項目では 86% が使いたいという結果であった (図 4.30). 以上より学内においては多数の人が Group Report of 2011 SISP - 146 - Group Number 12-A/B Smart FUN Project 利用してくれるであろう環境にあることがわかった. 図 7.8 アンケート 図 7.9 アンケート 2 (※文責: 山田格) Group Report of 2011 SISP - 147 - Group Number 12-A/B Smart FUN Project 図 7.10 アンケート 3 Group Report of 2011 SISP - 148 - Group Number 12-A/B Smart FUN Project 第8章 まとめ この章ではプロジェクトのまとめを記述する. 本プロジェクトは, スマートフォンを用いて位置情報を基盤とする自律分散型ネットワークの構 築を目標として活動してきた. そして Smart FUN プロジェクトとして提案したアプリケーション が「FunMap」である. FunMap は本学内の位置情報を各アクセスポイントからの電波強度から算 出し, その位置情報を地図上に表示する. その表示した現在地ピン上につぶやきの表示と, つぶやき を掲示板として一覧で見れるようになっている. このつぶやきにより様々な場所の情報をリアルタ イムに閲覧できる. この情報をもとに, 大学生活を効率化し, スマート化できるというコンセプトで ある. プロジェクトを進めるにあたり, まず立候補によるプロジェクトリーダーと,2 つのグループの リーダー, 技術リーダーを決定した. その後, アプリケーションのアイディアを出しあい, 共通で使 えそうな機能として地図への位置情報の表示を選んだ. 早めに開発に着手し, 中間発表において実 機の成果物をあげるためである. 現在普及の進むスマートフォンを用い,Android と iOS での開発 を行った. また, グループを 2 つに分けることにより, 作業の効率化とインターワーキング手法の習 得を目指した. まず, 申請する予算を決定し, その後開発環境の構築を行った. 前期では, 位置情報 の算出と Bluetooth による通信を行うネットワーク班と, その情報を地図上に表示する地図班に分 かれた. 後期では, 前期の班編成では連携がやりにくい部分があったので,iOS 班と Android 班に編 成しなおし開発を行った. 位置情報の算出については, 屋内では精度の問題から GPS の使用は困 難であり, 本学内のアクセスポイントの電波強度から算出する方法を取ることにしたが, 電波の性 質上苦労することが多かった. しかし, メンバー間での協力によりある程度の求める精度を求める ことができた. また, 開発環境の違いにより, 進捗に差が出てしまった点は反省したい. また, 本プ ロジェクトでは学内における中間成果発表, オープンキャンパス, 最終成果発表を行い, 発表用ポス ター, スライドと発表原稿の作成を行い, プレゼンテーションを経験することができた. 結果としては, プロジェクトリーダーも含め, 各担当者によるプロジェクトマネジメントを経験 することができた. これらにより, アプリケーション提案法の習得, プロジェクトマネジメントの習得, インターワー キング手法の習得, プレゼンテーション技法の習得を学ぶことができた. また, 開発工程の経験, 開 発技術の習得では,iOS・Android における開発環境の構築,Bluetooth 通信, 自律分散型ネットワー クについて専門的な知識・技術を身につけることができた. 以上のように, 本プロジェクトの活動 を通じて何度も大変なことがあったが, メンバー間の助け合いや, 指導教員の高橋信行先生, 新美礼 彦先生のアドバイスを通じて成し遂げることができた. これらのプロジェクトを通じて得た経験と 反省を今後の就職した後や, 大学における研究で活かしていきたい. (※文責: 山田格) Group Report of 2011 SISP - 149 - Group Number 12-A/B Smart FUN Project 参考文献 [1] 中西葵, 内村祐之, 高橋良司. Android SDK 逆引きハンドブック. C&R 研究所, 2011. [2] 布留川英一.Android 2.1 プログラミングバイブル. ソシム.2010 [3] 布留川英一.iPhone/iPad/iPod touch プログラミングバイブル iOS SDK4.2/3.2 対応. ソシ ム,2010. [4] 百瀬健太, 古渡晋也, プロモバイル株式会社. ライトウェイト・プログラマのための iPhone ア プリ開発ガイド. 翔泳社,2009. [5] 五十嵐貴之. SQLite ポケットリファレンス . 技術評論社,2010, [6] IT 用語辞典 e-Words P2P http://megalodon.jp/2012-0117-1511-58/e-words.jp/w/P2P.html [7] IT 用語辞典 e-Words Skype http://megalodon.jp/2012-0117-1500-57/e-words.jp/w/Skype.html [8] Viber とは - はてなキーワード http://megalodon.jp/2012-0123-1648-33/d.hatena.ne.jp/keyword/Viber [9] ヘルプ—LINE http://megalodon.jp/2012-0123-1651-01/line.naver.jp/iphone/help/ja/ [10] IT 用語辞典 Weblio 辞書 LimeWire http://megalodon.jp/2012-0123-1652-24/www.weblio.jp/content/LimeWire [11] IT 用語辞典 e-Words Winny http://megalodon.jp/2012-0123-1653-52/e-words.jp/w/Winny.html [12] Cabos 共有ソフトの説明 http://megalodon.jp/2012-0123-1657-35/cabos.nobody.jp/ [13] IT 用語辞典 e-Words BitTorrent http://megalodon.jp/2012-0117-1546-46/e-words.jp/w/BitTorrent.html [14] IT 用語辞典 e-Words GPS http://megalodon.jp/2012-0117-1559-08/e-words.jp/w/GPS.html [15] 交通辞典 t-Words Google ストリートビュー http://megalodon.jp/2012-0117-1606-03/t-words.jp/w/ GoogleE382B9E38388E383AAE383BCE38388E38393E383A5E383BC.html [16] iPadiPhoneWire Around Me http://megalodon.jp/2012-0117-1455-06/app.iwire.jp/apps/290051590/ AroundMe/ [17] バスロケーション http://megalodon.jp/2012-0124-1328-23/www.mlit.go.jp/jidosha/sesaku/ koukyo/bus_loca/bus_loca.htm [18] ITmedia EncountMe http://megalodon.jp/2012-0117-1451-57/plusd.itmedia.co.jp/mobile/ articles/1102/02/news093.html Group Report of 2011 SISP - 150 - Group Number 12-A/B Smart FUN Project [19] iCloud 「友達を探す」と「iPhone を探す」 http://megalodon.jp/2012-0118-0046-06/www.apple.com/jp/icloud/features/ find-my.html [20] UIScrollView の実装についての技術取得 http://megalodon.jp/2012-0117-1345-36/ blog.syuhari.jp/archives/908 [21] Objective-c や Xcode の 基 本 的 な 部 分 の 技 術 取 得 http://megalodon.jp/ 2012-0117-1350-01/ameblo.jp/iphoone/entry-10787128806.html [22] 吹き出し実装についての技術取得 http://megalodon.jp/2012-0117-1353-44/ameblo. jp/jama23/entry-11006405750.html [23] ア ニ メ ー シ ョ ン と タ イ マ ー 機 能 に つ い て の 技 術 取 得 http://megalodon.jp/ 2012-0117-1358-25/ameblo.jp/micro-garden/entry-10325373538.html [24] ryou Ishihara.iPhone-Wifi Info::Wifi 情報を取得する. http://megalodon.jp/2012-0117-1004-39/solitary-air.blogspot.com/2010/01/ iphone-wifi-info-wifi.html [25] ryou Ishihara.iPhone-Wifi Info::Wifi 情報を取得する その 2. http://megalodon.jp/2012-0117-1003-36/solitary-air.blogspot.com/2011/01/ iphone-wifi-info-wifi.html [26] Lokkju.iphone-wireless. http://megalodon.jp/2012-0117-1129-07/iphone-wireless.googlecode.com/svn/ [27] Naoki.Bluetooth を使う. http://megalodon.jp/2012-0117-2130-37/www.limy.org/program/android/ bluetooth.html [28] アルゴニートブログ. アルゴニートブログ. http://megalodon.jp/2012-0117-2308-10/algoneet.com/39/%E6%99%82%E8%A8%88% E4%BB%95%E6%8E%9B%E3%81%91%E3%81%AEiphone%E3%82%A2%E3%83%97%E3%83%AA-6/ [29] ntaku. プログラミングノート. http://megalodon.jp/2012-0117-2308-26/d.hatena.ne.jp/ntaku/20090308 [30] buzzword. SQLite 入門. http://megalodon.jp/2012-0117-2308-42/www.dbonline.jp/sqlite/ Group Report of 2011 SISP - 151 - Group Number 12-A/B
© Copyright 2024 Paperzz