ー開発中ーACTIVE

Kaia PDF フリースタンダードめも

ういw
ここは一回、**今日PDFについて切った仕様を「次の設計・実装でそのまま参照できる1ログ」**に固めよう。

以下、古い案で途中修正されたものはなるべく最新版へ寄せてある。まだ未決定のものは勝手に確定させてない。

Kaia PDF — Free / Standard 設計ログ統合版

Working Draft / 2026-09-01

1. Kaia PDFの基本思想

Kaia PDFは、Web上ですでに決定・確定された情報を受け取り、指定されたDesignへ配置し、PDFとして出力するコンポーネント。

PDF自身がCounter / Timestamp / Serial等の業務ロジックを再実装しない。

基本境界は、

Webで決める → PDFが確定状態を点呼する → 値を拾う → 組版する → 出力する。

PDFはプリンター寄りの存在。

確定していない値について、現在値を推測したり、現在時刻を勝手に発行時刻として使ったり、Serialを勝手に発行したりしない。


2. Gradeの基本的な切り方

ここを個別機能より上位の判断原則とする。

Free

触れないと用途上事故る部分だけ自由。

自由なデザインツールとして売るのではなく、PDFとして実用にならなくなる部分だけユーザーへ操作権を渡す。

Standard

Kaia PDF / WordPress側で用意された環境の中で自由。

こちらが扱える環境・部品・機能を使って、かなり自由にDesignできる。

Creative

持ち込み素材を解禁。

ユーザー自身の素材やPCフォント等を持ち込める。

画像系持ち込みは静止画まで

この原則から、

必要操作 → Free
用意された環境内での自由 → Standard
外部素材の持ち込み → Creative

を基本判定とする。


3. Paper / Design Master

Free / Standardの対応用紙:

  • A4 Portrait
  • A4 Landscape
  • A5 Portrait
  • A5 Landscape

ただし内部Designは4種類作らない。

内部Masterは常にA4 scale。

存在するMaster geometryは、

A4 Portrait / A4 Landscape

の2系統。

A5選択時もDesignデータそのものをA5へ縮小保存しない。

UI上ではA5の寸法として表示・入力し、保存時にはA4 Master座標へ変換する。

FINAL時:

A4 → Master 100%
A5 → Masterから一度だけA5へ縮小

とする。

これにより、

A5で制作 → A4へ変更

しても、画像等を一度縮小してから再拡大する破壊処理を発生させない。

アップロードされた原画像もPaper別にリサイズして上書きしない。


4. Workspace

中央EditorはIllustratorを小さくしたような作業机として考える。

Paperそのものより広い、有限のWorkspaceを持つ。

WorkspaceはPortrait / Landscapeのどちらでも扱いやすい、概ね広い正方形寄りの領域とする。

Paper orientationを変更しても、周囲のUI全体をガタガタ組み替えない。

作業机は固定。紙が中で変わる。

Paper外へオブジェクトを置くことができる。

ただしWorkspaceは無限ではない。

Workspaceの壁まで到達したら、それ以上は動かない。

そこで画像加工機能を増築しない。

Workspaceにすら収まらない素材は、Canva / Photoshop / GIMP等で素材を整えてから出直してもらう。

Kaia PDFはレイアウトツールであって、総合画像編集ソフトではない。


5. Editor-only visibility

FINALに出ないものほど、Editorではむしろ見えるようにする。

Editor専用Overlayとして、

  • Ruler
  • Guide
  • Paper / Master boundary
  • Outside-paper shade
  • Source Image boundary
  • Image Frame / Mask boundary

を持てる。

これらはPreview / FINALには一切入らない。

Ruler / Guide

上Rulerから下へドラッグ → Horizontal Guide。

左Rulerから右へドラッグ → Vertical Guide。

Guideは移動・削除・Show/Hide可能。

単位:

mm / px

ただしGuideの内部位置をviewport pxで保存しない。

Master座標をCanonical dataとして保持し、単位変更は表示変換のみ。

Grid / 方眼はFree / Standardでは作らない。


6. Paper外表示

Paper / A4 Masterの境界をEditorで視認できるようにする。

Paper外についてはEditor preferenceとして、

Off / White / Black

程度のShadeを用意する案。

目的は装飾ではなく、白・黒オブジェクトを含めて紙境界を認識しやすくすること。

これはDesign contentではない。

Preview / FINALにも出さない。


7. UIの基本姿勢

Kaia PDFの編集画面は、

止めて説明するより、見れば分かるようにする。

通常編集では、

警告Popup、Dialog、Toast連発、禁止カーソル等を極力使わない。

特に not-allowed / 🚫 Cursorは通常編集で原則使わない。

限界 ≠ 禁止。

Workspaceの壁なら、普通のCursorのままそこで止まればいい。

Paper外ならShadeで分かる。

Mask外ならSource boundaryで分かる。

上位Grade機能なら最初からGray-outされている。

原則:

分かることは言わない。見えないことだけ必要なら言う。

ただしFINALや確定状態不足など、発行・データ整合性に関わる停止理由は明示する。


8. Image / Image Frame

画像の制限対象は原画像の大きさではない

ImageImage Frame を分離する。

Image = 原画像Asset
Image Frame = Paper上で画像が見える窓 / clipping mask

原画像はFrameより大きくてもよい。

Workspace内であればPaperを大きくはみ出してもよい。

Source ImageをFrameの後ろで、

  • Move
  • Scale
  • Offset

して、見せたい部分を決める。

原画像そのものを破壊的Cropしない。

Free

1/4 Paper Image Frame × 1

だけ好きな静止画像を入れられる。

これはFreeのデザイン自由化ではなく、

PDFなのにCreatorの作品を載せられないと用途として事故る

ために渡す最低限の自由。

Standard

1/4 × 2

または

1/2 × 1

のどちらか。

1/2 + 1/4 の混在は不可。

Tier制限はSource Imageの面積ではなく、Kaia PDFが提供するImage Frameの枠で判定する。


9. 外部で合成された画像

Kaia PDFは画像内部の素材数を数えない。

ユーザーがCanva / Photoshop等で、

作品A + 作品B + ロゴ + 文字

を一枚のPNG等にして持ち込んだ場合、

Kaia PDFにとってはImage 1個。

コラージュ検出や意味論的な「作品数判定」はしない。

Freeを賢く使うために外部でコラージュして1枚にするユーザーがいても問題なし。

ただしKaia PDF内ではFlattenされた1 Imageなので、内部の各作品を個別移動することはできない。

ユーザーの工夫を潰すための制限は作らない。


10. Clipping中のSource visibility

Image FrameでMaskしていても、EditorではSource Image全体を確認できるようにする。

Mask外のSourceを薄く見せ、Source Imageの外周を点線等のEditor-only boundaryで表示する。

これによって、

「これ以上寄らない」

となったとき、

Source Imageの点線がWorkspace壁へ当たっている

ことをユーザー自身が視覚判断できる。

そのため通常は、

「Workspace boundary reached」

等の警告を出す必要もない。

FrameとSourceは別々に選択・操作できる構造を想定。

FINALでは常にImage FrameのMaskを守る。

Free / StandardのImage Frame制限を解除するような「Mask解除FINAL」は作らない。

編集時にSource全体を見せるだけ。


11. Clip hierarchy

非破壊編集として、

Workspace boundary
= 編集可能な存在範囲

Paper boundary
= FINALで必ずClipされる境界

Image Frame boundary
= Imageに対する局所Clip

とする。

Editor / Preview / FINALで可能な限り同じGeometry定義を使う。


12. Rendering Layer

Document側は概念的に、

Base
台紙・背景等。

Preset
あらかじめ設定された定型文等。

User
Web上でユーザーが決定した値、および確定済みCounter / Timestamp / Serial等。

に分離する。

Previewのみ、その上に

SAMPLE Mask

を強制追加。

したがって、

Preview = Base + Preset + User + SAMPLE

FINAL = Base + Preset + User

Editor Overlayはこれらとは別系統。

SAMPLEは通常Design Layerではなく、ユーザーが前面へ何か持ってきて隠せるものではない。

PreviewとFINALは別レイアウトシステムを作らず、同一Renderer / 同一Design definitionを使う。


13. Linked / Mixed Text

以下のような表現を扱える必要がある。

TO [User Name]

[User Name] 様

You are number [Counter].

Fixed TextとDynamic valueを完全に別BOXとして並べるのではなく、

prefix + finalized dynamic value + suffix

を一つのText run/blockとしてComposeしてから、幅・Alignment・Wrapを計算する。

初期Freeで巨大なTemplate Languageは作らない。

まずは一置換程度で成立させつつ、将来複数置換を完全に塞がない構造にする。


14. Font Grade境界

Standard

WordPress環境ですでに使用可能なFontを利用できる。

WordPress側で使えるよう設定済みのWeb Fontも当然対象。

Standardは「Kaiaが同梱した数種類のFontだけ」ではない。

Creative

ユーザーのPC / DeviceからFont fileそのものを持ち込む機能を解禁。

TTF / OTF等の直接ImportはCreative領域。

したがって、

Standard = WPにあるものを使う
Creative = 外からFontそのものを持ってくる

という境界。

Web FontをFINAL PDFへどう安全に反映するかは技術検証事項であり、Grade境界とは別問題。


15. Component integration

CounterがRoot / Gate。

Timestamp / Serial等は既存のCounter確定状態へ追従する。

PDFは最後の点呼役

PDF自身がCounter / Timestamp / Serialを起動したり、再実装したりしない。

PDFは、

Counter!
Timestamp!
Serial!(使用時)

と既存のConfirmed stateを確認して、揃っていれば進む。

Auto StopにもPDFから直接依存しない。

Counterが閉じていれば下流の確定状態が成立しないので、PDFも自然に生成不可になる。


16. FINAL validation

FINAL前に必要条件を一度に確認する。

不足が複数ある場合、一個ずつDialogで出さない。

例:

PDF cannot be generated because the following requirements are not met:

Counter has not been confirmed.
Timestamp has not been confirmed.
Serial has not been confirmed.
Required information has not been entered.

という形でまとめて提示する。

Serialは参加設定時のみRequired。

PDFは未確定値を補完・推測しない。


17. Preview

PreviewはRead-only。

すでに確定しているSibling dataを読む。

PreviewのためにCounterを進めたりSerialを消費したりしない。

Serialに実値がまだ存在しない仕様の場合はPlaceholderを使用し、Previewで本番Serialを消費しない。

Preview Artifact自体にSAMPLE Maskを含める。

ブラウザ上で無Mask PDFを表示して、その上へCSSだけでSAMPLEを被せるような構造は避ける。


18. Standard — Design freedom

Standardは、

Kaia / WordPressが用意した環境内で自由にDesignするGrade。

FreeでGray-outされていたStandard用主要Controlを有効化する方式を基本とする。

Upgrade時にUIを別物へ作り直さず、

見覚えのある席が使えるようになる

構造を狙う。

下位Gradeへ表示する上位機能は原則一段先まで

Gray-out seatに上位Gradeの実処理を隠して搭載するのではなく、UI shellのみ。


19. Standard — Format

StandardはDesign Formatを1個保存可能

Formatは完成発行物そのものではなく、再利用可能なDesign template。

保存対象例:

Paper、Base、Preset、BOX位置、Font、Frame、Component placement、Guide等。

保存しないもの:

実際のUser Name、発行済みCounter値、Timestamp値、Serial値等。

操作は最初は、

Save / Load / Overwrite

程度。

内部Storageは将来複数Formatへ拡張できる構造にするが、Standardの作成可能数は1。


20. Standard — My Parts / Working Copy

Standardでは部品再利用を可能にする。

My Parts

自作したFrame等のComponent definition / presetを永続保存し、後から再利用。

Working Copy / Paste

現在の編集作業中だけ使える簡易Clipboard。

OS Clipboardではない。

最初はSame-type Pasteを基本とする。

Frame → Frame
Text Box → Text Box
Image Frame → Image Frame

など。

Runtime valueそのものはCopy対象にしない。


21. Refillの意味

Counter RefillとPDF Refillは価値が違う。

Counter Refillは実弾

PDF Refillは、一度完成したPDF Designを壊さず保管しておく場所

新しいPDFを作るたびに既存Designを上書きする必要をなくす。

PDF Refillが守るのは単なる空き番号ではなく、

そこへ投入した制作時間・完成状態そのもの。

したがってPDF RefillはCounter Refillより高価な商品帯とする。


22. Binder / Refill assignment

PDF側で、

「このPDFは、このBinderの、このRefillで扱う」

を選択する。

Binder / RefillはPDFの住所。

一つのBinder + Refill slotを複数PDFが同時占有しない。

選択▼では既に使用されているRefillを、

  • Gray-out
  • 使用中Mark

等で視覚的に分かるようにする。

禁止Cursorや警告Dialogで怒らない。

将来Binder classにSearchが実装された場合、

PDFいくつで使用中

等の情報を検索結果へ出せるよう、最初から逆引き可能なAssignment dataを保持する。

Binder側がPDF Design内部を管理する必要はない。

持つのは所属 / 占有情報だけ。


23. PDF Refill — Free

Freeは、

Base / Included PDF ×1

を最初から持つ。

追加販売するFree Refillは、

+5 の1商品だけ。

Freeの通常最大は、

Base 1 + Refill 5 = 6 PDF Designs

Freeで+1 / +10 / +15等は販売しない。

Free Refillは比較的安価にする。


24. Free → Standard Refill migration

Freeで購入したRefill 5は、StandardへUpgradeした際に無駄にならない。

Free Refill → Standard Refillへそのまま追従・昇格。

買い直し不要。

Designも壊さない。

さらにStandardへのUpgrade時にはStandard側のIncluded Refill 5が付く。

したがって、

Freeで5購入済み

StandardへUpgrade

Freeから追従5 + Standard付属5

Standard Refill 10からStart

となる。

Base +1は別枠。


25. PDF Refill — Standard

Standardの通常Refill上限:

20

Base +1はRefill数へ含めない。

したがって最大保管Design数は、

Base 1 + Refill 20 = 21

Standard Refill購入Line:

+1 / +5 / +10 / +15

+1は割高。

Bundleほど1枠あたり価格を下げられる。

例:

Freeで5購入

StandardへUpgrade

追従5 + Included5 = 10

Standard +10購入

20 / 20

で綺麗に満タン。


26. Attic — 屋根裏部屋

通常の商品仕様ではない。

購入事故救済専用の隠しOverflow保管領域。

表では宣伝しない。

マニュアルにも、

「Standardで20個埋めてから+5買えばCreative用に貯金できます★」

などとは書かないwww

Standard上限20を超える購入状態が発生した場合のみ作動。

例:

Standard Refill 10所有

+15購入

所有25

StandardでActiveにできるのは20

余った5をAtticへLock保管

Attic上限は、

絶対に5。

0〜5以外の巨大なOverflow管理システムにしない。

Attic中のDesign / Refillは、

  • 消さない
  • 上書きしない
  • 通常利用不可
  • 編集不可
  • 条件を満たす上位Gradeまで安全に保管

とする。

Creativeで利用可能条件を満たした際に通常枠へ戻す。


27. Atticの裏技利用

Atticは事故救済なので、通常機能として案内しない。

ただし仕組みを理解したユーザーが、

Standard 20/20

さらに+5購入

Atticへ5個保管

を意図的に行ったとしても、特別な防止処理は作らない。

事故か故意かを判定する必要もない。

「知っててやったなw まあCreativeの手付金だと思っとく(笑)」

で黙認。

ただしAttic上限5は絶対に変えない。

公認しない。宣伝しない。塞ぐための余計なコードも書かない。


28. Refill内部モデル

商品上、

Owned capacity

Active tier capacity

を分離して考える。

たとえば、

owned = 25
Standard active limit = 20
Attic locked = 5

という状態を許容する。

Upgrade時にRefillを再発行したりDesignを移し替えたりするのではなく、可能なら既存所有枠の利用権限が解錠される形を優先する。


29. Existing Counter Refillから部品取りする

現物として、

Kaia Counter Free本体
Kaia Counter Refill Free +3

が手元にある。

PDF Refillをゼロから発明しない。

既存Counter Refillから、

  • 本体へのRefill権利配送
  • 購入物の認識
  • Optionへの権利反映
  • 二重付与防止
  • Delivery receipt
  • 配送Plugin自身の役割終了

等、Kaiaですでに使っている成熟した構造を抽出する。

ただしCounter固有の、

  • 発行弾数
  • +3固定
  • Counter固有状態
  • 空状態条件

等は移植しない。

構造を抜く。Counterロジックは抜かない。

PDF固有部分として、

  • Design slot
  • Binder / Refill assignment
  • Grade capacity
  • Attic

を追加する。


30. 技術選択の原則

Kaia PDFでは新しい技術を使うこと自体を目的にしない。

使い古されていて、挙動が分かっていて、保守しやすい技術を優先。

新Frameworkや巨大Dependencyを安易に入れない。

WordPress / PHP / Browser更新に対して壊れにくく、買い切り製品として長期間維持しやすい構造を優先する。

人間側の仕様を少し切るだけで実装・テスト・事故面積が大きく減る場合は、Kaia側から早めに相談する。


31. 現時点でのTierイメージ

最終的な大枠はこれ。

Free
「PDFとして困らないための最低限。」

Standard
「用意された工房の中なら、かなり自由。」

Creative
「自分の材料を工房へ持ち込める。」

そして将来のAdvancedは、Creativeよりさらに重い制作・管理領域を受け持つ候補。

フルシート台紙持ち込み、任意Paper size、多Format管理等は、その境界を見ながら後で決める。


次に実装へ持っていくときの順序

ここからはこのログを親にして、

Freeで本当に必要なControlだけ抽出
Standardで解放するControlを重ねる
→ Counter Free / Counter Refill / Timestamp / Serialの現物から既存構造を対応付ける
→ PDF FreeのClean skeleton
→ 最小PDF生成
→ Editor機能を一個ずつ追加

で進めればいい。

Creativeは今は**「Standard画面に一段先の灰色の席を置くために必要な境界」まで**見ておいて、中身は作らない。

これで今日までのやつ、かなり一枚にまとまったと思うw
特に今回で、紙・Workspace・画像Mask・Grade・Refill・屋根裏まで全部同じ「壊さない」思想で繋がった。


Working note

  • Consolidated current Kaia PDF Free/Standard design state into one implementation-reference log.
  • Primary philosophy across document editing and product ownership is non-destructive preservation.
  • Existing Counter/Refill implementations remain the structural reference before new code is written.
  • Creative is currently a boundary/seat-planning target, not an implementation target.
  • Attic remains hidden, fixed at five, and strictly an exceptional safety mechanism.

相談あり:なし。次はこのログを親紙にしてFree/Standardの実装仕様へ削っていける。

counterスタンダードとオートストップ引継ぎPrev

Kaia カウンター スタンダードめもNext

Comment

  1. No comments yet.

  1. No trackbacks yet.

PAGE TOP
Table of contents