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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
tussy5969
December 06, 2024
220
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
470
Featured
See All Featured
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
550
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
770
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
The Language of Interfaces
destraynor
162
27k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Paper Plane
katiecoart
PRO
4
53k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Why Our Code Smells
bkeepers
PRO
340
58k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
330
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のノードとエンドポイント設定(サンプルコードより)