設計
SPAで状態管理ライブラリ(Redux等)が必要になった歴史的背景 MPA時代の状態はどこにあったか SPAで起きた変化 コンポーネント分割が新たな問題を生む 状態の分散と不整合 状態管理ライブラリの役割 なぜ最初は不要に見えるのか 注意点:状態管理は万能では…
エラー処理は実装ではなく「仕様」の中心に置く なぜエラー仕様が必要なのか よくある誤解 エラーの分類 1. 業務エラー(Business Error)** 2. システムエラー(System Error)** 仕様として書くべき内容 例:支払い処理 テストとしてのエラー仕様 API設計…
ワイヤーフレームは仕様ではないが、仕様を壊す力を持っている なぜワイヤーフレームは仕様に見えるのか ワイヤーフレームが表現できないもの 例:承認フロー ワイヤーフレームを仕様にすると何が起きるか SDDにおける正しい位置づけ 実務での扱い方 よくあ…
UI駆動型SDDは「最も分かりやすいが、最も壊れやすい仕様」になりやすい UI駆動型SDDとは何か なぜUIは仕様として扱いやすいのか UI駆動型SDDの最大の問題 ― 仕様の「因果」が逆転する 具体例:会員登録画面 UI駆動型SDDが壊れる技術的理由 UI駆動型SDDの典…
SDD(仕様駆動開発)は人間関係を改善する手法ではないが、結果として衝突は減る なぜPMとエンジニアは衝突するのか 従来開発における仕様の位置 よくある摩擦 SDDにおける仕様の定義 衝突が減るメカニズム 責任の所在が明確になる 見積もりが現実的になる 注…
SDD(仕様駆動開発)では「レビューの質」がプロジェクトを決める なぜチェックリストが必要になるのか チェックリスト設計の基本方針 入力仕様のチェック項目 出力仕様のチェック項目 エラー仕様のチェック項目 状態遷移のチェック項目 並行処理のチェック項…
jQueryは本当に不要になったのかを技術的に検証する なぜ不要と言われるのか DOM取得 イベント 通信 それでも消えない理由 ネイティブJSだけでは何が困るのか 二重読み込み問題の回避 実務での判断基準 よくある誤解 軽い=正しい 新しい=安全 注意点 まと…
モダンJSと比較したjQueryの責務の変化 かつてのjQueryの役割 モダンJSが変えたもの DOM操作 イベント Ajax アニメーション ではなぜjQueryは残っているのか WordPressで起きている状態 以前 現在 典型例:イベント委譲 責務が減った領域 責務が残った領域 …
`document.querySelector`でjQueryは置き換えられるのか なぜ昔はjQueryが必要だったのか `querySelector`が解決したこと 置き換えできない部分 イベント管理 Ajax アニメーション WordPressで重要になる点 典型的な失敗例 ではjQueryは不要なのか 向いてい…
結論:弱点はあるが、置き換える理由が成立しない 依存解決は万能ではない バージョン制約は人間の設計に依存する updateの怖さは消えない パフォーマンスの問題 なぜそれでも使われるのか エコシステムとの結びつき 注意点:問題を無視して良いわけではない…
コマンドを知っているだけでは安定しない 「使っている」状態 「理解している」状態 バージョン制約の読み方 間接依存を意識する composer.lockの扱い デプロイ時の行動 なぜ差が大きくなるのか 注意点:経験だけでは補えない まとめ:操作ではなく前提を理…
期待しすぎると、逆にトラブルの原因になる Composerが得意なこと Composerが解決しないこと 典型的な誤解 ライブラリを増やすリスク セキュリティと更新 Composerに任せすぎた例 注意点:便利さと制御は反比例する まとめ:Composerは基盤であって管理者で…
PHPの印象は文法より「開発体験」で決まる よくある最初の体験 Composerが変えるのは「読み込み方法」 「ライブラリを使う」の意味が変わる なぜ印象が変わるのか 誤解されやすい点 注意点:入れただけでは変わらない まとめ:PHPの評価は使い方に依存する P…
PHPの自由度はそのまま依存管理の難しさになる 他言語との違い Composerは決めてくれないツール 自由の裏側で起きる問題 composer.lockの意味 updateの扱いが難しい理由 運用で決めるべきこと 注意点:簡単に使えることと安全は別 まとめ:自由は設計を要求…
なぜComposerのトラブルは「人間側の問題」になるのか composer.jsonは設定ではなく宣言 composer.lockは契約の確定版 なぜチーム開発で重要になるのか 破られると何が起きるか なぜComposerは厳密なのか 契約としての運用方法 installとupdateを分ける 変更…
Laravelプロジェクトとcomposer.jsonの関係 requireでまず確認すべきこと PHPとLaravel本体のバージョン指定 laravel/framework以外の必須パッケージ バージョン制約の書き方から分かる運用レベル ^ と ~ と固定バージョン 無意味に広い指定に注意 require-d…
なぜJavaの依存関係は壊れやすいのか 「とりあえず最新」が失敗しやすい理由 バージョンアップを前提にした依存設計の考え方 依存の境界を明確にする バージョンは「決めてから使う」 依存の一覧を人が読める形で把握する 実際にやるとこうなる:現場での運…
Mavenマルチモジュール構成とは何か 単一プロジェクトとの違い なぜマルチモジュールに分けるのか 依存関係を明示できる ビルドとテストの影響範囲を限定できる よくあるマルチモジュール構成パターン レイヤー別分割 機能別分割 親POMの役割と設計の考え方 …
transitive dependencyとは何か なぜtransitive dependencyが怖いのか 見えていない依存がシステムを支配する セキュリティリスクが間接的に入り込む アップデートが突然壊す 実際の現場で起きがちな失敗 「直接依存しか見ていない」設計 問題が起きてから調…
API仕様ファーストとは 最初に定義すべきAPIの仕様 API仕様ファーストで開発をするデメリット API仕様ファーストとは API仕様ファースト(API Spec First)は、ソフトウェア開発のアプローチの一つで、API(Application Programming Interface)を設計する際…