ルーキーズLT(5分)

カスタムNavigationBar処世術

標準NavigationBarにできないことをしたくてカスタムNavigationBarを作ってみました。挙動を標準NavigationBarに近づけるためにしたこと、カスタムしたことによる不具合への対処法をお伝えします。

ルーキーズLT(5分)

決定版!?OSSアプリプロジェクトでのBeta版アプリ配布の方法「Xcode Cloud + TestFlight」

ry_itto 伊藤凌也

普段開発をしていると触らない方が難しいOSS。
XcodesApp などアプリ自体を OSS で開発しているものもあります。

業務の開発では重宝されながらもOSSアプリプロジェクトではなかなか実現できない手法、それは Beta 版アプリ配布です。
証明書の問題、配布先の問題をはじめとした様々な問題がありますが、それを乗り越える方法が存在します。そう、 Xcode Cloud と TestFlight です。

このトークでは、実際にOSSのアプリプロジェクトで行ったBeta版アプリ配布の経験をもとにOSSアプリプロジェクトでBeta版アプリ配布を安全に行うにはどうすれば良いかについて話します。

このトークの内容をもとにご自身のOSSアプリプロジェクトに対してBeta版アプリ配布を入れてみませんか?
では、良いOSSライフを!

2
ルーキーズLT(5分)

Androidしか触ったことない私がちゃんとSwiftUIを触ってみた

Kaito_Dogi Kaito-Dogi

私は普段Androidアプリ開発を生業としています。「iOSもできるようになりたい!」と思いつつも、時が経ち、Compose for iOSといったマルチプラットフォーム技術も台頭してきました。そして「iOSを学ぶ意義」を考える機会が多くなりました。「KotlinでiOS開発もできるじゃん!」と思いつつもSwiftでSwiftUIを書き、ネイティブ開発を理解しておくことは重要だと考えています。そこで本LTでは、そんな今だからこそAndroidエンジニアもiOS開発を学ぶ必要があると考え、Compose for iOSによるiOS開発とSwiftUIによるiOS開発を比較しつつ、両者の違いやそれぞれのメリット・デメリットを整理することを目指します。どちらの技術も将来性があり、今後より活用されていくと予想されるため、この機会に両者を理解し、適切な技術選定ができるようになりましょう!

採択
2023/09/02 17:30〜
Track A
ルーキーズLT(5分)

5分で分かるSwift OpenAPI Generatorの使い方

naoki_mrmt naoki-mrmt / ばくぷー

Swift OpenAPI Generatorとは、Appleから提供されているSwift Package Managerプラグインで、OpenAPIドキュメントからSwiftのクライアントとサーバーのコードを生成することができます。

他にもあるOpenAPIドキュメントからコード生成するツールとは違いSwiftPM製のプラグインなのでXcode内で利用することができます。

このLTでは、以下の内容を話します。

  • Swift OpenAPI Generatorとは?
  • Swift OpenAPI Generatorを使う上で気をつけなければならないこと
  • Swift OpenAPI Generatorを使った時のつまりどころ(あれば)
  • Swift OpenAPI Generatorの使い方
ルーキーズLT(5分)

痛みに耐えてよく頑張ったSwiftUI導入録

oinariman 三原亮介

SwiftUI登場から数年経ち、さてそろそろうちのアプリでも、と導入に挑んだものの、iOS 14もサポートするUIKit製アプリへのSwiftUI部分導入には辛いこと、諦めければいけないことがたくさんありました。このトークでは、実際の開発現場で起きた思った通りにいかなかった事例、うまく回避した事例、回避できず仕様を変更した事例を矢継ぎ早に紹介して供養したいと思います。

1
ルーキーズLT(5分)

App Clip 日本で流行らせてみませんか?

mrs1669 しろくま

残念ながら今のところ全然見かけないApp Clip
App Clipの基本やメリット、ビジネスでの活用方法、そして将来の展望について、わかりやすくお伝えします。気軽にアプリが使える便利さを体験してみませんか!?私なりの活用方法を提案させていただきます!
みなさん存在を忘れていそうな気がしますが、実はWWDC22,23でアップデートがされているApp Clipの最新情報を織り交ぜながら楽しくご紹介します!!

3
ルーキーズLT(5分)

SwiftUI×Metalでカッコ良いノイズエフェクトUIを作成してみよう

ios17でSwiftUIのViewにMetalのエフェクトを簡単にかける機能が追加されました。
この機能の登場によって、従来はグラフィックスの専門知識が必要であったUIがより簡単に作成可能となりました。
ゲーム等で利用されるパーリンノイズアルゴリズムを利用したエフェクトの作成方法を例にあげて、この素晴らしい新機能を5分で紹介したいと思います!

2
ルーキーズLT(5分)

共通コンポーネント実装におけるSwiftUIとUIKitのハイブリッド実装時の考慮すべき点

ystg1302 神原良継

WWDC19以降、iOSアプリ開発におけるSwitftUIでの実装が広く一般的になりつつあります。
しかし、既存のUIKitベースのアプリを完全にSwiftUIにリファクタするのは容易ではありません。
そのため一時的な解決策として、ボタンやアラートなどの共通UIコンポーネントのみSwiftUIで実装するケースがあります。

またViewがUIKitで実装されているために、SwiftUIで実装されたコンポーネントを利用して新しくUIKitで別のコンポーネントを実装しなければならない時、将来的にSwiftUIへの移行を考慮する必要があります。

本LTでは、このような状況下でのベストプラクティスと、考慮事項について解説します。
SwiftUIと UIKitを組み合わせたハイブリッドなアプリ開発において、スムーズな移行と効果的な実装を実現するためのポイントをお伝えします。

3
採択
2023/09/02 17:30〜
Track B
ルーキーズLT(5分)

手抜き3D音響レシピ

oinariman 三原亮介

iOSのオーディオ関連APIを本格的に触るのはしんどいですが、そのしんどさをラップしてくれるフレームワークもいくつか用意されています。2Dゲーム開発用のSpriteKitもその一つで、これを使えば非ゲームなアプリにも簡単に空間を感じる効果音を追加することができます。ゲームエンジン界ではやや日陰な存在のSpriteKitを使って手軽に3D音響をアプリに加える方法をコード例を交えて紹介します。

ルーキーズLT(5分)

複数のバックエンドサービスに依存しているアプリが API gateway を採用するまでの道のり

ksCap_0114 Sato Ken

プロジェクトの要求事項や自社サービスの特性から、複数のバックエンドサービスに依存した仕様設計となっているアプリケーションは決して少なくない事例かと思います。
弊社サービスの一つでもあるマネーフォワードクラウド確定申告アプリもその一つに該当します。アプリ内で提供している確定申告機能や会計機能、消費税申告機能に関するリソースは、社内施策のマイクロサービス化によりサービスごと独立した管理となっているため、クライアント側は複数バックエンドサービスを考慮した設計を行う必要がありました。
このLTでは、クライアント側で複数のバックエンドサービスを受け持つことで発生したつらみと、そこから打開策を切り開くまでの苦悩の道程を体験談からご紹介します。

ルーキーズLT(5分)

iOSアプリにFirebaseのOpenID Connectを使った認証機能を組み込む

アプリ開発において、ユーザーの認証機能は非常に重要です。安全かつ堅牢に認証基盤を作ることが必要とされます。

このトークではiOSアプリにFirebaseのOpenID Connect(OIDC)を活用した認証機能を組み込む方法についてご紹介します。
実際の大規模iOSアプリ開発プロジェクトで、OIDCを使用したユーザー認証機能の開発に取り組んで得られた経験や知見を共有します。
具体的なコード例や設計上の考慮事項も取り上げ、実践的な知識の共有ができるようにしたいと思います。

3
ルーキーズLT(5分)

新卒エンジニアが挑む!! Twitterライクなアプリを3週間でつくる研修

ハッカソンや業務委託での開発のような、限られた時間と制約のある環境で多機能なアプリを開発することは容易ではありません。

弊社の新卒研修では、3週間でTwitterライクなアプリを開発する研修が行われました。ユーザー認証、投稿や一覧表示の基本機能に加えて、いいね、フォロー、リツイートなどの様々な機能を一通り実装しました。

開発期間が限られ、制約もある中、チームメンバー同士で技術選定やアーキテクチャについて詳細に話し合いました。そしてチームメンバーのスキルや開発期間を考慮し、実装要件を満たすための適切な設計を考えました。

本トークでは、限られた時間と新卒メンバー同士の環境下で、どのように設計や技術選定を行い、ハイレベルな実装要件を達成したかについて共有します。
また私が感じた、新卒エンジニアから見たチーム開発での重要なポイントや改善点を共有します。

7
ルーキーズLT(5分)

VIPERアーキテクチャのプロダクトコードで新卒メンバーへのOJTを2年間やって見えてきたアプリ開発者育成のスタートダッシュで大切なこと

Yutaka Kono

昨今のiOSアプリ開発に関わる技術トレンドの変化は目まぐるしく、後進育成においても、何を・どこまで・どのように教えるのが良いのか、悩む人も多いのではないでしょうか。

私たちのチームでは、過去2年間、チームの新卒入社メンバーに向けたOJTを実施し、VIPERベースのアーキテクチャのプロダクトコードを題材に、アプリ開発のスキルのインプットと開発チームへのオンボーディングをフォローしてきました。

本トークでは、トレーナー・トレーニーの両方の視点から過去2年分のOJTを振り返り、

  • どのタイミングでアーキテクチャっていう概念をレクチャーしたの?
  • 一番最初、アプリの中のどの部分のコードを書くタスクをお願いしたの?
  • リモートワークでOJTを進めていくときにコミュニケーションで気をつけた部分は?

などのトピックを中心に、開発者の育成をスタートする上で大切なことをお話しします。

ルーキーズLT(5分)

新卒エンジニアが陥りがちなパッション駆動開発の落とし穴

ystg1302 神原良継

皆さんが駆け出しの頃、「どう実装していいかわからない」「このバグを解決する方法がわからない」といった壁に直面した際、どのように対処していたでしょうか?
例えば、新規プロジェクトを別で作成して解決するまでトライアンドエラーを繰り返したり、それっぽい記事が見つかるまでググったり、公式ドキュメントを何時間もかけて漁ったりでしょうか?
これらのやり方は決して悪いことではありません。むしろ長期的な成長を考えれば、自力で解決する力がついたり、求める情報を見つける過程で新しいことを知れたりと、良いことづくしです。

ですが、業務として開発する際は別の話です。
効率的な解決方法や時間の重要性も考慮する必要があります。

本LTでは、先輩に質問すれば迅速に解決できる課題に数時間かけることのメリットとデメリットを提示しつつ、自己成長と効率的な業務遂行の両立を図るためのベストプラクティスを提案します。

6
採択
2023/09/02 17:25〜
Track B
ルーキーズLT(5分)

スクロールを制する者はセクションを制す〜Compositional LayoutにおけるUISegmentedControlの活用〜

Daue_Ueda23 おじおじ

UI作成において、Compositional Layout(複数のセクションを一つのUICollectionViewインスタンスで管理するためのレイアウト)を使用すると、特定のセクションだけのスクロールイベントを取得するのが難しいという問題があります。
これは、通常の方法(デリゲートメソッド)では全体のスクロールイベントは取得できるものの、セクションごとのスクロールイベントを直接取得することはできないためです。

例えば、セクションごとにUISegmentedControlを設置するといったケースでは、この問題を解決するために工夫が必要となります。
その一つの方法として、visibleItemsInvalidationHandler(表示中のセルが変わった時に呼ばれるハンドラ)を利用する方法があります。
具体的な使用例とその効果について、このLTで解説します。

採択
2023/09/02 17:10〜
Track A
ルーキーズLT(5分)

Swiftコードのパフォーマンス悪化 - 6つのケースでの実験結果を報告

akihiro_kokubo Akihiro Kokubo

パフォーマンスにネガティブな影響のあるコードは、意図せず簡単に書けてしまいます。
例えば、配列の中で条件に合う最初の要素を取得する場合はどうでしょうか?
配列に対し filter を適用した後に first を適用するよりも、first(where:) を用いる方が速いでしょう。
ならば、どのくらい速いのでしょうか?
このトークでは、パフォーマンスが悪化しうる6つのケースを挙げ、どのくらいの差が出るのかを実験・検証します。

実験の対象とする6つのケース

  • コレクション内のオブジェクトの存在確認
  • コレクションが空かどうかの確認
  • 文字列が空文字かどうかの確認
  • コレクション内の条件に合う最初のオブジェクトの取得
  • コレクション内の最小のオブジェクトの取得
  • コレクション内の全てのオブジェクトが条件を満たすことの確認

対象者

  • “Swifty” なコードを書きたい人
ルーキーズLT(5分)

プログラミング言語処理系の単位を落単した湯婆婆「カリー化というのかい?贅沢な名だねぇ。今日からお前の名前は部分適用だ!」

akihiro_kokubo Akihiro Kokubo

「高階関数」「カリー化」「部分適用」
これらのワードを読むと今にもめまいがしそうですね。
普段からSwiftを使う人なら、目にした回数を数え上げるとキリがないでしょう。耳にタコができて仕方がないでしょう。
さて、これらを人に説明してくださいと言われるとどうでしょうか?
ドキッとしたあなたは、湯婆婆と同じ間違いをするかもしれません。

このLTで話す内容

  • 関数型プログラミングの考え方
  • 高階関数とは
  • カリー化とは
  • 部分適用とは
  • 高階関数・カリー化・ 部分適用の使い所

対象者

  • タイトルを読んで、湯婆婆のセリフに違和感を持たなかった人
  • 関数型プログラミングの世界で出てくる概念を改めて整理したい人
11
ルーキーズLT(5分)

ViewInspector 使ってSwiftUIのテスト書いてみようって話

ios_hamada dahama

みなさん、SwiftUIでテストをどのように書いていますか?

本LTでは、SwiftUIのテストを行える ViewInspector というライブラリの紹介を行います。
SwiftUI時代のテスト実装の選択肢として ViewInspector どうでしょうか。

以下は本LTで話す内容の概要です。

  • ViewInspectorとは何か?
  • ViewInspectorを使ったテストの例
  • ViewInspectorの利点とデメリット
  • その他のSwiftUIテストに関する情報
1
ルーキーズLT(5分)

限られた時間で成果を出す!ハッカソンでiOSアプリを効率良く作るときの結論構成

ojun_9 ojun

「限られた時間で成果を出す!ハッカソンでiOSアプリを効率良く作るときの結論構成」へようこそ!

ハッカソンという制約のある環境で、短期間で品質の高いiOSアプリを開発することは困難です。
本トークでは、この困難を乗り越え、成功を収めるための手法を提案します。

特に焦点を当てるのは、アプリ開発の全フェーズにおける高速なコミュニケーションと改善のプロセスです。
私たちの実体験をもとに、具体的な事例と結論構成が、どのようにハッカソンの成功へと導き、参加者をチャンピオンにするかを解説します。

開発者がハッカソンで直面する問題と解決策について説明し、限られた時間を最大限に活用して高品質なアプリを作る為の具体的な道筋を示すことが本トークの目的です。

これからハッカソンに参加しようと考えている皆さん、このトークは皆さんのためのものです!皆さんの楽しいハッカソン体験、ここから始まります!

採択
2023/09/02 17:15〜
Track A
ルーキーズLT(5分)

実践CoreBluetoothプログラミング〜BLEの基礎から距離推定までをわかりやすく解説!〜

RioFujimon 藤門 莉生

CoreBluetoothは、Appleが出しているiOSアプリでBLEを利用するためのフレームワークです。
BLEを利用することで、消費電力を低く抑えつつ、様々なWebサービスやアプリ、ハードウェアと連携したiOSアプリを開発できます。
しかしながら、BLEに関する用語や概念がわかりにくいと感じることがあるかもしれません。

今回のLTでは、CoreBluetoothを活用したデモアプリのコードを用いて、
BLEプログラミングの基礎から距離推定までをわかりやすく解説します。

まずは、BLEの基礎となる用語や概念を説明します。
その後、デモアプリのコードを用いて、実際にBLEプログラミングを行う方法を解説します。
更に、RSSIとTxPowerからの距離推定についても説明します。

ぜひこの機会にBLEプログラミングを学び、日々の開発に役立てていただけると幸いです。