Pythonによる
Webアプリケーション入門
∼Django編∼
2015/12/09 関根裕紀
みんなのPython勉強会#7
自己紹介
• 関根裕紀(せきね ひろのり)
• 株式会社SQUEEZE
• Twitter: @checkpoint
業務でのPython
• ホームシェア(民泊)などの物件の管理、ま
たそれに伴う各種オペレーションを一元的に
管理するクラウドサービス を提供(Mister
Suite)
• 実際の業務でDjango、Scrapyを使用
• エンジニア積極採用中!
Pythonとの関わり(1)
• PyCon JP 2014 スタッフ
• PyCon JP 2015 プログラムチーム副座長
• Pythonもくもく会(主催)
Pythonとの関わり(2)
• LLDiver
• PyCon JP 2014
• Phone Symposium Tokyo 2015
• PyCon mini Hiroshima
• みんなのPython勉強会#7(Today!!)
• Pythonエンジニア養成読本(共著)
アジェンダ
• PythonでのWebアプリケーション開発
• Djangoの概要
• デモ(管理サイト、アプリケーション)
本日伝えたい事
• Djangoでの開発イメージ
• モデル、ビュー、テンプレート
• Admin機能便利!
Webアプリケーションとは?
Webアプリケーションとは、Webサーバー上で動作
し、Webブラウザを用いて利用するアプリケーション
のことである。 WebアプリケーションはWebブラウザ
をクライアントとし、HTTPを通じてWebサーバーにア
クセスして利用される。
( www.weblio.jp/content/ウェブアプリケーション ) IT
用語辞典より
Pythonでの選択肢
• CGI
• WSGI
• Webアプリケーションフレームワーク
WSGIとは?
• Webサーバーとアプリケーションの共通のイ
ンターフェース仕様
• Java Servlet APIのようなもの
• PEP333, PEP 3333
• 標準ライブラリにwsgiref がある
Webアプリケーションは複雑
• DBアクセス
• テンプレート描画
• ルーティング
• フォーム処理
• ファイルアップロード
• セッション管理
• セキュリティ
• etc…
Webアプリケーションフレームワーク
• Webアプリの開発に必要な機能を提供
• 処理の流れをフレームワーク側で制御
• 開発者は必要な部分のみを開発
• 枠組みに乗る
• クラスを作る
• テンプレートを書く
クラス
テンプレート
PythonのWebフレームワーク
• Pyramid
• Tornado
• Flask
• Bottle
Pyramid
• 小さく、早く、堅実なフレームワーク
• すべての機能をフレームワーク側で用意しな
い
• サードパーティ製のライブラリと組み合わせ
て使用する
Tornado
• FriendFeed(現Facebook)が開発
• 非同期のネットワークI/Oライブラリ
• シンプルで高速なのが特徴
• 大規模な事例
Flask
• 軽量なアプリケーションフレームワーク
• Werkzeug (WSGI utility library)
• Jinja2 (Template Engine)
Bottle
• 軽量なアプリケーションフレームワーク
• 一つのPythonファイルで提供
• フレームワークの学習にも最適
• 詳細はPythonエンジニア養成読本を
Django
• フルスタックのフレームワーク
• 最新バージョンは1.9
• ドキュメント、テストが充実
• コミュニティが活発
• 大規模な事例
Djangoが提供する機能
• モデル
• ビュー
• テンプレート
• フォーム
• 管理サイト
• セキュリティ
• 国際化
• ユーザー認証
• その他
Djangoでの開発の流れ
• プロジェクトの作成
• アプリケーションの作成
• 初期設定 (settings.py)
• モデルの作成
• ビューの作成
• テンプレートの作成
• ルーティングの定義
djangoのインストール
プロジェクトの作成
アプリケーションの作成
HelloWorld
開発サーバーの起動
サンプル紹介
• ブログ管理アプリケーション
• ブログ
• 投稿
• 管理サイト
• Github(サンプルソース)
• https://github.com/checkpoint/django_sample
最終的なイメージ
管理サイトの流れ
• モデルの作成
• 管理画面の定義
モデルの定義
ユーザ
タイトル
本文
作成日時
更新日時
モデルの定義
ブログ
タイトル
本文
カテゴリ
下書き
公開日時
作成日時
更新日時
マイグレーション
管理サイトの設定
管理サイトデモ
アプリケーションの流れ
ブラウザ
ビュー
(コントローラー)
モデル
(DBアクセス)
テンプレート
(画面の表示)
アプリケーション作成の流れ
• モデルの作成
• フォームの作成
• ビューの作成
• テンプレートの作成
• ルーティングの定義
作成サイトデモ
便利なライブラリ
• django-debug-toolbar
• Django REST framework
おすすめサイト
• https://www.djangoproject.com/
• https://www.djangopackages.com/
• http://qiita.com/kaki_k/items/
511611cadac1d0c69c54
おすすめコミュニティ
• Python mini Hack-a-thon
• TokyoDjangoMeetup
• Pythonもくもく会
まとめ
• Djangoでの開発イメージ
• Admin機能便利!
• モデル、ビュー、テンプレート
参考資料
• https://www.djangoproject.com/
• https://www.python.org/dev/peps/
pep-0333/
• https://www.python.org/dev/peps/
pep-3333/
• http://gihyo.jp/dev/feature/01/wsgi
宣伝
• PyCon JP 2016
• スタッフ募集中
• 株式会社 SQUEEZE
• エンジニア募集中!
ご静聴ありがとうございました

Pythonによるwebアプリケーション入門 - Django編-