この記事の要点
- Embedded Swift を使ってさまざまなマイクロコントローラ向けのソフトウェアを開発する方法を示すサンプルプロジェクト集 swift-embedded-examples が公開されました。
- Embedded Swift は実験的なコンパイルモードで、ARM や RISC-V のマイクロコントローラなど、制約の大きい組み込み環境向けの自己完結したバイナリ(ファームウェア)を生成できます。ランタイムリフレクションや ABI 安定性、existential といった一部の言語機能を無効化する一方、見た目や書き味は「フル」の Swift に近いままです。
- サンプルは STM32 ボード、Raspberry Pi Pico、Nordic Semiconductor のボード、RISC-V の ESP32 ボードなど、複数のマイクロコントローラを対象にしています。完全に自己完結した Swift コードのビルドから、ボードベンダーの既存 SDK を Swift にブリッジする方法まで、異なるビルドシステムや統合方法をカバーします。
- Embedded Swift はまだ実験的なモードで、リリース版の Swift には含まれていません。試すには development snapshot のツールチェインが必要です。
何が発表されたのか
swift-embedded-examples は、Embedded Swift で各種マイクロコントローラ向けのソフトウェアをどう書くかを示すサンプルプロジェクトを集めたリポジトリです。
Swift はスケーラブルな言語で、デスクトップやモバイルのアプリ、サーバーのバックエンド、システムソフトウェアまで幅広く書けます。それに加えて、新しい実験的なコンパイルモードである Embedded Swift により、ARM や RISC-V のマイクロコントローラのような組み込み環境も対象にできます。これらは IoT デバイスをはじめとするプロフェッショナル/ホビー向けの電子工作で広く使われています。Playdate 向けのゲーム開発で Embedded Swift を使う例については Byte-sized Swift: Playdate 向けの小さなゲームを作る も参考になります。
マイクロコントローラは制約の大きい環境で、Swift のすべての機能が適しているわけではありません。Embedded Swift コンパイルモードは、ランタイムリフレクション・ABI 安定性・existential といった一部の言語機能を無効化し、ファームウェアに適した自己完結したバイナリを生成します。一部の機能を無効化してはいるものの、Embedded Swift のサブセットは依然として「フル」の Swift に非常に近く、慣れ親しんだ読みやすい Swift コードをそのまま書き続けられます。詳細は正式に受理された Embedded Swift Vision Document で確認でき、nightly のツールチェインで試せます。
何に使えるのか
このリポジトリは、Embedded Swift が幅広い領域で使えることを示すショーケースとして位置づけられています。サンプルは、Swift を手軽に使える次のようなさまざまなマイクロコントローラを対象にしています。
- STM32 ボード
- Raspberry Pi Pico
- Nordic Semiconductor のボード
- RISC-V の ESP32 ボード
また、異なるビルドシステムや統合方法もカバーしています。完全に自己完結した Swift コードをビルドする方法から、ボードベンダーが提供する既存の SDK を Swift にブリッジする方法まで含まれます。
Swift コミュニティでは、このコンパイルモードを使った興味深いプロジェクトがすでにいくつも公開されています。たとえば Pico SDK を使わずに Raspberry Pi Pico(RP2040)上で Embedded Swift を動かす試みや、RP2040 向けのハードウェアアクセスレイヤーなどがフォーラムで共有されています。swift-embedded-examples は、そうした事例をまとめて参照できるサンプル集です。
導入・今後の位置づけ
既存のサンプルプロジェクトを試すには、swift-embedded-examples リポジトリを参照してください。各サンプルのカタログと、それぞれのビルド・実行方法の手順が含まれています。
利用にあたっては、最新の development snapshot のツールチェインをインストールしてください。Embedded Swift は実験的なモードであり、リリース版の Swift にはまだ含まれていません。
このリポジトリは今後コミュニティの貢献によって育てていくことが想定されています。対応するマイクロコントローラボード、ビルドシステム、シンプルなペリフェラルの利用例などの追加が呼びかけられています。質問や経験・アイデアの共有は Swift フォーラムで行えます。こうしたフィードバックが、Embedded Swift を将来のリリースへ進めていく助けになります。