Swift Digest
Blog | Swift.org Blog

swiftly 1.0 の登場

Introducing swiftly 1.0

このダイジェストはClaude Opus 4.7 / 4.8によって生成されたものです(License)。原文はこちら

この記事の要点

何が発表されたのか

swiftly は、Swift のツールチェインをインストール・管理・更新する作業を楽にするためのバージョンマネージャです。

Apple プラットフォーム向けのアプリ開発では、最新の Swift は Xcode に同梱されています。しかし Linux のような別のプラットフォームに Swift を入れたい場合や、サービスやコマンドラインツールのビルドに別バージョンのツールチェインを使いたい場合には、信頼できる Swift のビルドを OS に応じた依存関係とともにダウンロード・展開・インストールする、手作業でミスの起きやすい手順が必要でした。

swiftly はもともと Linux で Swift を使う開発者向けのコミュニティ主導ツールとして数年前から存在していました。今回のリリースをもって、これを Swift の中核ツールチェインの一部として公式にサポートし、Swift の GitHub organization でホストするようになりました。あわせて macOS サポートも追加され、Xcode とは別に Swift を導入しやすくなっています。

swiftly 自身も Swift で書かれており、最新版へ自分自身を更新できます。

何に使えるのか

swiftly を使うと、新しいシステムへの Swift のインストール、最新の安定版への更新、nightly スナップショットや過去バージョンでの実験・テストといった操作が行えます。複数のツールチェインを切り替えるのも簡単で、プロジェクトのリポジトリにファイルを置いておけば、開発チームの全員が同じツールチェインのバージョンを使うようにできます。

導入は swift.org/install から行います。インストール後、ツールチェインを快適に動かすために必要なシステムパッケージやシェルコマンドがあれば、swiftly が案内してくれます。

最新の Swift ツールチェインがデフォルトとしてインストールされるため、すぐに新しいプロジェクトを始められます。

$ swift package init

swiftly use コマンドは、swift testswift build といった swift コマンドで使うデフォルトのツールチェインを選びます。

$ swiftly use 6.0.3
$ swift --version
--
Apple Swift version 6.0.3 (swiftlang-6.0.3.1.2 clang-1600.0.28.6)
Target: arm64-apple-macosx15.0

新しい Swift がリリースされたら、latest を指定して既存のツールチェインと並べてインストールできます。

$ swiftly install latest

nightly の「スナップショット」ツールチェインを含むプレリリース版も利用できます。一覧は次のように確認できます。

$ swiftly list-available main-snapshot
--
Available main development snapshot toolchains
----------------------------------------------
main-snapshot-2025-03-25
...

使いたいスナップショットが分かったら、その名前を指定してインストールします。

$ swiftly install main-snapshot-2025-03-25
--
Installing main-snapshot-2025-03-25

特定のバージョンを一時的に使いたいときは、+ セレクタが便利です。この書き方なら、わざわざ別のツールチェインに切り替えてから実行する必要がありません。

$ swiftly run lldb +main-snapshot-2025-03-25
--
(lldb) _

SwiftPM プロジェクトをチームで開発していて、全員に共通の Swift ツールチェインのバージョンを使わせたい場合は、プロジェクトフォルダのルートに使いたいバージョン(例: 「6.0.3」)を書いた .swift-version ファイルを置くだけで済みます。

swiftly 自体に新機能やバグ修正が入ったら、swiftly self-update を実行して新しいリリースを確認・インストールできます。

swiftly の仕組み

swiftly を Swift で書いていることで、言語の機能やエコシステムを活用できています。ファイルシステムの操作には Foundation を、ネットワーク処理には Async HTTP Client を使い、最新の Swift リリースを取得する際は Swift OpenAPI プラグインで swift.org と通信するコードを生成しています。さらに、Swift と C の相互運用性を活かして既存の libarchive ライブラリを利用し、Swift の Web サイトからダウンロードしたツールチェインの展開を行っています。

複数プラットフォームで動き、システム依存も少ないシェルプログラムを作るのは難しいため、swiftly はシェルスクリプトによるインストールをやめ、自分自身をインストールするバイナリアプリケーションへと切り替えました。これにより、優れた引数解析や見やすい --help 画面、標準ライブラリのすべてを利用できます。

残る課題は、OS とプロセッサアーキテクチャに合ったバイナリをシンプルに配布することでした。swift.org の Web サイトは OS の判別を助けてくれますが、Linux のディストリビューションまでは確実に判別できません。そこで、幅広いディストリビューションで動くバイナリを作れる Swift Static Linux SDK を活用しています。プロセッサアーキテクチャは多くの Unix 系で uname -m から判別できます。この結果、Web サイトからコマンドをコピー&ペーストするだけで Swift を始められるようになっています。

導入・今後の位置づけ

今後、swiftly は Xcode 以外で Swift をインストールする際の標準的な方法になっていきます。初期バージョンは macOS と、Ubuntu・Debian・Fedora・Red Hat Enterprise Linux・Amazon Linux といったさまざまな Linux ディストリビューションをサポートします。

swiftly のドキュメントでは、CI/CD 環境での利用や、エンタープライズ環境向けのプロキシサーバー設定・カスタムインストール先の指定についても説明されています。swiftly はオープンソースプロジェクトであり、GitHub リポジトリで issue の起票やプルリクエストでの貢献ができるほか、Swift フォーラムで質問や議論もできます。

関連リンク