あれもPython,これもPython

Pythonメモ※本サイトはアフィリエイトを利用しています

PythonでRubyOnRailsライクなwebアプリ開発を行いたい(ruPy on rails)を使う

20160402追記:モチのロンですが、エイプリルフールネタでした(せめてレポジトリは用意すれば良かった・・・ 来年はもっと頑張ろうと思います

Pythonでは強力なwebアプリケーションフレームワークとしてDjango,Tornadoが存在します。
特にDjangoMVC(Django的にはMTV)に基づき、強力なORM機能を持つなど、
Railsに負けないフルスタックながら、スピーディな開発が可能になっています。

しかし、どうも知名度がよろしくない・・・。
というところを改善するためのコマーシャルモジュールとして、
Salvano Klavineという方がつくった
ruPy on railsというモジュールが存在します。

はじめ方

pipで入ります。
Djangoが依存モジュールなため、
一緒にインストールされます。

pip install rupy

使い方

rupy startproject プロジェクト名

でプロジェクトが作成されます。

基本的には、Djangoのラッパーでしかないので、
特にDjangoと変わりません_

Djangoとの大きな違いは

  • projectとapplicationの区別が存在しない
  • staticディレクトとindex.htmlが事前に作成される

くらいでしょうか。

特にあんまりメリットは感じません。
操作感はRailsに近くなっているので、
Railsには親しみあるけど、Rubyは別に・・・
という層を取り込むのが目的なんでしょうか。

ちなみに

このindex.htmlが曲者で、
表示すると

USE PYTHON!の文字とともに、
zen of pythonの内容が表示されます。

このあたりツールに振り回されることなく、
ちゃんと設計思想を気にする
Pythonistaらしいジョークです。
(おもしろいかは知りません)

とりあえず、よくわからない言語宗教戦争に巻き込まれたら、
おすすめしてみましょう。

PythonのTornadoの感想

Webフレームワークというと、
PHP,Javaが種類も豊富で、
知名度でいうとRuby on Railsが有名です。

といいつつも、私はPythonが好きなので、
出来る限りPythonを使いたい!

代表選手

最近の代表選手はやはり

でしょうか。

他にもcherrypy,pyramid,web2pyなど、
かなりたくさんの種類が存在しています。

個人的な使い分け

先ほどあげた4つの中だと
FlaskとBottleはかなり類似している印象です。
個人的には1ファイルでできているBottleの方が
手軽な印象はあります。

DjangoPythonのwebフレームワークの中では
フルスタックで、MVC(pythonだとMTV)全てを一つで賄うことが可能です。

TornadoはDjangoほどのフルスタックさはないし、
かといってBottleほど手軽ではない印象で、敬遠していたのですが、
最近は一番好きになりました。

Tornadoのどこが良いか

Tornadoは、ルーティングもハンドラーも
一つのファイルにすることが可能です。
この辺り必要なファイルが膨れがちなDjangoよりも、
BottleやFlaskに近い感じです。

ただし、デフォルトでハンドラーを継承して書く作りになっているので、
意識しなくても結構きれいなコードになってくれます。

また、ログイン管理やテスト機能など、
Djangoレベルとまでは言いませんが、
かなり強力な標準機能を搭載しています。

この辺りの手軽さと綺麗さのバランスが実にPythonライクで自分の好みにfitしています。

ただやはりORM回りが弱いので、
そこは割りきってmongoDBに放り込んでいくのでもいいのかな、と思っています。
すごく大きいアプリケーションを作る気がないので、
特にデメリットとは思っていませんね。

あとはブロッキング等、特徴的な部分があるはずなんですが、
まだ実運用していないのであまり恩恵に預かれていません。。。