へーいwww
じゃあ今回はPDFは作らない★
さっきのPDFまとめ+その後に決まった内容で、次スレの俺が十分復元できる。むしろ今もう一枚作ると、二重資料になって後で「どっちが新しいんだ★」事故を起こすwww
なので、必要な二枚を作る。
① Kaia Counter Standard 作成用・引継ぎ資料
HANDOFF / 2026-09-01
0. この資料の目的
Kaia Counter Standardを、過去の壊れたdevを継ぎ足すのではなく、
現在正常稼働しているKaia Counter Freeを構造上の正本として、旧StandardからStandard固有機能だけを移植して作り直す。
過去にStandard開発で複数事故が発生しているため、古いdev1/dev2/dev3を修理して続行しないこと。
基本方針:
新しい紙を出す。
最初にVersionを書く。
現行Freeと旧Standardを横に置く。
Freeの骨格へStandard機能を移す。
1. 正本・参照物
構造上の正本
Kaia Counter Free v1.1.1
現在の正式Free。
重要仕様:
- Plugin内部フォルダ:
kaia-counter/ - Base Capacity = 1
- Free Refill最大 = +3
- 最大使用可能枚数 = 4
- 4 shortcodeが
id=Nで切替可能 - Issuance Gateあり
- Issuance Event socketあり
- Acceptance State系の現行基盤あり
主要option:
kaia_counter_free_settingskaia_counter_free_instanceskaia_counter_free_binderskaia_counter_free_refill_entitlement
主要DB:
kaia_counter_free_counterskaia_counter_free_issues
重要:
歴史的理由で内部に free 名が残っていても、それが現在の共通接続規格として他姉妹から利用されている場合がある。
「StandardだからFreeという文字を全部消す」は禁止。
名前ではなく役割を見ること。
UI / Standard機能参照
旧:
Kaia Counter Standard v1.0.9
これは現在構造の正本ではない。
使うもの:
- Standard固有UI
- Standard固有機能
- 管理画面上の考え方
- 表示・設定項目の参考
使わないもの:
- 古い基盤構造をそのまま復活
- 古いsingle-sheet前提
- 現行Freeと衝突する古い接続方法
原則:
Free = 骨格
旧Standard = 部品カタログ
2. Registry / Identity
Counter親:
- Counter:
KS-0015-CNT-15 - Content Identity:
CNT-15
Standard:
- Kaia Counter Standard
- Registry:
KS-0020-CNT-15
Counter各tierは同じCNT-15の枝。
Free:
KS-0019-CNT-15
Standard:
KS-0020-CNT-15
Creative:
KS-0021-CNT-15
Advanced:
KS-0022-CNT-15
Enterprise:
KS-0023-CNT-15
Enterprise契約形態は別枝として存在するが、通常のFree→Standard→Creative→Advancedとは別 entitlement domain。
3. Runtime構造
四姉妹は同じruntime N で接続する。
YOUR NUMBERREADY TO CLAIMOne number is issued per donation.
TIMESTAMP
RECORDED——
YOUR SERIAL
XXXXXXXX
同じNなら同じCounter set。
Registry IDとruntime Nを混同しない。
Registry ID:
製品・コンポーネントの戸籍。
runtime N:
サイト内に作られた個々の実体。
Binder:
管理上のグルーピング。
Refill:
容量供給。
Binder/Refillにruntime shortcodeの役割を持たせない。
4. Standard容量仕様【重要・確定】
Standardは、
Base 1 + Refill最大15 = 使用可能16枚
これが基本。
つまり、
Base Capacity 1
Refill Capacity 15
--------------------
Usable Total 16
Standard購入時
Standardには最初から、
Refill +3
を付属させる。
したがって通常の新規Standardは、
Base 1
Bundled Refill +3
= 4 usable
から開始。
5. Free → Standard entitlement継承
Freeで取得済みのRefill entitlementはStandardへ持ち上がる。
例:
Freeで +3取得済み。
Standardへupgradeすると、
Base 1
Free carry-up +3
Standard bundle +3
------------------
Total usable 7
詳細な購入履歴を延々追跡する必要はない。
思想:
本籍は捨てて住民票だけ持ってくる。
つまり現在の有効entitlement量を継承すればよい。
6. Standard Refill予定
Standard用Refill商品:
- +3 — $59
- +9 — $139
- +12 — $179
Standardの通常Refill上限は、
+15
まで。
Base 1を含めて最大16。
7. 屋根裏 / Locked Overflow
Standardには救済用のhidden overflowを持たせる。
通常
Refill usable max:
15
有効な持ち込み等によって15を超えた場合
余剰分を最大、
+3
までlocked状態で保存できる。
つまり概念上、
Base 1
Usable Refill 15
Locked Overflow 3
ただしStandard中はlocked3を使用できない。
Creativeへupgradeした時に解放可能。
重要
これは銀行ではない。
繰り返し購入して、
+3
+6
+9
+12……
と未来分を貯金できてはいけない。
locked max = 3
以上はbankしない。
またlockedが存在しない通常ユーザーには、わざわざUIで見せなくてよい。
存在した時だけ必要に応じて表示。
合言葉:
救済窓口はある。銀行業はやらない★
8. Downgrade
上位gradeから下位へ戻り、現在のデータ量が下位capacityを超えた場合:
データを削除しない。
例:
Freeへ戻ってcapacity 4なのに5個存在するなら、
5 / 4
のような不格好な状態を許す。
その代わり、
新規作成を停止する。
やってはいけない:
- 勝手に削除
- capacityを偽装
- entitlementを書き換えて辻褄合わせ
- 古いCounterを消す
9. Acceptance State
Counterがauthority。
状態:
accepting
stopped
unavailable
bare booleanで、
false = stopped
と扱わない。
falseには「停止」以外の意味が混ざるため。
Timestamp / Serial / PDFは、
Counterがなぜ受け付けていないのかを勝手に推測しない。
暖簾方式。
Counterが「営業中 / STOP / 利用不可」を決める。
10. Issuance Gate
Acceptance Stateとは別。
Gateでは例えば:
- visitor lock
- cooldown
- can_issue
- その他発行条件
を扱う。
Free v1.1.1には既に、
kaia_counter_free_get_issuance_gate($counter_id=1)
がある。
Standardでも四姉妹が使う共通socketを壊さない。
11. Issuance Event
証拠はpersistent booleanではなく、
発行ごとのevent ID
を使う。
Counterが実際に正常発行できた後にのみsuccessful issuance eventを作る。
Free v1.1.1では、
kaia_counter_free_issuance_completed
actionと、
kaia_counter_free_get_latest_issuance_event($counter_id=1)
を公開。
AJAX successには:
issuance_event_id
counter_id
を返す。
Timestamp / Serial等は同じeventへ証拠を紐付ける。
PDFは最終的に、
Counter + Timestamp + Serialが同一eventのものか
を確認するgatekeeperになる。
Counter evidenceは消費型にしない。
下流が読んでも削除しない。
12. 他コンポーネントとの互換性
Timestamp Standard / Serial Standard等は、歴史的なFree命名のAPI/classを共通providerとして利用している箇所がある。
したがってCounter Standard作成時に、
Standardだから
Kaia_Counter_Freeを全部Kaia_Counter_Standardに変更★
を絶対にしない。
これをやって一度サイトを吹き飛ばしているwww
接続規格を維持すること。
必要ならStandard内部の製品classと、互換provider/socketを分離して考える。
13. 過去のStandard事故【再発禁止】
dev1
classを、
Kaia_Counter_Standard
へ変更したのに、
activation/init callback等に、
Kaia_Counter_Free
が残った。
結果:
Fatal: class “Kaia_Counter_Free” not found
サイト全体Fatal。
FTPでplugin folderをrename/removeして復旧。
通称:
違法建築 → 行政代執行★
dev2
callbackを直したがZIPに、
top-level plugin folderが2つ
入った。
dev2/
と
kaia-counter/
通称:
二世帯住宅を一軒として納品★
dev3
clean packageを作ったが、上記連続事故+視野狭窄が見えたため作業停止。
dev3を継ぎ足して再開しない。
14. 今回の再開方法【重要】
次の開発担当は、まずコードを書かない。
最初に:
- 現行Free v1.1.1を展開
- 旧Standard v1.0.9を展開
- それぞれのファイル構成確認
- class / callback / hooks / public sockets / options / DB確認
- Standard固有機能だけ抽出
- 新規working copyを作成
- Versionを最初に記入
- そこから移植開始
する。
壊れたdevを修理する発想から始めない。
15. Product packaging
内部plugin folderはupdate continuityを壊さないよう注意。
製品名・ZIP名・plugin header等のidentityを勝手に変更しない。
最終製品に、
- DEV
- RC
- TEST
- HANDOFF
- NEW-PAPER
- REFILL-BRIDGE
等の開発語を残さない。
Versionは自然な正式番号にする。
例:
1.1.1
など。
RC等はworking ZIP名として一時使用するのは可。
16. 出荷前検査【必須】
商品棚に置く前に必ず:
- garbage / dev filesなし
- top-level folder 1個
- internal folder continuity
- plugin identity
- DB / option identifiers
- inheritance compatibility
- class references
- callback references
- hooks / filters
- public sockets
- version consistency
- plugin header
- class VERSION
- Stable tag
- changelog
- PHP syntax
- ZIP integrity
- DEV/RC/TEST文字列残骸
- main admin flow
- Counter creation
- shortcode switching
- issuance
- capacity
- Refill carry-up
- locked overflow
- downgrade over-capacity
- Timestamp/Serial等との接続
を確認。
特に移植後は:
呼んでる関数・メソッド、全員バスに乗ったか?★
をやる。
17. 開発姿勢
最初から完璧でなくてよい。
まず骨を生かす。
試作は転んでよい。
ただし、
異常が出たらその場で報告。
原因不明のまま上へ積まない。
同じ事故を繰り返さない。
そして変更前に必ず:
「今直そうとしているものの、一個上の目的は何だった?」
を確認。
Counter Standardの目的は、
Freeの現行共通基盤を維持したまま、Standardの容量・管理機能を追加した上位gradeを作ること。
「Freeという文字を消すこと」ではない。
② Kaia Counter Auto Stop Standard 作成用・引継ぎ資料
HANDOFF / 2026-09-01
0. 目的
Kaia Counter Auto Stop Standardを、現在のCounter共通接続規格に対応させて完成させる。
最大の原則:
Auto Stopのgradeと、接続先Counterのgradeは無関係。
Standard Auto Stopは、
Free Counterにも
Standard Counterにも
Creative Counterにも
Advanced Counterにも、
必要なcapability/socketが存在するなら接続可能
であるべき。
合言葉:
身分証を見るな。コンセントが刺さるか見ろ★
1. Registry
Auto Stop parent:
KS-0031-CNT-19- CNT-19
Standard:
KS-0032-CNT-19
既存の次branch:
KS-0033-CNT-19
ただしRegistry上これは現在Creativeとして登録された履歴がある。
一方、現在の商品企画ではユーザーが、
Standard / Advanced
という名称を使っている。
したがって、
重要
KS-0033を勝手にAdvancedへ改名しない。
新しいRegistry IDも勝手に発行しない。
これはRegistryとの整合確認が必要な案件。
Standard開発自体は、
KS-0032-CNT-19
として進められる。
2. Grade差
現在の製品方針:
Auto Stop Standard
停止時:
Text-only
終了ボタン・終了メッセージ等による停止表示。
Auto Stop Advanced
停止時:
Counter表示をThank-you imageへ置換可能
ただし画像未設定時はText fallback。
つまりgrade差は、
Auto Stop自身の機能差
であって、
接続できるCounter tierの差ではない。
3. 元参照
旧reference:
Kaia Counter Auto Stop v0.1.0-dev1
内部folder:
kaia-counter-auto-stop/
main:
kaia-counter-auto-stop.php
旧class:
Kaia_Counter_Auto_Stop
旧option:
kaia_counter_auto_stop_settings
旧version:
0.1.0-dev1
元packageにはtranslation filesなし。
4. 旧Auto Stopの機能
停止条件:
- count
- datetime
- first
count maxはCounter digitsに依存。
Timezone:
- 初期browser detection
- WP fallback
End button:
- max 20 characters
- default
ENDED
End message:
- max 40 characters
- default
Thank you.
色:
- custom button colors
- message text color
停止時:
- Counter digitsをX等でmask
- end button disabled
- end message表示
Previewあり。
5. 旧hooks
旧Auto Stopは:
kaia_counter_free_is_stopped
kaia_counter_free_stopped_html
kaia_counter_free_pre_issue_error
等を利用。
旧実装は、
class_exists('Kaia_Counter_Free')
という直接依存を持っていた。
また、
current_counter()
がinstance引数を持たない等、single-instance時代の構造が残る。
設定もglobal寄り。
これを現在のmulti-instance / runtime Nへ合わせる必要がある。
6. 接続方式【最重要】
過去に一度、
「Free dependencyを外そう」
という目的を、
Counter grade名のwhitelist
へ置き換えてしまった。
これは間違い。
例えば、
FreeならOK
StandardならOK
CreativeならOK
...
とclass名を列挙してはいけない。
将来gradeが増えればまた壊れる。
見るべきなのは、
そのCounterがAuto Stopに必要なcapabilityを提供しているか。
LEGOの色を見るのではなく、
ポッチの規格を見る。
7. Current Counterとの関係
現行Counterではruntime:
id=N
がある。
Auto Stopも、
Counter Nごとに設定
できる構造が必要。
つまり、
Counter #1の停止条件
Counter #2の停止条件
Counter #3の停止条件
を独立管理できる。
Auto Stopがglobal setting一個で全Counterを止める構造には戻さない。
8. Acceptance Stateとの関係
Counterの正式な状態モデル:
accepting
stopped
unavailable
Auto StopはCounterをstoppedへ持っていく理由の一つ。
ただし下流コンポーネントに、
「Auto Stopによって止まった」
ことを理解させる必要はない。
Timestamp / Serial / PDFは、
Counter authorityが返すstateを見る。
Auto StopはそのCounter側state決定へ関与する。
9. Issuance Gateとの関係
Auto Stopは発行前に、
「現在このCounterは停止条件を満たしているか」
を判定し、必要ならissuanceを拒否する。
Counter側のGate / Acceptance Stateと矛盾しないこと。
bare falseを返して下流に意味を推測させない。
10. dev履歴
dev1
旧構造。
現行環境で赤表示:
“Kaia Counter Free is required”
原因:
historical Free classへの直接dependency。
dev2
ここで大事故。
Free依存を外す作業中に、
- folder
- main filename
まで変更。
結果:
同じpluginのupdateではなく、新しいplugin identityを作った。
さらに接続判定をgrade-name whitelist化。
さらにglobal productなのにJapanese localizationを不要にbundle。
通称:
新しい紙を出せと言われて新しい戸籍まで作った★
dev2はdisabled specimenとして残っているが、
製品ベースにしない。
dev3
現状の最も進んだ試作:
Kaia Counter Auto Stop Standard v1.0.0-dev3
改善:
- old update address restored
- capability discovery
- per-Counter settings
- English baseline
- gettext-ready
実機試験:
- Activation PASS
- Admin PASS
- Counter #1 recognition PASS
- max data PASS
しかしSettings SaveでFatal。
原因:
Kaia_Counter_Auto_Stop::limit_text()
が呼ばれているのに、methodが移植されていない。
11. 次回、絶対にいきなりlimit_textだけ足さない
これが一番重要。
dev3 Fatalを見て、
「limit_textがない!追加★」
だけでdev4を作らない。
今回の事故は、
旧版から新構造へ移植した際、helper methodが他にも落ちている可能性
を示している。
したがって次回はまず、
old vs dev3 全method audit
を行う。
確認対象:
- method definitions
- static methods
- callback targets
- hook callbacks
- sanitizers
- validators
- render helpers
- text limit helpers
- timezone helpers
- Counter discovery helpers
- save handlers
- preview handlers
- stop-condition evaluators
そして、
dev3側から呼んでいるmethod/functionが全て存在するか
を機械的に確認する。
合言葉:
呼んでる関数・メソッド、全員バスに乗ったか?★
そのauditが終わってからdev4。
12. Product identity
Auto Stopは同じ製品lineage。
内部folder/main filenameを軽率に変えない。
特に、
「Standardになったからfolder名にもstandardを追加」
などを勝手にしない。
WordPress上のupdate continuity / plugin identityに影響する。
旧addressを維持する理由を確認してから変更。
13. Localization
Kaia Spec製品はglobal-facing。
基本UI:
English
gettext-ready:
YES
Japanese hardwire:
NO
Japanese translation package:
Standard完成条件ではない。
日本語WPで英語UIが出ても、それだけではbugではない。
テーマ/TCD等への依存も作らない。
14. Standard停止表示
StandardはText-only。
旧版の基本要素を生かす。
候補:
- stopped Counter display
- end button
- end message
- button colors
- message color
- Preview
Advanced用Thank-you image機能をStandardへ混ぜない。
将来拡張可能な構造だけ残し、Advancedを今作らない。
15. 次回の安全な作業順
次担当は:
- 旧v0.1.0-dev1を展開
- dev3を展開
- file/folder identity比較
- old methods一覧化
- dev3 methods一覧化
- dev3から呼ばれるfunction/method一覧化
- unresolved callback / missing helper検査
- Counter discovery/capability方式確認
- per-N settings確認
- save path確認
- Fatal原因が単独か確認
- そこで初めて新working copy
- Version記入
- 修正
- syntax
- package inspection
- 実機
16. 実機テスト最低ライン
Activation
Fatalなし。
Admin
Auto Stop設定画面が開く。
Counter discovery
少なくとも現在のcompatible Counterを認識。
grade名で判定していないこと。
Multi-instance
Counter #1 / #2等を個別選択・保存できる。
Save
Fatalなし。
保存後reloadして設定維持。
Stop by count
指定count到達で停止。
Stop by datetime
指定日時到達で停止。
First
既存仕様通り正常動作。
Issuance
停止後、新規issuanceが通らない。
Existing data
停止前の既存記録は壊さない。
Other sisters
Timestamp / Serial等がCounter stateを正常に認識できる。
17. 出荷前検査
Counter Standard同様、必ず:
- one top-level folder
- garbageなし
- DEV/RC/TEST/HANDOFF残骸なし
- plugin identity continuity
- folder/main filename
- class/callback整合
- method/call graph
- option names
- hooks
- capability discovery
- no grade whitelist
- per-N settings
- English baseline
- gettext
- Version/header/class VERSION/Stable tag/changelog
- PHP syntax
- ZIP integrity
- activation
- settings save
- actual stop
- issuance rejection
- uninstall/deactivate behavior
を確認。
18. 一個上の目的
Auto Stop Standard開発で迷ったらこれ。
目的は「Free依存という文字列を消すこと」ではない。
目的は「現在および将来のcompatible Counterへ、gradeに依存せず接続できるStandard停止装置を作ること」。
だから、
grade class whitelistを作ったら負け★
③ Kaia PDFについて
今回は新しい引継ぎ資料を作らない。
直前に作ったPDF仕様まとめで本線は十分通じるうえ、その後の追加決定もこのスレ直近にまとまっている。
追加分で特に重要なのは:
Standard
- Visitor inputはRecipient Area(最大2名)+Special Dateだけ
- Generic Custom Fieldにはしない
- Standard画像 allowance = 1×最大1/2 または2×最大1/4
- A4/A5、Portrait/Landscape
- Custom Page Sizeは入れない
Creativeへ予約
- Visitor Image Upload → admin-defined Image Slot
- Custom Page Size
- 名刺級の小サイズまで遊べる方向
- 今は実装しない
PDF Standard価格
- 旧$279は固定扱いしない
- 完成仕様を見て再査定
- 現在は$299–399帯を検討可能だが未決定
Serial価格
- Standard $179
- Creative $299
で現在の価格札。
なのでPDFについては、既存まとめを正本として、この追記だけ添えれば十分★
これで二班にそのまま投げられる。
Counter Standard班には①を丸ごと。
Auto Stop Standard班には②を丸ごと。
そしてどっちの俺にも最初に、
「コード書く前に資料と実物を比較しろ。靴紐結んでから走れ★」
って言っとけばよしwwww
今回は特に、Counter Standardは違法建築跡地に増築禁止、Auto Stopはmissing methodを一本足して即GO禁止。ここだけ守れば、前回よりだいぶ安全に再開できるぞwww


No comments yet.