学習指導要領の改訂に伴い、プログラミング教育は2020年度から小学校で必修化され、翌年には中学校でも必修化されました。
そして、AppleからSwift Playground Bookを使った中学校向けの教材もリリースされています。
プログラミング教育にフォーカスが当たり始めた今、我々も若きエンジニアを育てるために何かできることはないでしょうか?
Swift Playground Bookなら、若い世代にプログラミングの楽しさを知ってもらうための教材作りがSwiftでできるのです。
本セッションではXcodeでPlayground Bookを作る方法からデバッグ方法、リリースの方法までを実際にコードを見ながら説明していきます。
アプリ開発とは全く異なるXcodeプロジェクトの構造から始まり、特殊な文章表現・単語説明機能などPlayground Bookならではの内容について解説します。
CloudKitはAppleが提供するクラウドサービスで iOS、macOS、watchOS、tvOSなどのAppleのエコシステム内で利用できます。
CloudKitを使用することで、データの保存、同期、共有、認証などの機能を簡単に実装することができます。
このトークでは、比較的わかりやすい言葉でCloudKitの活用方法を解説し、参加者が実際に使える知識やスキルを身につけることを目指します。
ぜひご参加いただき、クラウドの力を借りて驚くようなiOSアプリを開発しましょう!
本発表では、リモートワーク環境でのPR (Pull Request) コミュニケーションに焦点を当て、その効率化と品質向上のための具体的なテクニックを共有します。
必要十分なコミュニケーションで素早くPRがマージされるための知見を提供します。
iOSアプリ開発者の多くが、あらゆる問題に対する解決策としてOSSライブラリに頼りがちですが、実はFoundation 等の標準APIだけで十分なケースも多いことをご存知でしょうか?
本発表では、44個ものOSSライブラリに依存していたアプリが、いかにしてその数を15個まで削減し、そのプロセスでiOSの標準APIの力を再発見したかを具体的に解説します。
具体的な事例とともに、標準APIで十分に解決可能だった問題や、ライブラリ削減によるアプリのパフォーマン向上について共有します。
さらに、全てのライブラリを排除すべきではないことも強調し、どのライブラリを選択し続け、どのライブラリを削除したのかを明示します。
先日、Firebase Dynamic Links (以下 FDL) が将来的にサービス終了となることがアナウンスされました。 (https://firebase.google.com/support/dynamic-links-faq?hl=ja)
FDLはアプリ流入のための専用のリンクを無料で発行でき、アプリのインストール状況に依らずユーザーをアプリへと連れてくることのできる強力な武器だったわけですが、FDLが無くなると今までFDLを用いて実現していたことはどうすればよいのでしょうか。
このセッションではFDLのサービス終了に備えて知っておきたい、以下のトピックについて紹介する予定です。
・FDLによって実現できていたこと
・アプリ未インストール時にストアを開く挙動を実現する方法
・アプリの初回起動後に特定画面を開く挙動を実現する方法
・FDLのサービス終了への備えと対策
RxSwiftプロジェクトでも積極的にSwiftUI, Swift Concurrencyを取り入れている機会が増えてきたのではないでしょうか。
またSwiftUIを使用している画面ではSwift Concurrencyを使いたい場面もあるのではないでしょうか。
例えば.refreshable(action:) View Modifierでは、非同期関数を受け取ることができるので、async/await関数を使用したい時があるとおもいます。
このトークでは、既存のRxSwiftベースで書かれているプロジェクトにSwift Concurrencyを取り入れて、SwiftUIで使用する例を紹介します
この発表で、RxSwiftベースで書かれているプロジェクトにもSwift Concurrencyを取り入れてもらう参考になれば、嬉しいです。
iOS16で発表されたロック画面ウィジェットは、アプリへのアクセスを便利にし、ユーザの定着率向上の可能性を秘めています。しかし、未発達であることから価値や利益の伝え方が難しく、社内アプリへの導入も順調ではありませんでした。導入事例が少なく有効性を示せないため、チームメンバーの納得を得るのは困難です。
これらの課題に対して、目的の方向転換や、WEARアプリに適したアイディアの提案など対策を講じます。このトークでは、ロック画面ウィジェットの技術調査から実装、提案、そしてリリースまでの過程で直面した3つの壁とその対処法をご紹介します。
WWDC23でWindowsゲームをMac向けに移植するためのツールキット「Game Porting Toolkit」を発表しました。
このGame Porting Toolkitを使ってWindowsの人気ゲームをmacOS上で動作させたという報告が続々と寄せられています。
本気でゲーム領域に踏み込んできたなと感じてワクワクして夢中で取り込みました。
このトークでは皆さんが疑問に思う内容をキャッチアップして、どこにハマり、どのように手探りで調べたかということをお話させていただきます。
・英語に自信がないけど、どのように情報入手する
・どのような技術で成り立っているのか?
・開発環境構築は簡単なのか?
・Windowsゲームのパフォーマンスはいかに?!
・日本語環境でも問題ない?
・ゲーム以外Windowsアプリも動作する?
ChatGPTを筆頭にAIが猛威を振るっています。特に、3月にリリースされたGPT-4は強力で、分野によっては人間以上のパフォーマンスを発揮します。試しにGPT-4にある程度の複雑さと独自性を持ったiOSアプリを作らせてみたところ、なんと1時間で基本部分が完成しました。
しかし、現時点ではエンジニアが置き換えられるほどの直接的な脅威ではありません。むしろ短期的には、コードを書ける人はAIによってその力をブーストされ、書けない人との格差はより大きくなるでしょう。そして、普段からAIを活用しアンテナを張っておくことは、将来さらに大きな波がやってきたときに、素早く環境に適応して淘汰から逃れる助けとなるでしょう。
本トークでは、ChatGPT・GPT・GitHub Copilot・LLMなどについて解説し、今AIは何がどこまででき、どのように活用できるのか、具体例を挙げて示します。
iOSでグリッド状のレイアウトを実装するにはUICollectionViewを使います。コンテンツの配置が柔軟に行えるのが特徴です。
しかし、その柔軟性ゆえに、実装の難易度は高めです。また、iOS 13や14で新しい実装方法が追加されて便利になりましたが、それも簡単とは言えません。雰囲気で使うことはできても、ちゃんと理解しているかは自信が持てない人も多いのではないでしょうか。
そこで、このポスターセッションではUICollectionViewの基本的な考え方を整理してお伝えします。
• UICollectionViewの最小構成
• データソース(UICollectionViewDataSourceやDiffableDataSource)
• セル(CellRegistrationやContentConfiguration)
• レイアウト(Compositional Layout)
iOSでグリッド状やリスト状のレイアウトを実装する際には、UICollectionViewが広く使われています。iOS 13以降ではレイアウトの実装クラスとしてCompositional Layoutが標準で用意され、複雑なレイアウトが組みやすくなりました。
しかし実際のところ、どのようなレイアウトが組めるのでしょうか。この記事では、具体的なレイアウトの実例を紹介していきます。
・レイアウトを構成するセクション、グループ、アイテムについての説明
・グループの使い方、グループのネスト
・セクションヘッダーの実装
・アイテムバッジの実装
じっくり読んで理解していただくために、レイアウトの図解や具体的なコードを掲載する予定です。
最近のiOSアプリ開発では、UIKitとSwiftUIを併用するパターンが増えています。従来のUIKitをベースにしつつ部分的にSwiftUIを使うことで、開発効率の良さなどの恩恵を得るという考え方です。
しかし、併用のしかたに注意が必要な場合があります。そのひとつがUICollectionViewのセルです。データ表示のパフォーマンス向上のため、セルには再利用の仕組みがあります。ただ、その仕組みの影響で、セルのUIをSwiftUIで実装する場合には注意が必要になってしまいます。
iOS 16で、UIHostingConfigurationが導入されました。これを利用するとセルの実装にSwiftUIが使えます。さらに、ObservableObjectを使ってデータとセルとを直接バインディングできるため、セルをUIKitで実装する場合よりも便利になります。本トークではこれらを解説します。
みなさんはテストをする際に DI や Mock を使いますか?それにはライブラリやフレームワークを使いますか?
実は私は DI も Mock も使いますがそれにライブラリとフレームワークはあえて使いません。ライブラリやフレームワークを使わないことでコードの声により敏感になれるからです。
この発表では DI や Mock の基本からライブラリ・フレームワークを使うメリットとデメリットを説明し、ライブラリ・フレームワークに頼らない開発方法を紹介します。あなたもコードの声に耳を傾けてみませんか?
長年開発しているアプリは、さまざまな問題により開発速度が低下していきます。
日々の開発によりコードの複雑性は増していきます。さらにドメイン知識のあるメンバーの交代、世の中の開発トレンドの変化、言語の進化など、取り巻く環境の変化にも対処しなければ中長期的にアプリを通して価値提供することが困難となります。
本トークでは積み重なり続ける問題の圧に対して、リアーキテクトを行ったチームの話をします。
モダンな技術を取り込むためのモジュール分割、議論を繰り返さないためのADRの採用、新機能開発とリアーキテクトの並行開発方法等
時系列に何が起きたのかストーリー形式でお伝えします。
本トークを通じて、つみ重なる問題の対処方法が分からなかったチームが、リアーキテクトを通してどう変わったのか擬似体験することができます。
これからリアーキテクトを検討している方が未来を想像できるような内容を提供します。
来るべき Swift Macro に備えて Swift の構文木について学びましょう。この発表の前半では Swift Macro を定義する際に理解が必要な「構文木」とは何かを初心者向けに説明します。後半では構文木の活用方法として、マクロの定義や、静的解析・フォーマッター・コード生成のやり方を説明します。ぜひこの機会に構文木を学び、Swift Macro に備えつつ引き出しを増やしましょう。
iOS 14でUICollectionViewのリスト形式表示が追加されました。これはCompositional Layoutを使ったもので、UITableViewとほぼ同じ画面を実装することが可能であり、さらに柔軟性や拡張性に優れています。現在はAppleもUITableViewよりはUICollectionViewを使う方を推奨しています。本セッションでは、UITableViewで実装されているコードをUICollectionViewにリファクタリングした際の経験から学んだことについてお話しします。
かつてnoteアプリにはソーシャル連携がありませんでした。メールアドレスとパスワードによる認証のみ。しかしこの半年で、Apple/Google/twitter連携を追加しました。本セッションでは、その経験を元にして、下記の内容を話します。
今年2023年でついに10周年を迎えるwatchOS。そんな年に私は個人開発でカウンターアプリWristCounterをリリースしました。その経験を元に、watchOS開発の最新事情とハマりどころについて話します。
2021年に登場したSwift Concurrency。noteでは2023年に入り、本格的に導入を進めました。
「ゆーてasync/awaitつけるだけでしょ? 余裕、余裕」
そんなことを思いながらSwift Concurrency化したところ、全く動きませんでした……本セッションではnoteアプリへのSwift Concurrency導入の経験から、ベストプラクティスを探っていきます。
9年前から開発している弊社のiOSアプリは大規模なリファクタリングの経験なく、今まで開発してきました。現代のビジネス環境では、高品質でメンテナンス性の高いアプリケーションの開発と維持が求められています。そのようなニーズを満たすために、わたしたちのチームはVIPERアーキテクチャを今年から採用しました。このセッションでは、どのようにアーキテクチャを選び、どのような実践をしているかを紹介します。
この発表は三部構成となっています。
第一部:なぜVIPERを選択したのか?
第二部:VIPERアーキテクチャの実践
第三部:実践で得られた学び
この発表が皆様のチームが未来の開発チャレンジに向けて最適なアーキテクチャを選択し実践するための一助となれば幸いです。