2024年2月に Apple は Pkl (ピックル)をオープンソースで公開しました。
Pkl は豊富な検証機能とツールを備えた、コードとしての構成言語です。
Pkl をどのように使うのか、使うことで何ができるのかを解説します。
JSON、YAML、 Plist などの既存の構成言語とは異なるアプローチを探している方にとって、 Pkl が新たな選択肢にとなる可能性があります。ご興味のある方はぜひ聞いていただけると幸いです。
In this 40-minute session, we will delve into the expansive world of SwiftUI, checking its almost all the key components like categories, classes, structures, and functions in Apple Developer Documentation. Engineers are busy and often research only the articles they need to solve the problems they encounter at the time. But this session is designed for the busy engineer like you. Just watching this 40 minutes session, you can grasp overview of SwiftUI.
仕様書とソースコードの乖離が起きるのが嫌だが、定期的に仕様書とソースコードを見比べるという作業も嫌な僕が、仕様書からSwiftのソースコードを自動生成する仕組みがないかなと思って調べた記録を発表します。
Swiftコードを自動生成する成果物は作れたので、その内容を元に以下について発表します。
SwiftSyntaxはSwift言語のアップデートと共に割と大きめのアップデートもガシガシやってる仕組みです。
僕の苦しみから他の人の開発効率化案、もっと良いコードが生まれることを願って、発表します。
決済は、物理的な商品の購入を行うE-commerceアプリでは、必須かつ重要な機能です。
出前館アプリでも、決済機能はユーザにとって重要な機能として位置付けられています。
アプリ開発者として決済機能を運用する際は、アプリだけでなく、トランザクション処理全体の把握など、サービス全体を通じた知識が求められます。
また、近年の決済機能は、3D SecureやSMS認証などの多要素認証によって、よりセキュアに価値を提供することが求められています。
複雑な決済フローをユーザに認識齟齬なく継続的に提供するためには、バックエンドの処理に加えて、アプリで各種例外処理の考慮をするなど、様々な工夫を行う必要があります。
本発表では、決済機能の運用について、出前館アプリの決済機能の運用を例に、以下の話をします。
発表者は、出前館アプリの決済機能のアプリ開発・リードを経験する中で、決済機能の運用例には、複雑なシステムを運用するためのノウハウとして共通の学びがあると考え、本プロポーザルを提出しました。
決済に関わっている方に限らず、複雑なシステムをどう運用するか興味のある方など、本発表を聞いていただけますと幸いです。
Panic社のキャッチーな黄色い筐体のモノクロ携帯ゲーム機『Playdate』はご存知でしょうか?
組み込み言語のサポートにより、実はSwiftでこのPlaydateのゲーム開発ができます!
本LTでは以下の内容をさっくり伝えます。
・SwiftでPlaydateのゲーム開発をするための環境づくり
・PlaydateKitを用いたゲーム開発の仕方
・Playdateのディスプレイ向けの画像を用意する方法
・Playdateでネコを走らせるデモ
Playdateに興味があるけれどまだ手を出していない方、小型ガジェットなどのソフトウェア開発に興味がある方、普通のiOSアプリ開発には飽きてきて新しい刺激が欲しい方など、Swiftでのゲーム開発の世界を少し覗いてみませんか?
オーディオビジュアライザーとは、音楽のリズムや振幅、周波数成分などを視覚的に表現したものです。音楽系のアプリを使ったことがある方なら一度は見たことがあるウニョウニョ動くカッコいいあれです。
本トークでは、音楽ファイルを読み込み再生しながら、リアルタイムで高速フーリエ変換を実行し、オーディオビジュアライザーを表示するまでの方法について紹介します。高校数学レベルの数学的知識とSwiftでのアプリ開発経験があることを前提として、Swiftで一歩踏み込んだ表現をしてみたい方を対象とします。
話すこと
有名な画像処理ライブラリの一つにOpenCVがあり、高速な画像処理を多数提供しています。
しかし、OpenCVはC++で書かれています。
そうです...。Swiftではないのです...。
このことに大変なやるせなさを覚えた私は、pureなSwiftで画像処理を記述しOpenCVにベンチマーク (実行速度)で挑みました。
CoreGraphicなどのライブラリも一切使いません。なぜならCoreGraphicの実装はObjective-Cだからです。
本当にSwiftのみを用います。
このLTではその一部始終を乗り越えた困難などを含めお伝えします。
永続化されたデータの保護は、現代のiOSアプリ開発において必要不可欠な要素です。
しかし、Appleが提供する永続化フレームワークであるCore Dataは標準でデータの暗号化を提供しません。
そこでこのトークでは、最もお手軽に導入できるCryptoKitによるCore Dataの暗号化手法について詳しく紹介します。
参加者は以下の内容を学ぶことができます。
このトークを通して、「Core Data」の暗号化に「CryptoKit」を利用する利点やパフォーマンスについて理解を深めて頂ければ幸いです。
サブスクリプションの無料試用の利用状況を判別するための具体的な方法を、アプリ側とサーバー側のコードを交えて説明していきます。
発表予定の内容:
サブスクリプションの無料試用の判別方法
実際に起こったエラー内容と発生率
verifyReceipt APIの不安定さに対する対策
開発中のsandboxアカウントでの確認方法
Unlock the power of Moya by learning how to correctly pass arrays and dictionaries as query parameters in Swift. This talk will guide you through best practices, common pitfalls, and real-world examples to ensure your iOS apps handle complex queries with ease. Perfect for iOS developers aiming to streamline their network layer and to quickly implement API clients for your app. This session is definitely useful when the server side requires complex query parameters.
デザイン定数をマジックナンバーのままベタ書きしていたり、enumなどで定数化していますか?
読み取るのも大変、書くのも大変、使うのも大変だと感じることもあるでしょう。
そんなあなたに、コードの可読性を向上させつつ、書きやすく、読みやすい方法をご紹介します。
このLTでは、Swift 5.9より実装されたAttached Macrosを活用して、最高に読みやすく、使いやすい定数宣言の方法を紹介します。
定数宣言することがいかに幸せなことか、この5分で実感していただきます!
以下の内容について紹介します。
Swift 6のリリースが近づく中、Swiftの新しい言語機能や改善点を事前に把握しておきたいと考えている方も多いでしょう
将来的にSwiftで導入される新機能は「Upcoming Feature Flags」を使うことで事前に有効化することが可能です。
このポスターセッションでは、この「Upcoming Feature Flags」で有効化できる機能のうち、Swift6より前のバージョンで実装済み(Implemented)になっているものについて全て解説します。
一つでも多くの「Upcoming Feature Flags」を有効化することで、Swift 6のリリースに備えながら、新機能や改善点を効率的にキャッチアップできます。
【内容】
・ Upcoming Feature Flagsで機能を有効化する方法の解説
・ https://www.swift.org/swift-evolution/#?upcoming=true でSwift6より前のバージョンでImplementedになっている全ての機能について、その概要と具体的な例の紹介
FlutterはDartで実装するクロスプラットフォームのフレームワークです。
通常、Flutterプロジェクトは主にDartで開発されますが、既存のSwiftで書かれたiOSプロジェクトに対してadd-to-appアプローチを用いることで、Flutterを一部の画面に統合することも可能です。
また、ネイティブ機能を利用するためにSwiftの実装が求められることもあります。
iOSエンジニアとして、Flutterプロジェクトに参画した際にSwiftの最新技術を使いたくなることは多いでしょう。
そうした場合、最新のSwift機能を利用できるのかを知りたくなるのではないでしょうか?
本セッションでは、特にSwift Package Manager (SwiftPM)とSwift 6の新機能に焦点を当て、Flutterプロジェクトにおける現状と今後の展望について詳しく解説します。
【話す内容】
【概要】
iOS アプリケーション開発におけるビルド時間の短縮は、開発効率を大幅に向上させる重要な要素です。本セッションでは、Clean Architecture と Swift Package Manager (SwiftPM) を組み合わせたマルチモジュール構成による実践的なアプローチを紹介し、具体的な実装例を通してビルド時間を短縮する方法を解説します。
【対象者】
・ ビルド時間に課題を感じている方
・ アーキテクチャの選定に悩んでいる方
・ Clean Architecture や SwiftPM によるマルチモジュール構成に興味がある方
【トーク内容】
・ Clean Architecture x SwiftPM のマルチモジュール構成がもたらすメリット
・ MVVM からのリアーキテクチャを通した具体的な実装方法
・ 実装する上での課題とその解決策の紹介
アプリ内でAPIキーやその他の秘密情報を扱う際、難読化やリポジトリ内での直接保持を避けることは情報漏えいリスクを低減するために重要です。従来、これらの対策には「cocoapods-keys」や「arkana」などのツールが使用されてきました。これらのツールはCocoaPodsのプラグイン機能やRubyによって機能が実現されているため、別途CocoaPodsやRubyの環境構築が必要です。
Swift Package Managerの機能だけで実現できれば、環境構築も簡単になり、パッケージ管理ツールをSwift Package Managerに統一することも容易です。Swift Package Managerの機能のみを使用することで、追加の環境構築が不要となり、プロジェクトのシンプルさと一貫性が向上します。
本LTでは、Swift Package Manager Onlyな環境を目指すべく開発した、Swift Package Pluginを活用した機密情報の難読化ツールの開発手法について説明します。
・ハードコードしてはいけない理由、難読化の必要性
・Swift Package Pluginを用いた難読化ツールについて
CarPlayとは車載ディスプレイでナビゲーションや音楽の再生が行えるものです。運転中に使用されることが多いため、CarPlayアプリは運転を妨げず、安全で使いやすい設計が求められます。
このトークでは、AppleのHuman Interface Guidelines(HIG)やプログラミングガイドを読み解き、ナビゲーションを行うデモアプリを通じて、使いやすく運転者にとって安全なCarPlayアプリの魅せ方を紹介します。
LTで話すこと:
・HIGから考えるCarPlayの最適な見せ方
・CarPlayアプリのパフォーマンス最適化
・実例で比較する安全な表示
Dive into the world of visionOS and discover how it can revolutionize AR development with a step-by-step guide to creating a dice app, which can roll dices with the users' gesture. In this session, you'll learn how to use SwiftUI, RealityKit, ImmersiveView and more to build an interactive and visually stunning application. I will cover everything from initial setup and design principles to advanced features like gesture recognition and real-time entity updates. By the end of the talk, you'll be equipped to push the boundaries of AR and create immersive experiences that captivate users.
iOS/iPadOS向けにアプリ開発を行う際に、「ViewController」を意識しないことはほぼないのではないでしょうか?
iOS 2.0の「UIViewController」を皮切りに、様々なViewControllerが提供されてきました。
私たちはこれらを実装し、カスタマイズして利用してきたかと思います。
では、これまでどれだけのViewControllerが登場し、どのような機能が実装可能になったのでしょうか?
このセッションでは、これまでに登場したViewControllerを機能紹介とサンプルコードとともに振り返ります。
想定する方々:
・iOS/iPadOS、それら以外のプラットフォーム向けアプリ開発・企画者
ゴール:
・知らなかったViewControllerを知り、今後の参考にできる
・提供できる画面・機能の概要を把握できる
アジェンダ:
※対象は「UIViewController」または「UINavigationController」を継承したクラス
エンジニアとして、私たちは日々多岐にわたる知識やスキルを学び、さまざまな問題を解決しています。たとえば、開発する機能の仕様やドメインの知識、プログラミング言語やライブラリの使い方など、多方面にわたる学習が必要です。これらの学習を積み重ねることで、より複雑な問題にも対処できるようになり、スキルアップも図れます。
しかし、学習には時間と労力がかかります。集中力や注意力も不可欠で、「覚えることが多くて大変だ…」「なかなか身に付かない…」と悩んだり挫折したりすることもあるでしょう。もしかしたら、それは学習方法が原因かもしれません。
効率よく学習を進めるためには、脳の仕組みを理解し、それに合わせた方法を取ることが重要です。本セッションでは、以下の点に焦点を当てます。
これらのトピックを中心に、技術的なスキルの習得に焦点を当て、今後の学習に活かせる考え方や方法を皆さまと共に探ります。
「業務で必要だから」「キャリアアップのため」「おもしろそう」など、学習理由は人それぞれ異なりますが、一つスキルが身に付くとさらに新しいスキルが身に付きやすくなり、世界がどんどん広がります。
このセッションを通じて、皆さまが日々の学習において具体的な改善策を見つけ、より効率的にスキルを身につける手助けができれば幸いです。
Swiftでテストを書く際、Xcodeに組み込まれたテストフレームワークである XCTest を利用することが多いかと思います。しかし、XCTest は当初、Swift ではなく Objective-C でテストを書くことを目的として作成されました。そのため、Swift5.5 から導入された Swift Concurrency への対応が不十分であるという問題点があります。
そこで登場したのが新しいテストフレームワークである SwiftTesting です。
SwiftTesting は、非同期プログラミングをより効果的にテストできるように設計されており、Swift6 からはこのフレームワークの利用がデフォルトになると考えられています。
このLTでは、以下の内容について紹介します。
・SwiftTesting と XCTest の違い
・SwiftTesting への移行作業
・SwiftTesting を使用する際のベストプラクティスとトラブルシューティング