学習指導要領の改訂に伴い、プログラミング教育は2020年度から小学校で必修化され、翌年には中学校でも必修化されました。
そして、AppleからSwift Playground Bookを使った中学校向けの教材もリリースされています。
プログラミング教育にフォーカスが当たり始めた今、我々も若きエンジニアを育てるために何かできることはないでしょうか?
Swift Playground Bookなら、若い世代にプログラミングの楽しさを知ってもらうための教材作りがSwiftでできるのです。
本セッションではXcodeでPlayground Bookを作る方法からデバッグ方法、リリースの方法までを実際にコードを見ながら説明していきます。
アプリ開発とは全く異なるXcodeプロジェクトの構造から始まり、特殊な文章表現・単語説明機能などPlayground Bookならではの内容について解説します。
先日、Firebase Dynamic Links (以下 FDL) が将来的にサービス終了となることがアナウンスされました。 (https://firebase.google.com/support/dynamic-links-faq?hl=ja)
FDLはアプリ流入のための専用のリンクを無料で発行でき、アプリのインストール状況に依らずユーザーをアプリへと連れてくることのできる強力な武器だったわけですが、FDLが無くなると今までFDLを用いて実現していたことはどうすればよいのでしょうか。
このセッションではFDLのサービス終了に備えて知っておきたい、以下のトピックについて紹介する予定です。
・FDLによって実現できていたこと
・アプリ未インストール時にストアを開く挙動を実現する方法
・アプリの初回起動後に特定画面を開く挙動を実現する方法
・FDLのサービス終了への備えと対策
iOS16で発表されたロック画面ウィジェットは、アプリへのアクセスを便利にし、ユーザの定着率向上の可能性を秘めています。しかし、未発達であることから価値や利益の伝え方が難しく、社内アプリへの導入も順調ではありませんでした。導入事例が少なく有効性を示せないため、チームメンバーの納得を得るのは困難です。
これらの課題に対して、目的の方向転換や、WEARアプリに適したアイディアの提案など対策を講じます。このトークでは、ロック画面ウィジェットの技術調査から実装、提案、そしてリリースまでの過程で直面した3つの壁とその対処法をご紹介します。
WWDC23でWindowsゲームをMac向けに移植するためのツールキット「Game Porting Toolkit」を発表しました。
このGame Porting Toolkitを使ってWindowsの人気ゲームをmacOS上で動作させたという報告が続々と寄せられています。
本気でゲーム領域に踏み込んできたなと感じてワクワクして夢中で取り込みました。
このトークでは皆さんが疑問に思う内容をキャッチアップして、どこにハマり、どのように手探りで調べたかということをお話させていただきます。
・英語に自信がないけど、どのように情報入手する
・どのような技術で成り立っているのか?
・開発環境構築は簡単なのか?
・Windowsゲームのパフォーマンスはいかに?!
・日本語環境でも問題ない?
・ゲーム以外Windowsアプリも動作する?
最近のiOSアプリ開発では、UIKitとSwiftUIを併用するパターンが増えています。従来のUIKitをベースにしつつ部分的にSwiftUIを使うことで、開発効率の良さなどの恩恵を得るという考え方です。
しかし、併用のしかたに注意が必要な場合があります。そのひとつがUICollectionViewのセルです。データ表示のパフォーマンス向上のため、セルには再利用の仕組みがあります。ただ、その仕組みの影響で、セルのUIをSwiftUIで実装する場合には注意が必要になってしまいます。
iOS 16で、UIHostingConfigurationが導入されました。これを利用するとセルの実装にSwiftUIが使えます。さらに、ObservableObjectを使ってデータとセルとを直接バインディングできるため、セルをUIKitで実装する場合よりも便利になります。本トークではこれらを解説します。
長年開発しているアプリは、さまざまな問題により開発速度が低下していきます。
日々の開発によりコードの複雑性は増していきます。さらにドメイン知識のあるメンバーの交代、世の中の開発トレンドの変化、言語の進化など、取り巻く環境の変化にも対処しなければ中長期的にアプリを通して価値提供することが困難となります。
本トークでは積み重なり続ける問題の圧に対して、リアーキテクトを行ったチームの話をします。
モダンな技術を取り込むためのモジュール分割、議論を繰り返さないためのADRの採用、新機能開発とリアーキテクトの並行開発方法等
時系列に何が起きたのかストーリー形式でお伝えします。
本トークを通じて、つみ重なる問題の対処方法が分からなかったチームが、リアーキテクトを通してどう変わったのか擬似体験することができます。
これからリアーキテクトを検討している方が未来を想像できるような内容を提供します。
iOS 14でUICollectionViewのリスト形式表示が追加されました。これはCompositional Layoutを使ったもので、UITableViewとほぼ同じ画面を実装することが可能であり、さらに柔軟性や拡張性に優れています。現在はAppleもUITableViewよりはUICollectionViewを使う方を推奨しています。本セッションでは、UITableViewで実装されているコードをUICollectionViewにリファクタリングした際の経験から学んだことについてお話しします。
かつてnoteアプリにはソーシャル連携がありませんでした。メールアドレスとパスワードによる認証のみ。しかしこの半年で、Apple/Google/twitter連携を追加しました。本セッションでは、その経験を元にして、下記の内容を話します。
2021年に登場したSwift Concurrency。noteでは2023年に入り、本格的に導入を進めました。
「ゆーてasync/awaitつけるだけでしょ? 余裕、余裕」
そんなことを思いながらSwift Concurrency化したところ、全く動きませんでした……本セッションではnoteアプリへのSwift Concurrency導入の経験から、ベストプラクティスを探っていきます。
AndroidエンジニアがiOS開発に挑戦する際、一つの大きな障害となるのがIDE(統合開発環境)の違いです。慣れ親しんだIDEからの移行は開発者にとって1つの挑戦となります。
本セッションでは、AndroidエンジニアからiOS開発に転向した私がキャッチアップしていくなかで学んだことを、IDEに絞って解説します。
Androidエンジニアに限らずiOSアプリ開発を新たに始めたい方に向けて、iOSアプリ開発のはじめの一歩を力強く、後押しします。
アウトプットはどんなエンジニアにとっても重要で、学びや成長の機会を生み出すものです。
私は今年2月にCode Polarisというコミュニティで技術同人誌の執筆を呼びかけ、合同誌を制作しました。12人で書き上げた技術書の頒布数は185部にも達する大成功となりました。
はじめて出会うメンバーが大半の中で大人数プロジェクトを成功へと導いた裏側を紹介します。
本トークにより「もっとアウトプットをしたい」「技術コミュニティに参加してみたい」と思っていただけたら嬉しいです。
トピック
・執筆者を募る説明会の実施
・自信をつける投票制度
・GitHub Projectsを用いたプロジェクト管理
・GitHub Codespacesによる執筆環境の統一
・テイストを揃える最初の1章
・モチベーションを保つ細かな締切設定
・大量のレビューに対応するルールの構築
・やり抜くメンタルの持ち方
・得られたもの
Swift UIの登場によって、私たちはデータの画面反映に関するロジックの管理から解放されました。
これに加え、複数のAPI結果を画面ごとのStateに変換するまでの処理を、サーバーサイドにまるっと移譲することで、
アプリは最適なUXの提供に専念できるだけでなく、ストア審査やリリースから独立した変更が可能になります。
本トークでは、AirbnbやLyftなどの海外企業で導入されているServer-Driven UI アーキテクチャを、
タップルでSwift UIとBackends for Frontends(BFF)を活用して実現した事例や具体的な運用についてお話しし、
ネイティブアプリの複雑性や開発生産性の向上の悩み解決にむけた新しい手段を紹介します。
タクシーアプリ『GO』では、ライブラリを CocoaPods + プレビルドで管理し、プロジェクトはマルチモジュールを XcodeGen で管理してきました。
SwiftPM が Xcode と統合され、機能追加により様々な場面で利用できるようになりました。
いざライブラリの管理方法やプロジェクト構成を変更しようと試みたものの、普段の開発と並行しながらの移行は非常に困難です。
どうやって時間を確保し、どんな事前準備をしたのか。移行作業で何を行い、どんな課題に遭遇したのかをご紹介したいと思います。
iOSアプリ開発のCI / CD 運用における共通の課題として速度があると思います。
しかし、ひとえに速度といってもビルド時間から、環境構築の速度、不具合に早く気づく工夫など
取り組むべきテーマはそれぞれです。
本トークではそんな様々な「速さ」を追い求めてタップル iOSチームが取り組んできたTipsについてお話しし、
皆さんが明日から改善に取り組めるようになることを目指します。
WWDC21で発表されたApple公式CIサービスXcodeCloudがついに今年から正式サービスを開始しました。
すでに使っている人もいれば、高い関心を寄せていてもまだ使っていない人もいるのではないでしょうか?
既存のプロジェクトにXcodeCloudを入れることははすごく簡単です。
ただしバージョンの管理・様々なビルドツールの利用・Crashlyticsを運用しているプロジェクトでは、考慮しないといけない事項が多いです。
ベータ版の頃から社内のアプリと個人アプリで1年ほど運用し、その過程で学んだことやおすすめの設定、TIPSを紹介します。
今回のトークでは
上記のテーマについてお伝えできればと思っています。
本トークでは、没入型体験の次の革命的なステップであるAppleのvisionOSについて話します。
まず、スマートフォンの世界的な普及に伴うVR技術の進化を比較しながら、visionOSがiOSデベロッパーに提供する様々な可能性に触れ、必要なアプリケーションのエコシステム育成に注目し、他の有名なVR製品の開発状況も徹底的に分析、一般ユーザーへの普及と応用可能性について調査した結果を発表します。
さらに、1年後の実機端末の販売より先行して7月にリリースされるvisionOSのSDKを1か月間試し、簡単なiOSアプリケーションの事例を通して、自分が感じたvisionOSに取り組む際のベストプラクティスや、それにおけるSwiftUIでの基本的な作成方法、加えてMR・3D空間コンテンツ制作を含む開発体験を話します。
コインチェックでは昨年9月にリリースされたiOS 16で追加された機能である Lock Screen Widget を実装した新アプリをiOS 16のリリースの2日後にリリースしました。
新OSのリリースに合わせて新機能を作るというのは初体験で、リリースまでのスケジュール感、エンジニア以外触りにくい新しい機能をデザイナーやアナリストなどにどのように理解してもらうかなど悩みも多く、周りの協力を得ながら手探りで進めていました。
このトークでは新しいOSの機能を早めにアプリどんなことをやって、どんなふうに進めたのかということを以下のような観点からお話をさせていただきます
弊社のモバイル開発チームは、2020年に組織化された若手中心の新しいチームです。それゆえ、チームでは様々な解決すべき課題があります。中でも「技術力向上」「開発効率化」はチームの中でも優先度が高い課題です。背景には、開発中のアプリでは明確なアーキテクチャが存在せず、機能拡張がしにくいといった課題があったため、開発の生産性がなかなか伸ばしにくい状況でした。これらの課題に対するアプローチとして「アプリアーキテクチャの明文化」を行い、実装方針の整備を進めることで、生産性の向上にアプローチすることができ、生産性を20%向上させることができました。本セッションでは、アーキテクチャガイドラインとして具体的に明文化した内容と、弊社で採用したオブジェクト指向型のアーキテクチャを中心に生産性改善のノウハウを紹介したいと思います。
より多くのユーザーがアプリを利用できるようにアクセシビリティ機能の実装は必須になってきてます。
アクセシビリティ開発を特定のユーザーのための手間がかかる開発ではなく、より便利になるための通常のUI開発の延長として考えて進めていくことにしましょう。
そのためには開発においてより効率的な開発方法を導入してモチベーションをあげる必要があると思います。
まずAccessibility Inspetorを利用してアクセシビリティ適用の現状を動的に把握して改善していく方法から
SnapshotテストをベースにしているAccessibilitySnapshotを利用してアクセシビリティ要素を可視化することでより効果的な実装・テストが方法であることを話します。
最後にWWDC2023に新しく公開されたXCUIApplicationを使ってアクセシビリティ検証機能を利用する方法をお見せします。
iOS8から登場したUITraitCollectionは、iOSアプリケーションのユーザーインターフェースのレイアウトや表示に関する情報を含むオブジェクトです。
例えば、iPhoneの画面サイズが変更された場合、UITraitCollectionは自動的に更新され、アプリケーションは新しい画面サイズに応じたレイアウトを適用することができます。
これからのアプリ開発で重要になるUITraitCollectionですが、まだまだ活用されているアプリが少ない印象があります。
このトークではUITraitCollectionの概念を振り返り、SwiftUIとの関係性や具体的な利用ケースを紹介します。
また、iOS17から追加されたCustom UITraitCollectionを活用して出来ることを解説します。