2012Pythonアドベントカレンダー1日目を担当します、取りまとめ役の id:hirokiky です。
この記事では私がDjangoのチュートリアルの次にやってきたことを書きます。
内容としては「Django」に限った話ではなくて、そもそもプログラミング自体そんなにしたことない人が対象だったりします。
Pythonアドベントカレンダーについて
ここでいうアドベントカレンダーとは、12月1日から12月25日まで、1日1個ずつTips的な記事をブログに掲載していくイベントです。
2012Pythonアドベントカレンダーは、Pythonに関する記事でアドベントカレンダーをやりましょうというイベントです。
- 2012: 2012 Pythonアドベントカレンダー(Webフレームワーク) - connpass
- 2011: 2011 Pythonアドベントカレンダー(Python3) - connpass
- 2010: Python Web フレームワーク アドベントカレンダー2010 : ATND
今年は「Webフレームワーク」というテーマですが、それほど厳密には考えていません。
Plone、SQLAlchemy、Jinja2、django-*やrepoze.*、WSGIなども可です。
目次
自己紹介
id:hirokiky です。TwitterID: @hirokikyです。
今は2012Pythonアドベントカレンダーの取りまとめ役をやっています。
Djangoと私
DjangoというPython製Webフレームワークが好きで、よく遊んでます。
というサービスを作ったりしました。
本格的にPython、Django、ひいてはプログラミングとおして何かを完成させたのは、このSinboonが初めてなので思い入れがあります。
この記事が厳密にDjangoについて話しているわけでなくて、それを通したプログラミングの話っぽくなってるのもそういう理由です。
Sinboonを作り始める前の自分に読ませたいことを書いてたりします。
あとDjangoと私については
- Django & Pyramid Con JP 2012 | djangoproject.jpを主催(の一人として活動)したり
- django-docs-ja/django-docs-ja · GitHubでDjangoのドキュメントを翻訳したり
- django-ja/djangoproject.jp · GitHubで日本におけるDjangoのポータルサイトを作ったり管理したり
しています。
まぁDjangoに投げたパッチは一度だけ「ファーストパッチ」として取り込まれたことがある。というのが唯一の自慢のワナビーです。
DjangoとはPython製Webフレームワークである
DjangoはPython製のWebフレームワークです。
日本語ドキュメントは以下にあります。
- Django1.0日本語ドキュメント: Django ドキュメント — Django v1.0 documentation
- Django1.4日本語ドキュメント(暫定版): http://docs.djangoproject.jp/ja/latest/
- Djangoドキュメント: Django documentation | Django documentation | Django
よくPythonのRuby on Railsと言われます。位置づけだけ見ればそう言えるかもしれません。
有名ドコロのDjango製のWebアプリケーションには
などがあります。
私が作ったものにはhttp://docs.djangoproject.jp/ja/latest/
があります。
Django、チュートリアルの次にやったこと(本題)
とりあえず何か作る
Djangoのチュートリアルの次にやったことは自分のWebアプリケーションを作るということ。
それ以上でも以下でもなくて「何か作るためにチュートリアルやったなら、それを作りましょう」ということ。
別に
とかでもいいです。「新規性」とかどうでもいい。
私自身が「Webサービスをつくるなら新規性あふれる素晴らしいサービスを作らないといけない」と思ってましたが、それは今思えば良くなかったな、と。
ホントに素晴らしい新規性あふれる「うぇっぶさーびす」の「あいでぃあ」が降臨しても、何も作ったことない状態じゃぁ心もとないし。
参考になるもの
よく
- どの本を読めば?
- どこまでチュートリアル読めば?
- どのブログ記事を読めば?
と聞きますが、とりあえず何か作るのが一番いいと思います(サッカーうまくなるのに本ばかり読むのは変)
しかしいきなり作るといっても何なのでオススメなのが
- 作りたいものと似たもの(OSS)を参考にする
ということ。あとは
- ソースコードを呼んでいるとき、自分で書いているときに分からなかったら調べる
- 「こんなかんじの便利なものあるんじゃね」と思ったら調べる
としていけばいい。
私が作りたかったもの
そのとき私が作りたかったのがSinboon
Sinboonというのは「ユーザの好みを学習して記事を推奨するフィードリーダー」です。
なので基本的にはフィードリーダーを作って、そっから改良しよう(楽だし)と思ったわけです。
まぁそこでDjangoでフィードリーダーっぽいことやってるアプリケーションを探して、こんな感じのが見つかりました。
- http://www.feedjack.org/
- IanLewis / django-lifestream — Bitbucket
- tghw / django-feedreader — Bitbucket
で、これのソースコードを読んで
- チュートリアルでカバーしてないこと
- ファイルの分割の仕方
などを学びました。実際にfeedjackなどを手元に入れて動かしてみるのが一番だと思う。
Sinboonは結局django-feedreaderを元に、それを改良して実装しました。
OSSを漁ろう
で、そういう参考になるOSSはどうやって見つけるのかって話になります。
- ググる
- PyPIを眺める
- DjangoPackagesを眺める
で、面白そうで使えそうなものを探せばいいと思います。
(Googleで「django feedreader」と調べればdjango-feedreaderがでる)
一度Django製アプリケーションを手元で動かしてみるのもいいと思う。
django-blog-zinniaというDjango製ブログエンジンがあるのでそれをインストールしてみるとか
それでソースコードを読んで、改良してみて仕組みを知っていけばいいと思います。
だから難しく捉える必要はないのかなーと。