標準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開発を比較しつつ、両者の違いやそれぞれのメリット・デメリットを整理することを目指します。どちらの技術も将来性があり、今後より活用されていくと予想されるため、この機会に両者を理解し、適切な技術選定ができるようになりましょう!
Swift OpenAPI Generatorとは、Appleから提供されているSwift Package Managerプラグインで、OpenAPIドキュメントからSwiftのクライアントとサーバーのコードを生成することができます。
他にもあるOpenAPIドキュメントからコード生成するツールとは違いSwiftPM製のプラグインなのでXcode内で利用することができます。
このLTでは、以下の内容を話します。
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を組み合わせたハイブリッドなアプリ開発において、スムーズな移行と効果的な実装を実現するためのポイントをお伝えします。
iOSのオーディオ関連APIを本格的に触るのはしんどいですが、そのしんどさをラップしてくれるフレームワークもいくつか用意されています。2Dゲーム開発用のSpriteKitもその一つで、これを使えば非ゲームなアプリにも簡単に空間を感じる効果音を追加することができます。ゲームエンジン界ではやや日陰な存在のSpriteKitを使って手軽に3D音響をアプリに加える方法をコード例を交えて紹介します。
プロジェクトの要求事項や自社サービスの特性から、複数のバックエンドサービスに依存した仕様設計となっているアプリケーションは決して少なくない事例かと思います。
弊社サービスの一つでもあるマネーフォワードクラウド確定申告アプリもその一つに該当します。アプリ内で提供している確定申告機能や会計機能、消費税申告機能に関するリソースは、社内施策のマイクロサービス化によりサービスごと独立した管理となっているため、クライアント側は複数バックエンドサービスを考慮した設計を行う必要がありました。
このLTでは、クライアント側で複数のバックエンドサービスを受け持つことで発生したつらみと、そこから打開策を切り開くまでの苦悩の道程を体験談からご紹介します。
アプリ開発において、ユーザーの認証機能は非常に重要です。安全かつ堅牢に認証基盤を作ることが必要とされます。
このトークではiOSアプリにFirebaseのOpenID Connect(OIDC)を活用した認証機能を組み込む方法についてご紹介します。
実際の大規模iOSアプリ開発プロジェクトで、OIDCを使用したユーザー認証機能の開発に取り組んで得られた経験や知見を共有します。
具体的なコード例や設計上の考慮事項も取り上げ、実践的な知識の共有ができるようにしたいと思います。
ハッカソンや業務委託での開発のような、限られた時間と制約のある環境で多機能なアプリを開発することは容易ではありません。
弊社の新卒研修では、3週間でTwitterライクなアプリを開発する研修が行われました。ユーザー認証、投稿や一覧表示の基本機能に加えて、いいね、フォロー、リツイートなどの様々な機能を一通り実装しました。
開発期間が限られ、制約もある中、チームメンバー同士で技術選定やアーキテクチャについて詳細に話し合いました。そしてチームメンバーのスキルや開発期間を考慮し、実装要件を満たすための適切な設計を考えました。
本トークでは、限られた時間と新卒メンバー同士の環境下で、どのように設計や技術選定を行い、ハイレベルな実装要件を達成したかについて共有します。
また私が感じた、新卒エンジニアから見たチーム開発での重要なポイントや改善点を共有します。
昨今のiOSアプリ開発に関わる技術トレンドの変化は目まぐるしく、後進育成においても、何を・どこまで・どのように教えるのが良いのか、悩む人も多いのではないでしょうか。
私たちのチームでは、過去2年間、チームの新卒入社メンバーに向けたOJTを実施し、VIPERベースのアーキテクチャのプロダクトコードを題材に、アプリ開発のスキルのインプットと開発チームへのオンボーディングをフォローしてきました。
本トークでは、トレーナー・トレーニーの両方の視点から過去2年分のOJTを振り返り、
などのトピックを中心に、開発者の育成をスタートする上で大切なことをお話しします。
皆さんが駆け出しの頃、「どう実装していいかわからない」「このバグを解決する方法がわからない」といった壁に直面した際、どのように対処していたでしょうか?
例えば、新規プロジェクトを別で作成して解決するまでトライアンドエラーを繰り返したり、それっぽい記事が見つかるまでググったり、公式ドキュメントを何時間もかけて漁ったりでしょうか?
これらのやり方は決して悪いことではありません。むしろ長期的な成長を考えれば、自力で解決する力がついたり、求める情報を見つける過程で新しいことを知れたりと、良いことづくしです。
ですが、業務として開発する際は別の話です。
効率的な解決方法や時間の重要性も考慮する必要があります。
本LTでは、先輩に質問すれば迅速に解決できる課題に数時間かけることのメリットとデメリットを提示しつつ、自己成長と効率的な業務遂行の両立を図るためのベストプラクティスを提案します。
UI作成において、Compositional Layout(複数のセクションを一つのUICollectionViewインスタンスで管理するためのレイアウト)を使用すると、特定のセクションだけのスクロールイベントを取得するのが難しいという問題があります。
これは、通常の方法(デリゲートメソッド)では全体のスクロールイベントは取得できるものの、セクションごとのスクロールイベントを直接取得することはできないためです。
例えば、セクションごとにUISegmentedControlを設置するといったケースでは、この問題を解決するために工夫が必要となります。
その一つの方法として、visibleItemsInvalidationHandler(表示中のセルが変わった時に呼ばれるハンドラ)を利用する方法があります。
具体的な使用例とその効果について、このLTで解説します。
パフォーマンスにネガティブな影響のあるコードは、意図せず簡単に書けてしまいます。
例えば、配列の中で条件に合う最初の要素を取得する場合はどうでしょうか?
配列に対し filter を適用した後に first を適用するよりも、first(where:) を用いる方が速いでしょう。
ならば、どのくらい速いのでしょうか?
このトークでは、パフォーマンスが悪化しうる6つのケースを挙げ、どのくらいの差が出るのかを実験・検証します。
実験の対象とする6つのケース
対象者
「高階関数」「カリー化」「部分適用」
これらのワードを読むと今にもめまいがしそうですね。
普段からSwiftを使う人なら、目にした回数を数え上げるとキリがないでしょう。耳にタコができて仕方がないでしょう。
さて、これらを人に説明してくださいと言われるとどうでしょうか?
ドキッとしたあなたは、湯婆婆と同じ間違いをするかもしれません。
このLTで話す内容
対象者
みなさん、SwiftUIでテストをどのように書いていますか?
本LTでは、SwiftUIのテストを行える ViewInspector というライブラリの紹介を行います。
SwiftUI時代のテスト実装の選択肢として ViewInspector どうでしょうか。
以下は本LTで話す内容の概要です。
「限られた時間で成果を出す!ハッカソンでiOSアプリを効率良く作るときの結論構成」へようこそ!
ハッカソンという制約のある環境で、短期間で品質の高いiOSアプリを開発することは困難です。
本トークでは、この困難を乗り越え、成功を収めるための手法を提案します。
特に焦点を当てるのは、アプリ開発の全フェーズにおける高速なコミュニケーションと改善のプロセスです。
私たちの実体験をもとに、具体的な事例と結論構成が、どのようにハッカソンの成功へと導き、参加者をチャンピオンにするかを解説します。
開発者がハッカソンで直面する問題と解決策について説明し、限られた時間を最大限に活用して高品質なアプリを作る為の具体的な道筋を示すことが本トークの目的です。
これからハッカソンに参加しようと考えている皆さん、このトークは皆さんのためのものです!皆さんの楽しいハッカソン体験、ここから始まります!
CoreBluetoothは、Appleが出しているiOSアプリでBLEを利用するためのフレームワークです。
BLEを利用することで、消費電力を低く抑えつつ、様々なWebサービスやアプリ、ハードウェアと連携したiOSアプリを開発できます。
しかしながら、BLEに関する用語や概念がわかりにくいと感じることがあるかもしれません。
今回のLTでは、CoreBluetoothを活用したデモアプリのコードを用いて、
BLEプログラミングの基礎から距離推定までをわかりやすく解説します。
まずは、BLEの基礎となる用語や概念を説明します。
その後、デモアプリのコードを用いて、実際にBLEプログラミングを行う方法を解説します。
更に、RSSIとTxPowerからの距離推定についても説明します。
ぜひこの機会にBLEプログラミングを学び、日々の開発に役立てていただけると幸いです。