内部実装を読む
プリザンターのソースコード(Implem/Implem.Pleasanter)を読み、仕組みを解説するセクションです。「なぜこう動くのか」を知っておくと、カスタマイズや障害調査のときに判断が速くなります。
ソースへのリンクは、解説時点のコミットに固定しています。最新版とは行番号や実装が変わっている場合があります。
- CodeDefiner — テーブル作成とコード自動生成の仕組み
- 多言語対応 — Display 定義、言語解決、クライアント側の多言語対応
- ライセンス判定 — ライセンス判定の実装
- 拡張計算式 — 計算式の実装ロジック
- 検索機能 — データフロー、FullText 列の生成、RDBMS 別の全文検索 SQL、一覧・横断検索、添付ファイルの全文検索
- 内部で動く SQL — SQL 組み立てのアーキテクチャ、一覧・編集画面の SQL
- リンク先の列(チルダ構文)と JOIN の生成 —
ClassA~200,Titleの読み方、~と~~、辿れる経路、JOIN 句の組み立て - 画面別の内部 SQL — カレンダー、ガントチャート、バーンダウン、時系列、カンバン、クロス集計、画像ライブラリ、分析チャート
- 内部 CRUD を SQL で実現 — Depts / Groups / Users / Results・Issues / Wikis
- タイムゾーン — アーキテクチャ、サーバースクリプト、API、混在環境での考え方
- SiteSettings — データ構造、管理画面タブとの対応、Column クラス
- Upsert 処理 — 更新か作成かの判定、ロックと競合
- Pleasanter Setup — セットアップツールと Rds.json の Azure プロバイダー指定
- アクセス権限の実装 — サイト・レコード・項目のアクセス制御
- 認証基盤(Cookie・API キー・Bearer) — Cookie 認証とチケット保存、Context のユーザー解決、認可フィルタ、API キーと Bearer ヘッダー
- 開発環境 — VS Code だけでビルド・デバッグする環境
- セッション管理の実装(Sessions テーブルと Redis) — セッション GUID、読み書き、RDB と Redis の差、古いセッションの削除、PRIMARY KEY 違反、複数台構成
- Session に保存される情報と共有範囲 — 認証・表示条件・編集中の設定・API の任意値・アプリ共有情報の内容と寿命
- データベースのテーブル構成(ベース・_deleted・_history) — テーブル一覧、3 つ組の列と主キー、論理削除・復元・履歴コピー、拡張項目