依存関係管理

SymfonyとComposerの関係はなぜ深いのか

SymfonyとComposerの関係が「深い」と言われる理由 Symfonyは最初からComposerありきで作られている Symfonyの機能追加はComposer installそのもの Composerを深く使うからこそ得られるメリット 依存関係が可視化され、トラブルシュートしやすい バージョン…

Laravelプロジェクトでcomposer.jsonを見るべきポイント

Laravelプロジェクトとcomposer.jsonの関係 requireでまず確認すべきこと PHPとLaravel本体のバージョン指定 laravel/framework以外の必須パッケージ バージョン制約の書き方から分かる運用レベル ^ と ~ と固定バージョン 無意味に広い指定に注意 require-d…

Composerキャッシュが原因でハマる典型パターン

Composerキャッシュとは何か よくあるハマり方その1:バージョンを上げたはずなのに変わらない よくあるハマり方その2:CIだけ落ちる よくあるハマり方その3:privateリポジトリの更新が反映されない 実際にやるとこうなる:キャッシュクリアで一発解決 キャ…

composer.lockのコンフリクトに正しく向き合う考え方

composer.lockのコンフリクトはなぜ起きるのか composer.jsonとcomposer.lockの役割を混同しない よくある誤解:消して作り直せばいい? composer.lockのコンフリクトに向き合う基本姿勢 実務でよくある解決パターン 片方が依存関係追加、もう片方が無関係な…

vendorディレクトリはGit管理すべきか

vendorディレクトリはGit管理すべきか、結論から vendorディレクトリとは何かを整理する Git管理しないとされる理由 リポジトリサイズが肥大化する 差分レビューが実質不可能 依存関係はlockファイルで管理できる それでもGit管理したくなる現実的な理由 ネ…

本番環境でcomposer updateしてはいけない理由

composer update が本番で危険な最大の理由 本番だけで起きる不具合が生まれる composer.lock を無視する危険性 「ちょっとした更新」のつもりが壊れる 実際に起きがちな失敗パターン 急ぎの修正で本番 update を実行 本番サーバーだけ PHP バージョンが違う…

composer installとupdateの違いを現場目線で整理

composer installとcomposer updateの違いを一言で言うと composerの基本構造を軽くおさらい composer.jsonとcomposer.lockの役割 composer installの挙動を具体的に見る composer installは何をしているのか 実際にやるとこうなる例 composer installが向い…

composer.lockを消してはいけない本当の理由

composer.lockとは何をしているファイルか composer.jsonだけでは再現性が保証されない composer.lockを消すと何が起きるのか 動いていたコードが突然動かなくなる 本番と開発環境で結果がズレる 「update」と「install」の違いを誤解しているケース compose…

Composerって結局何をしているツールなの?

Composerは何をしているツールなのか composer.jsonが示しているもの Composerが本当に解決している問題 composer.lockの意味 実際に使うとこうなる 失敗しがちなポイント Composerが向いているケース、向いていないケース リスクと注意点 まとめ:Composer…

Gradleの依存解決はMavenと何が違う?

GradleとMavenの依存解決をざっくり比較 Mavenの依存解決の特徴 依存関係は基本的に固定的 dependencyManagementによる中央管理 Gradleの依存解決の特徴 解決戦略が存在する 動的バージョンとキャッシュ 実際にやるとこうなる:バージョン衝突の例 失敗しが…

Mavenでバージョン地獄を避ける設計の考え方

Mavenで起きがちな「バージョン地獄」とは何か Mavenの依存解決ルールを最低限理解する 依存関係は「近いもの」が優先される transitive dependencyは自動で入ってくる バージョンを省略すると上位定義に従う バージョン地獄を招く設計パターン 各dependency…

MavenでBOMを使う理由を現場目線で整理する

MavenでBOM(Bill of Materials)とは何か なぜMavenでBOMを使う理由が生まれたのか 依存関係の数は必ず増える transitive dependencyの存在 BOMを使うと何が変わるのか pom.xmlが読みやすくなる バージョン衝突を事前に抑えやすい 複数モジュールでの統一が…

lockファイルがないJavaは不安じゃないのか

lockファイルがないJavaは本当に不安なのか なぜJavaにはlockファイル文化が根付かなかったのか 中央集権的なリポジトリの存在 バージョン解決ルールがツール側で安定している 実際にやるとどうなるのか:現場でのリアル 何も指定しないと「じわっと壊れる」…

Mavenキャッシュ(.m2)が原因で起きるトラブル集

Mavenキャッシュ(.m2)とは何をしているのか Mavenキャッシュが原因で起きがちな代表的トラブル ビルドが突然失敗するようになった 依存関係を更新したはずなのに反映されない 他の人の環境では通るのに自分だけ失敗する Mavenのエラーメッセージがやたら分か…

なぜJARを直接置く運用は嫌われるのか

JARを直接置く運用とは何か なぜJARを直接置く運用は嫌われがちなのか 依存関係の把握が難しくなる 再現性が低下する セキュリティリスクが見えにくい 実際にやるとこうなる、ありがちな失敗 「とりあえず動くから」で放置される ローカルでは動くが本番で動…

Maven Centralって何者?Java依存関係の中枢を理解する

Maven Centralとは何か なぜMaven Centralが生まれたのか 実際にやるとこうなる:依存関係解決の裏側 Maven Centralと他のリポジトリの違い 失敗しがちなポイント セキュリティと信頼の話 Maven Centralが向いているケース 向いていない、または注意が必要な…

Apache Mavenとは何者かを現場目線で理解する

Apache Mavenとは何者か Apache Mavenが生まれた背景 Mavenの中核にある考え方 規約より設定(Convention over Configuration) 宣言的な依存関係管理 pom.xmlは何をしているファイルなのか Mavenのビルドライフサイクルを理解する 実際の現場でMavenを使う…

Poetryはこの先も生き残るのか?現場視点で考える

Poetryはなぜここまで使われてきたのか 現場で実際に使うとどうなるか Poetryは今後も必要とされるのか Poetryが選ばれ続ける理由 向いているケースと注意が必要なケース 比較的向いているケース 注意が必要なケース Poetry運用でありがちな失敗 リスクと今…

poetry.lockがあると何が変わるのか

poetry.lockとは何を記録しているのか Pythonでの開発にPoetryを使っていると、必ず目にするのがpoetry.lockというファイルです。結論から言うと、poetry.lockがあることで「同じコードなのに環境によって動いたり動かなかったりする」問題を大幅に減らせま…

Pythonにもlockファイルは必要なのかを整理する

Pythonにおける依存関係管理の現実 lockファイルとは何を解決する仕組みなのか requirements.txtだけでは足りない理由 Pythonで使われる主なlockファイルの形 pip + requirements.lock(またはpip freeze) Pipenv(Pipfile.lock) Poetry(poetry.lock) 実…

pipenvはなぜ流行ったのかを今さら整理する

pipenvはなぜ流行ったのか。先に結論から pipenvが登場する前のPython環境構築のつらさ venvとpipを別々に扱う前提のつらさ requirements.txtだけでは再現性が弱い問題 pipenvが提供した「ちょうどよさ」 仮想環境と依存管理を一体化した設計 PipfileとPipfi…

pip / pipenv / poetry / uv ざっくり比較

Pythonパッケージ管理ツールを比較する前提 pipとは何か pipの特徴 pipの注意点 pipenvの立ち位置 pipenvの特徴 pipenvの注意点 poetryが支持される理由 poetryの特徴 poetryの注意点 uvという新しい選択肢 uvの特徴 uvの注意点 ざっくり比較して見えてくる…

pip freezeをそのままコミットしてはいけない理由

pip freezeをそのままコミットするのはおすすめしにくい pip freezeとは何をするコマンドか pip freezeの基本的な役割 本来想定されている使いどころ そのままコミットすると何が起きやすいのか 直接依存していないパッケージまで固定される 環境差分がその…

requirements.txt管理が破綻し始めるタイミング

requirements.txtとは何を解決してきた仕組みか requirements.txt管理が怪しくなり始める典型的な兆候 ライブラリの数が増え、用途が混ざり始めたとき バージョン指定が場当たり的になったとき 開発者ごとに環境差異が出始めたとき 実際に起きがちな失敗パタ…

pip + venv運用がつらくなる瞬間とは

pip + venvは悪者ではないが、万能でもない 開発環境が増え始めたとき requirements.txtが育ちすぎたとき チーム開発でのすれ違い CI/CDと組み合わせたときの違和感 実際にやるとこうなりがち、という話 向いているケースと、見直したいケース リスクと注意…

requirements.txtの正体をちゃんと理解する

requirements.txtとは何をするファイルなのか なぜrequirements.txtが必要なのか バージョン指定の書き方と意味 pip freezeとrequirements.txtの違い よくある失敗パターン requirements.txtが向いているケース リスクと注意点 結局どうすればいいか Python…