依存関係

SDDとクリーンアーキテクチャの依存関係整理

クリーンアーキテクチャは「構造の話」、SDDは「起点の話」です なぜ依存関係が問題になるのか SDDが要求する構造 依存関係の向きが重要な理由 具体例:Repositoryの配置 よくある誤解:レイヤーを分ければクリーンになる SDDとトランザクション境界 注意点…

モノレポ時代のComposer運用

モノレポでは「1つのアプリ」ではなく「複数パッケージ」を扱う なぜモノレポで問題が出るのか pathリポジトリを使う シンボリックリンクの利点 lockファイルの扱いが変わる バージョン管理の考え方 CI/CDとの関係 注意点:単一アプリと同じ感覚で運用しない…

Composerの限界と、それでも使われ続ける理由

結論:弱点はあるが、置き換える理由が成立しない 依存解決は万能ではない バージョン制約は人間の設計に依存する updateの怖さは消えない パフォーマンスの問題 なぜそれでも使われるのか エコシステムとの結びつき 注意点:問題を無視して良いわけではない…

「Composerを使っている」と「Composerを理解している」の差

コマンドを知っているだけでは安定しない 「使っている」状態 「理解している」状態 バージョン制約の読み方 間接依存を意識する composer.lockの扱い デプロイ時の行動 なぜ差が大きくなるのか 注意点:経験だけでは補えない まとめ:操作ではなく前提を理…

Composerは便利だが、万能ではない

期待しすぎると、逆にトラブルの原因になる Composerが得意なこと Composerが解決しないこと 典型的な誤解 ライブラリを増やすリスク セキュリティと更新 Composerに任せすぎた例 注意点:便利さと制御は反比例する まとめ:Composerは基盤であって管理者で…

依存管理を軽く見るチームはなぜ炎上するのか

問題はコードではなく「共有されていない前提」 最初に起きる小さな違和感 composer.lockを軽視した場合 なぜ問題が拡大するのか よくある誤対応 本番でのみ発生する理由 依存関係が管理されている状態 なぜ炎上につながるのか 注意点:ツール導入だけでは解…

Composerを理解するとPHPが嫌いじゃなくなる

PHPの印象は文法より「開発体験」で決まる よくある最初の体験 Composerが変えるのは「読み込み方法」 「ライブラリを使う」の意味が変わる なぜ印象が変わるのか 誤解されやすい点 注意点:入れただけでは変わらない まとめ:PHPの評価は使い方に依存する P…

PHPのパッケージ管理は「自由」と「責任」が重い

PHPの自由度はそのまま依存管理の難しさになる 他言語との違い Composerは決めてくれないツール 自由の裏側で起きる問題 composer.lockの意味 updateの扱いが難しい理由 運用で決めるべきこと 注意点:簡単に使えることと安全は別 まとめ:自由は設計を要求…

Composerがなかった時代のPHPは何が辛かったのか

不便だったのは「ライブラリが少ない」ことではなかった 手動インストールが前提だった バージョン管理ができない 読み込み順序の問題 クラス名の衝突 更新が最大のストレス 環境差異の問題 Composerが解決したこと なぜ評価が変わったのか 注意点:昔のコー…

パッケージ管理がある前提でPHPは進化した

現在のPHPは「Composerが存在する前提」で設計されている かつてのPHPは「1ファイルで完結」する言語だった フレームワークの発展が限界にぶつかった Composerが変えたのは「共有可能性」 PSR規約とComposerの関係 フレームワークの構造が変わった なぜこれ…

Composerはツールではなく「契約」

なぜComposerのトラブルは「人間側の問題」になるのか composer.jsonは設定ではなく宣言 composer.lockは契約の確定版 なぜチーム開発で重要になるのか 破られると何が起きるか なぜComposerは厳密なのか 契約としての運用方法 installとupdateを分ける 変更…

composer.jsonを雑に書いた結果どうなるか

小さな設定ファイルに見えて、実はプロジェクトの前提条件 よくある最初の書き方 ワイルドカード指定の危険 ^ と ~ の意味を知らない問題 PHPバージョンを書いていない autoloadを設定していない scriptsの誤用 なぜ修正が難しいのか 注意点:lockファイルを…

require-devを本番に入れて事故った話

原因は「余計なライブラリ」だった require と require-dev の違い なぜ本番に入ってしまうのか 実際に起きた症状 セキュリティ上のリスク よくある誤解:require-devは読み込まれない 防止策 デプロイ時のコマンドを固定する composer.lockを必ず使う CIで…

PHPバージョンとComposerのズレで詰んだ話

原因はコードではなく「PHPのバージョン」だった きっかけ:環境移行 実際に起きていたこと なぜinstallで壊れるのか composer.jsonの見落としがちな項目 よくある誤解:Composerが勝手に入れた 解決方法 1. PHPバージョンを確認 2. platform設定を使う 3. …

依存地獄に落ちたComposer体験談

最初は「1つのライブラリを入れるだけ」のはずだった 最初の異変:フレームワークが起動しない 起きていたこと:依存の“連鎖更新” なぜrequireだけで壊れるのか 典型的なエラーメッセージ 解決までにやったこと 依存地獄とは何か 有効だった対処法 注意点:…

「動いてたのに動かなくなった」はComposerのせい?

まず結論:Composerが壊したのではなく「状態が変わった」 「コードを触っていない」は本当に安全か 何が実際に変わっているのか composer.lockが一致していない 本番だけ壊れる理由 環境差異 よくある犯人:間接依存 Composerが疑われる理由 確認すべきポイ…

Composer updateでプロジェクトが壊れた話

何も変更していないのに動かなくなることは本当に起きる その日何が起きたのか 軽い気持ちで実行したコマンド 実際に起きていたこと 間接依存が最も危険 なぜinstallでは起きないのか よくある誤解:updateは安全なメンテナンスではない 実際の復旧手順 なぜ…

「PHPは古い」と言われがちな理由をComposer視点で考える

PHPが「古い」と見えるのは言語仕様より“運用の歴史”の影響が大きい Composer登場前のPHPは“再現性”が弱かった ライブラリ導入が手作業だった時代 他言語は依存関係が先に整備された Composerが変えたのは“開発手順” セットアップが1コマンドになる autoload…

Node.jsのpackage.jsonとComposer.jsonの思想差

package.jsonとcomposer.jsonは似ているが「目的」が違う まず確認:両方とも依存関係を管理するファイル 依存関係の宣言 最大の違い:JavaScriptは実行環境、PHPは配布コード Node.jsはアプリケーションを組み立てる文化 PHPは配布コードとして動く文化 aut…

なぜPHPはComposer以外が育たなかったのか

PHPには昔から「パッケージ管理ツールが無かった」わけではない PEARの時代:グローバルインストール文化 PEARとは何だったのか 何が問題だったのか なぜ他のツールも育たなかったのか PHPの実行モデルが特殊だった Composerが革命だった理由 vendorディレク…

pipとComposerはどこが似ていてどこが違う?

pipとComposerは「同じ役割のツール」だが、思想はかなり違う 共通点:依存関係を解決するパッケージ管理ツール できることはほぼ同じ ロックファイルの存在 最大の違い:環境中心のpip、プロジェクト中心のComposer pipは「Python環境」にインストールする …

LaravelでComposerを触る現実と安全手順

Laravelでライブラリ追加が“Composer作業”になる理由 追加した瞬間に起きること(見えづらいが重要) まず押さえる結論:安全な追加手順の型 0) 追加前に確認するチェックリスト 1) 追加は composer require で行う(手編集しない) 2) composer.lock は必ず…

Symfony Flexが変えたComposerの使い方

まず押さえる:昔のComposerは“純粋な依存管理”だった Symfony Flexとは何か 何が起きているのか(Recipeという仕組み) なぜこれが重要なのか Composerは「コード」だけでなく「構成」もインストールする ただし、メリットだけではない(重要) 1) “なぜ動…

Laravel初心者が陥るComposer事故5選

事故1:とりあえず composer update を打つ 事故2:composer.lockをコミットしない 事故3:phpのバージョン違い 事故4:requireとrequire-devの混同 事故5:vendorを直接編集する なぜ初心者ほど事故るのか 現場での安全行動 まとめ Laravelでつまずく原因の…

npmと比較して理解するComposerの思想

インストール方法の違いが思想の違い npm Composer 依存解決の考え方 なぜPHPはこの思想なのか lockファイルの意味の違い updateが危険に感じる理由 よくある誤解 実務での使い分けの感覚 注意点 まとめ Composerとnpmはどちらも「パッケージ管理ツール」で…

PHPのバージョンアップでComposerが地獄になる瞬間

なぜPHPのバージョンアップでComposerが壊れるのか Composerエラーが一気に噴き出す典型パターン PHPの最小要件に引っかかる composer.lockが足かせになる 実際に現場でよくある地獄の流れ PHPバージョンアップ時に見落としがちな注意点 PHP拡張の存在を忘れ…

PHP初心者が最初に混乱するComposer用語集

Composerとは何をする道具か composer.json composer.jsonに書いていること よくある勘違い require composer.jsonのrequire composer requireコマンド composer.lock composer.lockの役割 なぜ必要なのか 削除していいのか問題 vendorディレクトリ 直接編集…

バージョンアップを前提にしたJavaの依存設計

なぜJavaの依存関係は壊れやすいのか 「とりあえず最新」が失敗しやすい理由 バージョンアップを前提にした依存設計の考え方 依存の境界を明確にする バージョンは「決めてから使う」 依存の一覧を人が読める形で把握する 実際にやるとこうなる:現場での運…

MavenのdependencyManagementは何のため?

MavenのdependencyManagementとは何か なぜdependenciesだけでは不十分なのか dependencyManagementの基本的な書き方 親pomと組み合わせたときの本領 dependencyManagementを使わない方が楽なケース よくある誤解と失敗例 BOMとの関係 リスクと注意点 結局ど…

Mavenのcompile・test・runtimeスコープの違い

先に結論として知っておきたいこと Mavenのスコープとは何か 依存関係に「利用される場面」を与える仕組み compileスコープの役割と特徴 開発・テスト・実行すべてで必要な依存関係 compileを多用しすぎたときに起きがちなこと testスコープの役割と特徴 テ…