Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Swiftで広がるIoTの世界:Embedded Swiftを試してみよう!
Search
tussy5969
December 06, 2024
0
68
Swiftで広がるIoTの世界:Embedded Swiftを試してみよう!
tussy5969
December 06, 2024
Tweet
Share
More Decks by tussy5969
See All by tussy5969
Embedded Swift & Matterでスマートホーム対応デバイスを操作してみよう!
tussy5969
0
110
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Fireside Chat
paigeccino
41
3.7k
Making Projects Easy
brettharned
120
6.4k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
How STYLIGHT went responsive
nonsquared
100
5.9k
A better future with KSS
kneath
239
18k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Become a Pro
speakerdeck
PRO
29
5.6k
Transcript
宮地 篤 士 / @tussy5969 Chiba.swift #2 Swiftで広がるIoTの世界: Embedded Swiftを試してみよう!
自 己 紹介 宮地 篤 士 / @tussy5969 • LINEヤフー株式会社
iOSエンジニア • マップサービスの開発 • 船橋市在住 • 高 知→奈良→埼 玉 →千葉と移ってきました • 趣味: 弓 道、DIY、登 山
IoT(デバイス)開発したことありますか?
IoT(デバイス)開発するときはどんな 言 語を使いますか? Python C 言 語 Java
Swiftでも可能! Python C 言 語 Java IoT(デバイス)開発するときはどんな 言 語を使いますか?
Embedded Swift
Embedded Swift • 組み込み開発向けのSwiftサブセット 言 語 • WWDC2024のSwiftの新機能で紹介されている
Embedded Swift • 組み込み開発向けのSwiftサブセット 言 語 • メモリが限られているデバイス上でSwiftコードを動作させることが可能 • Swiftの
一 部の 言 語機能や標準ライブラリの使 用 を制限して、コードサイズを 大 幅に縮 小 Swift Embedded Swift メモリ使 用 量 多い(MB単位) 少ない(KB単位) ランタイム依存 あり(動的機能をサポート) ない、または極 小 化 使 用 可能な標準ライブラリ 全て 一 部制限されている
• Embedded Swiftで使える🙆 • Array、Bool、Integer、Dictionary、Collection、Setなど • Embedded Swiftで使えない🙅 • Mirror
API(ランタイムリフレクション) 、Any(プロトコル型)、 Lazy Collections、weak referencesなど 詳しくは以下を参照👇 https://github.com/swiftlang/swift/blob/main/docs/EmbeddedSwift/ EmbeddedSwiftStatus.md Embedded Swiftでの使 用 制限
実際に動かしてみよう • 今回は公式が提供している「swift-embedded-examples」を参考 • https://github.com/apple/swift-embedded-examples • 使 用 するデバイス: ESP32C6
• 2.4GHz Wi-Fi6、Bluetooth5などとの接続が可能 • Matter対応 • 秋 月 電 子 で 税込 1,040円 • https://akizukidenshi.com/catalog/g/g129481/
実際に動かしてみよう • Lチカをやってみます • GPIO0ピンにLEDを接続 • 抵抗を経由してGNDに繋げる GPIO0 GND
実際に動かしてみよう 事前準備(ダウンロード) • ESP-IDF • ESP32向けの公式の開発フレームワーク • Swift Toolchain •
Embedded Swiftをビルドするために必要 • 通常のSwiftツールチェーンではなく、組み込みシステム向けに最適化され たものを使 用 する
実際に動かしてみよう ビルドをするために必要なファイル • BridgingHeader.h(変更なし) • C 言 語で書かれたベンダー製SDKを使うためのブリッジヘッダー • CMakeLists.txt
(変更なし) • Swiftコードをビルドするための、CMakeロジック • Main.swift 👈 • 今回の実装を記述しているSwiftコード
実際に動かしてみよう • Main.swiftのコード ESP32のフレームワークで 用 意 されている関数を使 用 • gpio_reset_pin
• gpio_set_direction • gpio_set_level • vTaskDelay
実際に動かしてみよう • ビルドから実 行 まで Lチカ💡
Matterを使ってホームアプリから制御してみる Matterとは? • スマートホーム機器向けのオープンソース共通規格 • WWDC2021で紹介されている • プラットフォーム超えてIoT機器間のシームレスな通信を可能にする • Matter対応のデバイスはAppleのホームアプリから操作可能
• (ただ、 日 本のスマートホーム機器では対応機種がまだ少ない状況…
Matterを使ってホームアプリから制御してみる Matterとは? • スマートホーム機器向けのオープンソース共通規格 • WWDC2021で紹介されている • プラットフォーム超えてIoT機器間のシームレスな通信を可能にする • Matter対応のデバイスはAppleのホームアプリから操作可能
• (ただ、 日 本のスマートホーム機器では対応機種がまだ少ない状況…) • ESP32C6はMatter対応! → ホームアプリからESP32C6に接続されているLEDを制御できる
Matterを使ってホームアプリから制御してみる
Matterを使ってホームアプリから制御してみる こちらも公式がチュートリアルを提供している • やること • デバイスをWi f に接続 • Toolchain,
ESP-IDFのインストール • ESP-Matterのインストール • Matterプロトコルをサポートするフレームワーク • Dockerで環境構築も可能 • 30GB程度使 用 😇
Matterを使ってホームアプリから制御してみる Main.swiftのコード
• ビルドの流れは先ほどと同様 Matterを使ってホームアプリから制御してみる
Matterを使ってホームアプリから制御してみる • 初回はアクセサリを登録する必要がある(登録済み) • 明るさを制御することも可能になった!
まとめ • Embedded Swiftの紹介 • まずはチュートリアルにあるLED制御を試してみた • 他のセンサ類とかも試していきたい • Embedded
Swiftは登場したばかりなので今後の発展に期待しましょう!
参考 文 献 • https://developer.apple.com/videos/play/wwdc2024/10197 • https://github.com/swiftlang/swift/blob/main/docs/EmbeddedSwift/ EmbeddedSwiftStatus.md • https://github.com/apple/swift-embedded-examples
• https://github.com/apple/swift-matter-examples • https://speakerdeck.com/yochidros/raspberry-pi-pico-woswiftdecao-zuo- suru
ありがとうございました
補 足 コード
PWM制御によるLEDの明るさ設定
Matterのノードとエンドポイント設定(サンプルコードより)