第3回 掲示板を作ろう(データモデルの定義とユニットテスト)

田原 悠西

2008/10/10

buildout.cfgの調整

 まだ掲示板は完成していませんが、データモデルとテストの実装までができましたので、今後の配布のことを考えて、buildout.cfgファイルを少し変更しておきましょう。

 このファイルは、zc.buildoutというソフトウェアの開発と配布を便利にしてくれるPythonで作られたシステムの設定ファイルです。

 ファイルの中身はいわゆるINIファイル形式で、テキストエディタで編集できます。grokprojectのデフォルトでは最新の開発版パッケージを使うようになっているのですが、配布のときにパッケージ間の依存関係に問題が出るときがあります。ここではバージョンを指定して、依存関係の問題が出ないように変更します。zc.buildoutの詳しい機能については、今後の連載で触れていきたいと思います。

 それでは、現在のbuildout.cfgの中を見てみましょう。以下はbuildout.cfgファイルの先頭部分です。ここで紹介しているbuildout.cfgはgrok-0.13用のものです。先日リリースされた最新版のgrok-0.14を使っている場合には少し違う部分があります。次回の記事で0.13から0.14に移行する方法を紹介します。

[buildout]
develop = .
parts = app data zopectl i18n test
find-links = http://download.zope.org/distribution/
eggs-directory = /home/yusei/buildout-eggs
newest = false
extends= http://grok.zope.org/releaseinfo/grok-0.13.cfg
versions = versions

[data]
recipe = zc.recipe.filestorage
buildout.cfg

 eggs-directoryは筆者の環境のものですが、皆さんのファイルには別の値が書かれていると思います。これが配布時にはトラブルのもとになるので、削除しておきましょう。eggs-directoryの設定がなければ、buildoutは個々のユーザーの設定を使うようになります。

 さらに変更する必要があるのは、find-linksです。初期値は最新のパッケージを使う設定になっているので、すでにバージョンが固定されているZope 3.4版のパッケージを使うように変更します。

 grok-0.13ではパッケージ間の依存関係の問題があり、上手くビルドできない場合があります。それを解決するために2つのパッケージのバージョンを固定します。grok-0.14を使っている場合には問題ありません。[versions]のセクションで「パッケージ名 = バージョン」と記述して、利用するパッケージのバージョンを指定できます。変更後のbuildout.cfg(先頭部分のみ)は次のようになります。

[buildout]
develop = .
parts = app data zopectl i18n test
find-links = http://download.zope.org/zope3.4
newest = false
extends= http://grok.zope.org/releaseinfo/grok-0.13.cfg
versions = versions

[versions]
lovely.recipe = 0.3.1b5
zc.recipe.testrunner = 1.0.0

[data]
recipe = zc.recipe.filestorage
buildout.cfg

 [buildout]の項目を変更し、[versions]を新たに追加しました。

 buildout.cfgを更新したら、最後にbuildoutコマンドを実行して、開発環境を更新しましょう。

$ ./bin/buildout
Develop: '/home/yusei/Zope3/MyForum/.'
Uninstalling test.
Uninstalling i18n.
Uninstalling zopectl.
Uninstalling app.
Installing app.
Generated script '/home/yusei/Zope3/MyForum/parts/app/runzope'.
Generated script '/home/yusei/Zope3/MyForum/parts/app/debugzope'.
Updating data.
Installing zopectl.
Generated script '/home/yusei/Zope3/MyForum/bin/zopectl'.
Installing i18n.
i18n: setting up i18n tools
Generated script 'bin/i18nextract'.
Generated script 'bin/i18nmergeall'.
Generated script 'bin/i18nstats'.
Installing test.

 以上で、開発環境は更新されました。buildout.cfgの変更は利用するパッケージの追加や初期設定ファイルの変更などに行い、その都度、buildoutコマンドを実行する必要があるので覚えておきましょう。

Subversionにコミットする

 それでは、ここまでに開発した分をレポジトリにコミットしておきましょう。コミットするべきファイルは、grokprojectコマンドで開発環境を作ったときに自動的に追加されているものと、src以下のディレクトリとPythonのソースコードです。以下がその一覧です。

buildout.cfg
setup.py
src
src/MyForum.egg-info
src/MyForum.egg-info/paster_plugins.txt
src/myforum
src/myforum/__init__.py
src/myforum/app.py
src/myforum/app_templates
src/myforum/app_templates/index.pt
src/myforum/app_tests
src/myforum/app_tests/__init__.py
src/myforum/app_tests/test_app.py
src/myforum/comment.py
src/myforum/configure.zcml
src/myforum/forumthread.py
src/myforum/ftesting.zcml
src/myforum/testing.py
src/myforum/tests.py

 以上、今回はアプリケーションの開発の初めの一歩、データモデルとスキーマの定義、簡単なユニットテストとソースコード管理について見てきました。

 今回作成したソースコードをダウンロードできるようにしましたので、圧縮ファイルを展開後に、buildoutコマンドを使ってセットアップしてください。

ファイルダウンロード:
リンク MyForum_atmarkit_zope3_03.tar.gz

 また、自分でどんどんZope 3とGrokを勉強したいという方は、ぜひGrokのWebサイトとZope.orgのレポジトリをご覧になることをお勧めします。

関連リンク:
リンク Grok
http://grok.zope.org/
リンク Zope.orgのGrokサンプルアプリケーション
http://svn.zope.org/grokapps/

 次回は、grok-0.14への移行方法の解説、そして掲示板の表示と入力の機能の実装を通して、もっとWebアプリケーションらしい部分、HTMLを生成するテンプレートと入力フォームを中心に、MVCのVであるビュー機能について、第2回よりも深く掘り下げていきたいと思います。お楽しみに。

3/3
 

Index
掲示板を作ろう(データモデルの定義とユニットテスト)
  Page1
grokprojectでアプリケーションの開発環境を作る
データモデルを考える
  Page2
インターフェイスでスキーマを定義する
ユニットテストを書く
Page3
buildout.cfgの調整
Subversionにコミットする
Zope 3とは何ぞや?

 Coding Edgeお勧め記事
いまさらアルゴリズムを学ぶ意味
コーディングに役立つ! アルゴリズムの基本(1)
 コンピュータに「3の倍数と3の付く数字」を判断させるにはどうしたらいいか。発想力を鍛えよう
Zope 3の魅力に迫る
Zope 3とは何ぞや?(1)
 Pythonで書かれたWebアプリケーションフレームワーク「Zope 3」。ほかのソフトウェアとは一体何が違っているのか?
貧弱環境プログラミングのススメ
柴田 淳のコーディング天国
 高性能なIT機器に囲まれた環境でコンピュータの動作原理に触れることは可能だろうか。貧弱なPC上にビットマップの直線をどうやって引く?
Haskellプログラミングの楽しみ方
のんびりHaskell(1)
 関数型言語に分類されるHaskell。C言語などの手続き型言語とまったく異なるプログラミングの世界に踏み出してみよう
ちょっと変わったLisp入門
Gaucheでメタプログラミング(1)
 Lispの一種であるScheme。いくつかある処理系の中でも気軽にスクリプトを書けるGaucheでLispの世界を体験してみよう
  Coding Edgeフォーラムフィード  2.01.00.91


Coding Edge フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

>

Coding Edge 記事ランキング

本日 月間