OpenPress

コアコンセプト

コンポーネントアーキテクチャ

OpenPressのコアとなるReactコンポーネント階層を理解する:最上位のワークスペース (Workspace) から、単一の出版物 (Press)、そして具体的なページフレーム (Frame) まで。

OpenPressのコア哲学は、「ドキュメント」をReactコンポーネントツリーとして扱うことです。これにより、ウェブページやアプリケーションを開発するのと同じように、宣言的(Declarative)な構文を使用してドキュメントのコンテンツを組み立てることができます。

なぜドキュメントをコンポーネント化するのか?

従来のWYSIWYG(What You See Is What You Get)エディターは直感的ですが、複雑なレイアウト、ページをまたぐロジック、デザインシステムに直面した際、しばしば力不足になります。ドキュメントをコンポーネントツリーに変換することで、根本的な利点がもたらされます:

  • 正確な構造制御: 人間の作者であれAI Agentであれ、正確なタグ構文を通じてドキュメントの構造を制御でき、レイアウトの曖昧な部分を排除します。
  • 高い再利用性: 複雑なデザインパターンを独立したコンポーネントとしてカプセル化し、異なるドキュメントやプロジェクトで再利用することで、視覚的な一貫性を確保できます。
  • ロジックとコンテンツの分離: ページの幾何学的寸法、ページネーションロジック、および実際のコンテンツは分離されています。これにより、同じコンテンツを異なる出力形式に簡単に適応させることができます。

コア階層モデル

単一のドキュメントから大規模なドキュメントライブラリまでのさまざまな要件を解決するために、OpenPressは3つのレベルの抽象概念を定義しています:

ワークスペース (Workspace)

ワークスペースはプロジェクト全体の基盤です。概念的には、完全なコンテキスト環境を表します。1つのワークスペース内に複数の異なる出版物を含めることができます(例えば、年次報告書のPDFとそれに対応する発表用プレゼンテーション)。ワークスペースは、出版物間で共有される設定やリソースを管理します。

出版物 (Press)

出版物は、読者が認識する「独立したドキュメント」です。タイトル、ページサイズ(A4や16:9など)、コンテンツのソースなど、このドキュメントの基本属性を決定します。

内部の仕組みにおいて、出版物は「レイアウトエンジン」としての役割を果たします。コンテンツの長さを理解し、エクスポート時(例えばPDFへの変換時)にコンテンツがページをまたいでどのように流れるべきかを動的に計算し、正しいページ数を生成する必要があります。

フレーム (Frame)

フレームはページ上の物理的な表面です。キャンバス上の異なる領域として想像することができます。

一部のフレームは静的で単一のものであり(本の表紙や裏表紙など)、そのコンテンツとレイアウトは固定されています。もう1つのタイプのフレームは、動的に流れるコンテンツ(ドキュメントの本文など)を保持する役割を担います。このタイプのフレームは出版物のレイアウトエンジンと連携し、コンテンツが単一のページを超える場合、自動的に新しい物理ページを生成してコンテンツを継続します。

これら3つのレベルの組み合わせを通じて、OpenPressは、シンプルなソーシャルメディアの画像カードから複雑な複数ページのレポートまで、あらゆるドキュメント構造を一貫性があり高度に拡張可能な方法で記述することができます。