前回までは、iOSオープンソースライブラリ郡の管理ツールである「CocoaPods」についてご紹介しました。
今回は、Pepperでデータベースファイルを取得して、端末内に保存して利用する方法についてご紹介します。
以前の記事で、Pepper内にデータベースファイルを用意しておき、それを利用するサンプルプログラムをご紹介しました。
けれど、データというものは日々新しくなっていきますので、データベースファイルもどんどん、新しいものに書き換えて行きたいです。
その都度Pepperのプログラムを修正するのではなく、最新のデータベースファイルを外部からダウンロード出来たら便利です。
そこで今回は、データベースファイルをhttpプロトコルでダウンロードして、そこからユーザデータを検索してみようと思います。
■今回実現するアプリケーション
1)人物名をPepperに伝えます
2)データベースファイルを、httpプロトコル経由でダウンロードします(今回の記事)
3)人物名を検索して、電話番号を答えてもらいます
■プログラム
データベースファイルをhttp経由でダウンロードすること以外は、以前の記事と同様ですので、プロジェクトの構成も同じです。

図1 今回作成したプロジェクト
上図の「SendMessage」が、データベースから人物を検索する部品になりますので、このプログラムを一部変更します。
import os import sqlite3 import sys, urllib class MyClass(GeneratedClass): def __init__(self): GeneratedClass.__init__(self) def onLoad(self): #put initialization code here pass def onUnload(self): #put clean-up code here pass def onInput_onStart(self): #self.onStopped() #activate the output of the box pass def onInput_onStop(self): self.onUnload() #it is recommended to reuse the clean-up as the box is stopped self.onStopped() #activate the output of the box def onInput_inputName(self, p): #インターネットから最新のデータベースファイルを取得 db_filename = "/tmp/pepper.sqlite" inputURLData = "http://<弊社サーバ環境>/pepper/pepper.sqlite" db_data = urllib.urlopen(inputURLData) #ファイルデータを保存する #データベースファイルを保存するため、書き込み+バイナリモードで開く localfile = open(db_filename, "wb") localfile.write(db_data.read()) db_data.close() localfile.close() self.frameManager = ALProxy("ALFrameManager") with sqlite3.connect(db_filename) as conn: c = conn.execute("select name,age,phone from people where name = '" + p + "'") row = c.fetchone() self.log(str(row[2])) output_data = str(row[2]) self.outputName(output_data) self.onStopped() conn.close pass
人物名をPepperに伝えた後、onInput_inputNameメソッドが実行されます。
その先頭で、弊社サーバ上にあるデータベースファイルに http 経由で接続しています。
ダウンロードしたファイルは、/tmp/pepper.sqliteに保存します。
※/tmpフォルダは、通常のLinuxOS同様、テンポラリ領域として利用できます
その後、そのデータベースファイルを sqlite3 で開いて、人物名を検索し、電話番号を返却しています。
■実行
プログラムを実行して、Pepperに「tanaka」と伝えます。
すると、データベースファイルがダウンロードされ、/tmp 配下に「pepper.sqlite」というファイルが出来あがりました。

図2 プログラムを実行

図3 電話番号を話してくれました

図4 /tmpフォルダ配下に、「pepper.sqlite」が保存されています
■まとめ
以上で、Pepperでデータベースファイルをダウンロードして利用する紹介は終了です。
今回の方法と同じ手順で、保存ファイル名を「.png」や「.mp3」とすることで、画像データや音声データも保存することが出来ます。
次回は、cocos2d-xのタッチイベントの通知制御についてご紹介します。
弊社では全国各地の請負い(ご自宅)で作業協力頂ける、フリーランスエンジニアの方を常時探しております。
ご興味ある方は、お気軽にお問い合わせ下さい。