IBMのBluemixを触ることになったので、
ちょい下調べ。
まずは、ざっと触って気づいた点
・Bluemixの動作は全体的にもったりしてる
・ほぼ英語。日本語は意訳あり
・Python、Rubyなどもカバー
・仮想マシンも使える?近日公開とのこと
・無料枠があり、無料サーバーとしても使えそう。
最初にPythonを指定してアプリを作成します。
bluemix上でクリッククリックで簡単に作成できました。
開発方法は2つ
1)bluemixの開発キッドをダウンロードしてローカル作業
or
2)Git連携
→ 使い方がいまいち分かりにくい。
とりあえず、IDEダウンロードとかだるいので、
後者のGit連携でやってみます。
まずは、ダッシュボードからadd gitをクリックして、
ibm上にgithubリポジトリを作成。
で、ローカルでcloneして、
いじってpushすれば自動でデプロイされる。
次にpython2をpython3にする。
デフォルトでバージョン 2.7.10
runtime.txtで変更可能
(参考)
https://console.ng.bluemix.net/docs/runtimes/python/index.html#python_runtime
# pyenvインストール
$ brew install pyenv
# 設定
$ export PYENV_ROOT="$HOME/.pyenv"
$ export PATH="$PYENV_ROOT/bin:$PATH"
$ eval "$(pyenv init -)"
# python3.4.3をインストール
$ pyenv install --list
$ pyenv install 3.4.3
$ pyenv global 3.4.3
$ pyenv versions
$ pyenv rehash
$ python --version # → 3.4.3になってること確認
bluemix側のruntime.txtに以下に変更
$ python-3.4.3 # → deployするとpython3.4.3になっている。
フレームワークのインストール
DjangoなどTornado、色々ありましたが、
軽量ということで、Flaskを選択。
ほぼ、python3対応されてきてますね。
$ pip install Flask
ここを参考にbluemix環境構築
https://github.com/IBM-Bluemix/bluemix-python-flask-sample/blob/master/static/index.html
・server.py修正
import os
from flask import Flask
app = Flask(__name__)
@app.route('/')
def Welcome():
return app.send_static_file('index.html')
@app.route('/myapp')
def WelcomeToMyapp():
return 'Welcome again to my app running on Bluemix!'
port = os.getenv('PORT', '5000')
if __name__ == "__main__":
app.run(host='0.0.0.0', port=int(port))
・requirements.txt修正
Flask==0.11.1
・静的ファイルのパス変更
"static/"を追加
これで、bluemix上でPython3とFlaskが動くようになりました。
deploy中は「404 Not Found」出る(汗
で、次は
Watson APIとの連携です。
今回は、Personality Insightsを利用します。
これ一言で言うと、Watsonによる「性格診断」。
SNSなどのテキストデータをインプットに、
情緒不安定性とか、外向性、知的好奇心、誠実性、協調性など、
15種類の百分率で診断してくれます。
連携は簡単で、
まずはBluemixのダッシュボードの左メニュー「サービス」で、対象のサービスを選択。
リージョンの概念があるので注意。(違うリージョンがデフォルト選択されていて、消えてる!って焦りました)
連携できると、対象アプリの環境変数で、
VCAP_SERVICESに値が格納されます。
アプリ開発ではここから環境変数を参照して、APIなどにアクセスします。
具体的なコーディングは下記を参照
(参考)
https://github.com/watson-developer-cloud/personality-insights-python
ポイントだけ書くと、
・VCAP_SERVICESから値を参照
・Personality Insights serviceにアクセス
・json形式で診断結果が返ってくるので、これを適宜表示
注)Flaskだと以下でjsonを返す。
return app.response_class(response.content, content_type='application/json')
以上、
まずは簡単なAPI連携でした。
次は
Natural Language Classifier(NLC)などを使って、
会話を楽しむWatsonを作ってみたいと思います。