Memoirs of Faculty of Science
Kochi University (Information Science)
Vol.29 (2008), No.1

Plone/ArcheTypes によるシラバスシステムの構築— O/R Mapping による機能強化 —中橋一真 1

菊地時夫 2

濱田美晴 3

要旨
現在，インターネットの普及により，この情報空間を支える基本技術の一つとしてデータベースの重要性が認識されている．たとえば，インターネットにおいて提供されている情報ページにおいてはその外観デザインとコンテンツを切り離し，コンテンツをデータベースによって管理する，コンテンツ管理システム（CMS：Content Management System）導入などが例に挙げられる．
高知学園短期大学においては，平成１７年度に Plone/ArcheTypes を用いたウェブシラバスシステ
ムが構築された．Plone でのデータ管理は，基本的に ZODB といわれるオブジェクト DB を利用するが，オブジェクト DB には，外部からのデータ操作性が低いという問題点が存在する．そこ
でデータの操作性を向上させ，事務データの利用を効率的に行うために，ArcheTypes を用いて作成 さ れ た オ ブ ジ ェ ク ト を リ レ ー シ ョ ナ ル DB の テ ー ブ ル に 適 切 に 対 応 付 け (ORM:Object-Relational Mapping) を行った．また，初期シラバスを容易にかつ一括投稿するインタフ
ェースを作成した．以上の研究を通じて，オープンソースの CMS の利用によって，従来よりも安価に十分な機能を備えたデータベース応用ソフトウェアの構築が可能であることがわかった．

１ はじめにそこで，このネットワーク環境を利用し，2006年度，
木谷・菊地[2]および須藤・菊地[3]はオープンソースの近年，インターネットやウェブを利用した技術が教CMS ソフトウェア Plone/ArcheTypes を用いて WEB育の場でも注目されており，多くの大学においてシラバス作成システムを構築した．このシステムは以e-Learning に関する取り組みが報告されている．また，下のような特徴をもつ．

ほとんどの 4 年制大学ではその初歩段階ともいえるウ

ェブ上のシラバス公開システムが導入されている．
高知学園短期大学においては，2003 年度に学内ネッArcheTypes をもちいてシラバスの「型」定義することでモデルとビューを容易に作成する

CMF (Content Management Framework)のワ

トワークが再整備され(濱田・菊地[1])，すべての教室やークフロー設定によって，シラバス公開の流れを事務室，教員室に情報コンセントを設置したことによ定義する

り，学内のいたるところからウェブへのアクセスが可能となった．

1 高知大学理学研究科数理情報科学専攻
Department of Mathematics and Information Science,Kochi University
2 高知大学理学部
Faculty of Science, Kochi University
3 高知学園短期大学生活科学学科
Department of Human Life Science, Kochi Gakuen College

Plone の基底クラス Zope の検索機能を用いて，さまざまな検索方法を提供する
また Plone の機能を利用することで，授業資料の作成・配布[4]や，Podcast による音声配信[5]を容易に実現することも可能である．
このような WEB シラバスシステムであるが，一方で以下のような問題および要望が存在した．



Plone でのデータ保存として ZODB(Zope Object

これらの長所は，オブジェクト指向言語のデータ構DataBase)を用いているため，外部からのデータ造をオブジェクトとして直接的に永続化することから操作性が低く，また表形式の事務データを活用し得られるものである．一方，短所としては，以下の２づらい点が挙げられる．

高知学園短期大学では一定の単位を取得する事で，

アプリケーション依存度が高いさまざまな資格を取得する事ができるが，そのた

データの外部からの操作性が低いめの単位数確認などを Web 上でできるようにしたい

リレーショナルデータベース[13]とは，すべてのデー手間のかかる初期シラバスの一括登録をブラウザタを表という形式で格納するデータベースである．表から容易に行いたいとは同一形式のデータの集まりであり，項目（カラム，フィールド）と型を持っており，各データの最小単位今回の研究では，以上の点を解決することを目指した．

をレコードとよび表の中の行で表される．また，リレーショナルデータベースの操作には，一般的に SQL と2 Plone/ArcheTypes
Plone[6][7][8]とは，Zope[9]という Python[10][11]呼ばれる言語を用いる．先ほど挙げたオブジェクトデータベースの特徴に対するリレーショナルデータベースの主な特徴として，以下の点が挙げられる．

で書かれた web パブリッシングシステムに CMS 機能



アプリケーション依存度が低いを充実させ，高機能でユーザビリティーの高いものに

データの外部からの操作性が高い仕上げたものである．そして ArcheTypes[12]とは，Plone 上でオリジナルなオブジェクトを作成したい場

また，リレーショナルデータベースの場合，オブジ合にモデルとビューを容易に定義することができる

ェクトデータベースにおけるカプセル化によるデータ

Plone のプロダクトである．

隠蔽はできないが，一方でテーブルごとに適切なアクセス制限を行うことで十分にデータの機密性を高める

3 O/R Mapping

ことは可能である．

3.1 ODB と RDB

3.2 O/R Mapping

Plone を用いて web サイトを構築する場合，デフォ

3.1 のような状況を踏まえて近年，オブジェクトデールトではデータを ZODB(Zope Object Database)に保タベースのオブジェクトをリレーショナルデータベー存するが，一般的に用いられるデータベースには，大スの行に対応付ける O/R Mapping（Object-Relational

きく分けてオブジェクトデータベース（ODB）とリレMapping）[14][15]という考え方が用いられることがあーショナルデータベース（RDB）が存在する．

る．リレーショナルデータベースに格納されたデータは前述のように，SQL を用いて統一された方法でアクオブジェクトデータベース[13]とは，オブジェクトセスすることができ，また適切なアクセス権限を定め（データとメソッド）の形式で表現されるデータを格ることでデータの機密性を確保することができる．こ

納するデータベースのことである．長所として，以下のような O/R Mapping を行うためのモジュールやソのような点が挙げられる．

フトウェアを一般に O/R Mapper という．



現実世界のモデルのような複雑な構造のデータを効率よく扱うことが可能である



O/R Mapper を利用する場合の手順は，以下のようまた．アプリケーション言語でのデータベース操なものである．

作が可能である1.

データのカプセル化による隠蔽が可能であるクラスのフィールド（データの種類）とテーブル項目のマッピング（対応付け）を定義する

2.

O/R Mapper がクラスのフィールドとテーブル項

4.2 バッチ処理＋O/R Mapping

目のマッピング処理を行う
3.

アプリケーションからO/R MapperのAPIを用いてデータベースへアクセスする
たとえば，Plone のプログラミング言語である

Python には O/R Mapper として SQLObject[16]というモジュールが存在する．SQLObject を用いると，リレーショナルデータベースのテーブルの行をあらかじめ対応付けた Python オブジェクトに変換してくれるので，オブジェクトの操作によって透過的にリレーショナルデータベースの値を操作することができる．
このように Python 用の O/R Mapper は存在するが，今回の場合の問題点として，SQLObject を ZODB に組み込まなければならず，また処理の流れの１．にあるようにあらかじめ対応付けを定義しておかなければならない．さらに，データ項目として階層構造をもつオブジェクトを定義することはできないため，SQLObject を用いてZODB のO/R Mappingを行うこ

今回は，Zope の ZSQLMethod によるバッチ処理とArcheTypes が提供する O/R Mapping 機能を利用して[17][18]，ArcheTypes で作成されたシラバスクラスのインスタンスのデータを ZODB と RDB に保存する事にした．
ZSQLMethod とは，Zope 内で直接 SQL 文を記述して外部の RDB のデータ操作を行うものである．またArcheTypes ではクラス定義の際に，項目ごとに，プログラム２のように storage として外部のRDB を指定することができる．これによって ArcheTypes がオブジ
ェクトのアトリビュートと RDB におけるカラムの対応付けを行うため，ArcheTypes で作成されたオブジェ
クトについては O/R Mapping を行うことができる．
プログラム２．ArcheTypes での定義において，授業コードの storage を PostgreSQL に設定する
StringField('sycodenumber',storage=PostgreSQLStorage(),とは困難である．

widget=StringWidget(label='授業コード',size=6,),)

そこでArcheTypesが提供するO/R Mapping機能や，Zope のもつリレーショナルデータベースを操作するメ
ソッドを利用して O/R Mapping の仕方を工夫して問題の解決を試みる．

ただ，その場合データが ZODB に存在しないため，プロダクト追加による機能の追加の恩恵を得られない場合があることや，速度が若干落ちるという問題点が存在する．そこで今回は，ZODB にデータを残しつつ，４．データ保存方法の改善

RDB にもデータを保存するために，以下のような方法でデータ保存を行った．

4.1 ZODB によるデータ保存

1.

Plone を用いる場合，デフォルトでのデータ保存はArcheTypes によって作成させるテーブルをあらZODB を用いることになる．また，オブジェクトの検索の際には Zope の portal_catalog を用いて，プログラすべての項目の storage を RDB にした場合にかじめ RDB に用意する．

2.

クラス定義の際に授業コードという項目のみ

ム１のように値からオブジェクトを検索してアクセス

storage をリレーショナルデータベースに指定すすることが可能である．

る．これによって ArcheTypes によって，この項目のみ O/R Mapping が行われる．

プログラム１．ZODB にデータ保存した場合の，月曜

3.

一通りシラバスオブジェクトが作成された後，リ

一時間目の授業の検索

レーショナルデータベースのsyllabusテーブルに

result = portal_catalog.searchResults(Type="syllabus",登録された uid を用いてバッチ処理で RDB にデSearchableText='syweek_monday and syhour_one')

ータをコピーする．さらに，別テーブルとして uid，for result in results:

タイトルや URL などを保存するテーブルを作成

print result.getTitle,result.getURL()し，uid を syllabus テーブルの外部キーとしてそれらのデータをバッチ処理で挿入するなお，授業コードは授業の単位数を管理する目的で，ZODB 内のデータで完結するページを表示する場合に本シラバスシステムが構築されるに当たって作成されは，これまでどおり Portal_catalog を用いた検索によたものであり，このコードはシラバスオブジェクトをってデータを返すことができる．また ZODB 内にデー一意に識別するものではない．また授業コードは，基タが存在するため，Zope,Plone が提供する機能はその本的に学生の目には触れないものであり，時間割表示まま利用することができる．この場合，プログラム１およびシラバス表示の際には検索，表示には利用されと同様のプログラムでデータにアクセスすることがでない．現在のところ，5. 資格取得支援機能のために利きる．

用されるのみである．

一方，5. 資格取得支援機能のように，リレーショナ
ルデータベースに保存された資格ごとの単位情報と，ArcheTypes による syllabus オブジェクトの定義にシラバスの学科や開講年度のデータを用いてページをおいて，授業コードの storage をリレーショナルデータ作成する場合には，3.5 で作成したリレーショナルデーベースに指定するわけであるが，その際，あらかじめタベースの syllabus テーブルに保存されたデータを用以下のような「クラス名と同名のテーブル」をリレーい，また同時にタイトルや URL を表示する場合にはショナルデータベース内に作成しておくと，そのテー

syllabus_title テーブルを用いる．これによって，SQLブルにデータが保存される．のテーブルの結合機能などを利用することで，これら今回の場合授業コードのみ storage をリレーショナのテーブルを活用して機能の開発を行うことができる．

ルデータベースにしているので，uid,parentuid,sycodenumber の部分にのみ値が入る．なお，このPlone のようなオープンソース CMS の場合，プロダ

parentuid というのは指定行に該当するオブジェクトクトとして様々な機能を追加することが可能であるが，の親オブジェクトの uid であり，オブジェクトの親子その一方で，完全にオリジナルな機能を追加するとい関係を保持するためのものである．

う場合には，オブジェクトデータベースのようにデー

今回作成した syllabus テーブル（図 1）は，仮にタ操作が困難な場合，開発に手間取る場合が多い．そArcheTypes で作成した syllabus オブジェクトの全項

こで今回行ったような O/R Mapping を行うことによ目の storage をリレーショナルデータベースにしたとって，よりデータ操作が容易に行えるようになり，まきに作成されるテーブルである．

たプログラム言語を選ばずに開発が可能となる．

図 1．あらかじめ RDB に作成しておくテーブル１
syllabus(uid,parentuid,sycodenumber,sycredit,

本研究では，新たに資格取得支援機能を追加することにした．O/R Mapping を行ってリレーショナルデー

synendo,sydepartments,syschool,syterm,syweek,タベースを使用することでデータ操作性が向上し，さsyhour,syteacher,sytheme,symethod,sytextbook,らに，事務データを扱いやすくなった．

syreferencebook,sygrading,syattention,body)
さらに，バッチ処理でテーブル内の uid から Plone
内のシラバスオブジェクトを取得し，値を syllabus テーブルに挿入する．ここでさらに，もう一つ図 6 のよ５ 資格取得支援機能
5.1 資格取得支援機能の必要性

うなテーブルを用意し，こちらには syllabus テーブル

これまで高知学園短期大学では，資格ごとの単位数の uid を外部キーとしてタイトルを保存する．メタデが足りているかを，学生ごとの担当教官が学生に頼まータオブジェクトを保存するためのテーブルとして利用する．

れて冊子片手に手作業で確認していた．同大学では取得できる資格は多数に上り，これらの確認はとても面倒な作業であり，また特定の時期に集中すると大変な

図 2．あらかじめ RDB に作成しておくテーブル 2労力を必要とするものであった．

Syllabus_title(uid,title,url,path)
このような方法を用いる事で，時間割表示のようにそこで本シラバスシステムには，授業名や開講学

期・単位数など情報が存在するのでこれらの情報を基そのようなプログラムを組むことはとても困難である．に資格取得支援機能の追加が可能ではないかと考えた．

本システムではこの単位制約登録を行うのがプログ

また今回提案する方法はオブジェクトデータベースでラム経験のない人である，という前提に立っている．

もリレーショナルデータベースでも利用する事は可能

そのため，それぞれの機能もできる限りの簡素化を行であるが，データの構造や検索方法などの性質上，リわなければならない．今回提案する方法では，すべてレーショナルデータベースでデータ管理をする方が，のパターンの単位数確認ができるわけではないが，図開発が容易である．そこで今回シラバスデータに O/R４のように，かなりわかりやすく単位制約を登録するMapping を行ったうえで資格取得支援機能を構築することができ，また単位チェックも容易に行うことがでことにした．

きると考える．
図 4．単位制約登録画面の例（必修）5.2 資格取得支援機能の概略
資格取得支援機能を実現するにあたって，２つの段階が存在する．
資格ごとの資格取得要件を事前に登録する第一段階と，実際に授業一覧から取得済みおよび取得予定単位を選択して必要単位数に足りているかをチェックする第二段階である．今回は，第一段階を単位制約登録，第二段階を資格単位チェック，と呼ぶことにする．図 3
は資格取得支援機能の概略である．
図 3．資格取得支援機能の概略

5.4 資格取得用件

単位制約登録単位チェック

高知学園短期大学には，資格取得用件として大きく分けて三種類存在する．

事務

一つ目は，必修である．これは規定の授業を一つでも取らなければ資格の取得ができない，という制約である．二つ目は，選択である．これは規定の複数授業の中から規定の単位数以上取得する必要がある，とい学生または教官う制約である． 三つ目は，その他，である．これは，規定が少し複雑であり，本システムでの確認の対象外とした．

5.3 問題点
資格取得支援機能を実装するにあたって，単位制約登録を行うのがプログラマではない，という問題点が存在する．
資格に必要な単位が取得できているかをチェックすることは，その資格ごとにプログラミングを行なえば容易に実現出来る．また，その場合プログラムといっても，ある程度のプログラミングの経験があればそれほど困難なものではない．
しかしプログラムを組んだことのない人にとっては，

図 5．資格取得用件の例
ABCDE の授業は 2,2,2,3,3 単位である．
資格αの取得条件が，
1.

A,B,C の授業の中から 4 単位以上選択であり2.

D,E が必修，とする．
図 5 は，資格取得用件，必修と選択の具体的な例である．このような用件を単位制約として登録し，実際に用件を満たしているかを単位チェックで判定する．

5.5 アルゴリズム

６．シラバス一括登録機能

今回提案する方法は，リレーショナルデータベース
内に O/R Mapping されたシラバステーブルに加えて，6.1 必要性

図 6 のような制約情報テーブルと授業コードテーブルという二つのテーブルを用いて，図 7 のように必修とこれまでのシラバスシステムにおいて，各授業シラバス作成の流れは，図 9 のようなものであった．

選択の単位制約登録を行う，というものである．この
図 9 初期シラバス作成の流れ

方法を用いると，必修と選択に対して同一の方法で対応することができる．そして，図 8 のようなアルゴリa)初期シラバス作成b)シラバスに記入

ズムで単位チェックを行う．
c)審査

図 6．資格取得支援機能で用いるテーブルのスキーマ

シラバス

事務講師

制約情報テーブル（一部）
制約 ID

学科

入学年度

資格名

下限単位数
a) 事務職員が，各教員のフォルダにその年度用のフ

授業コードテーブル
制約 ID

授業コード名単位数

ォルダを作成し，さらにその中に，各教員が担当する授業の，授業名や単位数といった基本項目が図 7．資格取得支援機能 I（単位制約登録の手順）記入された授業シラバスのオブジェクトを作成す

1.

登録する制約の，制約 ID を作成する

る．なお，シラバスオブジェクトの初期状態は非2.

授業コードテーブルに，制約 ID，制約 ID の対象公開である．となる授業の授業コート，単位数を登録する
3.

b) 各教員が，自分のフォルダにログインし，作成さ制約情報テーブルにデータを挿入する．なお必須

れている授業シラバスオブジェクトの授業計画やの場合，下限単位数は対象授業の単位数の和を登教科書，採点方法といった項目に記入して，状態録するを保留に変更する．

図 8．資格取得支援機能 II（単位チェックのアルゴリズム）c)

事務職員が，b)において状態が保留になっているシラバスオブジェクトを確認し，公開してよければ，状態を公開に変更する．なお，変更すべきところ

def 資格ごとの単位数確認( 資格名 ):for i in 資格名に対応した制約 ID のリスト:
単位数の和 = 0
for jyugyou

in 授業コードテーブルにおける制約 ID が i の授業のリスト:

if jyugyou in 学生が取得した授業のリスト:
単位数の和 += jyugyou の単位数
if 単位数の和 < 制約 ID の下限単位数:
return ‘NO’
return ‘OK’がある場合には，再度状態を非公開とし，教員に変更を促す．
実際には，一人の常勤講師につきシラバスは５個ほど作成される．
上記の方法の場合，初期シラバスの作成である a)の作業が大変な手間となる．これは，web インタフェースから基本項目を記入されたオブジェクトを１つ作成するために，数回のクリックを必要とし，その作業を授業の個数分（約 300）行わなければならないためである(図 10-1)．

なお，この方法では判定できない制約が存在する．

そこで，a)の初期シラバス作成作業を容易に行うため

また，判定可能であるが，登録するのが困難な制約とのシラバス一括登録機能を構築する．図 10-2 に示すよいうものも存在する．そこで，その他という形で，直接文章を登録する，という手段を用意した．

うに初期シラバスを登録するユーザは，基本項目を記入された複数のシラバスを一括して作成することができ，これにより大幅に負担を軽減することができる．

図 10-1．これまでの

図 10-2．一括登録機能によるシラバス作成の流れシラバス作成の流れければならない，という問題が存在するため，図 12 のような web インタフェースにおいてテーブル形式で登録することにした．
図 12．シラバス一括登録の事前登録画面

6.2 システム構成
本 機 能 は ， python の フ レ ー ム ワ ー ク で あ る
TurboGears[19]を用いて開発を行った．

1. の部分では，図 11 に示すように，毎回 Plone 内に一時的にシラバスオブジェクトを一つ作成し，html

6.3 シラバス一括登録機能の概要

ソースを解析し ArcheTypes で作成されたシラバスオ

シラバス一括登録機能の流れは以下のようなものでブジェクトの変数を取得している．これによってある．

ArcheTypes で変数名に変更があったとしても，このプ

1.

バックグラウンドで，Plone からシラバスオブジログラムを変更する必要はない．なお変数を取得する

ェクトの基本項目の変数や値のリストを取得する．と，一時シラバスは削除される．

2.

事務職員が，担当教員や授業名単位数といった基3.

そして 2．の部分で図 12 のようなインタフェース

本項目をテーブル形式で登録する．

から基本項目のデータを登録した後，3．の登録ボタン登録ボタンを押して，Plone に一括登録する．

を押すと，プログラム 3 のように TurboGears のテンプレートに記述することで，ブラウザがオートリロー

図 11．シラバス一括登録の前半
シラバス前登録 シラバス前登録

登録者

シラバス前登録 一括登録

←シラバスの基本データドを行い，図 13 のように自動で Plone にシラバスを一括登録する．
プログラム 3．AutoReload の実装例- TurboGears<meta http-equiv="Refresh"

一括登録←ダミーシラバスを作成しデータを取得した後，削除

py:attrs="content='1;URL=http://kagome:49080/sadd?id=%s' % id"/>機能

図 13．シラバス一括登録の後半

Plone

1.作成中
2. –
3. –

1.作成済
2.作成中
3. –

シラバス1 作成

シラバス2 作成

今回，事務職員が少しでも登録しやすいように，普段使っているエクセルに近いテーブル形式でデータの登録者登録をできるようにした．なお，エクセルファイルにデータを登録したものを読み込んで登録する，という一括登録

方法も考えられるが，その場合 ArcheTypes において機能変数名に変更があった場合にプログラムを書き換えなフォルダ作成
Plone7．まとめと考察
本研究では，Plone/ArcheTypes を用いたシラバスシ[3] 須藤藍子・菊地時夫 Plone/ArcheTypes を用いた
シラバス作成システム, 高知大学理学部紀要（情報科学）, 27F, No.3, 9pp. (2006)

ステムの機能強化を行った．
まず，既存の Plone/ArcheTypes がもつ機能を組み合[4] 西山裕太・菊地時夫 ネットワークを利用した大わせた O/R Mapping を行った．これによって，これま学教育支援システム ‐授業支援システム‐, 高知大でのシステムのメリットをほとんど失うことなく外部学理学部卒業論文, 26pp. (2007)からのデータ操作性が向上した．外部ストレージとしてリレーショナルデータベースを用いているため，例[5] 吉田勝彦・菊地時夫・坂本世津夫 XML を用いた

えばエクセル形式で保存されているような事務データ

教育用コンテンツ配信の方法に関する研究 ‐高知大の活用も可能である．

学ラジオ公開講座のポッドキャストによる配信‐, 高このようなメリットを生かして，今回は高知学園短知大学理学部紀要（情報科学）, 28F, No.2, 10pp. (2007)

期大学の学生および教員から要望の多かった資格取得支援機能を実装した．これまで困難と考えられていた[6]

Plone Foundation, Plone CMS: Open Source

単位制約の登録をプログラミングの経験のない事務職

Content Management, http://plne.org/, (2000-2008)

員にも容易に行えるようになっている．この機能によって資格取得のための単位数確認のための作業が軽減[7] Andy McKay 開発のプロが教える標準 Plone 完されると考えられる．

全解説, アスキー, 567pp, (2005)

今後新たにオリジナル機能を追加する場合にも，今回行った方法で O/R Mapping を行うことで，本システ[8] 寺田学・伏見潤・永井孝 オープンソース徹底活

ムの拡張性がより高まると考えられる．

用 Plone による簡単 Web コンテンツ管理, 秀和システさらに，シラバスの一括登録機能を追加した．これ

ム, 219pp ,(2006)までのシステムでは，年度初めの膨大な量の初期シラバスの作成が大変な作業であったが，今回ウェブ上で[9]

安田幸宏 Zope ガイド, 毎日コミュニケーショ

容易に一括登録できるようになったため，事務の作業

ンズ, 399pp, (2002)が軽減されると考えられる．
[10]

謝辞

PythonProgramming

SoftwareLanguage,Foundation,

Pythonhttp://www.python.org/(1990-2007)

本研究を進めるにあたりご指導，ご支援いただきました地球環境情報学研究室の皆様に感謝し，心より深[11]く御礼申し上げます．

http://www.python.jp/Zope (2001-2007)

参考文献

PyJUG,

PythonJapan

User’sGroup[12] takanory.net, http://takanory.net/, (2005-2008)[1] 濱田美晴・菊地時夫 高知学園短期大学における[13] 河村一樹 データベース要論 関係データベー

LAN 監視システムの構築,高知大学理学研究科修士論

スとオブジェクト指向データベース 株式会社日本理文, 84pp. (2005)

工出版会,236pp,(2000)[2] 木谷由実・菊地時夫 Plone/ArcheTypes を用いたシラバス作成システム, 高知大学理学部紀要（情報科学）, 27F, No.2, 9pp. (2006)

[14] Weblio, O/R マッピング
http://www.weblio.jp/content/O/R%E3%83%9E%E3%83%83%E3%83%94%E3%83%B3%E3%82%B0(2005-2008)[15] ThinkIT 徹底比較!! O/R マッピングツール 第 1
回：O/R マッピングとは？
http://www.thinkit.co.jp/free/article/0606/13/1/(2006)[16] SQLObject
http://sqlobject.org/SQLObject.html (2006-2008)[17]

Archetypes using mysql and postgresql,

http://plone.org/documentation/how-to/archetypes-us
ing-mysql , (2007)[18] HOWTO: Using Archetypes SQLStorage andAdvanced Tips,
http://plone.sourceforge.net/archetypes/sqlstorage-ho
wto.html, (2003)
[19]

柴田淳

LL フ レ ー ム ワ ー ク BOOKS

TurboGears Python,技術評論社,191pp,(2007)