Lua Academy · レッスン

バージョン管理と依存関係管理

プラグインのバージョンを追跡し、読み込み時に互換性を確認します。

レッスン 4/413 ステップ

「バージョン管理と依存関係管理」はCoddyKit上の無料Lua Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLua Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Lua Academyコースには全4レッスンが含まれています。

バージョン管理が重要な理由

プラグインは進化します。プラグイン v2.0は、v1.0のAPIと互換性がない可能性があります。バージョンを追跡することで、互換性の問題を見逃すことを防ぎます。

セマンティックバージョニング

セマンティックバージョニングを使用します:MAJOR.MINOR.PATCH。破壊的変更ではMAJOR、新機能ではMINOR、バグ修正ではPATCHを増やします。

バージョン付きプラグインマニフェスト

各プラグインは、自身のバージョンと必要なアプリAPIのバージョンを宣言します。

return {
  name        = "auth",
  version     = "2.1.0",
  apiRequired = ">=1.0.0",
  deps        = { {name="logger", version=">=1.0.0"} },
  init        = function(app) -- ... end
}

バージョンの解析

バージョン文字列を比較可能な構成要素に解析します。

local function parseVersion(v)
  local major, minor, patch = v:match("(%d+)%.(%d+)%.(%d+)")
  return {tonumber(major), tonumber(minor), tonumber(patch)}
end
local function versionGe(a, b)
  a, b = parseVersion(a), parseVersion(b)
  for i = 1, 3 do
    if a[i] ~= b[i] then return a[i] > b[i] end
  end
  return true
end

互換性チェック

プラグインのロード時に、アプリのAPIバージョンがプラグインの要件を満たしていることを確認します。

local APP_VERSION = "1.5.0"
local function checkCompatibility(plugin)
  local req = plugin.apiRequired or ">=0.0.0"
  local minVer = req:match(">=(.+)")
  if minVer and not versionGe(APP_VERSION, minVer) then
    error(("Plugin %s requires app >= %s, got %s"):format(
      plugin.name, minVer, APP_VERSION))
  end
end

依存関係グラフの解決

依存関係グラフを構築し、トポロジカルソートを実行してロード順を決定します。

循環依存関係の検出

ロード途中のプラグインを追跡します。あるプラグインがすでにロード中のプラグインに依存している場合(循環が発生している場合)は、エラーを発生させます。

local loading = {}
local function loadWithCycleCheck(name, plugins)
  if loading[name] then error("Circular dependency: " .. name) end
  loading[name] = true
  -- load deps then load plugin
  loading[name] = nil
end

アップグレードパス

MAJORバージョンを上げる際の移行ガイドを文書化します。移行期間中は、古いプラグインAPI向けの互換性シムの提供を検討します。

バージョン付きプラグインレジストリ

中央レジストリに、インストール済みのすべてのプラグインバージョンを保存します。互換性のあるバージョンのうち、最も高いものを優先して競合を解決します。

ロックファイルパターン

npmのpackage-lock.jsonのように、本番デプロイで使用する正確なバージョンを記録し、再現可能なビルドを確保します。

実行時のバージョンネゴシエーション

プラグインが互換性のある複数のAPIバージョンを宣言できるようにします。ホストアプリが交渉を行い、双方がサポートする最も高いバージョンを選択します。

バージョン管理に関する質問

セマンティックバージョニングでMAJORバージョンを上げることは、何を示しますか?

まとめ:バージョン管理と依存関係

すべてのプラグインマニフェストにversionとapiRequiredを含めます。ロード時にバージョンを解析して比較します。循環依存関係を検出します。トポロジカルソートでロード順を決定します。再現可能な本番デプロイのためにロックファイルを保持します。

無料で開始

AI チューターと学ぶ Lua — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
40
レッスン
159

よくある質問

「バージョン管理と依存関係管理」レッスンは無料ですか?

はい。「バージョン管理と依存関係管理」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Lua Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Lua Academyコースには全4レッスンが含まれています。

「バージョン管理と依存関係管理」で何を学びますか?

プラグインのバージョンを追跡し、読み込み時に互換性を確認します。 ブラウザで直接実行するハンズオンコードでLua Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Lua Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのLua Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「バージョン管理と依存関係管理」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このLua Academyレッスンでコードを書いて実行できますか?

はい。すべてのLua Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. プラグインの検出と読み込み
  2. プラグインAPIとフックシステム
  3. プラグイン実行のサンドボックス化
  4. バージョン管理と依存関係管理
← Lua Academyに戻る