Swift.org

Swift プロジェクトは、Windows 用の新しいダウンロード可能な Swift ツールチェーンイメージを紹介します! これらのイメージには、Windows 上で Swift コードをビルドして実行するために必要な開発コンポーネントが含まれています。

これまで 1 年以上にわたり、swift.org の開発者コミュニティと共同で Swift を Windows に移植する大きな取り組みが行われてきました。 5078>

Windows に Swift をもたらす

Windows への Swift の移植は、単にコンパイラーを移植することではなく、むしろ完全なエコシステムがプラットフォーム上で利用できることを保証することなのです。 これには、コンパイラー、標準ライブラリ、およびコア ライブラリ (ディスパッチ、Foundation、XCTest) が含まれます。 これらのライブラリは、開発者が基礎となるシステムの多くの詳細について心配することなく、簡単に強力なアプリケーションを書くことを可能にする一部です。 Windows で使用可能な状態に Swift をもたらす話には多くの技術的な詳細があり、もしあなたがそれらに興味があるなら、LLVM 開発者会議からこのトピックに関する私の講演をチェックアウトすることをお勧めします。

サンプル アプリケーション

このデモ電卓は完全に Swift で書かれており、Swift で書かれたアプリケーション コードとシステム ライブラリの間でコードがシームレスに反転します:

このプロジェクトは、以下を使用して構築されました。

  1. The Swift toolchain on Windows

  2. An installation of Visual Studio 2019 which deliver the other needed pieces in the form of CMake, Ninja, and the Windows SDK

The demo application is built with CMake, Swift Package Manager support on Windows is coming along.デモ アプリケーションは CMake を使用していますが、Windows 上で Swift パッケージ マネージャーのサポートも開始されています。 CMake や Ninja を必要とせずに、swift build を使用してアプリケーションを構築することがまもなく可能になります。

ここで、lldb を使用してアプリケーションをステップ実行する様子をご覧ください。

私は、Readdle の Alexander と彼のチームの仕事について連携していましたが、彼はこのメモを送ってきました:

私たち Readdle は 1 年以上前の 2019 年の第 2 四半期に Windows で Swift の実験を開始しました。 その頃、私たちはすでに Swift を使用して iOS/macOS とコア コードを共有する Android 用 Spark をリリースしており、もう 1 つのプラットフォームに拡張する機会は本当に魅力的でした。

いくつかの機能はまだ準備ができていないにもかかわらず、Windows 上の Swift は私たちのニーズを完全に満たしていることが判明しました。 実際、いくつかのサードパーティの C/C++ の依存関係は、Swift 自身よりも多くの頭痛の種を私たちに与えました。 Spark のすべてのビジネスロジックは、独立した Core モジュールにあります。 実際には、モジュールのパックですが、私たちはそれらをCoreと呼んでいます。 これにより、ターゲットプラットフォームのUIフレームワークを自由に使うことができるようになりました。 macOSではAppKit、iOSではUIKit、Androidではnative UI Toolkitです。 つまり、基本的にはSpark CoreをWindowsに移植する必要があったのです。 初期のコンセプトがすべて証明された後は、Windows上でそれを生かすための日々のルーチンワークがほとんどでした。

現在あるもの。

  • 9 つの Swift モジュール (255 739 SLOC, 2 133 ソースファイル)
  • 3 つのサードパーティの swift モジュール
  • 1452 テスト (XCTest による)
  • Windows ベース CI ですべてのテストをグリーンに維持
  • Heterogenous build system (一部 CMake.Build)システム。 一部カスタムスクリプト)

良い例として、CryptoSwift や OAuthSwift などの純粋な Swift モジュールは、ほぼ箱から出してすぐに動きました。 私たちは些細なインポート調整を行い、いくつかの AppKit/UIKit 参照を除外して、出来上がりです!

もうひとつの課題は、ユーザー インターフェイスを実装する方法を決定することでした。 広範な議論の末、私たちは Electron を将来の Windows 用 Spark のフロントエンド部分として採用することにしました。 つまり、Windows で Spark Core を構築できるだけでなく、Node.js 用のロード可能なアドオンとして使用する必要がありました。 それは意外と簡単なように見えました。 Swift は N-API ヘッダーを完全にインポートします。 私たちはまだ、アドオンエントリーポイントを定義するために、3 行の C コードと 1 つの小さな C ヘッダーを必要としますが、すべてのロジックは Swift にあります。 Node.js のクロスプラットフォームの性質により、IDE として Xcode を備えた開発プラットフォームとして macOS を使用し、その後、Windows で同じコードを構築するために CMake の敏捷性を使用することが出来ました。 もし、既存のアプリケーション コードベースを macOS/iOS 以外のプラットフォームに拡張することを考えているなら、今すぐ、あるいは、少なくともすぐに、絶対に Swift でそれを行うことができると、私は言います。 小さな Swift ライブラリを保守しているのであれば、すでに簡単に Windows サポートを追加できます!

– Alexander Smarus; Product Engineering Lead at Spark Team, Readdle Inc

詳細は Readdle のブログでご覧になれます。 現在のサポートは、言語が使用可能である最初のマイルストーンを設定します。 lldb や Swift Package Manager のようなエコシステムのさらに広い部分がまだあり、この異なるプラットフォームに対するサポートで完全なものにするためには、さらに作業が必要です。 始めようとしていて問題を発見したアーリーアダプターのために、Swift Bug Tracker にそれらを報告してください。 Windows での Swift のための新しいライブラリやパッケージを公開したり、既存のものを移植することは、Swift での作業をこれまで以上に楽しくするために関与し、支援するもうひとつの方法です。 私たちは、現在の問題のために Swift Bug Tracker をチェックアウトし、GitHub リポジトリにパッチを送信することをお勧めします。 また、Swift forums には、Windows での Swift の開発について議論するための新しいセクションがあります。 そこでは、コミュニティが問題を議論したり、あなたが自己紹介をして、あなたがツールのどの領域に焦点を当てているかを他の人に知らせたりすることができます。 これは、プロジェクトに参加し、それが強く、活気のある、クロスプラットフォームのエコシステムに成長するのを助けるための完璧な機会です。 私たちは、あなたが Swift でどんなエキサイティングなものを構築するのか見るのが待ちきれません!

コメントを残す

メールアドレスが公開されることはありません。