標準NavigationBarにできないことをしたくてカスタムNavigationBarを作ってみました。挙動を標準NavigationBarに近づけるためにしたこと、カスタムしたことによる不具合への対処法をお伝えします。
普段開発をしていると触らない方が難しいOSS。
XcodesApp などアプリ自体を OSS で開発しているものもあります。
業務の開発では重宝されながらもOSSアプリプロジェクトではなかなか実現できない手法、それは Beta 版アプリ配布です。
証明書の問題、配布先の問題をはじめとした様々な問題がありますが、それを乗り越える方法が存在します。そう、 Xcode Cloud と TestFlight です。
このトークでは、実際にOSSのアプリプロジェクトで行ったBeta版アプリ配布の経験をもとにOSSアプリプロジェクトでBeta版アプリ配布を安全に行うにはどうすれば良いかについて話します。
このトークの内容をもとにご自身のOSSアプリプロジェクトに対してBeta版アプリ配布を入れてみませんか?
では、良いOSSライフを!
私は普段Androidアプリ開発を生業としています。「iOSもできるようになりたい!」と思いつつも、時が経ち、Compose for iOSといったマルチプラットフォーム技術も台頭してきました。そして「iOSを学ぶ意義」を考える機会が多くなりました。「KotlinでiOS開発もできるじゃん!」と思いつつもSwiftでSwiftUIを書き、ネイティブ開発を理解しておくことは重要だと考えています。そこで本LTでは、そんな今だからこそAndroidエンジニアもiOS開発を学ぶ必要があると考え、Compose for iOSによるiOS開発とSwiftUIによるiOS開発を比較しつつ、両者の違いやそれぞれのメリット・デメリットを整理することを目指します。どちらの技術も将来性があり、今後より活用されていくと予想されるため、この機会に両者を理解し、適切な技術選定ができるようになりましょう!
SwiftUI登場から数年経ち、さてそろそろうちのアプリでも、と導入に挑んだものの、iOS 14もサポートするUIKit製アプリへのSwiftUI部分導入には辛いこと、諦めければいけないことがたくさんありました。このトークでは、実際の開発現場で起きた思った通りにいかなかった事例、うまく回避した事例、回避できず仕様を変更した事例を矢継ぎ早に紹介して供養したいと思います。
残念ながら今のところ全然見かけないApp Clip
App Clipの基本やメリット、ビジネスでの活用方法、そして将来の展望について、わかりやすくお伝えします。気軽にアプリが使える便利さを体験してみませんか!?私なりの活用方法を提案させていただきます!
みなさん存在を忘れていそうな気がしますが、実はWWDC22,23でアップデートがされているApp Clipの最新情報を織り交ぜながら楽しくご紹介します!!
ios17でSwiftUIのViewにMetalのエフェクトを簡単にかける機能が追加されました。
この機能の登場によって、従来はグラフィックスの専門知識が必要であったUIがより簡単に作成可能となりました。
ゲーム等で利用されるパーリンノイズアルゴリズムを利用したエフェクトの作成方法を例にあげて、この素晴らしい新機能を5分で紹介したいと思います!
WWDC19以降、iOSアプリ開発におけるSwitftUIでの実装が広く一般的になりつつあります。
しかし、既存のUIKitベースのアプリを完全にSwiftUIにリファクタするのは容易ではありません。
そのため一時的な解決策として、ボタンやアラートなどの共通UIコンポーネントのみSwiftUIで実装するケースがあります。
またViewがUIKitで実装されているために、SwiftUIで実装されたコンポーネントを利用して新しくUIKitで別のコンポーネントを実装しなければならない時、将来的にSwiftUIへの移行を考慮する必要があります。
本LTでは、このような状況下でのベストプラクティスと、考慮事項について解説します。
SwiftUIと UIKitを組み合わせたハイブリッドなアプリ開発において、スムーズな移行と効果的な実装を実現するためのポイントをお伝えします。
プロジェクトの要求事項や自社サービスの特性から、複数のバックエンドサービスに依存した仕様設計となっているアプリケーションは決して少なくない事例かと思います。
弊社サービスの一つでもあるマネーフォワードクラウド確定申告アプリもその一つに該当します。アプリ内で提供している確定申告機能や会計機能、消費税申告機能に関するリソースは、社内施策のマイクロサービス化によりサービスごと独立した管理となっているため、クライアント側は複数バックエンドサービスを考慮した設計を行う必要がありました。
このLTでは、クライアント側で複数のバックエンドサービスを受け持つことで発生したつらみと、そこから打開策を切り開くまでの苦悩の道程を体験談からご紹介します。
アプリ開発において、ユーザーの認証機能は非常に重要です。安全かつ堅牢に認証基盤を作ることが必要とされます。
このトークではiOSアプリにFirebaseのOpenID Connect(OIDC)を活用した認証機能を組み込む方法についてご紹介します。
実際の大規模iOSアプリ開発プロジェクトで、OIDCを使用したユーザー認証機能の開発に取り組んで得られた経験や知見を共有します。
具体的なコード例や設計上の考慮事項も取り上げ、実践的な知識の共有ができるようにしたいと思います。
ハッカソンや業務委託での開発のような、限られた時間と制約のある環境で多機能なアプリを開発することは容易ではありません。
弊社の新卒研修では、3週間でTwitterライクなアプリを開発する研修が行われました。ユーザー認証、投稿や一覧表示の基本機能に加えて、いいね、フォロー、リツイートなどの様々な機能を一通り実装しました。
開発期間が限られ、制約もある中、チームメンバー同士で技術選定やアーキテクチャについて詳細に話し合いました。そしてチームメンバーのスキルや開発期間を考慮し、実装要件を満たすための適切な設計を考えました。
本トークでは、限られた時間と新卒メンバー同士の環境下で、どのように設計や技術選定を行い、ハイレベルな実装要件を達成したかについて共有します。
また私が感じた、新卒エンジニアから見たチーム開発での重要なポイントや改善点を共有します。
昨今のiOSアプリ開発に関わる技術トレンドの変化は目まぐるしく、後進育成においても、何を・どこまで・どのように教えるのが良いのか、悩む人も多いのではないでしょうか。
私たちのチームでは、過去2年間、チームの新卒入社メンバーに向けたOJTを実施し、VIPERベースのアーキテクチャのプロダクトコードを題材に、アプリ開発のスキルのインプットと開発チームへのオンボーディングをフォローしてきました。
本トークでは、トレーナー・トレーニーの両方の視点から過去2年分のOJTを振り返り、
などのトピックを中心に、開発者の育成をスタートする上で大切なことをお話しします。
皆さんが駆け出しの頃、「どう実装していいかわからない」「このバグを解決する方法がわからない」といった壁に直面した際、どのように対処していたでしょうか?
例えば、新規プロジェクトを別で作成して解決するまでトライアンドエラーを繰り返したり、それっぽい記事が見つかるまでググったり、公式ドキュメントを何時間もかけて漁ったりでしょうか?
これらのやり方は決して悪いことではありません。むしろ長期的な成長を考えれば、自力で解決する力がついたり、求める情報を見つける過程で新しいことを知れたりと、良いことづくしです。
ですが、業務として開発する際は別の話です。
効率的な解決方法や時間の重要性も考慮する必要があります。
本LTでは、先輩に質問すれば迅速に解決できる課題に数時間かけることのメリットとデメリットを提示しつつ、自己成長と効率的な業務遂行の両立を図るためのベストプラクティスを提案します。
「高階関数」「カリー化」「部分適用」
これらのワードを読むと今にもめまいがしそうですね。
普段からSwiftを使う人なら、目にした回数を数え上げるとキリがないでしょう。耳にタコができて仕方がないでしょう。
さて、これらを人に説明してくださいと言われるとどうでしょうか?
ドキッとしたあなたは、湯婆婆と同じ間違いをするかもしれません。
このLTで話す内容
対象者
みなさん、SwiftUIでテストをどのように書いていますか?
本LTでは、SwiftUIのテストを行える ViewInspector というライブラリの紹介を行います。
SwiftUI時代のテスト実装の選択肢として ViewInspector どうでしょうか。
以下は本LTで話す内容の概要です。
「限られた時間で成果を出す!ハッカソンでiOSアプリを効率良く作るときの結論構成」へようこそ!
ハッカソンという制約のある環境で、短期間で品質の高いiOSアプリを開発することは困難です。
本トークでは、この困難を乗り越え、成功を収めるための手法を提案します。
特に焦点を当てるのは、アプリ開発の全フェーズにおける高速なコミュニケーションと改善のプロセスです。
私たちの実体験をもとに、具体的な事例と結論構成が、どのようにハッカソンの成功へと導き、参加者をチャンピオンにするかを解説します。
開発者がハッカソンで直面する問題と解決策について説明し、限られた時間を最大限に活用して高品質なアプリを作る為の具体的な道筋を示すことが本トークの目的です。
これからハッカソンに参加しようと考えている皆さん、このトークは皆さんのためのものです!皆さんの楽しいハッカソン体験、ここから始まります!
Swiftの新機能、マクロが発表されてからたくさんの方がさまざまな使い方を紹介しています。このLTではAppleが公式に紹介しているものを中心にインターネット上で見つかる様々なマクロを紹介、共有し、Swiftでのマクロの可能性を探ります。
話すこと
話さないこと
Swiftのマクロはまだまだ開発途中であり、今後も機能が拡張されることが期待されます。参加者の皆さんも、自分なりのマクロを開発してみてはいかがでしょうか。
みなさんはアプリでの「マスターデータ」の扱いはどうしていますか?
私たちのアプリでは、駅・市区町村・町域など「合計10万レコード以上」のマスタデータを扱う必要がありました。
また、それらのデータは不定期に更新されるため「データのアップデート」にも対応しなければいけません。
この課題に対して、私たちは「マスターデータを事前投入したRealmファイルをバンドルする」という手法で対応しました!
ということで、このLTでは…
について紹介したいと思います。
※ このLTでは「リモートから取得・更新する方法」に関しては扱いません。
皆さんは、職場の環境が変わったときや長期の休暇から復帰したときに、慣れない環境に素早くキャッチアップできるように、そしてワークライフバランスを維持するためにやって良かった/やっておけば良かったことはありますか?
私ごとですが、昨年に人生初の転職をし、その3ヶ月後には第一子が生まれて約3ヶ月間の育休を取得しました。つまり、6ヶ月間で2回の職場復帰を経験したことになります。
本トークでは、私が職場復帰を経験した中で、やって良かった/やっておけば良かったと思うことを紹介します。これから皆さんが転職や異動をされたり、長期休暇を取得されたりした際の参考になると嬉しいです。
SwiftはRustから多くのインスピレーションを得ており、特に今後のOwnershipの導入により、その類似性がより感じられるようになっています。
主な共通点として、パターンマッチ、リッチなenum、Option(nal)とResult、async/await構文、trait(protocol)などが挙げられます。(他にもたくさんあります)
また、新たに追加されたマクロ機能や、コンパイラによるスレッドセーフなコードの保証も共通の特徴です。
本発表では、これらの類似点に触れつつ、SwiftエンジニアがRustを、あるいはRustエンジニアがSwiftを書き始めるハードルを下げる新たな視点を提供します!
RxSwiftプロジェクトでも積極的にSwiftUI, Swift Concurrencyを取り入れている機会が増えてきたのではないでしょうか。
またSwiftUIを使用している画面ではSwift Concurrencyを使いたい場面もあるのではないでしょうか。
例えば.refreshable(action:) View Modifierでは、非同期関数を受け取ることができるので、async/await関数を使用したい時があるとおもいます。
このトークでは、既存のRxSwiftベースで書かれているプロジェクトにSwift Concurrencyを取り入れて、SwiftUIで使用する例を紹介します
この発表で、RxSwiftベースで書かれているプロジェクトにもSwift Concurrencyを取り入れてもらう参考になれば、嬉しいです。