HIT技術ブログ

株式会社ヒューマンインタラクティブテクノロジー技術者による技術ブログです。

Python Tornado をさわってみた。その1(環境構築)

nodejsを利用する場面が多かったのですが、最近Pythonに関わる場面も増えてきました。
Djangoやpyramidを少しかじったくらいの私ですが、nodejsっぽいPythonフレームワークはないかと探していましたが、Tornadoが近そうなのでこちらをさわってみたいと思います。
Pythonをインストールするところから始めたいと思います。

環境

Macで動作確認をしています。 homebrewとgitは事前にインストールしておいてください。Windows環境の場合はgitのみで大丈夫です。

  • macOS Sierra 10.12.2
  • homebrew
  • git

pyenvを使ってみる

Pythonの複数バージョンをインストールする場合に利用します。Windowsを利用している方は読み飛ばしてください。

インストール

homebrewでインストールします。

$ brew install pyenv

インストール後、環境変数を設定します。~/.bash_profileに書き込みます。

export PYENV_ROOT=$HOME/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH

pythonのインストール

Pythonをインストールします。バージョンは任意です。

$ pyenv install 3.6.0
$ pyenv install 2.7.13

上記のコマンドを実行するとそれぞれのバージョンのpythonがインストールされます。
pyenv global x.x.x、pyenv local x.x.xまたは、pyenv shell x.x.xでバージョンの切り替えができます。
globalとすると全体に、localにするとそのカレントディレクトリに、shellにすると今使用しているシェルのpythonのバージョンを変更できます。

pyvenvで環境構築してみる

pyvenvを用いてpythonの実行環境を構築します。
pyvenvはPython3.3から標準で含まれています。ちなみにpyenvを利用した環境でpyvenvを実行すると

WARNING: the pyenv script is deprecated in favour of `python3.6 -m venv`

と表示される。pyvenvはいずれ廃止予定らしいです。

Python's pyvenv script deprecated · Issue #184 · yyuu/pyenv-virtualenv · GitHub

ので、「python3.6 -m venv」を実行してPythonの仮想環境を作成します。
作成したのち、venvを有効化します。
有効化したvenv内でpipで取得したパッケージが取得されます。

$ cd ~
$ mkdir .virtualenvs
$ python3.6 -m venv .virtualenvs/tornado
$ source .virtualenvs/tornado/bin/activate

venvを無効化する場合は、「deactivate」を実行します。

$ deactivate

Tornadoのインストールしてみる

Tornadoはpipを用いてインストールします。
pipはPython 2.7.9 以降、Python 3.4以降からデフォルトでインストールされます。

$ pip install tornado

公式サイトのドキュメントは下記のリンクです。
Tornado Web Server — Tornado 4.4.2 documentation

こちらに一通りの説明は記載されています。

ソースコード

公式ホームページに記載されているコードは下記の通りです。
実行すると「Hello, world」がブラウザに表示されます。

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
    ])

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

上記のソースコードをserver.pyに保存します。

$ cd ~/.virtualenvs/tornado
$ mkdir workspace
$ vi server.py

起動

server.pyをpythonで実行するだけです。

$ python server.py

ターミナルには何も表示されませんが、ブラウザで「http://localhost:8888」にアクセスすれば、"Hello, world"が表示されます。

次回は

今回は環境構築とTornadoのインストールのみでした。
tornado.web.RequestHandlerを説明したいと思います。REST APIの実装をしたいと思います。

SQL Serverのサードパーティー製品(RedGate)について紹介します

1.RedGateとは?

データベースライフサイクルマネジメントを実現する日本初上陸の製品です。

2.データベースライフサイクルって?

データベースの構築/導入/運用/保守/破棄まで、

一連のライフサイクルのプロセスを継続的に管理する考え方です。

3.RedGateが提供する価値は?

事業や業務環境の変革のスピードに応えるためには、アプリケーションのみならず、

データベースのライフサイクルマネジメントが求められます。

Redgate製品は、ユーザー業務とアプリケーション開発にデータベース管理を融合し、

より迅速で高品質なシステムの提供を実現します。

4.どんなことができるの?

①データベースのバージョン管理

  • 変更管理が一部の担当者に依存している。
  • いつ/だれが/どのような変更がされたか把握できない。
  • バージョン管理が手作業であることにより、ソース管理や過去バージョンの復元に時間と手間がかかる。

★「SQL Source Control」でバージョン管理を実現します!

②リリース作業

  • 開発環境から本番環境に変更内容を反映する際、変更用スクリプトを手動で作成している。
  • 手作業で変更作業を行っていることにより、手間と時間がかかるだけでなく、ヒューマンエラーが発生しやすい。

★「DLM Automation」でリリース作業を自動化します!

③運用開始後のモニタリング

★「SQL Monitor」でSQL Serverをリアルタイムでモニタリングします!



RedGateの概要紹介は以上です。

次回RedGateの記事を取り上げる際は、Azureとの連携に関してご紹介したいと思います。

Nutubeを買ってきました。

真空管の将来を担うかもしれない。

今年の夏にKORGから真空管が一般向けに発売開始されました。
新発売です。真空管なのに。

その名も「Nutube」

従来の真空管に比べて

  • 省エネ
  • 小型化
  • 長寿命

らしいです。

何でも消費電力は真空管の2%
容積は30%
寿命は30,000時間(従来の真空管は10,000時間くらいなので300%ですね)

というスコアをたたいているのにもかかわらず"完全な"3極真空管として動作する(公式)
というので驚きです。

とりあえず秋葉原秋月電子通商さんに行って買ってきました。

f:id:hittech:20161129224841j:plain

消費電力2%な感じを全面に押し出した説得力あるフォルムです。
¥5,400- いい値段しますが致し方なしでしょう。

このサイズならHammond 1590Aサイズのケースでも余裕で入ります。
真空管エフェクターをポケットに入れて持ち運べるんです!
夢、広がります。

考えているのはエリックジョンソンでおなじみのTUBE DRIVER
あれ作りたいな~
真空管触ったことないんだよな~
どうやって使うのかな~

というわけで続く。。。!

OSSのCordova ARプラグインって少ないなー

先日HTML5 Mobile Dayというイベントに出展するため ちょこっとAR Wifi Analyzerなるものを作成した際に使用したプラグインを公開しました。

  • カメラプレビューの上にHTMLをオーバーレイで表示してくれるプラグイン github.com

  • 加速度センサー、方位センサーの値を取得するプラグイン github.com 元々X軸、Y軸、Z軸方向の加速度しか取得できなかったため端末の傾き・方位(pitch, roll, azimuth)を取得できるようにしてあります。 現状Androidにしか対応していません。

  • Wifi情報を取得するプラグイン github.com 接続したWifi情報しか取得できなかったため周囲のWifi情報も取得できるようにしました。 現状Androidにしか対応していません。

今回せっかくなのでHTMLだけでどこまでARっぽいものが動くのか確かめるために canvasをカメラプレビューにオーバーレイで表示する方法を取りましたが やはりネイティブ実装程はサクサク動かず、何だかんだでARっぽいものを作る為にはネイティブでView作る必要あるな、と感じました。