レギュラートーク(20分)

プログラミング教材を作ろう!Playground Book概論

nirazo Kenzo Nirasawa

学習指導要領の改訂に伴い、プログラミング教育は2020年度から小学校で必修化され、翌年には中学校でも必修化されました。
そして、AppleからSwift Playground Bookを使った中学校向けの教材もリリースされています。

プログラミング教育にフォーカスが当たり始めた今、我々も若きエンジニアを育てるために何かできることはないでしょうか?
Swift Playground Bookなら、若い世代にプログラミングの楽しさを知ってもらうための教材作りがSwiftでできるのです。

本セッションではXcodeでPlayground Bookを作る方法からデバッグ方法、リリースの方法までを実際にコードを見ながら説明していきます。
アプリ開発とは全く異なるXcodeプロジェクトの構造から始まり、特殊な文章表現・単語説明機能などPlayground Bookならではの内容について解説します。

2
レギュラートーク(40分)

CloudKitでiOSアプリ開発をパワーアップ!クラウドの力で新たな次元へ

tsuzuki817 Ryo Tsuzukihashi

CloudKit使ってますか?

CloudKitはAppleが提供するクラウドサービスで iOS、macOS、watchOS、tvOSなどのAppleのエコシステム内で利用できます。
CloudKitを使用することで、データの保存、同期、共有、認証などの機能を簡単に実装することができます。

このトークでは、比較的わかりやすい言葉でCloudKitの活用方法を解説し、参加者が実際に使える知識やスキルを身につけることを目指します。
ぜひご参加いただき、クラウドの力を借りて驚くようなiOSアプリを開発しましょう!

アジェンダ(仮)

  • CloudKitの基礎
  • CloudKitを取り入れた設計
  • CloudKit Consoleでデータを見る
  • メリット・デメリット
  • etc...
1
LT(5分)

なぜあなたのPRはマージされないのか

WorldDownTown Keisuke Shoji

本発表では、リモートワーク環境でのPR (Pull Request) コミュニケーションに焦点を当て、その効率化と品質向上のための具体的なテクニックを共有します。

  • PRのマージを迅速かつ円滑に進めるためのコツを紹介します。タイトルやdescriptionに含めるべき要素、PR作成者が気をつけるべき点(レビュアーの負荷軽減、大きな変更の小分割、検証方法の明記、シミュレータの設定など)をに説明します。
  • PRのレビュー側が心掛けるべきことについて議論します。コードレビューのコミュニケーション方法、効率的なレビューのためのGitHubの機能活用法などを提案します。
  • これらのプラクティスがもたらす副次的な効果について触れます。丁寧なPRがどのようにチーム全体の効率と品質を向上させるのかを概観します。

必要十分なコミュニケーションで素早くPRがマージされるための知見を提供します。

2
採択
2023/09/03 13:55〜
Track B
レギュラートーク(20分)

こういうのは標準APIいいよね

WorldDownTown Keisuke Shoji

iOSアプリ開発者の多くが、あらゆる問題に対する解決策としてOSSライブラリに頼りがちですが、実はFoundation 等の標準APIだけで十分なケースも多いことをご存知でしょうか?
本発表では、44個ものOSSライブラリに依存していたアプリが、いかにしてその数を15個まで削減し、そのプロセスでiOSの標準APIの力を再発見したかを具体的に解説します。

具体的な事例とともに、標準APIで十分に解決可能だった問題や、ライブラリ削減によるアプリのパフォーマン向上について共有します。
さらに、全てのライブラリを排除すべきではないことも強調し、どのライブラリを選択し続け、どのライブラリを削除したのかを明示します。

レギュラートーク(20分)

Firebase Dynamic Linksがサービス終了!?いったいどうなっちゃうの〜!?

n_atmark あつや

先日、Firebase Dynamic Links (以下 FDL) が将来的にサービス終了となることがアナウンスされました。 (https://firebase.google.com/support/dynamic-links-faq?hl=ja)

FDLはアプリ流入のための専用のリンクを無料で発行でき、アプリのインストール状況に依らずユーザーをアプリへと連れてくることのできる強力な武器だったわけですが、FDLが無くなると今までFDLを用いて実現していたことはどうすればよいのでしょうか。

このセッションではFDLのサービス終了に備えて知っておきたい、以下のトピックについて紹介する予定です。

・FDLによって実現できていたこと
・アプリ未インストール時にストアを開く挙動を実現する方法
・アプリの初回起動後に特定画面を開く挙動を実現する方法
・FDLのサービス終了への備えと対策

2
ルーキーズLT(5分)

RxSwiftプロジェクトでSwift Concurrencyを利用する

coffmark_ coffmark

RxSwiftプロジェクトでも積極的にSwiftUI, Swift Concurrencyを取り入れている機会が増えてきたのではないでしょうか。
またSwiftUIを使用している画面ではSwift Concurrencyを使いたい場面もあるのではないでしょうか。

例えば.refreshable(action:) View Modifierでは、非同期関数を受け取ることができるので、async/await関数を使用したい時があるとおもいます。

このトークでは、既存のRxSwiftベースで書かれているプロジェクトにSwift Concurrencyを取り入れて、SwiftUIで使用する例を紹介します
この発表で、RxSwiftベースで書かれているプロジェクトにもSwift Concurrencyを取り入れてもらう参考になれば、嬉しいです。

5
レギュラートーク(20分)

WEARアプリのロック画面ウィジェットを導入するまでに立ちはだかる3つの壁

iOS16で発表されたロック画面ウィジェットは、アプリへのアクセスを便利にし、ユーザの定着率向上の可能性を秘めています。しかし、未発達であることから価値や利益の伝え方が難しく、社内アプリへの導入も順調ではありませんでした。導入事例が少なく有効性を示せないため、チームメンバーの納得を得るのは困難です。

これらの課題に対して、目的の方向転換や、WEARアプリに適したアイディアの提案など対策を講じます。このトークでは、ロック画面ウィジェットの技術調査から実装、提案、そしてリリースまでの過程で直面した3つの壁とその対処法をご紹介します。

  • 1つ目の壁:知見の少ない新機能の情報収集
  • 2つ目の壁:チームメンバーに納得してもらうこと
  • 3つ目の壁:複数の職種のコストを考慮すること
レギュラートーク(20分)

今こそ、WindowsからMacへ 〜Game Porting Toolkit入門〜

赤田 進

WWDC23でWindowsゲームをMac向けに移植するためのツールキット「Game Porting Toolkit」を発表しました。
このGame Porting Toolkitを使ってWindowsの人気ゲームをmacOS上で動作させたという報告が続々と寄せられています。
本気でゲーム領域に踏み込んできたなと感じてワクワクして夢中で取り込みました。

このトークでは皆さんが疑問に思う内容をキャッチアップして、どこにハマり、どのように手探りで調べたかということをお話させていただきます。

・英語に自信がないけど、どのように情報入手する
・どのような技術で成り立っているのか?
・開発環境構築は簡単なのか?
・Windowsゲームのパフォーマンスはいかに?!
・日本語環境でも問題ない?
・ゲーム以外Windowsアプリも動作する?

3
レギュラートーク(40分)

AI時代に生きるiOSエンジニアの歩き方

Yuta Koshizawa

ChatGPTを筆頭にAIが猛威を振るっています。特に、3月にリリースされたGPT-4は強力で、分野によっては人間以上のパフォーマンスを発揮します。試しにGPT-4にある程度の複雑さと独自性を持ったiOSアプリを作らせてみたところ、なんと1時間で基本部分が完成しました。

しかし、現時点ではエンジニアが置き換えられるほどの直接的な脅威ではありません。むしろ短期的には、コードを書ける人はAIによってその力をブーストされ、書けない人との格差はより大きくなるでしょう。そして、普段からAIを活用しアンテナを張っておくことは、将来さらに大きな波がやってきたときに、素早く環境に適応して淘汰から逃れる助けとなるでしょう。

本トークでは、ChatGPT・GPT・GitHub Copilot・LLMなどについて解説し、今AIは何がどこまででき、どのように活用できるのか、具体例を挙げて示します。

13
ポスターセッション

これからUICollectionViewを実践活用する人のためのガイド

usamik26 宇佐見 公輔

iOSでグリッド状のレイアウトを実装するにはUICollectionViewを使います。コンテンツの配置が柔軟に行えるのが特徴です。

しかし、その柔軟性ゆえに、実装の難易度は高めです。また、iOS 13や14で新しい実装方法が追加されて便利になりましたが、それも簡単とは言えません。雰囲気で使うことはできても、ちゃんと理解しているかは自信が持てない人も多いのではないでしょうか。

そこで、このポスターセッションではUICollectionViewの基本的な考え方を整理してお伝えします。

• UICollectionViewの最小構成
• データソース(UICollectionViewDataSourceやDiffableDataSource)
• セル(CellRegistrationやContentConfiguration)
• レイアウト(Compositional Layout)

5
採択
パンフ記事(8ページ)

UICollectionViewのCompositional Layoutを極める

usamik26 宇佐見 公輔

iOSでグリッド状やリスト状のレイアウトを実装する際には、UICollectionViewが広く使われています。iOS 13以降ではレイアウトの実装クラスとしてCompositional Layoutが標準で用意され、複雑なレイアウトが組みやすくなりました。

しかし実際のところ、どのようなレイアウトが組めるのでしょうか。この記事では、具体的なレイアウトの実例を紹介していきます。

・レイアウトを構成するセクション、グループ、アイテムについての説明
・グループの使い方、グループのネスト
・セクションヘッダーの実装
・アイテムバッジの実装

じっくり読んで理解していただくために、レイアウトの図解や具体的なコードを掲載する予定です。

8
レギュラートーク(20分)

UICollectionViewのセルの実装にSwiftUIを活用する

usamik26 宇佐見 公輔

最近のiOSアプリ開発では、UIKitとSwiftUIを併用するパターンが増えています。従来のUIKitをベースにしつつ部分的にSwiftUIを使うことで、開発効率の良さなどの恩恵を得るという考え方です。

しかし、併用のしかたに注意が必要な場合があります。そのひとつがUICollectionViewのセルです。データ表示のパフォーマンス向上のため、セルには再利用の仕組みがあります。ただ、その仕組みの影響で、セルのUIをSwiftUIで実装する場合には注意が必要になってしまいます。

iOS 16で、UIHostingConfigurationが導入されました。これを利用するとセルの実装にSwiftUIが使えます。さらに、ObservableObjectを使ってデータとセルとを直接バインディングできるため、セルをUIKitで実装する場合よりも便利になります。本トークではこれらを解説します。

7
レギュラートーク(40分)

ライブラリやフレームワークに頼らない DI と Mock の流儀

orga_chem Kuniwak

みなさんはテストをする際に DI や Mock を使いますか?それにはライブラリやフレームワークを使いますか?
実は私は DI も Mock も使いますがそれにライブラリとフレームワークはあえて使いません。ライブラリやフレームワークを使わないことでコードの声により敏感になれるからです。

この発表では DI や Mock の基本からライブラリ・フレームワークを使うメリットとデメリットを説明し、ライブラリ・フレームワークに頼らない開発方法を紹介します。あなたもコードの声に耳を傾けてみませんか?

12
レギュラートーク(20分)

もう限界だ!6年もののアプリのリアーキテクト戦略

daikimat 松元 大樹

長年開発しているアプリは、さまざまな問題により開発速度が低下していきます。
日々の開発によりコードの複雑性は増していきます。さらにドメイン知識のあるメンバーの交代、世の中の開発トレンドの変化、言語の進化など、取り巻く環境の変化にも対処しなければ中長期的にアプリを通して価値提供することが困難となります。
本トークでは積み重なり続ける問題の圧に対して、リアーキテクトを行ったチームの話をします。
モダンな技術を取り込むためのモジュール分割、議論を繰り返さないためのADRの採用、新機能開発とリアーキテクトの並行開発方法等
時系列に何が起きたのかストーリー形式でお伝えします。
本トークを通じて、つみ重なる問題の対処方法が分からなかったチームが、リアーキテクトを通してどう変わったのか擬似体験することができます。
これからリアーキテクトを検討している方が未来を想像できるような内容を提供します。

2
レギュラートーク(40分)

構文木とは何か 〜来るべき Swift Macro に備えて〜

orga_chem Kuniwak

来るべき Swift Macro に備えて Swift の構文木について学びましょう。この発表の前半では Swift Macro を定義する際に理解が必要な「構文木」とは何かを初心者向けに説明します。後半では構文木の活用方法として、マクロの定義や、静的解析・フォーマッター・コード生成のやり方を説明します。ぜひこの機会に構文木を学び、Swift Macro に備えつつ引き出しを増やしましょう。

7
レギュラートーク(20分)

UITableViewからリスト形式のUICollectionViewへの移行

0si43

iOS 14でUICollectionViewのリスト形式表示が追加されました。これはCompositional Layoutを使ったもので、UITableViewとほぼ同じ画面を実装することが可能であり、さらに柔軟性や拡張性に優れています。現在はAppleもUITableViewよりはUICollectionViewを使う方を推奨しています。本セッションでは、UITableViewで実装されているコードをUICollectionViewにリファクタリングした際の経験から学んだことについてお話しします。

1
レギュラートーク(20分)

Apple/Google/twitter連携全部やる

0si43

かつてnoteアプリにはソーシャル連携がありませんでした。メールアドレスとパスワードによる認証のみ。しかしこの半年で、Apple/Google/twitter連携を追加しました。本セッションでは、その経験を元にして、下記の内容を話します。

  • ソーシャル連携の実装・デバッグ
  • プラットフォームごとの違い
  • Sign in with Apple実装時の思わぬリジェクト
  • ソーシャル連携のユーザー体験を改善するパスワードレス方式
2
採択
2023/09/01 18:45〜
Track B
レギュラートーク(20分)

watchOS開発最前線

0si43

今年2023年でついに10周年を迎えるwatchOS。そんな年に私は個人開発でカウンターアプリWristCounterをリリースしました。その経験を元に、watchOS開発の最新事情とハマりどころについて話します。

  • Apple Watch単独アプリにするかの選択
  • SwiftUIのwatchOS環境での振る舞い
  • navigationTitleが表示されない問題
  • watchOSアプリでXcode Cloudを使う際の詰まりポイント
  • watchOS 10でのアップデート
レギュラートーク(20分)

Swift Concurrencyサバイバルガイド

0si43

2021年に登場したSwift Concurrency。noteでは2023年に入り、本格的に導入を進めました。
「ゆーてasync/awaitつけるだけでしょ? 余裕、余裕」
そんなことを思いながらSwift Concurrency化したところ、全く動きませんでした……本セッションではnoteアプリへのSwift Concurrency導入の経験から、ベストプラクティスを探っていきます。

  • @MainActor 地獄について
  • VIPERでのConcurrencyの適用
  • テストコードのConcurrency化
  • Taskへのコンテキスト引き継ぎ(@Sendable)
8
レギュラートーク(40分)

わたしたちのアーキテクチャ選択とこれから

ohzono_dev ohzono

9年前から開発している弊社のiOSアプリは大規模なリファクタリングの経験なく、今まで開発してきました。現代のビジネス環境では、高品質でメンテナンス性の高いアプリケーションの開発と維持が求められています。そのようなニーズを満たすために、わたしたちのチームはVIPERアーキテクチャを今年から採用しました。このセッションでは、どのようにアーキテクチャを選び、どのような実践をしているかを紹介します。

この発表は三部構成となっています。
第一部:なぜVIPERを選択したのか?
第二部:VIPERアーキテクチャの実践
第三部:実践で得られた学び

この発表が皆様のチームが未来の開発チャレンジに向けて最適なアーキテクチャを選択し実践するための一助となれば幸いです。

1