Pepper 2.5.5でrequestsを使ったボックスを試す(Cloud Vision API)


Pepper 2.5.5へのアップグレードに伴い、NAOqi OS内のパッケージも更新されました。
Choregrapheの自作ボックスなどでNAOqi OSに含まれているPythonライブラリを利用している場合は、新バージョンに合わせて一部書き換える必要があるかもしれません。

今回は、PepperでCloud Vision APIを試すためのボックスを作ってみたを例に、NAOqi OS内のパッケージの変更点やChoregrapheの自作ボックスの更新について見ていきます。

サンプルプログラムのソースコード

ここで紹介する、pepper-web-boxesという、Cloud Vision API用ボックスを含むボックスライブラリは、vr-lab/pepper-web-boxesにアップロードしてあります。

今回見ていく Cloud Vision API用のボックスは、 Google/Cloud Vision の中に入っています。自分のプロジェクトで利用するには、ボックスライブラリのインポートが必要です。

ボックスライブラリのインポートや使い方は、元記事を参照してください。

Cloud Vision API用ボックスのPepper 2.5.5 への対応

Cloud Vision連携ボックスでは、スクリプト内でいくつかの内部ライブラリをimportしています。
その中のひとつであるHTTP通信用の requests ライブラリは、NAOQi 2.5においてダウングレードされたために、ボックス実行時にエラーが発生するようになっていました。

具体的には、v2.5.1からv2.3.0へダウングレードされ、 requests.post()jsonパラメータが使えなくなることで、requests.post実行時に不明なパラメータが指定されたとエラーが発生する形です。

jsonパラメータは、Pythonのdictionaryを与えるだけで、自動的にサーバに対してそのデータをJSON化した上で送信してくれる便利なパラメータですが、v2.3.0ではこのパラメータがサポートされていません。そのため、代わりにdataパラメータに自力でJSON化した文字列を渡すよう修正する必要が有ります。

- response = requests.post(endpoint, json=req_body)
+ response = requests.post(endpoint, data=json.dumps(req_body))

この修正は、pepper-web-boxesリポジトリの最新バージョンでは既に適用されており(Pull Request #1)、Pepper 2.5.5上で動作することを確認しています。

その他のNAOqi OSパッケージの更新

今回は、実行してみてエラーとなったことが確認できた例ですが、確実にアプリをメンテナンスするためには、こまめなドキュメント調査をしていきたいところです。

NAOqi OS 2.5 のすべてのパッケージ更新情報は、下の公式ドキュメントにより確認できます。

NAOqi OS 2.5 — Aldebaran 2.5.5.5 documentation

幸いなことに、ダウングレードされているパッケージはrequestsのみですが、メジャーバージョンが変わっているもの、削除されているものはいくつか見られるので、注意が必要そうです。

まとめ

NAOQi OSのアップデートにより内部パッケージが更新され、スクリプトの修正が必要な例を見てきました。

今回のようにボックスやアプリ側の少しの修正で済めば良いですが、プラットフォームから提供されるソフトウェアパッケージはバージョンアップにより大きく変更がなされます。いくつものパッケージのバージョンが破壊的に変更されるので、できることなら依存ライブラリをそのままプロジェクト内に含めるなどして、NAOqi OS内のパッケージに依存しないようプログラムを組んだほうが良いかもしれません。