lib/

adiaryシステム本体(Perlモジュール)が置かれています。

Satsuki/

adiaryのフレームワークである Satsuki-system本体 のディレクトリです。adiary.conf.cgiの「loadpm()」によってこのディレクトリ内のファイルがロードされます。

  • ベースシステムそのもの(Base.pm)
    • スケルトンコンパイラ(Base/Compiler.pm)
    • http, OAuth, mail といった各種モジュール
  • データベースAPI(DB_XXXXX.pm)*1
  • ユーザー管理API(Auth.pm)*2
  • pmファイル分割用AutoLoaderモジュール*3
  • AutoReloadモジュール*4
  • テキストパーサー
    • さつき記法
    • Markdown記法
    • HTML直入力モジュール
    • HTML整合性チェッカー(TagEscape.pm)

*1 : データベースはAPIにより抽象化されています。adiary本体コードを一切変更することなくテキストDBにもRDBMSにも対応できるのはこの仕組みのおかげです。

*2 : ユーザー管理APIも抽象化されており、他の実装を用意すれば何でもユーザー管理として使うこともできます。

*3 : XXX_2.pm, XXX_3.pm などとファイルを分けるためのモジュールです。CGIとして動作させる場合、モジュールのロード時間が実行時間の大半を占めるので、余計なモジュールを極力ロードしないということが大切になります。CGIとして実行したときの実行速度を担保しているのがこの仕組みです。

*4 : SpeedyCGI, FastCGI, mod_perl2などで動かしたとき、adiaryのアップデートに応じて.pmファイルを自動的にリロードする仕組みを担っています。

SatsukiApp/

adiary本体が置かれています。Satsuki-systemのフレームワークを使用するアプリケーションを配置するディレクトリで、adiary.conf.cgiの「loadapp()」によってこのディレクトリ内のファイルがロードされます。

SatsukiApp/adiary/

記事のエクスポートやインポートで使用するモジュールが置かれています。