# ランナーイメージに何が入っているか

> すべての Latchkey ランナーにプリインストールされたツールチェーン: 言語、Docker、ブラウザ、データベース、パッケージマネージャー、そして GitHub 互換の toolcache。

Source: https://latchkey.dev/ja/documentation/runner-image-software

## Summary

- Node、Python、Go、Java、Rust、.NET などがプリインストールされた Ubuntu 24.04 に加えて、GitHub 同等の toolcache。
- BuildKit、buildx、compose を備えたネイティブ Docker。QEMU によるマルチアーキテクチャビルドがそのまま動作します。
- PostgreSQL 16 と MySQL 8.0 は起動時にサービスがオフの状態でインストールされています。欠けているものはジョブのステップでインストールします。

すべてのランナーは、GitHub ホステッドランナーに匹敵するか上回るよう設計されたツールチェーンを備えた、メンテナンスされた Ubuntu 24.04 LTS (x86_64) イメージから起動するため、ほとんどのワークフローは変更なしで実行されます。

## ツールチェーン

| カテゴリ | プリインストール |
| --- | --- |
| Node.js | 20 (デフォルト)、22、24、npm と yarn 付き。nvm も利用可能 |
| Python | 3.10 から 3.13 (3.14 は利用可能になり次第含まれます)、加えて pipx と PyPy |
| Go | 1.22 から 1.25 |
| Java (Temurin) | 8、11、17 (デフォルトの JAVA_HOME)、21、そして利用可能になり次第 25。Maven、Gradle、Ant 付き |
| その他の言語 | Rust (stable + rustfmt + clippy)、.NET 8/9/10、Ruby (+ fastlane)、PHP 8.3 (+ Composer、Xdebug)、Haskell、Swift、Kotlin、Julia、PowerShell |
| コンテナ | BuildKit を備えた Docker CE、`docker buildx`、`docker compose`。Buildah、Podman、Skopeo |
| ブラウザ | Chrome、Firefox、Edge を対応するドライバー付きで。Selenium。Android SDK/NDK |
| データベース | PostgreSQL 16、MySQL 8.0 (起動時はサービス無効。ジョブ内で起動してください) |
| パッケージマネージャー | Homebrew、conda、vcpkg、加えて各言語ネイティブのもの |
| CLI の標準 | AWS CLI v2、jq、git、build essentials |

## GitHub ホステッドの動作に合わせる

このイメージの最も有用な特性は、変更する必要がないことです。`actions/setup-node`、`actions/setup-python` などのステップをそのままにしてください: それらはダウンロードする代わりに `/opt/hostedtoolcache` の GitHub 同等の toolcache から即座に解決されるため、移行中も同じワークフローファイルが両方のランナータイプで正しいまま保たれます。

バージョン固定に関する助言はどこでも同じです: イメージのデフォルトに頼るのではなく、setup アクションにバージョンを明示させてください。Node 20 がデフォルトで 22 と 24 もインストールされていますが、明示的な `node-version` を持つ `setup-node` ステップはワークフローに意図を語らせ、メンテナンスされるイメージが進化しても安定させます。

## 知っておく価値のある 3 つのこと

- **ネイティブ Docker** Docker はホスト自体で動作します: docker-in-docker の回避策は不要で、BuildKit はデフォルトでオンです。
- **マルチアーキテクチャビルド** QEMU/binfmt が事前構成されているため、`docker buildx --platform linux/amd64,linux/arm64` がそのまま動作します。
- **GitHub 同等の toolcache** `actions/setup-node`、`setup-python` などがダウンロードなしで `/opt/hostedtoolcache` から即座に解決されます。

## データベースとブラウザ

PostgreSQL 16 と MySQL 8.0 は、サービスが **起動時に無効** の状態でプリインストールされているため、ジョブが要求するまで邪魔になりません。必要なものを起動するのは 1 行のステップで、Latchkey 固有の何かではなく標準的な Ubuntu のサービス管理です:

ジョブ内でサービスを起動することは、依存関係を明示的に保つことにもなります: ワークフローファイルを読む誰もが、そのスイートにデータベースが必要だとわかります。これはワークフローがランナータイプ間を移動するときに持っておく価値があります。

> **何か特殊なものが必要ですか?**
> 欠けているものは、いつものようにジョブのステップでインストールできます (sudo apt-get が動作します)。自己修復も、欠けているツールでステップが失敗したときに、許可リストのシステムパッケージを自動でインストールできます。

### Latchkey ランナーには何がプリインストールされていますか?

Ubuntu 24.04 に Node、Python、Go、Java、Rust、.NET などが入っており、GitHub ホスト型ランナーとの互換性を意識した toolcache も備えています。Docker はネイティブで、BuildKit、buildx、compose が利用でき、QEMU によるマルチアーキテクチャビルドも設定なしで動作します。

### ランナー上でデータベースは使えますか?

PostgreSQL 16 と MySQL 8.0 がインストールされていますが、起動時はサービスが停止しているため、起動するまでコストはかかりません。サービスコンテナを使うのではなく、必要なジョブのステップ内でサービスを起動してください。

### ビルドに必要なツールが入っていない場合は?

GitHub ホスト型ランナーと同じように、ジョブのステップでインストールしてください。イメージは出発点であって制約ではありません。同じインストールが毎回のビルドで実行されているなら、それはカスタムランナーイメージに移すべきサインです。

---

Latchkey runs CI/CD that repairs its own failures. Agent entry points: https://latchkey.dev/agent.txt, https://latchkey.dev/openapi.json, https://latchkey.dev/llms.txt
