Xcode Cloudは、2022年夏にリリースされたAppleのCI/CDです。
これまでCircle CIで行っていたテストやApp Distribution、AppStoreConnectへの配信を全てXcode Cloudに移行しました。
移行したことで、アプリのテストや配信がよりスムーズになりました。
さらに、アプリの配信をTestFlightに移行し、効率化のためのAppStore Connect APIを使うスクリプトも作成しました。
しかし、スナップショットテストやdSYMのアップロードなど、移行には一筋縄で行かない点もたくさんありました。
他のタスクで使用しているCIについても触れながら、Xcode Cloudのメリットについてお話しします。
Xcode Cloudを使いこなして、より安価でスムーズな開発を実現しましょう!
iOS 16で登場したGridは、VStackやHStackを使用した従来の2次元のUIレイアウト手法に比べ、より柔軟かつ効率的なUIの実装を可能にします。特に異なるデバイスや画面サイズでの表示において力を発揮するでしょう。しかしながら、VStackやHStackを使用した実装で十分対応できているのにあえてGridを使う必要があるのか?既存の実装をわざわざGridに置き換える価値があるのか?という疑問を抱くかもしれません。
本トークでは、Gridを使用して実現できる様々な可能性、それぞれの実装方式におけるメリットとデメリットについて、同じデザインを従来のVStackやHStackの実装とGridを用いた実装で実現し、比較しながら考察していきます。
新規事業を開始する際、技術選定は重要な意思決定の一つとなります。アプリ開発において、選択した技術は事業の成果を大きく左右する可能性があります。この記事では、昨年リリースした「クラシルリワード」のiOSアプリ開発における技術選定の過程を紹介します。
技術選定は新しい技術の採用可能性、チームメンバーのスキルセットなど様々な要因により変動します。今回のトークを通して我々の経験が、皆様の新規事業開発やアプリ開発における技術選定に役立てば幸いです。
OpenAPIを利用することでAPIの設計・ドキュメント化・テストなどを効率的に管理することが可能です。WWDC2023でのswift-openapi-generatorの登場により、iOS開発におけるOpenAPIの活用に新たな可能性が広がりました。このトークでは、実際のプロダクト開発におけるOpenAPIの利用事例として、API ClientのConcurrency化やRequestとResponseの自動生成などを取り上げます。また、swift-openapi-generatorの登場によって、Swift Package Pluginを使用したクライアント側のコード生成の自動化など、開発プロセスの変化についても解説します。
KotlinMultiplatformForMobileの導入によりアプリ開発者はビジネスロジックの差異という問題を乗り越える事が出来ましたが、一方で独自の問題も待ち構えています。
KMM内でerrorがthrowされそれがKMM内で適切にハンドリングされなかった場合にアプリはクラッシュし、おまけにそのクラッシュはkonan::abort()という一つのクラッシュに纏められてレポートされます。
どの処理でクラッシュしたか詳細なStackTraceは提供さておらず、この状態からクラッシュを解消するための道筋を立てる事は困難でしょう。
本セッションではそのような原因不明な闇のクラッシュに対し、起きる前後それぞれで出来ることを考えていきます。
ここ数年でCombineやSwift Concurrencyが登場し、WWDC2023ではObservationの発表もありました。
現在RxSwiftに代わる様々な選択肢があります。
一方で実際のプロダクトへの導入となるとOSバージョンの制約や学習コストなどの課題もあります。
CombineまたはSwift Concurrencyだけで対応する、何かと何かを併用する、そもそもリアクティブプログラミングが必要かなど結局どうすべきか悩んでいる方も多いのではないでしょうか。
このセッションでは、最新のトレンドや今後の展望を踏まえながら選択肢を比較し、スキルマーケット『ココナラ』アプリにおける具体的な導入方針についてお話します。
移行先の選択肢や考え方・テスト設計について具体的な例を学ぶことで、既存プロジェクトにおける移行や新規プロジェクト・個人開発でどの技術を用いるかの判断材料を得られます。
ついにSwift5.9からMacroが使用できるようになります。
SwiftのMacroはCのプリプロセッサマクロのように単純な文字列置換ではなく、ASTを元に任意のコードを展開することができるものです。
Macroの登場により、ボイラーテンプレートは消えさり、あなたのSwiftライフはより快適になること間違いなしでしょう。
そこで本トークでは、Macroを実装するのに必要なSwiftSyntaxの基礎をはじめ、さまざまなMacroの案を考え、実装していきます。
内容:
バグのない安全なプログラムであることを確認する方法の一つに、UnitTestがあります。
適切に構築されたUnitTestがあれば、安全なプログラムであることを何度でも高速に確認することができます。
昨今ではXcode CloudなどのCI/CDツールの導入が容易になり、Unit TestをCI上で実行することでプロダクトの品質を高く保ったまま開発を進めることができます。
UnitTestはiOSエンジニアであれば比較的気軽に始められる一方、UnitTestでどこをテストしなければならないのかなど、テストに関する考え方を抑えておかないと適切にUnitTestが構築できない場合があります。
本セッションでは適切なUnitTestの構築のために必要なテスト戦略と、UnitTestの考え方についてお話し、実装について触れます。
皆様がUnitTestに少しでも興味を持っていただければ幸いです。
Xcode15から搭載のSwift5.9において、C++ interoperabilityがついに正式にサポートされました。この機能によって、SwiftとC++を単一プロジェクトに混在させることが可能になります。今こそあなたの既存のC++コードを、読みやすく安全なSwiftコードに書き換える時だと言えるでしょう。
しかし現在のC++ interoperabilityには、継承および参照タイプのメモリ管理方法に対して制約が存在します。これは、現状仮想関数およびmove関数を扱うことができないことによるものです。
そこで本トークでは、現状どのようなケースであればC++ interoperabilityでSwiftへの段階的移行が可能であるかを解説します。現在の制約がC++からSwiftへの書き換えに与える影響を分析するとともに今後この制約がどうなっていくのかを考察していきます。
SwiftUIは、iOSアプリを簡単に作成することができるフレームワークで、最近ではiOSアプリ開発の主流となりつつあります。
SwiftUIを使うことで、コードの可読性が高くなり、アプリ開発の効率も上がります。
このトークでは、SwiftUIをUIKitで作られたアプリに上手に取り込んで、より簡単にアプリ開発を行う方法を紹介します。
トークの内容は、スピーカーの開発しているSNSアプリ「Nightfox DAWN for Mastodon」の実際の開発を通して得た情報をベースにしています。
そのため、データのバインディングや、ビューやレイアウトの共存などの基本的なところから、SwiftUIを使うべきで無い部分などの実践的を具体例を踏まえてお話しします。
質疑応答では、あなたの作っているアプリに関してSwiftUIをどのように取り込めば良いのかをディスカッションします。
「STORES ブランドアプリ」は、アパレルショップやコーヒーショップなど、各ブランド毎のオリジナルアプリを構築・提供するサービスです。
毎月複数の新規アプリ作成を行いリリース、また新機能を実装するたびに既存のアプリのアップデートを頻繁に行なっています。
これらを自動化するために、XcodeGenに環境変数を用いることで一つのリポジトリからアプリ毎のxcodeprojファイルを動的に作成しビルドする仕組みをCI/CDパイプライン上に構築しました。
このトークでは、一般的なアプリ開発にも応用できるXcodeGenとCI/CDを駆使した効率的なアプリ開発・リリース手法を解説します。
内容:
デザイントークンは、色やタイポグラフィなど、UIを構成する最小単位となるものである。
デザイントークンを用いることで、職種やプラットフォームの壁を越えて、アプリUIの設計・実装を円滑に進めることができる。
本トークでは、デザイントークンの概要とその構造(Global tokenとAlias token)について説明する。
また、Asanaにおけるデザイントークンの運用を参考に、カラートークンの設計方法についても述べる。
加えて、実践的な内容として、Token Studio for Figma と Style Dictionaryを用いた、アプリ開発への組み込み方法と注意点についても解説する。
SnackbarはMaterial Designでも定義されているコンポーネントである。一方でHuman Interface Guidelines には定義されていない。
Snackbarには、ユーザの操作に応じた短いメッセージを素早く表示するのに適しているといった利点があり、iOSアプリにも組み込むことで、操作完了時やエラー時のメッセージのやり取りをスムーズに行える効果が期待できる。
本トークでは、Snackbarの基礎や効果を整理して解説するとともに、VIPERアーキテクチャをベースとしたiOSアプリにおけるSnackbarの設計・実装のポイントについて解説する。
iOSアプリケーション開発において、ソースコード・自動テスト・開発規模が大きくなっていくと、CI/CD におけるビルド・テストの実行時間は長くなってしまい、結果として開発スピードを低下させてしまいます。
特に XCUITest などのUIテストでは、iOS 実機や iOS Simulator を動かしてテストを実行する必要があるため、実行時間が長くなりがちです。
このセッションでは、iOS Simulator を使ったUIテスト(XCUITest)をCircleCIで分割・並列実行することによって、実行時間を大幅に短縮する方法についてご紹介します。
・UIテスト(テストピラミッド) / XCUITest とは?
・UIテストをメンテナンスする上での課題とは?(環境、実行時間、不安定、メンテナンスなど)
・CircleCIを使って UIテスト(XCUITest) を分割・並列実行する方法
「エディタを好きになることなんて私分からなくてさ」
嘘か本当か知り得ない
そんな言葉にまた一人堕ちる
また好きにさせる
誰もが目を奪われてく
君は 完璧で究極の
エディター!!!!!
「Neovim」とは、Vimから派生したテキストエディタです。
素晴らしいエディタですが、SwiftをNeovimで書いている人は世界的にも非常に少ないです。
私はNeovimが好き過ぎて、SwiftをNeovimで書くことに挑戦しています。
そこで見えてきたXcodeとの違いを紹介しつつ、Neovimの魅力を思う存分に語ります。
【話すこと】
・Neovimの概要と魅力
・Xcodeとの比較
・私のNeovim環境紹介とライブコーディング(ここがメイン)
Neovimは私にとってのアイドルです。
この気持ちは絶対嘘じゃない!
ニフティ株式会社でニフティニュースというサービスの開発リーダーをしている中村です。
ニフティニュースというサービスではアプリ開発も行っているのですが、自分自身は機械学習のエンジニアリングが専門のため、アプリ開発は本職の別のエンジニアにずっと任せていました。
しかし、ある時に一念発起して「アプリ開発を理解できるようになりたいな。まずはiOSアプリ開発なのかな。」と思い立ち、最新のiOSアプリ開発を社内勉強会で勉強し始めました。
今のモダンなアプリ開発とは何なんだろうか?
MVVM、リアクティブプログラミング、SwiftUI、TCAなど、アプリエンジニアではなくWebエンジニア出身のエンジニアがどのようにしてアプリ開発を理解していったのか、その過程を発表します。
Kotlin Multiplatformは、Kotlinで記述したAndroid・iOS向けの共通ソースコードからiOSのFrameworkを出力でき、iOSアプリプロジェクトに取り込むことで利用できます。
しかし、Kotlinで実装しなければならないため、試してみようと思ってもハードルがあるかと思います。
本トークでは、Swiftの任意の機能からKotlinの対応した機能を逆引きして解説しながら、それらの機能がFrameworkとして出力されるとSwiftからどのようにアクセスできるのかについても解説します。
例として、「SwiftのenumのAssociated Valueは、Kotlinだと何になる?」「それがFrameworkとして出力されるとどうなる?」などを話していきます。
皆さんがKotlin Multiplatformに触れるきっかけとなるトークになれば幸いです。
入れ替わり立ち替わりのフリーランスエンジニアの方々が残してくれた画面ごとに共通化されていない実装!
肥大化していったUIKitのプロジェクト、複雑化するViewModel!
レイアウトを調整する度に発生するビルドの待ち時間!
それらの様々な課題にどう立ち向かい乗り越えてきたか!?
サービスはどんどん成長していく中で、時短勤務のエンジニアがSwiftUIやSwift Concurrencyのような最新技術を調査して取り入れて必ず起きるトラブルに対応する暇はない!
WebやAndroidチームに遅れを取らないよう既存資産をなるべく活かすよう試行錯誤していって出来上がったプロジェクト構成とは!?
まだまだSwiftUIを取り入れられないUIKitのプロジェクトの現場も多いでしょうし、そんな現場で開発ペースをあげるためのきっかけになると幸いです
長らくユーザにご利用いただいている弊社アプリは、これまでの長い歴史の中で多くの追加開発が行われてきました。
その結果、アプリ全体のUI・UXに統一性がない、というデザイン面での課題に直面しました。
そこで私たちは昨年からデザインシステムを導入するプロジェクトを進め、その課題へのアプローチを始めています。
本セッションでは、その構築の過程で見つけた知見を共有させていただきます。
社内でデザインシステムを一緒に作る仲間集めをしていた際の苦労や、実際に作業を始めた際に陥ったデザイントークンの設計に関する落とし穴など、プロジェクトマネジメントやチームビルディング、そしてデザインシステム設計時に試行錯誤した事例をお伝えします。
デザインの話が好きな方、デザインシステムに興味のある方、そしてこれからデザインシステムを作ることを検討している方の参考になれば幸いです。
今年のWWDCでもiOS17の各種アップデート内容について色々と発表され、大いに盛り上がりました。
しかし、その発表内容の多くがiOS17+のAPIのため、実際に実務で開発しているプロダクトへの導入はまだまだ先だなと感じている方も多いでしょう。
しかし、古いiOSをサポートしているプロダクトでも、まだまだ活用しきれていない一昔前の革新的な機能や改善点があるはずです。
このセッションでは、少し前のiOSアップデートにフォーカスし、そういった未発掘のポテンシャルを探ります。
具体的には、iOS 14やiOS15あたりのバージョンにスポットを当て、どういったアップデート内容があったのかを振り返ります。