Movatterモバイル変換


[0]ホーム

URL:


5,611 views

Pythonおじさんのweb2py挑戦記

2012-09-16 Python Conference Japan 2012中村 良幸 @nakayoshixPython札幌 / 数学勉強会@札幌 / クラウド研究会@札幌

Related topics:

Embed presentation

Pythonおじさんのweb2py挑戦記2012-09-16 Python Conference Japan 2012中村 良幸 @nakayoshixPython札幌 / 数学勉強会@札幌 / クラウド研究会@札幌
今日のアジェンダ• 自己紹介と札幌の勉強会事情• PythonのWeb Application Framework• web2pyの特徴的な機能及び利点と欠点• web2pyの事例紹介• web2pyによるライブコーディング• まとめ
自己紹介• 中村 良幸→ なかむら よしゆき→ なかよし(ワタミメソッド)→ nakayoshix(xを付けて)→ 統合ID: nakayoshix です。(キリッ
仕事でやってきたこと• HPC (Fortran) 1994∼2000• 津波数値解析、港湾の水質汚染拡散計算、泊原発の大気汚染拡散計算• 報告書作成と3Dアニメによる可視化 (C + PostScript & OpenGL)• CRM (Siebel) 2001∼2003• 北海道ガス(北ガス)のお客様問い合わせ対応システム• Siebelのカスタマイズは、SiebelVBというMicrosoftVB互換言語• MSテクノロジー (ASP.NET, C#がメイン)• 札幌市環境マネジメントシステム (ASP.NET, C#, VS2005時代)• 某組織向けグループウェア(XML Web Service & スマートクライアント)• 他にもJava, PHP, ExcelVBA, R, およびPythonによる業務用アプリ開発を色々と…
Pythonによる受託アプリケーション開発歴• 2006年 全国各地の大学向け施設管理システム(Webアプリケーション)• 帳票出力モジュールを、Linux上でPython + PyUNO + OpenOffice.orgで作成• 2007年 北海道大学の大気環境汚染研究のためのサーバシステム• センサー付き端末から定期的に送られるメール(含データ)を受信してDB化• Python SMTPモジュールを利用、O/R MapperとしてSQLAlchemyを利用• 2009年 中古自動車売買Webサイトの構築 ( http://www.calwing.com/ )• DjangoによるWebアプリケーション、DjangoAdminを大幅にカスタマイズ• 2010年 統計分析用パッケージの作成(納期二週間でSPSSと同じものを…)• 重回帰分析(AICによるモデル選択を含む)計算処理はRで、GUIはPythonで
Pythonによる自社用アプリケーション開発歴• 2010年∼2012年にかけて、SSLサーバ証明書の申請管理システムを開発• 初めてのweb2pyによる業務用Webアプリケーションの開発• 他システムとのAPI連携がたくさん• Google Apps, Zoho CRM, kintone, JIRAとの間のREST API連携• Root CAとの間の証明書ベースによる暗号化されたSOAP API連携• ぼっちdeveloperゆえ、基本的に全て独りで開発。最近ではサーバーへのデプロイ、サーバの保守管理、セキュリティ、ログ管理、社内PC管理等々まで独りで…• 本当は、今日はその実際の事例を紹介しようと思っていましたが、諸般の事情でそれが不可能になりました。
というわけで…•Pythonおじさんです。(キリッ
勉強会活動について• 札幌で色々と勉強会を主宰しています• Python札幌 / from sapporo import *; with the Zen of Python• 現在、「Python初学者向け読書会@札幌」を隔週木曜で開催中• 数学勉強会@札幌 / 大人のためのやり直しの数学勉強会• 現在、「解析の基礎」を教科書に、毎週月曜に勉強会を開催中• クラウド研究会@札幌 / 年に一度の「クラウド温泉@小 」• 現在、「ぼちぼちHaskell勉強会@札幌」を隔週木曜で開催中• 勉強会充です。(キリッ
その他、趣味とか興味とか• オープンソース関連活動• オープンソースのCRM, openCRXの日本語化• openCRXのベースとなるMDAフレームワーク、openMDX• 最近興味があるのは…• 関数型言語、特にHaskell (ついでにScala & F#)• Monadとその理論的背景である圏論、代数構造• 好きなエディタはEmacs• Emacs歴24年になります。自称・Emacsおじさんです。(キリッ• 日常生活では• 1994年からヨーガを始めたので、ヨーガ歴24年です。
前置きはここまで• ここからが本編です
Pythonで作られた各種のWeb Application Framework• Django - 豊富な実績、多くのPaaSでも標準で使えるいわゆるフルスタックフレームワーク• TurboGears ( → Pylonsと統合)• Pylons (→ Pyramidと統合)• Pyramid - Python3へ対応済み、Zope由来、自由度最大• Flask - マイクロフレームワーク by @mitsuhiko• web2py - 今日紹介するものです
web2pyとは?• web2pyは高速、スケーラブルでセキュアかつポータブルなデータベース駆動型のWebアプリケーションをアジャイルで開発するための、フリーかつオープンソースなエンタープライズ向けWebアプリケーションフレームワークです。• もちろん全てPythonで書かれています。• ライセンスは LGPL version 3 License• 最新バージョンは一昨日出たばかりの2.0.9 (2012-09-13 23:51:30) stable• 作者は、アメリカのDePaul University College of Computing and DigitalMedia (CDM)でコンピュータ・サイエンスを教えている、Dr. Massimo DiPierroで、Massimoさんは、元々は物理屋さんです。
web2pyの特徴・その1• フルスタックのフレームワーク• セキュリティを重要視している• 全てブラウザのみで開発が可能• インストール不要→ web2py_src.zipを展開するだけで使用可能に• そのままGAEにデプロイが可能• 開発当初より後方互換性を維持
フルスタックとは?• SSLとストリーミングが可能なWebサーバー• SQLを動的に作成するデータベース抽象レイヤ (DAL)• 多様な認証方式とロールベースアクセス制御• Localの他, OpenID, OAuth, Janrain, CAS連携等が可能• グループとロールベースによる完全なアクセス制御• エラーロギングとチケットシステムの統合• スケーラビリティのための様々なキャッシュメソッド、等々
セキュリティ重視• The Open Web Application Security Project (OWASP) のいうところのセキュリティ上の問題トップ10を未然に防ぐための仕組みを内蔵• クロスサイトスクリプティング• インジェクションフロー• ディレクトリトラバーサル• 悪意のあるファイルの実行• Audit Trail (監査証跡) 機能も追加されている
Web IDEでブラウザによる開発• 強力な機能を持つWeb IDEを標準で持つ• 開発、テスト、デプロイ、メンテナンスといったアプリケーション開発の各フェーズに対して、ローカルやリモートから操作のできるWebのインターフェイスを提供• 新規アプリ作成時のウィザード機能も追加された• Mercurialがインストールされていれば、バージョン管理までWeb IDE上で可能になった• 結論として、ブラウザのみで全ての開発が可能です
Emacsによる開発も可能• とはいえ、Web IDEは単なる釣りです• Emacsのみによる開発ももちろん可能です• 通常はEmacsでソースコードを編集し、ターミナルからweb2py用のシェルを起動して動作確認を行います• ipythonがインストールされていれば、それを使います• bpythonがインストールされていればそちらを優先します• 開発中のイメージを次に…
GAEへのデプロイ• 一部制限はあるものの、GAEにデプロイしてそのまま動作させることが可能• 一部制限とはDB設計の根本的な違いが原因→ BigTableはRDBではないため• アプリケーションID以外はソースコード以外の設定ファイル等も書き換える必要なし• GAEへのデプロイに関しても、今はWeb IDEからクリック一発でインストールが可能に
web2pyの特徴・その2• 多くのDBに対応した強力なDAL機能• 強力なテンプレート機能を備えたView機能• AppAdminはDjangoAdminとは少し方向性が違うが非常に便利• RESTやSOAP等、多くのWeb Serviceに標準で対応• 全てにおいてデフォルト値を持つ→ 初期状態において、設定なしですぐに動作可能• ボイラープレートコードを極限まで排除• ネット上のコミュニティが活発 → 進化がとても早い
DALの存在• DAL (= Database Abstraction Layer)は本当に便利です• あくまでもデータベース抽象レイヤーです→ 他のFWが持つようなO/Rマッパーではないので注意が必要• 実際に使ってみて非常によく出来ている→ DjangoのO/Rマッパーに不満を持っている方は一度お試しを• デフォルトで非常に多くのデータベースに対応• SQlite, MySQL, PostgreSQL, Oracle, MSSQL, DB2, Firebird, MyBase,Informix, Google App Engine• RDBMSの他、GAE (BigTable)にも対応している• 最近では、MongoDB等のNoSQLにも対応済み
Pythonなのにimport文が不要• ボイラープレートコードを極限まで排除• フレームワークの基本機能に関しては、importが不要• VとCにおいて、HTMLタグをPythonの関数で作ることが可能• その代わり、フレームワーク側でexecfileを行い、グローバルレベルでの環境を作ってしまう!• とはいえ、それはやってもいいのか?• 古参PythonistaでPythonic重視派からは異端視• ネット上どこの掲示板へ行っても、世界中からdisられる原因に• そこへ、原作者のDr. Massimoさんが必ず出てきて反論を…
二年間使ってきた私の今の印象• DBへの操作が必要なWebアプリを、とにかく手軽に素早く作るのには向いている• 業務用Webアプリも、最初にとにかく早く作る上では十分に役だった• ところが、段々と辛くなってきます• O/Rマッパーではないので、テーブルに対応するクラスを持つべきか、持たざるべきか?• テスト容易性(Testability)の問題• 結局、多くの機能は順次モジュール化していきます• 以前はlocal_import()関数でしたが、今は普通にimportでいけます• 本格的な販売管理等の業務アプリケーションを作る際には再考が必要です
実際の使用例PyCon Asia Pacific 2012• PyCon Asia Pacific 2012のサイト構築で使われています• web2pyのアプリケーション、Conf2pyを使って構築されているそうです• 実際にサイトを見てみましょう
アプリの例: Conf2py• Open Source Conference Management System (GPL2)• Massimo Di Pierroさんによって作られたweb2pyのアプリケーション• MetaCryption LLCにより、サポートも提供されている• スライドショー:• http://www.slideshare.net/mdipierro/conf2py• web2py appとしてダウンロード (sourceも含む):• http://conf2py.googlecode.com/files/web2py.app.conf2py.w2p• ソースのみダウンロード (google codeより):• hg clone https://conf2py.googlecode.com/hg/ conf2py• オンライン・ビデオ(バージョンは古いものが対象):• http://vimeo.com/1838049 http://vimeo.com/12157148
ライブコーディング• ここで、実際にライブコーディングでプログラムを作ってみましょう
web2py関連の情報源• web2pyの公式サイト• http://www.web2py.com/• 日本語化プロジェクト(web2py japan)• http://groups.google.co.jp/group/web2py-japan
まとめ• GAEについて• Pythonについて• web2pyについて• ライブコーディング• GAEへのデプロイ
勉強会の紹介• 私が主催する勉強会 (立ち上げた順)• Python札幌• 数学勉強会@札幌• クラウド研究会@札幌
最後に• ご清聴ありがとうございました。

Recommended

PDF
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
PPTX
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
PDF
分散トレーシング技術について(Open tracingやjaeger)
PDF
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
PDF
Elastic APM:ログとメトリックから全体像を描き出す
PDF
Fluentdのお勧めシステム構成パターン
PPTX
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
PDF
データベース設計徹底指南
PDF
DDDオンライン勉強会#2 「集約・境界付けられたコンテキスト」
PDF
Cognitive Complexity でコードの複雑さを定量的に計測しよう
PDF
マルチテナント化で知っておきたいデータベースのこと
PDF
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
PDF
【さくらのクラウド】クラウドマスター認定試験終了者向け講習と、上級者への道(Terraform)
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
PPTX
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PPTX
backlogsでもCI/CDする夢を見る
PDF
ドメイン駆動設計 本格入門
PPTX
明日からはじめられる Docker + さくらvpsを使った開発環境構築
PPTX
自宅インフラの育て方 第2回
PPTX
ゲームエンジニアのためのデータベース設計
PPTX
Redisの特徴と活用方法について
PDF
テスト文字列に「うんこ」と入れるな
PDF
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
PDF
Twitterのsnowflakeについて
PDF
dm-writeboost-kernelvm
PDF
仮想化環境におけるパケットフォワーディング
PPTX
Office365導入時のDNS設定の注意点
PPTX
数理最適化とPython
PDF
多分モダンなWebアプリ開発

More Related Content

PDF
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
PPTX
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
PDF
分散トレーシング技術について(Open tracingやjaeger)
PDF
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
PDF
Elastic APM:ログとメトリックから全体像を描き出す
PDF
Fluentdのお勧めシステム構成パターン
PPTX
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
PDF
データベース設計徹底指南
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
分散トレーシング技術について(Open tracingやjaeger)
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Elastic APM:ログとメトリックから全体像を描き出す
Fluentdのお勧めシステム構成パターン
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
データベース設計徹底指南

What's hot

PDF
DDDオンライン勉強会#2 「集約・境界付けられたコンテキスト」
PDF
Cognitive Complexity でコードの複雑さを定量的に計測しよう
PDF
マルチテナント化で知っておきたいデータベースのこと
PDF
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
PDF
【さくらのクラウド】クラウドマスター認定試験終了者向け講習と、上級者への道(Terraform)
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
PPTX
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PPTX
backlogsでもCI/CDする夢を見る
PDF
ドメイン駆動設計 本格入門
PPTX
明日からはじめられる Docker + さくらvpsを使った開発環境構築
PPTX
自宅インフラの育て方 第2回
PPTX
ゲームエンジニアのためのデータベース設計
PPTX
Redisの特徴と活用方法について
PDF
テスト文字列に「うんこ」と入れるな
PDF
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
PDF
Twitterのsnowflakeについて
PDF
dm-writeboost-kernelvm
PDF
仮想化環境におけるパケットフォワーディング
PPTX
Office365導入時のDNS設定の注意点
DDDオンライン勉強会#2 「集約・境界付けられたコンテキスト」
Cognitive Complexity でコードの複雑さを定量的に計測しよう
マルチテナント化で知っておきたいデータベースのこと
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
【さくらのクラウド】クラウドマスター認定試験終了者向け講習と、上級者への道(Terraform)
SPAセキュリティ入門~PHP Conference Japan 2021
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
backlogsでもCI/CDする夢を見る
ドメイン駆動設計 本格入門
明日からはじめられる Docker + さくらvpsを使った開発環境構築
自宅インフラの育て方 第2回
ゲームエンジニアのためのデータベース設計
Redisの特徴と活用方法について
テスト文字列に「うんこ」と入れるな
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
Twitterのsnowflakeについて
dm-writeboost-kernelvm
仮想化環境におけるパケットフォワーディング
Office365導入時のDNS設定の注意点

Viewers also liked

PPTX
数理最適化とPython
PDF
多分モダンなWebアプリ開発
PDF
Wrapping a C++ library with Cython
PDF
Scalaと過ごした5ヶ月間
PDF
めんどくさくない Scala #kwkni_scala
PPT
No te comas la coma
PDF
Rubyとプログラミング言語の潮流
PDF
Webの未来 〜 PNaClとasm.jsでカワルミライ - いま、モバイルWebの先端で起こっていること
PDF
Djangoとweb2pyをapacheに組込む
PDF
Scala 初めての人が Heroku で Web アプリを公開するまで
KEY
自社開発をしていなかった会社が Python を選んだ理由
PDF
Pythonの開発環境を調べてみた
PDF
ScalaでAndroidアプリ開発
KEY
Pythonについて
PPT
Google App EngineでTwitterアプリを作ろう
PPTX
2012-07-07 Sapporo.r #1 LT発表資料 「仕事で使うR」
PPTX
クラウド温泉への誘い 2015-08-01 「第48回データマイニング+WEB@東京」版
PPTX
DL on Azure ML with Python where type DL = Deep Learning | Deep LOVE
PPTX
Hpcビジネスコンテンスト発表資料
PPTX
Scala初心者がPlay/ScalaでロックなWebアプリを作ったお話
数理最適化とPython
多分モダンなWebアプリ開発
Wrapping a C++ library with Cython
Scalaと過ごした5ヶ月間
めんどくさくない Scala #kwkni_scala
No te comas la coma
Rubyとプログラミング言語の潮流
Webの未来 〜 PNaClとasm.jsでカワルミライ - いま、モバイルWebの先端で起こっていること
Djangoとweb2pyをapacheに組込む
Scala 初めての人が Heroku で Web アプリを公開するまで
自社開発をしていなかった会社が Python を選んだ理由
Pythonの開発環境を調べてみた
ScalaでAndroidアプリ開発
Pythonについて
Google App EngineでTwitterアプリを作ろう
2012-07-07 Sapporo.r #1 LT発表資料 「仕事で使うR」
クラウド温泉への誘い 2015-08-01 「第48回データマイニング+WEB@東京」版
DL on Azure ML with Python where type DL = Deep Learning | Deep LOVE
Hpcビジネスコンテンスト発表資料
Scala初心者がPlay/ScalaでロックなWebアプリを作ったお話

Similar to Pythonおじさんのweb2py挑戦記

PDF
ScrapyとPhantomJSを用いたスクレイピングDSL
PPTX
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PDF
次世代言語 Python による PyPy を使った次世代の処理系開発
PDF
TreeFrog Frameworkの紹介
 
PDF
Djangoフレームワークの紹介
PDF
入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing
PDF
PythonによるWebスクレイピング入門
PDF
"Continuous Publication" with Python: Another Approach
PDF
Pythonによるwebアプリケーション入門 - Django編-
PDF
Yapc2012ltthon
PDF
Introduction Pycon2010
PDF
PyCon APAC 2013 Web Secure Coding
PPT
Python languageupdate (2004)
PDF
Webフレームワークパネル(Django) at PyConJP 2012
PDF
PyPy 紹介
PDF
Python札幌 2012/06/17
PDF
PDF
RでつくるWebアプリ~rApache編~
PDF
Python東海GAEやってみた
PDF
Flask勉強会その1
ScrapyとPhantomJSを用いたスクレイピングDSL
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
次世代言語 Python による PyPy を使った次世代の処理系開発
TreeFrog Frameworkの紹介
 
Djangoフレームワークの紹介
入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing
PythonによるWebスクレイピング入門
"Continuous Publication" with Python: Another Approach
Pythonによるwebアプリケーション入門 - Django編-
Yapc2012ltthon
Introduction Pycon2010
PyCon APAC 2013 Web Secure Coding
Python languageupdate (2004)
Webフレームワークパネル(Django) at PyConJP 2012
PyPy 紹介
Python札幌 2012/06/17
RでつくるWebアプリ~rApache編~
Python東海GAEやってみた
Flask勉強会その1

Pythonおじさんのweb2py挑戦記


[8]ページ先頭

©2009-2025 Movatter.jp