SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
What makes pyramid unique
Report
Atsushi Odagiri
Follow
open collector
Sep. 21, 2012
•
0 likes
•
3,596 views
1
of
51
What makes pyramid unique
Sep. 21, 2012
•
0 likes
•
3,596 views
Download Now
Download to read offline
Report
Atsushi Odagiri
Follow
open collector
Recommended
Pylons ユーザのための Pyramid 移行ガイド
Nozomu Kaneko
3.8K views
•
47 slides
はじめての CircleCI
Yosuke Mizutani
53.5K views
•
57 slides
AsyncTask アンチパターン
Hiroshi Kurokawa
9.8K views
•
19 slides
Windows コンテナを AKS に追加する
Yuto Takei
1.7K views
•
38 slides
RedmineとGitとスクラム
Takashi Okamoto
15.6K views
•
51 slides
Bot Framework v4 開発 Tips 2018-11
Atsushi Yokohama (BEACHSIDE)
1.8K views
•
34 slides
More Related Content
What's hot
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
12.4K views
•
164 slides
JavaScript.Next Returns
dynamis
7K views
•
112 slides
Hello Java
Chihiro Ito
6.3K views
•
46 slides
第5回勉強会
Mugen Fujii
687 views
•
50 slides
絶対落ちないアプリの作り方
Fumihiko Shiroyama
52.8K views
•
124 slides
Jenkins と groovy
Kohsuke Kawaguchi
7.8K views
•
38 slides
What's hot
(20)
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
•
12.4K views
JavaScript.Next Returns
dynamis
•
7K views
Hello Java
Chihiro Ito
•
6.3K views
第5回勉強会
Mugen Fujii
•
687 views
絶対落ちないアプリの作り方
Fumihiko Shiroyama
•
52.8K views
Jenkins と groovy
Kohsuke Kawaguchi
•
7.8K views
OpenJDK コミュニティに参加してみよう #jjug
Yuji Kubota
•
8K views
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
JustSystems Corporation
•
16.1K views
WildFly Swarmではじめる「パーツとしてのJavaEE」
Hiroaki NAKADA
•
6.6K views
CIツールのまとめとSide CI - CIツール勉強会@福岡
Koichiro Sumi
•
7.1K views
Gradleどうでしょう
Takuma Watabiki
•
17.2K views
会社でClojure使ってみて分かったこと
Recruit Technologies
•
8.7K views
やさしいGitの内部構造 - yapcasia2013
DQNEO
•
15.5K views
第4回勉強会 Groovyの文法からSpockまで
Mugen Fujii
•
1.8K views
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
•
97.9K views
Spring in-summer-gradle-hands on-withanswers
Takuma Watabiki
•
2.5K views
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
Masanori Ishigami
•
750 views
Java scriptの進化
maruyama097
•
7.3K views
Jjug 20140430 gradle_basic
Takuma Watabiki
•
8.7K views
Play勉強会 第3回
Daisuke Kasuya
•
5.9K views
Similar to What makes pyramid unique
Google Cloud Messaging for Android ことはじめ(Eclipseから動かしてみる編)
kojiokb
1.2K views
•
12 slides
第9回Symfony勉強会LT Symfony2 meets AngularJS #symfony_ja
77web
3.1K views
•
9 slides
MakeGoodで快適なテスト駆動開発を
Atsuhiro Kubo
1.2K views
•
28 slides
120315 cloud founry_java_ironfoundry
Takayoshi Tanaka
749 views
•
38 slides
Mvc conf session_5_isami
Hiroshi Okunushi
706 views
•
43 slides
APIMeetup 20170329_ichimura
Tomohiro Ichimura
848 views
•
80 slides
Similar to What makes pyramid unique
(20)
Google Cloud Messaging for Android ことはじめ(Eclipseから動かしてみる編)
kojiokb
•
1.2K views
第9回Symfony勉強会LT Symfony2 meets AngularJS #symfony_ja
77web
•
3.1K views
MakeGoodで快適なテスト駆動開発を
Atsuhiro Kubo
•
1.2K views
120315 cloud founry_java_ironfoundry
Takayoshi Tanaka
•
749 views
Mvc conf session_5_isami
Hiroshi Okunushi
•
706 views
APIMeetup 20170329_ichimura
Tomohiro Ichimura
•
848 views
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
•
49.2K views
世界をすこしだけ前に進めるということ
Yukei Wachi
•
2.6K views
Ruby way-openstack.keynote
Uchio Kondo
•
6.8K views
Pyramid + socket.io 人狼を作ってみた
Junya Hayashi
•
5K views
Unityゲームにオンラインランキングとゴースト機能を追加しよう!
史識 川原
•
2K views
NPAPIを使ったandroid標準ブラウザの拡張方法
Naruto TAKAHASHI
•
4.1K views
Introduction of Rhodes
Hitoshi Kuroyanagi
•
1.8K views
Spring Boot概要
af not found
•
1.3K views
Groovy base gradle_20130309
Nobuhiro Sue
•
2.3K views
MediaRecorder と WebM で、オレオレ Live Streaming
mganeko
•
15.1K views
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
lalha
•
2.2K views
13016 n分で作るtype scriptでnodejs
Takayoshi Tanaka
•
2.3K views
SDLoader SeasarCon 2009 Whire
Akio Katayama
•
313 views
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
Naoto TAKAHASHI
•
1.5K views
More from Atsushi Odagiri
みんなのPython勉強会#77 パッケージングしよう
Atsushi Odagiri
1.4K views
•
46 slides
async/await の向こう側 PyCon Kyushu 2022
Atsushi Odagiri
262 views
•
51 slides
パッケージングの呼び声 Python Charity Talks in Japan 2021.02
Atsushi Odagiri
4.4K views
•
32 slides
eggとはなんだったのか 栄光のsetuptools
Atsushi Odagiri
678 views
•
27 slides
pyconjp 2019 LT 今日のsetuptools
Atsushi Odagiri
5.9K views
•
18 slides
Pythonでの開発を効率的に進めるためのツール設定
Atsushi Odagiri
46.6K views
•
54 slides
More from Atsushi Odagiri
(20)
みんなのPython勉強会#77 パッケージングしよう
Atsushi Odagiri
•
1.4K views
async/await の向こう側 PyCon Kyushu 2022
Atsushi Odagiri
•
262 views
パッケージングの呼び声 Python Charity Talks in Japan 2021.02
Atsushi Odagiri
•
4.4K views
eggとはなんだったのか 栄光のsetuptools
Atsushi Odagiri
•
678 views
pyconjp 2019 LT 今日のsetuptools
Atsushi Odagiri
•
5.9K views
Pythonでの開発を効率的に進めるためのツール設定
Atsushi Odagiri
•
46.6K views
Pythonとパッケージングと私
Atsushi Odagiri
•
19K views
Python3 移行への軌跡
Atsushi Odagiri
•
3.3K views
パッケージングを支える技術 pyconjp2016
Atsushi Odagiri
•
4.4K views
Sqlalchemy sqlの錬金術
Atsushi Odagiri
•
2.6K views
Clack meetup #1 lt
Atsushi Odagiri
•
1.1K views
Pyramid入門
Atsushi Odagiri
•
13.7K views
パッケージングの今
Atsushi Odagiri
•
22.6K views
パッケージングの今と未来
Atsushi Odagiri
•
12.1K views
パッケージングの今と未来
Atsushi Odagiri
•
6.8K views
Bplt11 form alchemy
Atsushi Odagiri
•
10.7K views
Python3でwebアプリ
Atsushi Odagiri
•
5.7K views
Pyconjp2012 memory-of-europython
Atsushi Odagiri
•
973 views
エキPy lt repoze.whoの紹介
Atsushi Odagiri
•
1.2K views
World plonedaylt
Atsushi Odagiri
•
1.2K views
What makes pyramid unique
1.
What Makes Pyramid
Unique! Django & Pylons Con 2012 aodag
2.
お前誰よ Atsushi Odagiri 株式会社ビープラウド http://twitter.com/aodag http://facebook.com/aodag
3.
Pyramid 仕事で使ってます 機能追加のパッチを投げました Pythonは1.5から。 Pyramidは、repoze.bfg1.2のころから。
4.
今日のお話 Pyramidって何? どんな特徴が? 実際どんな開発の仕方?
5.
Pyramidとは? Pylonsプロジェクトの Webアプリケーションフレームワーク Simple, Fast, Tested,
Documented No ORM, No Template Engine.
6.
Pyramidができるまで WSGI
Zope Pylons Repoze Pyramid
7.
Zopeから受け継いだもの Zope Component Architecture URLトラバーサル コンテキストベースのセキュリティ機構
8.
Pylonsから受け継いだもの WebOb, BeakerなどのWSGIコンポーネント URLパターンでのディスパッチ PasteScript (ただしPython3対応のために独自コマンドとして取 り込まれた)
9.
Pyramidの設計方針 仕組みをたくさん提供する ポリシーを押し付けない コンポーネント指向を直接見せない ことさらマイクロフレームワークを意識しない
10.
特徴的なしくみ デコレータベースの設定 さまざまなフック 例外ビュー
11.
デコレータベースの設定 ユニットテスト中に 副作用のあるデコレータ
が実行されると、 うっとおしいですよね?
12.
デコレータベースの設定 デコレータでビューなどを登録できる ただし、いきなり登録するのではなく Configurator.scan()をトリガーとして、初めて登録 される。
13.
さまざまなフック フレームワークの途中に処理を
割り込ませたいこと、 たくさんありますよね?
14.
さまざまなフック NewRequest Tween BeforeRender など
15.
例外ビュー 処理を打ち切って、
さっさと レスポンスを返したいこ と、 たくさんありますよね?
16.
例外ビュー 例外クラスごとにそれぞれビューを設定可能
17.
view predicate
同じ処理だけど、 Ajaxリクエストと ブラウザリクエストで テンプレートとか 変更したいよね?
18.
view predicate name
xhr context accept route_name header request_type path_info request_method custom_predicate request_param match_param
19.
view predicate @view_config(.... xhr=True,
renderer="json") @view_config(... xhr=False, renderer="index. html") def get_something(request): .... return dict(items=items)
20.
その他いろいろ シングルトンは存在しない 継承を多様しない
21.
開発を助けるコマンド群 pcreate pserve pshell prequest proutes pviews ptweens
22.
pcreate プロジェクトテンプレート(Scaffold)を展開する 開発開始時の土台を作成するツール ユーザー定義のプロジェクトテンプレートも作成で きる
23.
pserve Webアプリケーションを実行する --reloadオプションで、ファイル更新を検地してリ ロードしてくれる daemon化やモニタリングしてリスタートさせること も可能
24.
pshell Webアプリケーション実行時の環境を擬似的に作 成して、Pythonシェルを起動する
25.
prequest Webアプリケーションをオフラインで実行して結果 を確認できる
26.
proutes, pviews, ptweens アプリケーション構成を確認できる。 例えば: ●
URLパターンが実際にどのViewにマッチするの か ● 具体的なURLに対応するViewはどれか ● Tweenの実行順序はどのようになっているのか
27.
よく使うライブラリ、ツール ZODB3
distribute SQLAlchemy zc.buildout zope.sqlalchemy nose deform/colander alembic WebHelpers cliff
28.
有力なアドオン pyramid_tm pyramid_deform pyramid_debugtoolbar pyramid_exclog pyramid_zodbconn
29.
Pyramidベースのフレームワーク SubstanceD Kotti Cornice GroundHog MetaTG
30.
Pyramidでの開発 2つのベースアーキテクチャ ZODB + トラバーサル SQLAlchemy
+ URLディスパッチ
31.
ZODB + トラバーサル URLパターンとかいらない! URL
-> オブジェクトツリー URLでオブジェクト取得 例: URL : /great/bucho/show トラバーサル : root['great']['bucho']. showがない? showという名前のViewを呼ぶ
32.
Pyramidでの開発 環境構築 mkvirtualenv pycon2012 easy_install
pyramid pcreate -s zodb pycon2012 cd pycon2012 python setup.py develop
33.
Pyramidでの開発 追加のライブラリなど pyramid_deform deform_bootstrap colander pillow repoze.filesafe repoze.folder
34.
setup.pyに依存ライブラリを追加する install_requires = [ ... "pyramid_deform", "deform_bootstrap", "colander", "pillow", "repoze.filesafe", "repoze.folder",
35.
iniファイルにアドオンを追加する pyramid.includes =
.... pyramid_deform deform_bootstrap
36.
Pyramidでの開発 モデルを書く class Document(Persistent):
def __init__(self, name, contents): super(Document, self).__init__() self.__name__ = name self.contents = contents
37.
Pyramidでの開発 ビューを書く @view_config(context=Document, renderer='templates/document.pt') def
document_view(request): return dict()
38.
テンプレートを書く <html> <body> <h1>${context.__name__}</h1> <div> ${structure:context.contents} </div> </body> </html>
39.
pshellでモデルデータを登録 $ pshell development.ini >>>
from pyconjp2012.models import Document >>> doc = Document('test-document', 'this-is- document') >>> root[doc.__name__] = doc >>> doc.__parent__ = root >>> import transaction >>> transaction.commit()
40.
prequestで試してみよう $ prequest development.ini
/test-document <html> <body> <h1>test-document</h1> <div> this-is-document </div> </body> </html>
41.
pserveでWebアプリケーションを実行 pserve development.ini --reload
42.
ユーザー入力フォーム スキーマ定義 class AddDocumentSchema(c.Schema):
name = c.SchemaNode(c.String()) contents = c.SchemaNode(c.String(), widget=w.RichTextWidget())
43.
ユーザー入力(実装) class AddDocumentView(FormView):
schema = AddDocumentSchema() buttons = ('save',) def save_success(self, params): doc = Document(**params) self.request.context[doc.__name__] = doc doc.__parent__ = self.request.context return HTTPFound(self.request. resource_url(doc))
44.
pyramid_deform (表示) ${structure:form}
45.
Chameleonのテンプレートマクロ(定義) <html metal:define-macro="html"> <head> <!-- いろんなヘッダ
--> </head> <body metal:define-slot="main"> </body> </html>
46.
Chameleonのテンプレートマクロ(利用) <html metal:use-macro="base.macros.html"> <body metal:fill-slot="main"> ${form} </body> </html>
47.
まとめ 使う場合 言われるほど面倒ではない 難しいこともない 使い切る場合 手をいれれられる箇所が多いので、相対的に難し く感じるかも?
48.
(´ > ω < )こわくないよー
49.
Pyramidの今後 Pyramidベースのフレームワークが発展していく Python3対応?ああ、去年やってましたね。 テンプレートの標準サポートをなくす方針
50.
Pyramidの今後 管理アプリが欲しい! 今世界中のPylonsどもが実装している。
51.
参考URL The Pylons Project
Documentation http://docs. pylonsproject.org/en/latest/index.html Pyramid Documentation http://docs. pylonsproject.org/en/latest/docs/pyramid.html Defending Pyramid's Design http://docs. pylonsproject. org/projects/pyramid/en/master/designdefense. html