とろぴぃ

Tropyを作ってみて感じたこと。

だらだら書いたので、後はスルー力で。

Tropyid:hyukiさんが作られたWeb0.5だったのですが、
実際に作ってみるとかなり勉強になります。

Djangoで作ったので一つのフレームワークでした試せませんでしたが、
かなりフレームワークの基礎を学ぶことが出来た気がします。

[結] 2005年11月 - 結城浩の日記
http://www.hyuki.com/d/200511.html#i20051107092750

Tropyの設計判断というのがあります。
かなり面白いです。

実際作るときはほとんど参考にしていない
という最低な事実があるのですが、
(数字の8桁と衝突したら片方削除くらい)
読めば読むほど面白いです。

基本は「不要だから」

プログラム的な説明を少々。

  1. 出来る限りviews.pyを書かない。
  2. Generic Viewでなんとかする。
  3. urls.pyは文字列の代りに呼び出し可能オブジェクトを渡す。
  4. 管理画面を使わない

実際作ってみるとcreate_objectで引っかかりました。
理由はcreate_objectはprimary_keyが衝突した際の事を考えてない。
(普通衝突することが無いので)
個人的には衝突したら古い方に上書きという形をとりたかったので、
GenericViewをあきらめ、views.pyに切なく書きました。

できあがったソースを見るとかなりカッコワルイ。

ということでymasudaさんのDjango相談室に駆け込んでみたところ、
衝突したらupdateするようにしてみたら?と言われたので
manipulatorを使って実装してみました。

意外にステキになりましたが、
やはりviews.pyに書いてあることが不満です。

もっとスマートな書き方無いものでしょうか:-p

以上がプログラム的なお話し。

元に戻してTropyを作るとどの辺が勉強になるかといいますと。

  1. データを持ってきてランダムに表示する。
  2. createとupdateを作る
  3. 衝突も考える必要がある
  4. templateでhtmlが書かれたとき無効にする
  5. \nをbrに変換する

などなど、よく使う細かいプログラムを色々つぎ込む必要があります。
残念ながらPerlを読むことが出来ないのでid:hyukiさんのソースが読めませんorz

次はTropy設計判断を正しく実装したものを作ってみようかな。

最後にTropy世に生み出したid:hyukiさんに感謝