Pylons

**Pylons** は Python 言語で書かれた オープンソース の webアプリケーションフレームワークである。再利用性を促進し、機能を各モジュールに分割するためにWSGI 標準を広い範囲にわたり採用している。

Pylons は、Django や TurboGears などを含む昨今の webアプリケーションフレームワークの中でも最も新しいもののひとつである。Ruby on Railsに強い影響を受けており、主要なコンポーネントのうちRoutes と WebHelpers は、Rails の機能を Python で再実装したものである。

Pylonsはメンテナンスモードに移行し実質的な開発は終了し、後継となるPyramidに移行している。

## 特徴
### 構造
Pylons は他社が開発したツールに基づくほぼ完成したスタックを持つことで知られており、明らかに NIH シンドロームを避けている。

### インストール、依存ソフトウェア、設定
Pylons の公式なインストールの方法は、the Python CheeseShop 経由でEasyInstall を用いて行うことで、追加のツールもたいていは同じ方法でインストールされる。EasyInstall は必要に応じてパッケージの依存関係を解決する。Pylons と Paste を一緒にパッケージした配布系もあるが、配布系のパッケージは公式の配布物より遅れる傾向がある。Pylons は .egg ファイルを .zip ファイルに変更し、内容を展開することでもインストールできる。

Pasteプロジェクトの設定、テスト、配置に使用される。共通の INI構成フォーマットを用いており、Paste では開発と配置の設定を、インタラクティブなデバッガなどの Pylons の複雑な部分を製品版のユーザーから隠蔽した状態で開発者が同じコードベースをもとに動作させられるよう、複数の"プロファイル"を用いることができる。

### URL のディスパッチ
Selectorなどの WSGI 互換の URL ディスパッチャであればどれでも使用可能だが、現在 Pylons 用に広く使われている唯一の URL ディスパッチャはRuby on Railsの URL ディスパッチ機構を Python で再実装したRoutes である。

### HTML の生成
Pylonsでも採用されたRailsのもう一つの機構が、Routes の設定に基づき URL のマッピング機能を提供するWebHelpersである。WebHelpers は、script.aculo.us や Prototype  ライブラリを利用したJavaScriptコードを生成するためのユーティリティ的な機能も提供する。

HTML フォームの検証と生成のために、FormEncode と FormBuild が用いられている。Mako の継承モデルを用いてフォームの生成を行うために、Mako も一部で用いられている。

### テンプレート
Myghty がバージョン 0.9.5 まで Pylons のデフォルトのテンプレート言語であったが、バージョン 0.9.6 で Mako に置き換えられた。いずれのテンプレート言語もインクルード、継承、任意の Python コードの埋め込みをサポートするテキストベース(XMLベースのものではない)のテンプレート言語である。

Pylons の緩く結合されたレイヤ構造により、それ以外のテンプレート言語も利用可能である。XML ベースのテンプレート言語Genshi もMako や Myghty いずれかの代わりに使用することができる。

### データベースの抽象化 / [[オブジェクト関係マッピング|O/Rマッピング]]
Pylons にはデフォルトのデータベースライブラリはない。SQLObject と SQLAlchemy が知られている。

### repoze.bfgとのプロジェクト統合によるPylons終了とPyramidの誕生
フレームワークのPylons はPylons プロジェクトが開発してきたが、Pylons 2 の開発を進めるうちに repoze.bfg (Zope 由来のコンポーネントをWSGIアプリケーションで利用できるようにしたコンポーネント集であるrepozeで構成されたフレームワーク) と似てきたことで、コードベース と開発コミュニティをマージする方向へとシフトする。2010年11月のrepoze.bfg とのプロジェクト統合の合意により、Pylonsの新しいバージョンはオリジナルのPylons 1.0 と大きく変わることとなる。こうしてPylonsプロジェクトはメンテナンスモードに移行し、Pyramidと銘打ったrepoze.bfgをコードベースとする新しいPylons プロジェクトが開始されることとなった。

## Pyramid

**Pyramid** は、WSGIベースのPythonで書かれたオープンソースのWebアプリケーションフレームワーク。Zope・Pylons・Djangoに触発された、小さく速く堅実 (down-to-earth)なフレームワークである。

Pylons 1.0は、WSGIベースのフレームワークとして代表的な存在であったが、PylonsApp とWSGIControllerメソッドは実質的にAPI として凍結されているなど、拡張性を取り入れるために改良しようとすることが困難であることが分かった

一方、repoze.bfgは、Zope 3のコンポーネントアーキテクチャを利用しており、Zopeのコミュニティから大きな注目を集めていた。
2010年に、Pylonsフレームワークは、repoze.bfgをベースとした開発に移行することを発表した。それは結果として、repoze.bfgプロジェクトがPylonsプロジェクトに合流し、repoze.bfgがPyramidに改称することであった。

バージョン1.3から、Python 3 互換となった。 Python 3.2 以上であれば、 Pyramidを使用できる。

## 外部リンク
* Pylons Project home page
** Pylons framework
** Pyramid framework
*** repoze.bfg framework
* Pylons Wiki
* Sites using Pylons
* Pylons に関連する文書の日本語訳

Pylons の標準インストールで用いられるパッケージ、および人気の高い追加パッケージ
* Myghty - URL のディスパッチ、コントローラ、キャッシュ機構、テンプレート機能など
* Mako - Myghty 以外のテンプレートエンジン
* Python Paste - プロジェクトの設定、テスト、配置
* EasyInstall - インストールとパッケージの依存関係
* Routes - Rails routes に基づく Routing の実装 
* FormEncode - フォームの検証と生成
* WebHelpers - HTML ヘルパー機能

### メーリングリスト
* pylons-discuss on Google Groups

Google Groups からの情報によると(2018年5月8日):
* メンバー 2871 人
* 月平均 25 メッセージ(過去3ヶ月間)

## 脚注

## 関連項目

*Webアプリケーションフレームワーク
*Pythonを使っている製品あるいはソフトウェアの一覧