LoginSignup
8
9

More than 5 years have passed since last update.

bluemixにpython+Flask+watson api環境を構築してみた。

Posted at

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を作ってみたいと思います。

8
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9