Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Swiftで広がるIoTの世界:Embedded Swiftを試してみよう!
Search
tussy5969
December 06, 2024
230
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Swiftで広がるIoTの世界:Embedded Swiftを試してみよう!
tussy5969
December 06, 2024
More Decks by tussy5969
See All by tussy5969
Embedded Swift & Matterでスマートホーム対応デバイスを操作してみよう!
tussy5969
0
480
Featured
See All Featured
Deep Space Network (abreviated)
tonyrice
0
370
Large-scale JavaScript Application Architecture
addyosmani
516
110k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
77k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
So, you think you're a good person
axbom
PRO
2
2.2k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
Music & Morning Musume
bryan
48
7.4k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
410
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
570
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3.4k
RailsConf 2023
tenderlove
30
1.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のノードとエンドポイント設定(サンプルコードより)