MIT App Inventor2 アプリケーション開発のための手引き [part5]

MIT App Inventor2 アプリケーション開発のための手引き [part5]
山本富士男 2015- 12-4
1. 今回のねらいと検討題材
これまで4回の講座内容を基礎として、さらに App Inventor を使ったプログラミングを掘り下げます。
今回は、以下の3つを題材にして検討します。
(1)
先進的データベース Google Fusion Tables の利用法を学び、自分の問題で使えるようにする。
(2)
これを使った例題 Pizza Party MIT 2014 の造りを学び、今後に活かせるようにする。
(3)
先進的なので変更も何度かあって困ったが、最新情報を英文資料で把握、検討することに慣れる。
2. App Inventor によるアプリ Pizza Party MIT 2014 (概要)
(1) 何人かの仲間で、ピザパーティを開くための簡単な Web サイトを作成する。
(2) そのサイトを、Google Fusion Tables で作成する。公開、限定公開、非公開にもできる。(ここで
は、練習のため、各自がこのサイトを作成する。)
(3) Android から「名前の記入」「ピザの種類の選択」「飲み物の選択」「コメント記入」ができて、み
んながその情報を Android で閲覧できる。
(4) Google Fusion Tables は、SQL 型だが、各種 Web サーピスとの連携、統計/グラフ機能などが豊富
である。App Inventor には、Fusion Tables へのアクセスのための機能ブロックが備わっている。
(5) App Inventor から Fusion Tables へのアクセスのための認証情報取得はやや複雑である。
(6) このアプリでは、Fusion Tables へのデータ追加などがあるたびに、自動的に Android 画面にテーブ
ルの内容が自動的に表示される(WebViewer 利用)。
Fusion Tables の内容と Android からの操作例を示します。
3. Google ドライブに Fusion Tables を作成する
まず、Fusion Tables の作成です。ブラウザから、以下の手順で作成できます。Gmail アカウントが必要。
(1) Gmail を起動し、右上のポチポチから、ドライブ(Google Drive)へ行く。
(2) 赤い左上の「新規」ボタンを押す。
(3) 「その他」→Google Fusion Tables を選択する。もしも、Google Fusion Tables が現れない場合は、
「+アプリを追加」→「Fusion Tables(試験運用)」にカーソルを当てる→「+接続ボタンを押す」 →
「OK」する。そして、再度(2), (3)をやればよい。
(4) ログイン要求があればログインし、「Create empty table」を押す。
(5) 自動的に、4 カラム(4 項目)のテーブルが作られる。カラム名(項目名)は、 「Edit → Change
Columns」変更可能。「New→Column」で新規カラム追加、順序入れ替えも可能。データの型は、
Text, Number, Location, Date/Time を指定できる。変更したら「save」する。(日本語カラム名も
可能だが、後述の MIT App Inventor 等のためには英語の方がよさそう。)
(6) この後、自分の Google アカウントから GoogleDrive を開き、上記で作った FusionTable をダブル ク
リックすれば使える。 テーブル名の変更なども可能。
(7) 次にアクセス権の設定(共有のための設定)になります。
(8) 右上の「Share」ボタンを押す。多分、初期設定では「非公開 - 自分だけがアクセスできます」と な
っているはずなので、その右のボタン「変更」を押す。共有の選択ができる。ただし、いずれも、 読
み出しのみを許可するものです。(書き込みは許可していない。)
(a) Web 上で一般公開
(b)リンクを知っている全員
(c)特定のユーザ
↑今回はとりあえず、(b)にしてみる。上部に公開用のリンクが表示される。「保存」する。
(9) 一方、特定の人をテーブルの共同編集者に決めて、その人にもテーブルを書き換える権限を持たせる
ことができる。Fusion Tables を含めて、Google のサービスでは、一般に「データを、一般ユーザ
(誰でも)が書き換えて良い」という設定は許していない。とにかく、「完了」する。
(10) Pizza Party アプリのために、作成したテープルに上図のような5つカラム(項目)を作成します。す
なわち、以下のカラム名とデータのタイプにします。(Date は、Date/Time 型、他は Text 型)
4. プログラムから Fusion Tables へアクセスできるようにする
以上で、ブラウザから人手でデータベースの内容を更新もできる。しかし、プログラムでこの Fusion
Tables へアクセスするには、セキュリティを含めた一定の設定が必要になる。(他のデータベースシステ
ムでも同様である。)
●資料[4-1] Fusion Tables を Service Account
で使うための設定
https://puravidaapps.com/fusionservice.php
この資料(印刷して配布する)に従う。
この中の、1.の 1〜10 と、2.の1〜3までを実
施すること。それにより、Service account
email address と keyfile を得る。
これらの情報を、Pizza Party アプリに設定することで、誰でも(このテープルを知っていれば)書き込
み、すなわち、登録もできるようになる。
●資料[4-2] アプリ Pizza Party MIT 2014 のソースをダウンロードして、上記の Fusion Tables を設定
し、実行してみよう。
Pizza Party with Fusion Tables for App Inventor2
http://appinventor.mit.edu/explore/ai2/pizzaparty.html
Pizza Party のソースを PC へダウンロードし、App Inventor の上段メニュー「Projects」→「Import
project(.aia) from my computer…」として、自分用に設定します。
その後、上の資料[4-1]の実施で得られた keyfile(拡張
子.p12)を画像などと同様に、この Pizza Party に Upload
File します。
5. ここから、Pizza Party MIT 2014 を動かす
これで Fusion Tables を Pizza Party アプリで使う準備はできた。
実は、資料[4-2]のとおりの Pizza Party では、Fusion Tables は使えなくなってしまった!
情報の世界では、仕様変更はいつも起こる。柔軟に対処できないといけないのである。
Google 側の認証関係の方式に変更があったので、資料[4-1]でやったとおりに、Service Account を設
定しないといけないのである。
具体的には、Pizza Party のブロックの先頭部分(Fusion Tables の設定部)を、資料[4-1]の 3.の 3 で
しめされたようなブロックにする必要がある。以下にその部分を示す。
すなわち、Pizza Party のブロックでは、
改訂前の以下のものは不要
・変数 API_KEY
改訂後は以下の設定が必要
・変数 ServiceAccountEmail
・変数 Keyfile
・set FusiontableControl.ServiceAccountEmail to 変数 ServiceAccountEmail
・set FusiontableControl.Keyfile to 変数 Keyfile
・set FusiontableControl.UseServiceAuthenticication to true