Drupal

オーバービュー

URLは比較的美しい ?q=node/add のような感じ...
フォルダ構成的にはきれいにモジュール化されているようだ
でもソースはOOではない...
とはいっても、PHPはLLであるとしっかり割り切ってあえて命名規約による開発方法を選択したという感じ
画面構成的にはあまり構造化されている感じではない
確かに共通化はされているのだけれど、そうあるべきだからというよりは「そうなってしまった」という感じがするのはどこかのCMSと共通する感覚
機能のツリーがあちこちに飛ぶようにリンクされているので、空間的認知がしにくい

所感

module型のCMSだけど、やっぱりコンテンツは特別なのかなぁ
いや、「コンテンツの作成」という概念があるだけなのか?
そして「コンテンツ(=Node)」は「ストーリー」と「ページ」というデフォルトのコンテンツタイプを持っていると...
管理セクションは個人的にはあまりわかりやすくない(タスク別の場合)
デフォルトでは wysiwyg エディタじゃないんだね
標準のモジュールだけではちょっと魅力が少ないかな...

???

BlogもForumもノードなの?
不思議

Good

ブロックの表示を個人単位で表示/非表示設定できる
モジュールを追加するとNodeの属性設定部分の項目が増えるのがいいね
どのように連携しているのだろう...

モジュール

コンテンツはNodeモジュール
ボックス管理はBlockモジュール

開発

OOではない
module は modules/モジュール名/モジュール名.module ファイルに記述された関数の命名規約によって動作する
たとえば test モジュールなら
funtion test_help() でヘルプ画面の表示など
シンプルだから簡単で、誰にでもできそう。でも難しいことをやろうとすると大変なのでは...

画面開発

テンプレートエンジンなんて使わない

DB Access

db_query() , db_query_range() による
db_query($sql, $args...) として $sql 中に '%s' などと記述することで引数のエスケープ処理を行ってくれる。
SQL中に {}記法で db_prefix_tables() によるテーブル名変換が可能

interface

string hook_help($section)
ヘルプの表示
array hook_perm()
権限種別の取得?
array hook_menu($may_cache)
メニューの取得
void hook_disp()
画面の表示?

Drupal6 API http://api.drupal.org/api/group/hooks/6

結論

シンプルな開発方法論を使ってわかりやすいが、自由度は若干低そう。
OOでないので、プログラマにはちょっときついかもしれないが、パワーユーザなら良いかも