タブレットとロボホンの連携についてお話します。 実際のコードなどの説明はしませんが、参考になればと思います。 ロボホンを借りることがあったので、少し遊んでみました。 踊ったり、歌ったり、逆立ちしたりもする芸達者なやつでしたが、 私がやってみたかったのはタブレットとの連携でした。 たまに、お店や案内所で見かけることもありますが、 ロボホンの横に置いてあるタブレットをタップすると、 ロボホンがその内容に合わせて説明をしてくれたりします。 ペッパーも同じことをしてくれますが、ペッパーよりもロボホンの方が断然かわいいです。 そして比較的安価(高いけど・・)。 最近はWi-Fiモデルも発売されて、さらにリーズナブルになったようです。 ロボホン Wi-Fiモデル http://www.sharp.co.jp/corporate/news/171002-c.html さて、本題のロボホンとの連携についてお話します。 実際に作ったアプリは、 タブレットのボタンをタップしたら、ロボホンが「こんにちは」としゃべるアプリです。* SDKダウンロード
まず、ロボホンのアプリを開発するためにはロボホン用のSDKが必要です。 ロボホンのサイトから誰でも取得できますが、アカウントの作成が必要です。 https://robohon.com/ アカウントを作成した後、マイページにログインし、 メニューの「ロボホンアプリ開発」からSDKをダウンロードすることができます。 あとは、AndroidStudioでプロジェクトを作って、ライブラリを登録します。 https://robohon.com/sdk/app.php* アプリを開発
タブレットとロボホン、それぞれにアプリを開発する必要があります。 タブレットのアプリの方は、「こんにちは」というボタンを一つつけました。 ロボホンのアプリの方はサンプルコードがあるので、 それを見ながら命令を受けたら「こんにちは」としゃべるようにします。* タブレットとロボホンの接続(Bluetooth編)
とりあえずタブレットとBluetoothをペアリングしたら出来るだろうという考えで プログラムを構築してみました。 ペアリングして、ボタンをタップすると「こんにちは」と喋ってくれたので、 意外と簡単にできたなー・・と思っていましたが、しばらく触ってみるとそうでもありませんでした。 アプリがバックグラウンドになるたびに接続が切断してしまい、 アプリを再度起動すると再接続しますが、それにも時間がかかってしまい、 とても実用的とはいえないアプリでした。 自分が案内所などで見たタブレットとロボホンは、 とてもスムーズに連携できていたように見えたので、きっと他の方法があるはず!と思って 別の方法を考えました。* タブレットとロボホンの接続(Beacon編)
同じくBluetoothの機能を使いますが、Beaconならいけるかもと思い実装してみました。 ここでは、AltBeaconというのを使いました。 https://github.com/AltBeacon これを使用することで、Bluetoothの接続は安定しました。 しかし、Beaconの送信側では受信側へ受信できたかどうかの判断が出来ないため、常に同じデータを送信しますし、 受信側も受信し続けてしまうため、この方法も使うことはできないと判断しました。* タブレットとロボホンの接続(Webサーバ編)
最終的にうまくいったのはこの方法です。 Webサーバといっても、別にサーバを用意するわけではなく、 ロボホン自体をWebサーバにするという方法です。 Android(ロボホン)の中にサーバを立てるといった方法は、見当もつきませんでした。 Webサーバを立てるためには、NanoHTTPDというライブラリを使用します。 https://github.com/NanoHttpd/nanohttpd HTTPプロトコルを使用して送受信が出来るので、送信側も受信側も安定した動作が可能になりました。 Wi-Fiネットワークだけは準備する必要がありますが、これぐらいなら簡単に準備できます。* まとめ
あとはタブレットの操作でカメラを撮ったり、プロジェクターを投影したりと いろんな操作が想定できます。 ロボホンはたくさんの可能性を持ってると思うので、 見かけることが多くなるとうれしいかなと思います。
2017年12月18日月曜日
ロボホンをタブレットで操作
2017年7月20日木曜日
AWS ソリューションアーキテクト アソシエイト
東京に行く用事があったので、ついでにAWSの試験を受けてきました。
田舎の方では実施してないのが不便なところです。
次のスコアで、なんとか合格できました。
正答率:76%
1.高可用性、コスト効率、耐障害性、スケーラブルなシステム設計 72%
2.実装/デプロイ 66%
3.データセキュリティ 90%
4.トラブルシューティング 80%
勉強は4月ぐらいから3ヶ月かけてゆっくりやりました。
主に、活用資料集を流し読みしながら(あればオンデマンドセミナーも)、
メモにまとめる形で進めました。スライドよりもテキストの方が見直すときに便利なので。
デプロイ部分の点数が低い通り、あまりAWS自体には触っていません。
EC2 や VPC、S3、IAM くらいは触りましたが、あとはそれほど・・
実務では開発がほとんどで、
インフラ周りはあまり詳しくないので、その辺りの勉強が大変でした。
活用資料集でわからない単語があれば、できるだけ調べるようにしました。
資格試験自体、「ソフトウェア開発技術者(今の応用情報技術者)」を
6〜7年前に受験して以来だったので、なんとなく緊張しました。
試験問題はあまり考えすぎず、
自信のない問題は「これっぽいな・・」ぐらいの意識で進めた方がよさそうです。
それで20分ほど余ったので、そこからひたすら見直しました。
「Pass」と出たときは本当に安心しました。
過去にベンダー試験(LPIC)を1度だけ受けたことがありますが、
「not pass」が出たときは唖然としました。。ほぼトラウマです。
これから仕事でAWSを使っていくこともそうですが、
個人開発でも使いたいので、ある程度頑張って勉強しました。(会社から受験料出るし)
早く、名刺にAWSロゴを入れて、ドヤァ!!したいです。
2017年5月30日火曜日
Amazon EC2 + FTPSサーバ + FTPSClient
Androidアプリ開発で Apache Commons Net の FTPSClient を使って、FTPS機能を作成した時のことをまとめます。
検証できる環境がなかったので、FTPサーバを立てるところから始めます。
FTPサーバを立てたことがなかったですが、調べたら簡単そうだったのでやってみました。
まず、EC2でAmazon Linux AMIを使ってサーバを構築します。
FTPSのテストに使うだけなので、無料枠があれば無料枠内で使える最小の設定で大丈夫です。
こういった環境を簡単に作れる AWS は非常に良いですね。
ついでにセキュリティグループも設定しておきましょう。
インバウンドに次のルールを追加します。
FTPでログインするための適当なユーザを作ります。
ユーザを作り、パスワードを設定するには、次のコマンドを入力します。
ユーザ名とパスワードはメモしておきましょう。
EC2に入り(WindowsならTeraTermで)、次のコマンドを入力します。
この設定がないことで、なかなか繋がらず苦労しました。
pasv_address の xxx.xxx.xxx.xxx には、EC2のIPアドレスを入れてください。
EC2のIPアドレスは再起動するたびに変わるので注意が必要です。(ElasticIPを設定してるなら別ですが)
サーバをたてよう
FTPサーバを立てたことがなかったですが、調べたら簡単そうだったのでやってみました。
まず、EC2でAmazon Linux AMIを使ってサーバを構築します。
FTPSのテストに使うだけなので、無料枠があれば無料枠内で使える最小の設定で大丈夫です。
こういった環境を簡単に作れる AWS は非常に良いですね。
ついでにセキュリティグループも設定しておきましょう。
インバウンドに次のルールを追加します。
タイプ | プロトコル | ポート範囲 | ソース |
---|---|---|---|
カスタムTCPルール | TCP | 21 | 0.0.0.0/0 |
カスタムTCPルール | TCP | 50021-50040 | 0.0.0.0/0 |
ユーザを作ろう
ユーザを作り、パスワードを設定するには、次のコマンドを入力します。
$ sudo useradd ftp-user"ftp-user"の部分は、好きなユーザ名で構いません。
$ sudo passwd ftp-user
> 新しいパスワードを入力します。
ユーザ名とパスワードはメモしておきましょう。
vsftpdをインストールしよう
$ sudo yum install vsftpd -yこれでインストールは完了です。簡単です。
証明書を作ろう
FTP over SSL/TLS を実現するために証明書を作ります。
証明書の作り方は割愛します。すみません。
ググったらいっぱい出てきます。
ちなみに私は次のサイトを参考にしました。
完成した鍵ファイルや証明書は /etc/vsftpd 配下に置きます。(どこでもいいですけどね)
FTPサーバを設定しよう
FTPサーバの設定ファイルをいじっていきます。
$ sudo vi /etc/vsftpd/vsftpd.conf
いろんなサイトを参考にコピペしながら頑張ってみましたが、なかなかログインできず苦労しました。
最終的な vsftpd.conf は以下になります。
anonymous_enable=NO調べてもなかなか出てこなかったのが ssl_ciphers=TLSv1 ですね。
ssl_enable=YES
rsa_cert_file=/etc/vsftpd/ftp.pem
rsa_private_key_file=/etc/vsftpd/server.key
ssl_sslv2=NO
ssl_sslv3=NO
ssl_tlsv1=YES
allow_anon_ssl=NO
require_ssl_reuse=NO
force_local_logins_ssl=YES
force_local_data_ssl=YES
pasv_enable=YES
pasv_address=xxx.xxx.xxx.xxx
pasv_min_port=50021
pasv_max_port=50040
use_localtime=YES
ssl_ciphers=TLSv1
local_enable=YES
write_enable=YES
dirmessage_enable=NO
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ls_recurse_enable=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=NO
この設定がないことで、なかなか繋がらず苦労しました。
pasv_address の xxx.xxx.xxx.xxx には、EC2のIPアドレスを入れてください。
EC2のIPアドレスは再起動するたびに変わるので注意が必要です。(ElasticIPを設定してるなら別ですが)
FTPサーバを起動しよう
FTPサーバを起動します。次のコマンドを入力してください。
$ sudo service vsftpd start
[OK]が表示されれば、起動完了です。
失敗したら、vsftpd.conf に間違いがないかなど調べてみてください。
あとは接続が出来るかどうか FFFTP などのクライアントを使って、接続テストをしてみましょう!
Androidアプリに FTPSClient を組み込もう
通信なので、AsyncTask の中で実装するのが良いですね。
細かいところは省略しますが、次のコードで FTPS でアクセスできます。
FTPSClient ftpsClient = new FTPSClient();
try {
ftpsClient.setConnectTimeout(10000);
ftpsClient.setDefaultTimeout(5000);
ftpsClient.connect("xxx.xxx.xxx.xxx", 21);
ftpsClient.login("ftp-user", "password")
ftpsClient.setFileType(FTP.BINARY_FILE_TYPE);
ftpsClient.enterLocalPassiveMode();
ftpsClient.execPROT("P");
ftpsClient.setSoTimeout(5000);
ftpsClient.setDataTimeout(5000);
ftpsClient.changeWorkingDirectory(mPath)
FileInputStream fisupload = new FileInputStream(filename);
boolean result = ftpsClient.storeFile(filename, fisupload);
fisupload.close();
} catch (Exception e) {
Log.d("ftpTest", ftpsClient.getReplyString());
} finally {
if (ftpsClient.isConnected()) {
try {ftpsClient.disconnect();} catch (IOException e) {}
}
ftpsClient = null;
}
ここでのポイントは ftpsClient.execPROT("P"); ですね。
FTPSClient の Example にもなかったりして、これを見つけるまで苦労しました。
最初はエラーが多いが出るかもしれませんが、 ftpsClient.getReplyString() のメッセージを見ながら頑張りましょう。
2017年2月11日土曜日
Google Play デベロッパー ポリシー違反に関わる警告
2月7日にGoogleから「Google Play デベロッパー ポリシー違反に関わる警告」というメールが届きました。
どうやら、「住所のみ録」アプリがポリシー違反となっているということのようです。
急に届いたので、なんだろう・・と思いましたけど、プライバシーポリシーを設定していないなど、書いてることはもっともだったので、週末に直そうと思い対応しました。
調べてみると、やることは2つ。
まず、プライバシーポリシーのページですが、Webサーバを持ってるわけではないので、当ブログにプライバシーポリシーのページを作成して対応しました。
簡単に書いたけど、こんなのでいいのかな・・もうちょっと訂正するかもしれません。
次にアプリの修正が大変。。と思いきや、
Googleがリリースしてるアプリを参考に調べてみると、プライバシーポリシーのページのリンクをアプリに埋め込んでるだけっぽい。
なので、意外と簡単そうでした。
アプリの修正はまた後日にしますが、3月15日までに対応しないといけないようなので、近いうちにします。
1ヶ月というのが、また長いようで短い。。
仕事上でもお客さんが対象になってないか見ないといけないな・・。
どうやら、「住所のみ録」アプリがポリシー違反となっているということのようです。
急に届いたので、なんだろう・・と思いましたけど、プライバシーポリシーを設定していないなど、書いてることはもっともだったので、週末に直そうと思い対応しました。
調べてみると、やることは2つ。
- Google Play Developer Console から対象アプリのプライバシーポリシーにリンクを設定する。
- アプリ内からもプライバシーポリシーを確認できるようにする。
まず、プライバシーポリシーのページですが、Webサーバを持ってるわけではないので、当ブログにプライバシーポリシーのページを作成して対応しました。
簡単に書いたけど、こんなのでいいのかな・・もうちょっと訂正するかもしれません。
次にアプリの修正が大変。。と思いきや、
Googleがリリースしてるアプリを参考に調べてみると、プライバシーポリシーのページのリンクをアプリに埋め込んでるだけっぽい。
なので、意外と簡単そうでした。
アプリの修正はまた後日にしますが、3月15日までに対応しないといけないようなので、近いうちにします。
1ヶ月というのが、また長いようで短い。。
仕事上でもお客さんが対象になってないか見ないといけないな・・。
登録:
投稿 (Atom)
寂しいと思えるチーム作り
12月末で一つのプロジェクトが終わりました。 最後のデイリースクラムの時に、一年目のメンバーが「寂しいですね」と言ってくれました。何気ない一言でしたが、チームをまとめている私としてはとても嬉しい言葉でした。お世辞だったかもしれませんが、それでもうれしかったです。 自分としてはちゃ...

-
Androidアプリ開発で Apache Commons Net の FTPSClient を使って、FTPS機能を作成した時のことをまとめます。 サーバをたてよう 検証できる環境がなかったので、FTPサーバを立てるところから始めます。 FTPサーバを立てたことが...
-
タブレットとロボホンの連携についてお話します。 実際のコードなどの説明はしませんが、参考になればと思います。 ロボホンを借りることがあったので、少し遊んでみました。 踊ったり、歌ったり、逆立ちしたりもする芸達者なやつでしたが、 私がやってみたかったのはタブレットとの連携でし...
-
「Pixel4a」を買いました。Google製スマホとしては、Nexusも含めて初めてです。(タブレットは持ってたけど) # なぜ買った - ドコモユーザー これまでずっとドコモの端末を買ってました。 しかし、今では端末の割引などもほとんどなくなり、ドコモ端末にする理由もなくな...
