おやつ会という名前の勉強会

というわけで今日は勉強会。会場に着いた。「標準Django」著者の増田さんの演題もあるみたいで楽しいお話聞けるかも。追記していくかも。

MonotaROを支えるPython

中西さんの発表

MonotaROとは?
  • 物流通信販売, 事業者向け間接資材取り扱い(IHC サイトでホーム対応あり)
  • 90万点程度の品目
どこでつかってる?
  • 社外用ほぼ100%
  • 社内システム 40パーセント程度 (残りはMS-Acc package VB6 ASP
いつごろから?
  • 2000/10 会社設立 Python なし
  • 2001/11 MonotaRO.com本格運営開始

Javaで構築(外部業者)

  • 2003/03

商品検索機能リニューアル で Python CGIを使った。

  • 2004/04

Python + mod_python

  • それ以降

システムの構築は基本的にpython

なぜPython?
どのようにつかっているか?
	[database   MVC  M]
	    |
	<db access library   ORMじゃない>
	    |
	< servlet     MVC C>
	    ^                           |
	    |                  [PSPcontent   MSV V   JSP を参考]
  	 request                  |
            |                   |PSPparser|   blockを明示的に書く]
	    |                           |
            |                           v
	  mod_python handler
              [apache]	
  • db access library --> オブジェクトに条件設定してiteratorを返す
  • PSP <%for i in hoge%> <%endfor%>みたいな感じ
  • PEP8 コーディング規約 MonotaROは準拠せず
  • ? 一行ごとにコメントおおおおおお?   あり得ん。聞いてみると中西サン的にはDis対象だそうだ。(そりゃそうだ)
  • FLOSS興味ある方は MonotaROに。

BakerがDjangoに出会った

shin1x1さん

  • 絵を良く使う。ハッピョう旨い!
  • PHPの人。 CakePHPガイドブックの著者の方。
  • CakePHP

 コミュニティが活発。導入が簡単。フルスタック。Railsライク

  • 活動とか。
  • CakePHPのギャレットさんの話。

OSSは実際に人に会ってみて、「この人がつくったものなら」というつながりではやるのがあるかもしれない。rubyがはやっているのもここではないか?とかいう話。

PHP使いがDjango使ってみた
  • インストールは簡単
  • お試しweb serverが付いているのはやっぱり便利
  • コンソールが一発で立ち上がるのは便利
    • PHPにもあるけど、面倒くさい。php-a, phsh
  • エラー表示がスゴい詳細。
  • 管理画面! やっぱそうだよね! 良くできてる。
    • そもそも画面がキレイ。
    • 増田さんツッコミ/ APIが1.0から公開されていて色々かえれるらしい。ユーザーレベルに応じた変更も可能(スーパーユーザとか一般ユーザとか)
  • forall.countが便利
  • Django.templateがsmarty 似なのは元々Django開発チームがPHPから移行したせい?

CodeIgniterとか

今回の主催 yamashitaさん

(わーdisりまくり・・・^^;)

    • ほかの言語の良い床取りしようとして中途半端になる
    • DISられる www
  • 良さ
    • 敷居の低さ
    • お気楽にかける
    • WEBに特化
    • 処理は早い
    • 野良ライブラリがいっぱい
    • OSSには PHPが多い
    • 求人はPHPが多い
iSpot

New in Django 1.0

おお、増田さんだ!

HISTORY
  • 0.90 2005/11/15 から順調にアップ。1.0は2008年。少し産みの苦しみ
  • 1.1はロードマップ上では2009/3/16-20くらい?
  • 定期的リリース
New in 1.0
  • newforms framework
    • Form media :javascript, css
    • ModelForm :database から動的にフォーム
    • FormSet :多数のフォームを表示
    • formtools :wizard形式の提示とか
  • New Admin(APIが公開)
    • ModelAdmin
    • admin.site
  • Data handling
    • UnicodeAPI   以前はStringだったものがUnicode
    • FileStorage   (後で調べる)
    • Auto-escape テンプレートの文字列の XSS対策
  • Model
    • GenericRelation 任意のモデルを参照できる   
    • Model Inheritance  継承(後で調べる)
  • etc
    • GeoDjango     GISデータベースのAPI。ドキュメントが不備(後で調べる)
    • Jython support    
    • Sphinx-based docs  restructured-text -> html ドキュメントフォーマットツール?
forms

内部クラスで mediaをつくって css, js, とかを作る。
dojoを使う例。dojotypeの部分でやっぱりちょっとしたhackが必要(これは詳細知りたい)。
多段階層で張り込みができる。

ModelForm
  • svnでちらっと出ていたform_for_model, form_for_instanceは撤廃。例外フィールドができない。別に弄ったりしていた。
  • ->ModelForm : どのモデルから作るかを指定するとフォームを作ってくれる。しかもフィールド選べる。
  • save()ができる。すげえ。
FormSet

 リレーションのインライン編集とか、複数エントリフォームの編集で便利。

  • formset_factory(, extra= 2) 便利すぐる。
  • 辞書のリストで
  • deleteの時のチェックボックスもできる。can_delete すごい便利
  • ORDERを指定する事もできる。並び替え。
formtools
  • POSTデータの持ち回りを簡単に。
  • form_preview, form_wizard
    • wizardにはwizardが終わったときに何をするかを書くのみで良い(もちろんwizardページの内容に応じても良い)。

このため、後から「このフォーム追加して」が簡単にできる。

NewAdmin
  • adminが newforms化
  • ソース読んでみよう
  • 複数adminサイトの立ち上げを可能に
    • ユーザ層毎にサイトを分けられる
    • SiteのなかにAdminサイトをカスタマイズ。
  • hackなしで結構なカスタマイズが可能
  • ImageStorage使った話