この記事の要点
- 「What’s new in Swift」連載の2026年8月号で、Swift を Web の第一級の選択肢にしようとするゲスト寄稿から始まり、注目の動画、コミュニティの話題、新しいパッケージのリリース、そして Swift Evolution の動きを取り上げています。
- 冒頭のゲスト寄稿では、elementary-swift プロジェクトの作者 Simon Leeb 氏が、サーバー上で HTML を描画する Elementary と、ブラウザ内で動く ElementaryUI という2つのライブラリを紹介し、swift-wasm と Embedded Swift の進展によって Swift での Web UI 開発が現実的になってきたことを語っています。
- 動画・記事では、Swift on Windows、メモリ安全なコードの書き方、Embedded Swift による Raspberry Pi Pico 制御、サーバーサイド Swift の設計などが紹介されています。
- Swift Evolution では、レビュー中の ST-0029 に加え、non-copyable 型の
deinitを強化する SE-0544、AttachmentとEncodableの連携を見直す ST-0028、パッケージレジストリ検索の SE-0536、コピーせずに反復するIterable(SE-0516)、task-local 値を束縛する ST-0026 が採択されました。いずれも Swift Digest にダイジェストがあります。
この号は公式の定期ダイジェストなので、ここでは Swift 利用者が押さえておくとよい注目トピックを選んで整理し、Swift Digest 内外の関連リンクを示します。網羅的な一覧は元記事を参照してください。
注目トピック
Web 向け Swift(ゲスト寄稿)
今月は、elementary-swift プロジェクトの作者 Simon Leeb 氏によるゲスト寄稿から始まっています。氏はバックエンドを Swift で書くようになったものの、Web フロントエンドが別のエコシステムに残っていることに物足りなさを感じ、フロントエンドでも Swift のエルゴノミクス・安全性・効率を得たいという思いからこの取り組みを始めたと述べています。
その最初の成果が、宣言的な API で HTML を描画するライブラリ Elementary です。Vapor や Hummingbird などのフレームワークと組み合わせやすく、サーバーレンダリングによる Web UI の実用的な選択肢になっているとのことです。さらに氏は、swift-wasm による Swift の WebAssembly コンパイルが実用的になり、Embedded Swift が実験的な一歩を踏み出したことを受けて、Embedded Swift で状態駆動の Web UI フレームワークを作り、小さな WebAssembly バイナリを生成できないかを試み、ElementaryUI を生み出しました。Elementary がサーバー上で HTML を描画するのに対し、ElementaryUI はブラウザ内で動作します。
氏は、Swift をブラウザ側とサーバー側の両方で動かし、共有したメッセージ型を通じて通信する Full-Stack Swift on Cloudflare のデモを公開しており、背景や仕組みは Swift@FOSDEM 2026 での講演でも語られています。ElementaryUI はまだ若いプロジェクトで、フィードバックや貢献、スポンサーを募っています。
注目の動画
- Swift on Windows: Saleem Abdulrasool 氏が Empower Apps ポッドキャストに出演し、Swift on Windows、サーバーサイド Swift、SwiftWin32、Swift の C++ 相互運用、そして始め方について語ります。
- Write security-sensitive code in Swift: Swift が境界・ライフタイム・型・初期化・並行性にわたってどのように安全性を保証するかを、
Spanや non-copyable 型といったプリミティブとともに解説します。unsafeなコードを strict memory safety で監査し、既存の C モジュールを段階的に移行する方法も扱います。 - Embedded Swift を Raspberry Pi Pico 上で動かす短い動画2本、macOS での始め方を扱う Let it blink! と Fun with traffic lights in 60 seconds が紹介されています。
コミュニティの話題
- Building scalable backend apps in Swift: サーバーサイド Swift のコードベースの構造化について、ビジネスロジックをデータベースやフレームワークの詳細から分離し、テストや変更をしやすく保つアプローチを紹介しています。
- Swift Package Index のブログ記事 what a package registry actually is は、パッケージレジストリが SwiftPM やパッケージインデックスとどう関係するのかを説明し、Git 管理の依存を Swift レジストリへ切り替える例を示しています。
- Embedded Swift Improvements Coming in Swift 6.4 は、マイクロコントローラをはじめとする制約の多い環境向けの Swift について、今後の改善をまとめています。Blogダイジェスト Swift 6.4 でやってくる Embedded Swift の改善 もあわせて参照してください。
- The Browser Company による Swift on Windows: A year of refinement は、Swift on Windows をより予測可能にするための1年間の取り組みを振り返っています。
新しいパッケージのリリース
- SwiftTUI: 宣言的で状態駆動の構文でインターフェースを一度書けば、ターミナルアプリ、ネイティブの macOS・iOS アプリ、Android アプリ、あるいはブラウザ向けの WASI ビルドとして出荷できます。
- lexic:
RawRepresentableやLosslessStringConvertibleへの適合を手書きする代わりに、マクロで生成してくれるパッケージです。Apple プラットフォームと Linux で同じように動作します。 - StructuredQueries: Point-Free による SQLite のクエリビルダで、JSON・JSONB カラムを完全に型安全に扱えるようになりました。
json_eachテーブル関数にも対応し、ネストしたデータを Swift の型システムから外れることなくキーパスで問い合わせ・更新できます。
Swift Evolution の動き
テスト・言語機能・パッケージレジストリまわりの Proposal が動いています。いずれも Swift Digest にダイジェストがあります。
- ST-0029 Include additional issue metadata in event stream(レビュー中): Swift Testing の JSON イベントストリームは、issue が発生したときに最小限の情報しか報告せず、
throwされたエラーと手動のIssue.record呼び出しを区別しづらい状態でした。本 Proposal はerror・confirmationMiscount・exceededTimeLimit・expressionといった構造化フィールドを追加し、Xcode や VS Code などのツールがより具体的な失敗情報を表示できるようにします。 - SE-0544 Mutation and consumption in non-
Copyabletypedeinits(採択): ファイルハンドルやバッファのようなリソースを管理する non-copyable な型は、deinitでも他の箇所と同じ後始末ロジックを実行したいことがよくありますが、これまでdeinit内のselfは borrow しかできず、ミュートや消費ができませんでした。本 Proposal はdeinitが自身の stored property を直接ミュートまたは消費できるようにし、既存の後始末メソッドを重複させずに再利用できるようにします。 - ST-0028 Revise Swift Testing’s
Attachment/Encodableinterop(採択): Swift Testing では、スクリーンショットや JSON スナップショットのような追加データをテストに添付して失敗後に調べられますが、独自の型を添付するには追加のコードが必要で、エンコード形式を選ぶ手段もありませんでした。本 Proposal はEncodableやNSSecureCodingの値を直接添付できる新しいAttachmentイニシャライザを追加し、形式を選んだり独自のエンコーダを与えたりできるようにします。 - SE-0536 Package Registry Search(修正のうえ採択): レジストリのパッケージを使うには正確な識別子をあらかじめ知っている必要があり、他のパッケージエコシステムのようにレジストリ内でパッケージを探す標準的な方法はありませんでした。本 Proposal はレジストリ仕様に任意の
/searchエンドポイントとswift package-registry searchサブコマンドを追加し、名前・スコープ・著者などでパッケージを検索できるようにします。author:"Mona Lisa Octocat"のような修飾子や、設定済みのすべてのレジストリを横断する検索にも対応します。 - SE-0516
Iterable(修正のうえ採択): Swift でコレクションを反復する従来の方法は要素を1つずつコピーして取り出すもので、SpanやInlineArrayのようにコピーできない新しい型では機能しませんでした。本 Proposal はコピーせずにデータを反復する新しい仕組みとしてIterableを導入します。採択前にBorrowingSequenceから改称され、typed throws への対応も加わりました。 - ST-0026 TaskLocal test trait(修正のうえ採択): task-local な値は、フィーチャーフラグのように単一の
Task内でだけ適用される設定のようなものです。テスト内で1つ上書きするには、これまで trait を一から書く必要がありました。本 Proposal は.taskLocal(_:_:)trait を追加し、@Suite(.taskLocal(FeatureFlags.$isEnabled, true))のように1行で書けるようにします。
関連リンク
- 1つ前の号は Blogダイジェスト Swiftの最新情報: 2026年7月号 を参照してください。
- Embedded Swift の今後の改善は Blogダイジェスト Swift 6.4 でやってくる Embedded Swift の改善 を参照してください。