[Pepper] Pepperアプリケーション開発 ~ファイルをダウンロードしてみよう~

前回までは、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のタッチイベントの通知制御についてご紹介します。


弊社では全国各地の請負い(ご自宅)で作業協力頂ける、フリーランスエンジニアの方を常時探しております。
ご興味ある方は、お気軽にお問い合わせ下さい。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*