我が家にはたくさんのIoTガジェットがあって、カーテンや玄関の鍵を開け閉めしたり、大活躍です。
しかしエンジニアという人種は、既存の機能では満足できず、カスタムして、色々作り込みたくなるものです!
そこで日頃お世話になっているSwift、我が家に余ってたラズパイ、そしてiPhoneの力を借りて、より便利で安全なスマートホームを目指した取り組みを共有します。
具体的には…
●ラズパイでのSwiftやServerSideSwiftフレームワークのセットアップ
●iPhoneのセンサー情報をServerSideSwiftのAPI経由でラズパイのDBに書き込む方法
●ラズパイと既存のIoTガジェットの連携方法
●SwiftでラズパイのGPIO経由でセンサーやLEDを操作する方法
などをデモを交えて紹介する予定です。
ぜひ皆さんもSwiftを使った自宅のスマートホーム化、電子工作を楽しみましょう!
SwiftUIのNavigation APIは「Tab, Alert, Sheet, Navigation Link...」など様々な種類が存在し、OSによるインターフェースの変化も激しいです。
また、これらのAPIを利用して画面遷移を実現する際には多くの選択肢があり、画面遷移が増えれば状態管理も複雑になります。
このトークでは、そんなSwiftUI Navigationについて以下の内容で発表します。
・SwiftUIのシンプルな画面遷移と状態駆動型の画面遷移について俯瞰
・状態駆動型の画面遷移の利用時に起きる状態の不整合、不要な状態の管理を改善するswiftui-navigationの手法
本トークではPoint-Free製のswiftui-navigationを深掘ることによって、よりSwiftUIのNavigationについて理解できるようになることを目指します。
iOSアプリ開発にSwift Package Manager(SwiftPM)を活用するパターンを見かけるようになってきました。アプリ内のモジュール分割をSwift Packageを使って実現するパターンです。
この際、Swift 5.5以前のSwiftPMはビルド時に(SwiftGenなどで)コード生成する、などの処理を記述できませんでした。そのため、Xcodeプロジェクトのビルドスクリプト機能を使う必要がありました。
しかし、Swift 5.6でSwiftPMにプラグイン機能が追加されたことで、Xcodeのビルドスクリプト機能に頼る必要がなくなりました。
本トークでは、SwiftPMのプラグイン機能について解説し、iOSアプリ開発でSwiftPMをより一層活用するためのプラクティスをお話しします。
プログラマーの三大美徳の一つと言われる怠惰さを一番発揮しやすい場所はどこでしょうか?
それはCICDを含む自動化の仕組みの構築にあると思います。
ソフトウェアの開発においてCICDはもはや必須です。
ではCICDで得られるものはなんでしょうか?
それは我々が余分な仕事をしなくて済む時間です。
例えば、アプリをビルドするのに自分のPCを何十分も専有され、その間コードは一行も触れないなんてのは嫌なのです。
そんな時間があるなら我々はもっと他にやりたいことがあるのです。
面倒なことは機械が勝手にやって欲しいのです。
本セッションでは今まで面倒な仕事を勤勉にこなしてきた人が明日から怠惰に過ごせるよう、普段の仕事を自動化していくための考え方と進め方についてお話します。
そして導入した仕組みをコスト的に効率良く運用するためにどうすればいいか、導入した後の改善法についてもお話します。
MLOpsはML Operationsの略で、データ収集・前処理・学習・デプロイ・監視といった機械学習のライフサイクルの継続的な運用を効率化するための考え方や手法を総称してこう呼ばれています。たとえば、蓄積したデータを用いたモデルの再学習を定期的に自動実行し最新データに合うようモデルを改善し続ける仕組み、モデルを本番システムに自動デプロイする仕組み等が含まれます。機械学習をビジネスで本番運用するために不可欠な考え方として昨今ホットなトピックとなっています。
一方で、Core MLモデルの世界ではMLOpsという考え方はまだそれほど広がっていないように思います。多くの場合は一度学習したモデルを利用し続けるか、手運用で再学習等を行っているのではないでしょうか。Core MLにMLOpsの考え方を導入しするとどのように継続的な運用を効率化できるのか、そのパターンを解説します。
Mac Catalystは,iOS/iPad OSと共通のプロジェクト,コードでmacOS Nativeアプリケーションも提供できるフレームワークです.さらに,Mac Catalystには,iOS/iPad OSでしか扱えないHomeKit.frameworkなどのフレームワークを使ったアプリを開発できるなどの開発効率以上の価値をもたらす側面も持ちます.しかしながら,それを使った開発には,AppKitのAPIを利用できない,起動時に勝手にウィンドウが表示されてしまうなどの課題もあります.本セッションでは,Mac Catalystでアプリを開発する上で必須のテクを筆者が公開しているオープンソースのアプリをベースに紹介します.
ネイティブアプリと同様の機能をウェブアプリに追加できる技術、それがProgressive Web Apps (PWA)です。iOSでも近年、徐々にPWAの機能が追加されています。これらの流れは、ユーザービリティに重きを置く昨今の潮流に即しているように感じます。
この発表では、PWAの現状とその可能性についてお話しします。
iOSにおけるIn-App Purchase(アプリ内課金)はiOS 3から利用可能であり、その歴史は10年以上に及びます。
この長い歴史の中で、Ask to BuyやUpgrade / Downgrade、お試しオファーなどの多くの仕組みが追加され、やれることが格段に増えました。
アプリ内課金をサポートするための仕組みも、Store Kit 2による実装方法の変更やアプリ内での返金機能をはじめ、Server NotificationsやTransaction Receiptのフォーマットの変更など、新しいものが次々にリリースされたり、StoreKit Testingによって自動テストが出来たりSandbox環境がアップデートされたりなど、課金のテストにまつわる状況も大きく変わりました。
本トークでは、20分間でIn-App Purchaseの激動の歴史をじっくり振り返っていきます。
量子コンピュータや量子情報、量子暗号といった言葉を聞いたことがある人は多いと思います。これらには量子力学という物理の学問が使われています。
そんな量子力学が作り出す不思議な世界へiOSアプリ開発、Xcodeのシュミレータを用いてご説明します。
物理学の専門性がない方にもご理解いただけるように難しい話はしません。量子力学の面白さ、不思議さを知ってもらうためのトークです。
「え、CryptoKitを使いたいけど、いつ、何を使うべきかわからない。。。」の方はもう心配いらない。このトークで一緒にCryptoKitの謎を解きましょう!
ユーザーのデータを暗号化しないといけない開発案件が出てきて「CryptoKitを使うチャンス!」を思って調べてきました。それでみんなにそのKnowledgeを共有したいと思っています!みんなCryptoKitマスターになりましょう!
Content
データセキュリティーのために知っておきましょう!
アプリがネットワークなど外部サービスを通じてデータをやり取りすることはもはや当たり前になっています。
そのデータの代表的な形式としてJSONがあり、これはSwiftではCodableを通して簡易に変換することができます。
しかしデータ形式というものはJSONに限らず様々なものがあり、例えばXMLもその一種です。
「iOSにはXMLParserというものが用意されているから、ドキュメント見ながら実装すれば余裕っしょ」
もし、そのドキュメント通りに動作しなかったらどう思いますか?
このトークは、XMLを処理するにあたって、XMLParserを中心に、iOSでできること、できないことを洗い出していかに効率的に処理ができるかを突き詰めるトークとなります。
iOS 15 から Safari の拡張機能である Safari Web Extensions の開発が出来るようになりました。
すでに素晴らしい拡張機能がいつかかリリースされているものの、まだまだその数が少ないように感じます。
そこで今回は Safari Web Extensions の開発が広まるように、その始め方を紹介します。
具体的には、Safari Extension App のテンプレートの中身を解説しつつ、ある要素をHTMLから削除する拡張機能を作るまでの手順を紹介します。
Safari Web Extensions の持つ可能性を感じて頂ければと思います。
アプリを一から作り直したことはありますか?
ソースコードがごちゃごちゃで可読性が低かったり、
修正が難しいバグが多かったりして「一旦作り直し」と
判断されたこともあるかもれません。
作り直したものも最初はピカピカだったが、時間と共に
汚くなり、またバグの多いごちゃごちゃした
ソースコードになり、開発が難しい状態に戻ってしまいます。
そしてまた、作り直すか、大規模なリファクタをするか、
我慢してごちゃごちゃなまま開発を継続するかの選択が
迫られます。
どの選択も非常にコストがかかります。
どうしてこういうことが起きるのでしょうか?
今回は
ヒント: 問題はソースコード以外のところにあるかもしれません!
メドピア株式会社では、2022年2月にアプリ slis[スリス] をリリースしました。0からの新規開発ということで既存関連の制約などはなく、Swift Package Manager、Swift Concurrency、Xcode Cloud など新しいものを取り入れて開発しています。
このセッションではこれら採用した技術を中心に今回の新規開発について紹介します。
iOSDCに参加のエンジニアのみなさん、メタバースの開発は Unity や Unreal Engine を駆使するような 3DCG エンジニアの担当領域だと思って敬遠していませんか? 私達クラスター株式会社のカジュアル面談でも、よく聞かれる質問の一つは iOS/Andoird/Web/etc… エンジニアでも活躍する場所が有りますか? というものです。実際は iOS/Andoird/Webエンジニアが多数在籍していますし、更には音響技術が得意なエンジニアから機械学習の研究者まで様々な人材が所属しています。また、その出身となった業界もゲームメーカーやWeb系開発会社、金融機関などなど様々です。本公演では、どんなエンジニアがどんな得意分野をもってクラスターに参画してきたかをご紹介するとともに、もう一つのよくある質問である、どんな開発フローで業務を進めているのかについてをお話しします。
iOSにはさまざまなアニメーションAPIがあります。思いつくだけでもUIView.animate()、Core Animation、UIViewPropertyAnimatorがあり、Core Animationが提供するAPIは膨大ですべてを使った人は稀でしょう。物理演算を追加するUIKit Dynamicsもあります。さらにSwiftUIでは.animation()や.withAnimation()というModifierによる手段が提供されています。
これらのAPIがカバーする範囲は重なっていて、同じことを別のAPIでも実現できます。それぞれのAPIをどのように使い分けるのでしょうか?
この講演では各APIの使い方を実用的なパターンの実例を示しながら解説し、どのような判断で使い分けるべきかを示します。すべてを明確に理解し、表現の引き出しを増やして、アニメーションをマスターしましょう!
Swift5.5で登場したSwift Concurrencyは、非同期処理を簡潔で安全に扱える機能です。主な機能は既に追加済ですが、現在も新しい機能の追加や改善が行われています。
今回は、この1年で見られた進化や実装上のTipsなどを紹介します。また、Swift6以降に既存のコードが動かなくなるリスクを最小限に抑えるための段階的導入方法など、ちょっと先の未来についても見ていきます。
例:
これからConcurrencyをもっと使ってみようと思っているみなさまのお役に立ちましたら幸いです。
この発表では、Swift アクターモデルと Elm Architecture を融合したフレームワーク「Actomaton」について、実用例を中心に紹介します。
https://github.com/Actomaton/Actomaton
Composable Architecture では飽き足らないマニア向けの内容を予定しています。
ここ数年、格好良いAR表現が付いた映像が増え、皆も色々な所で目にしていると思います。
エンジニアなら自分でも実装して実現したくないでしょうか?
私は昨年からARを本業としてAR表現があるリアルタイム配信をいくつか実施してきました。
Unreal Engineを使いカメラとトラッキング機材を中心に連携し作成していきます。
その実現に必要な要素を解説しスキルを伝授していきます!
デモと手法解説を軸に、AR表現に興味を持った人がさらに興味を持つようなセッションです。
SnapのCustom Landmarker、ARCoreのGeospatial API、NianticのLightship、そしてARKit 6のLocation Anchor、他にもありますが、これらはすべてVPSと呼ばれるものです。
ここで言うVPSは“Virtual Private Server”ではなく“Visual Positioning Service/System”です。
緯度経度をもとにするGPSとして馴染み深い“Global Positioning System”に対し、画像による空間情報をもとに自己位置推定する技術がVPSです。
本セッションでは、今後のARに関する要素技術として重大な位置づけになると考えられる “VPS”そのものとその周辺技術、実際のユースケースや概況に加え、いずれかのVPSソリューションを用いた「実際に動作するデモ」を交えて解説します。