1. 設計意図を最優先する
個々の修正指示をそのまま局所実装するのではなく、まず「なぜその修正が必要なのか」を理解する。
画面上の現象ではなく、設計者が実現したい状態を基準に実装する。
2. 症状ではなく原因を直す
表示位置がずれた場合、すぐに margin-left: 3px や top: -2px などを追加しない。
最初に、
-
親レイアウト
-
Grid / Flex構造
-
padding / gap
-
box-sizing
-
固定幅・固定高
-
overflow
-
相対単位
-
共通CSS
を確認する。
個別補正は最後の手段とする。
3. 個別パッチを原則として増やさない
「スマホだけ」「この機能だけ」「この画面だけ」の例外コードを安易に追加しない。
同じ問題が複数箇所に存在する可能性がある場合は、共通部分を修正する。
例外が必要な場合は、なぜ共通化できないのか明確な理由を持たせる。
4. 固定値より相対設計を優先する
CSSでは用途に応じて、
-
rem
-
em
-
%
-
fr
-
minmax()
-
clamp()
-
min()
-
max()
を優先する。
px は罫線、細かな物理表現、最低寸法など、本当に固定する意味がある場所に限定する。
固定 height より min-height を優先する。
5. レイアウトは「配置」ではなく「流れ」で作る
絶対座標で要素を置く設計を避ける。
画面サイズや文字サイズが変わっても自然に再配置される、
-
CSS Grid
-
Flexbox
-
flow layout
を基本とする。
PC、1P、2P、スマホを別々の画面として作るのではなく、同一構造が自然に変形する設計を目指す。
6. 共通化できるものは一度だけ作る
SystemNote・PrismNote・和綴手帖で、
-
データ処理
-
CRUD
-
検索
-
モーダル
-
人物リンク
-
人生年表
-
入力部品
-
ナビゲーション
-
バックアップ
-
戻る処理
など、見た目以外が同じものは共通化する。
製品差は原則としてUIテーマと必要な表示差分に限定する。
7. 重複コードを作らない
同じ処理が2か所以上に現れたら、共通化できないか確認する。
コピーして少し変更する実装を続けない。
CSSもJavaScriptもHTMLも、できるだけ一つの定義から展開する。
8. 一つの変更で複数の問題を解決する
理想的な修正は、
「スマホ予定画面の余白を直した」
ではなく、
「ページ内余白の共通ルールを直した結果、予定・日記・住所録・資産管理が全部正しくなった」
という修正。
修正件数ではなく、構造改善の効果を重視する。
9. 変更前に影響範囲を考える
コードを変更する前に、
「このCSSを変更するとどこに影響するか」
「このデータ構造を変更するとどの機能に影響するか」
を確認する。
特に共通CSS・共通JS・schema変更は、関連機能を確認してから実装する。
10. 修正後は元の問題だけを確認しない
一つの問題を直した後、
-
PC
-
スマホ
-
1P
-
2P
-
長い文字
-
データなし
-
大量データ
など関連する状態も確認する。
「直した場所が正常」だけでは完了としない。
11. UIはユーザー操作を基準に判断する
内部構造が美しくても、操作が複雑なら良い設計ではない。
SystemNoteでは、
-
開く
-
書く
-
貼る
-
残す
-
しおりを挟む
-
ページをたどる
という自然な手帳操作を優先する。
技術用語をユーザーに見せない。
12. データ構造とUIを分離する
見た目を変更してもデータが壊れない。
データ形式を変更しても、必要以上にUIを書き換えない。
データ・ロジック・表示を明確に分離し、長期的な変更に耐えられる構造にする。
13. データは機能より長生きするものとして扱う
SystemNote本体のバージョンより、ユーザーのデータの寿命の方が長い。
そのため、
-
保存形式
-
バックアップ
-
復元
-
エクスポート
-
データ移行
を最重要機能として扱う。
「一生使える」という製品思想に反するデータ変更は行わない。
14. 新機能追加より既存構造との整合性を優先する
新しい機能を追加する場合、
「実装できるか」
だけではなく、
「既存の設計体系に自然に入るか」
を確認する。
自然に入らない場合は、機能側ではなく共通構造を見直す。
15. AIは指示を実行するだけでなく設計上の問題を指摘する
修正依頼が局所的であっても、
-
同様の問題が他にもある
-
この修正は将来壊れやすい
-
共通化した方が良い
-
現在の構造そのものに問題がある
と判断した場合は、その事実を明示する。
要求を無条件に局所実装しない。
16. ただし過剰設計もしない
将来使うかもしれないという理由だけで、巨大な抽象化や複雑なフレームワークを作らない。
現在必要な機能を、将来変更しやすい最小構造で実装する。
「シンプルであること」を最優先する。
17. 命名規則を統一する
同じ意味のものに複数の名称を使わない。
CSSクラス、JavaScript関数、データ項目、画面名称を統一する。
短さより意味の明確さを優先し、意味が固まってから必要に応じて簡潔化する。
18. 不要になったコードは削除する
新しい実装を追加して旧実装を残し続けない。
修正後に、
-
古いCSS
-
古い関数
-
使用されない変数
-
重複イベント
-
一時的なパッチ
-
コメントアウトされた旧コード
を整理する。
「動くから残す」を認めない。
19. 性能も設計品質の一部とする
不要な再描画、タイマー、イベントリスナー、DOM生成を避ける。
大量データでも基本操作が重くならない構造を維持する。
性能問題を後付けで解決するのではなく、設計段階で避ける。
20. V1以降も継続開発を前提にする
SystemNoteは完成して終わる製品ではない。
5年後、10年後にも修正できるコードを目指す。
したがって、
今日の1時間を節約するために、将来100時間の修正を生む実装をしない。
AI開発時の最優先判断順
修正要求を受けた場合は、次の順番で判断する。
設計意図
→ 原因
→ 共通化可能性
→ 影響範囲
→ 最小で構造的な修正
→ テスト
→ 不要コード削除
単純に、
要求 → コード追加
とはしない。
最終原則
局所的に正しいコードではなく、製品全体として正しいコードを書く。
今動くだけではなく、次の変更が容易になる実装を選ぶ。
複雑さを追加して問題を解決するのではなく、構造を整えて問題そのものを減らす。
|