前回との接続とこの講義の役割

前回との接続とこの講義の役割

前回のO-08では、Issue・Pull Request・レビューという協働の作法を学びました。変更を安全に扱う道具は、これでほぼそろいました。今回は視点を、これから書くコードから、すでに動いているアプリの中身へと移します。F-08で見た依存の連鎖と、F-09で見たlockfileを、時間軸の運用として捉え直すのが、この講義の役割です。

このスライドのポイント

  • O-08: Issue・Pull Request・レビューで、変更を安全に扱う道具がそろった
  • 今回は視点を「いま書くコード」から「すでに動いているアプリの中身」へ移す
  • F-08の依存の連鎖・F-09のlockfileを、時間軸の運用として捉え直す

依存の更新と脆弱性

依存の更新と脆弱性

F-08で、私たちのアプリが直接使うライブラリと、そのライブラリがさらに使う間接依存の連鎖を見ました。F-09では、その一式のバージョンを固定するlockfileを扱いました。依存は一度そろえたら終わりではなく、時間とともに古びていきます。ここで新しい用語、脆弱性を定義します。脆弱性とは、依存の中に見つかったセキュリティ上の弱点のことで、放置すると既知の穴が開いたままになります。更新の種類は、B-10で見たバージョンの3桁で決まり、パッチは安全寄り、メジャーは互換性が壊れうる大きな変更です。GitHubは、既知の脆弱性を自動で警告してくれます。

このスライドのポイント

  • F-08: 直接使うライブラリと、その先の間接依存の連鎖
  • F-09: 一式のバージョンを固定するlockfile
  • 依存は一度そろえて終わりではなく、時間とともに古びる
  • 脆弱性=依存の中に見つかったセキュリティ上の弱点(放置=既知の穴が開いたまま)
  • 更新の種類はB-10のバージョン3桁で決まる(パッチ=安全寄り/メジャー=壊れうる)

なぜ更新の判断が必要か

なぜ更新の判断が必要か

依存の更新には、二つの失敗があります。一つは、警告を「よく分からないから」と放置し、既知の穴が開いたままになること。もう一つは、逆に「とにかく全部最新に」として、メジャー更新に巻き込まれ、動いていたアプリを壊すことです。これは、B-10で見た、バージョンを上げたら壊れたという話の再演です。放置しすぎても、更新しすぎても事故になる。だからこそ、更新には判断の型が必要になります。

このスライドのポイント

  • 失敗①: 警告を「よく分からないから」と放置→既知の穴が開いたまま
  • 失敗②: 「とにかく全部最新に」→メジャー更新に巻き込まれ、動くアプリを壊す
  • 失敗②はB-10「上げたら壊れた」の再演
  • だから更新には判断の型が要る

更新判断のフロー

更新判断のフロー

更新の判断は、一本のフローで整理できます。まず、警告があるかを確認します。その警告が脆弱性なら、これは最優先で対応します。パッチやマイナーの更新は、適用してから動作確認をします。メジャー更新だけは、何が壊れうるかを先に調べてから、計画的に進めます。この「脆弱性は最優先、メジャーは慎重に」という順番が、判断の背骨になります。

このスライドのポイント

  • まず「警告があるか」を確認する
  • 脆弱性の警告なら最優先で対応する
  • パッチ・マイナーは適用して動作確認する
  • メジャーは影響を調べてから計画的に進める
  • 背骨は「脆弱性は最優先、メジャーは慎重に」

処理の流れ——警告から記録まで

処理の流れ——警告から記録まで

具体例で追います。ある日、脆弱性の警告が一件届いたとします。対象を確かめると、F-08で言う間接依存でした。この場合、多くはlockfileを更新するだけで解決します。更新したら、O-03で身につけたコミット前の動作確認を行い、問題がなければコミットして記録します。この「警告、更新、確認、記録」という一連の作業を、O-05のブランチの上で行えば、もし失敗しても本線は無傷のままです。

このスライドのポイント

  • 例: 脆弱性の警告が1件届く
  • 対象を確かめるとF-08で言う間接依存だった
  • 多くはlockfile(F-09)を更新するだけで解決する
  • 更新→O-03のコミット前の動作確認→コミットで記録
  • この一連をO-05のブランチ上で行えば、失敗しても本線は無傷

技術サンプルカード

技術サンプルカード

更新の種類ごとに、対応方針を表にまとめました。脆弱性の修正は、危険度に関わらず最優先で適用し、動作確認します。パッチとマイナーは、壊れる危険が低いため、適用して動作確認すれば十分です。メジャーは、互換性が壊れうるので、影響を調べてから計画的に進めます。AIには、警告の対象が直接依存か間接依存か、必要な更新の大きさとその影響まで、あわせて聞くとよいでしょう。

このスライドのポイント

  • 種別: table
  • 目的: 更新の種類ごとに、壊れる危険と対応方針を対応づけて判断できるようにする

混同しやすい概念

混同しやすい概念

混同しやすいのは、「更新すれば安全」という思い込みと、「更新の種類で判断する」という実際の姿です。更新は、それ自体が常に安全なわけではありません。メジャー更新は、むしろ動くものを壊す危険をはらんでいます。脆弱性への対応は速く、メジャー更新は慎重に。この使い分けが、無条件の更新と、判断のある更新を分けます。

このスライドのポイント

  • 「更新すれば安全」(無条件更新)vs「更新の種類で判断する」
  • 更新は、それ自体が常に安全なわけではない
  • メジャー更新はむしろ動くものを壊す危険をはらむ
  • 脆弱性への対応は速く、メジャー更新は慎重に、の使い分け

バイブコーディングでの確認点

バイブコーディングでの確認点

運用の習慣として、月に一度ほど「依存の警告はあるか」をAIに確認させる定期点検を持ちましょう。これは、K-08で見た機械による定期実行の、人間版だと考えてください。小さく定期的に手入れをしておけば、穴が長く開いたままになることも、更新が一度に山積みになることも防げます。この運用の考え方は、この先のカテゴリSで扱う本格的な運用へと、そのままつながっていきます。

このスライドのポイント

  • 月に一度ほど「依存の警告はあるか」をAIに確認させる定期点検を持つ
  • これはK-08の機械による定期実行の、人間版
  • 小さく定期的に手入れすれば、穴が長く開くことも更新が山積みになることも防げる
  • この運用の考え方は、この先のカテゴリSの本格的な運用へつながる

まとめと次回

まとめと次回

一問一答です。最優先で対応すべき依存の警告は、何でしょうか。(間)答えは、脆弱性、つまり既知のセキュリティの穴です。三十秒でまとめます。依存は放置すると古びるため、脆弱性は最優先で、メジャー更新は慎重に、という順番で判断します。この一連をブランチの上で行えば、安全に手入れができます。次回はカテゴリOの最終回、変更が本番へ届くまでの全体フローを一本につなぎます。関連資料は「環境変数・APIキー管理入門」と「アプリ運用チェックリスト」です。

このスライドのポイント

  • 一問一答:「最優先で対応すべき依存の警告は?」→答: 脆弱性(既知のセキュリティの穴)
  • 30秒まとめ: 依存は放置すると古びる。脆弱性は最優先、メジャーは慎重に、で判断する
  • 次回: カテゴリO最終回、変更が本番へ届くまでの全体フローへ
  • 関連資料: 「環境変数・APIキー管理入門」「アプリ運用チェックリスト」