世界を動かす技術を、日本語で。

スウィフト 6.3

2026年3月26日原文(swift.org)

概要

Swift 6.3は、Cとの相互運用性やクロスプラットフォーム開発、組み込み環境への対応を強化。 公式Android SDKの提供により、Android開発にも本格対応。 パッケージ管理やテスト、ドキュメント生成機能も大幅に改善。 新しい属性や最適化制御でAPI設計の自由度向上。 Swiftコミュニティの貢献による進化。

Swift 6.3の主な新機能と改善点

  • Cとの柔軟な相互運用性
    • @c属性 により、Swift関数やenumをCコードに公開可能
    • @c(MyLibrary_callFromC) でC側の宣言名をカスタマイズ
    • @c @implementation の組み合わせで、Cヘッダーで宣言された関数のSwift実装が可能
  • モジュールセレクタ
    • 複数モジュールで同名APIが存在する場合、 ModuleA::getValue() のようにモジュールを明示指定
    • Swift標準モジュール名で Task やString処理APIへアクセス可能
  • ライブラリ最適化制御属性
    • @specialize で汎用APIの特定型向け実装を事前生成
    • @inline(always) でインライン展開を強制(コードサイズ増加に注意)
    • @export(implementation) でABI安定ライブラリの関数実装を公開し最適化範囲を拡大
  • 言語進化提案の詳細
    • 最新の提案一覧は Swift Evolution dashboard 参照

パッケージ・ビルドツール改善

  • Swift Buildのプレビュー統合
    • 全プラットフォーム共通のビルドエンジンをSwift Package Managerに統合
    • クロスプラットフォーム開発体験の一貫性向上
  • Swift Package Managerの新機能
    • swift-syntaxプリビルドバイナリ でマクロライブラリの共通実装を分離
    • 継承ドキュメント制御 でコマンドプラグインのシンボルグラフ生成時のドキュメント継承有無を指定
    • swift package show-traits コマンドでパッケージのサポート特性を可視化
    • 詳細は SwiftPM 6.3 Release Notes 参照

テスト機能の強化

  • Swift Testingの改善
    • Issue.record のseverityパラメータで警告レベル指定
    • Test.cancel() でテストやタスク階層の途中キャンセル
    • 画像添付 (Apple/Windowsプラットフォーム対応)でテスト中に画像を添付可能
    • 採用提案: ST-0012, ST-0013, ST-0014, ST-0015, ST-0016, ST-0017, ST-0020

DocCドキュメント生成の新機能

  • Markdown出力
    • --enable-experimental-markdown-output でMarkdown版ドキュメント生成
  • ページごとの静的HTMLコンテンツ
    • <noscript>タグ にタイトル・説明等を埋め込み、SEO・アクセシビリティ改善
    • --transform-for-static-hosting --experimental-transform-for-static-hosting-with-content で有効化
  • コードブロック注釈
    • nocopy (コピー禁止)、 highlight (特定行ハイライト)、 showLineNumbers (行番号表示)、 wrap (行折返し)などを指定可能
    • --enable-experimental-code-block-annotations で利用開始

プラットフォーム・環境対応

  • 組み込みSwiftの強化
    • C連携、デバッグサポート、リンケージモデルの進化
    • 詳細は Embedded Swift Improvements coming in Swift 6.3 参照
  • Android公式SDKのリリース
    • Swift SDK for Android により、SwiftでAndroidネイティブ開発が可能
    • 既存のKotlin/JavaアプリへのSwift統合もサポート(Swift Java, Swift Java JNI Core)
    • 詳細は Getting Started with the Swift SDK for Android 参照
    • Android Workgroupによる多大な貢献

コミュニティと今後

  • Swift 6.3は Swiftコミュニティ の幅広い貢献による成果
  • 今後の開発や議論は Swift Forums で参加可能
  • Swift 6.3ツールチェーン のインストール方法は Install Swift ページ参照

著者紹介

  • Holly Borla: Swift Core Team/Lang Steering Group所属、Apple Swiftチームのエンジニアリングマネージャー
  • Joe Heck: Apple Open Source Program OfficeでSwift担当

Hackerたちの意見

Swift 6.3には、Android用のSwift SDKの初の公式リリースが含まれてるよ。

それはサーバー用のSwiftよりも使われることは少ないだろうね。

WindowsやLinuxに似たようなものはあるの?Windowsには5年前のブログ記事があるよ:https://www.swift.org/blog/swift-on-windows/ LinuxにはGNOME用のガイドがあるね:https://www.swift.org/blog/adwaita-swift/ 代わりに一つのスタイルで開発して、OpenSTEPみたいにライブラリのセットを出せたらいいのに(それが「OPEN」って名前の理由だったから)。

Swiftは、ソフトウェアスタックのすべてのレイヤーで使うために設計されてるんだ。確かにいい言語だけど、今の状況じゃそれは実現しないよね。Appleの無駄な機会だな。

どういうこと?今のところ、Swiftを使ってソフトウェアスタックのすべてのレイヤーをターゲットにできるよ。例えば、ClearSurgery[0]は完全にSwiftで書かれていて、Linuxボックス上で動いてるリアルタイムコンポーネントも含まれてるんだ。[0] https://clearsurgery.vision

Swift 6.3では、@c属性が導入されて、プロジェクト内のCコードにSwiftの関数や列挙体を公開できるようになったんだ。関数や列挙体に@cを付けると、Swiftが生成するCヘッダーに対応する宣言を含めるようになるから、C/C++ファイルにインクルードできるよ。なんでこんなに時間がかかったんだろう?優先順位が変だよね。Cエクスポートを追加する前に、C++相互運用性のためにC++コンパイラをまるごと追加するなんて。奇妙だな。

以前は、アンダースコア付きの属性としてあったよね。

C++との相互運用性が注目されたのは、Appleがすでに純粋なCを超えた低レベルのコードベースを吸収できるからだね。Swiftを普通のCにエクスポートするってことは、結局DIYのFFIスパゲッティが増えるだけ。列挙型や所有権のルール、ヌル可否がその境界を越えると、生成されたヘッダーはきれいな橋のようには見えなくなって、ABIバグが隠れる場所が増えちゃう。クロージャーが加わるとさらにややこしくなるから、エラーハンドリングや呼び出し規約が少しずつずれて、午後を無駄にするようなバグが生まれちゃうんだよね。

それはしばらく前から実験的な機能としてあったよ。プロジェクトで使ったことがある。

もうObjCのエクスポートがあったから、クロスオーバーを考えると優先度は低かったかもね。

Swiftの標準ライブラリの状況は、GoやRustのような新しい言語と比べてどうなのかな?Pythonのようにバッテリーが含まれてるわけじゃないし、macOS/iOSのAPI/ABIにほとんど結びついてるヘルパーライブラリの巨大な開発エコシステムもないよね。

利用可能なパッケージの良いソースは、Swift Package Indexだよ。ここでLinuxに対応したパッケージを検索できるよ。[0] https://swiftpackageindex.com/search?query=platform%3Alinux

Hacker Newsで議論の続きを見る