Flutterは、単一のコードベースでiOSとAndroidの両方に対応するアプリを作成できるクロスプラットフォームフレームワークです。しかし、ネイティブアプリと比較すると、ユーザーエクスペリエンスやパフォーマンスに違いが生じることがあります。
多くの開発者はデザインを一つに統一して省エネを図るかもしれませんが、iOSネイティブの魅力に惚れ込んでいる自分としては、できる限りiOSネイティブに近づけたいと思っています。
このセッションでは、FlutterでiOSとAndroidのネイティブ感をどのように演出するかについて具体的な例を用いて説明します。具体的には、それぞれのプラットフォームに適応したウィジェットの作成方法や、プラットフォームチャネルを使ったネイティブコードの統合方法などを取り上げます。そして試行錯誤の過程で得た難しかったポイントやTips、Flutterでできること・できないことについて共有します。
ネイティブ好きだけどFlutterを使わないといけないとなっている方々にぜひ聞いてほしい発表です。
macOS上で動作するIMEを開発するために、Appleが公式で提供するInputMethodKitを利用して開発しました。
InputMethodKitでは主に、IMKInputController、IMKCandidates、IMKServerの3つのクラスを使い開発します。実際の開発中に、特にロジックが集中するIMKInputControllerのコードが肥大化し、コードの見通しが悪くなるという問題に直面しました。他にもIME開発特有のデバッグの煩わしさもありました。
そこで、コードの見通しをよくするためにThe Composable Architecture(TCA)を導入し、IMEのデバッグの煩わしさを軽減するために、fastlaneを使った自動化や、Repository層とUseCase層を採用したマルチモジュール構成で開発する方針を採用しました。
これらについて実際に書いたコードと一緒に以下の内容について解説します。
SwiftUIは革命的なUIフレームワークであり、宣言的なUI構築を可能にします。UIKitを使っているアプリでこれからSwiftUIへの移行を考えているアプリ開発者は多いと思います。
私は現在、日本最大のフリマアプリ「メルカリ」を通じて全国のお店で利用できるスマホ決済サービス「メルペイ」で、既存画面のUIKitからSwiftUIへの移行プロジェクトをリードしています。このプロジェクトでは、数百画面に及ぶUIKitベースの画面をSwiftUIに移行しています。
この講演では、数百画面のUIKitベースの画面をSwiftUIに移行するプロジェクトのベストプラクティスを共有します。
この講演は、以下の方々に特におすすめです。
・既存のUIKitベースのアプリをSwiftUIへ移行していきたい方。
・宣言的UIフレームワークの有効性を信じていて、社内でSwiftUIへの移行プロジェクトを立ち上げたい方。
・Mobileアプリ開発の大規模なリファクタリングプロジェクトをリードするためのノウハウを知りたい方。
UIKitからSwiftUIへの移行は、多くのiOSエンジニアにとって興味深いトピックの一つだと思います。
私のプレゼンテーションが、より多くのiOSエンジニアのイノベーションを後押しすることを願っています。
一緒にSwiftUIの活用を進めていきましょう。
昨年度に入院することになり、入院中にトイレの時間と回数を記録をするように言われましたが、いい感じに記録できるアプリがありませんでした
ないときは自分で作ればいい!
ということで、手術までの時間に突貫でトイレ記録アプリを実装する入院アプリハッカソンを行いました!
せっかくなら自分だけでなく、自分以外の人にとっても使いやすいアプリを作りたいものです
そのため手術前の短時間で作ったものから、残りの入院期間や退院後の時間や別の入院期間でのドッグフーディングや他の人からのフィードバックを踏まえて、少しずつUX改善と機能追加を重ねていきました
この発表では今回のアプリ実装や経験をもとに、今後の展望や希望も含めた以下のUX改善のポイントについてお話しします
UX改善に決まった正解はないので、試行錯誤しながら少しずつ改善していくしかありません
今回の発表を通して皆さんの開発しているアプリやサービスのUX改善のヒントを掴んでいただければと思います!
App Clip を実装している個人開発者の方はいらっしゃるでしょうか?
業務開発でも App Clip の開発経験がなかった私ですが、どうしても App Clip の実装がしたくてどうにかしてやりたいと思っていたときにふと思いつきました。
「NFC タグに App Clipコードを印刷した紙を貼り付けて、アプリ布教用に実装できるのでは?」
実際に20時間程度で作ったアプリに App Clip を実装し、デバッグや App Store の審査も通したときの経験談をお話します。
また、ローカル体験や App Clip Code Generator の使い方、 App Store Connect 上での操作方法など、可能な限りを LT 形式でまとめて紹介します。
App Clip を実装している個人開発者の方はいらっしゃるでしょうか?
業務開発でも App Clip の開発経験がなかった私ですが、どうしても App Clip の実装がしたくてどうにかしてやりたいと思っていたときにふと思いつきました。
「NFC タグに App Clipコードを印刷した紙を貼り付けて、アプリ布教用に実装できるのでは?」
実際に20時間程度で作ったアプリに App Clip を実装し、デバッグや App Store の審査も通したときの経験談をお話します。
また、ローカル体験や App Clip Code Generator の使い方、 App Store Connect 上での操作方法など、可能な限りを LT 形式でまとめて紹介します。
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でのゲーム開発の世界を少し覗いてみませんか?
有名な画像処理ライブラリの一つに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分で実感していただきます!
以下の内容について紹介します。
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を用いた難読化ツールについて
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.