UICollectionViewCompositionalLayoutはiOS 13から新しく導入されたAPIです。このAPIを使うと、AppStoreアプリや写真アプリのような、異なる大きさのセルが混在したり縦スクロールの途中に横スクロールが出現するような、iOS 12以前では1つのセルに複雑なサブビューを配置したり、セルの上に別のコレクションビューを組み合わせたりということが必要だった非常に難しいUIが簡単に作れるようになります。
実際に昨年のWWDCでAppleは、AppStoreアプリのUIをこのAPIを利用して書き直すことでかなりの量のコードを削減し、シンプルでメンテナンスしやすい実装にできたと話しています。
私はこのAPIが出てきたことにより、ほとんどのUIはコレクションビューで作ればよいと考えるほどに、すばらしく柔軟で拡張性のあるレイアウトシステムだと考えています。
しかし非常にシンプルで強力というAPIなので、1つのレイアウトを複数の方法で記述できますが、まだまだ情報が少ないためより良い書き方はどれかということがわからないこともあります。
さまざまなUIをシンプルに記述することができますが、不可能なことやこのAPIを使わない別のやり方の方が望ましいケースももちろんあります。
今どきのアプリで実際に使われている複雑なレイアウトを例にこのAPIを使って実装し、ベストプラクティスや逆にあまり向いていないケースはどういうことがあるか、などについて解説します。
UIColletionViewCompositionalLayoutを使用すべきときとそうでないとき、使用する場合のレイアウトごとのより良い実装をサンプルコードを通じて学びましょう。
iOS開発をしていると様々な "*file" を利用することになると思います。Podfile, Cartfile, Gemfile, Brewfile。様々なツールが様々な方法で導入され、setup.shが肥大化していくことでしょう。その対策の一つとしてMintを使う方法があります。MintはSwift製CUIのバージョン管理ツールです。このツールを利用することでBrewfile(そして多くの場合はPodfileも)を滅殺することができるようになります。この原稿では
などについて記述します。
※本原稿は、同様のタイトルで出したトークの原稿版です。
みなさん、iOSアプリ開発でCIを行っていますか?
なかなかCI環境を構築する時間が取れず、行っていない人も多いと思います。
でもご安心ください!
iOSアプリのCI環境は、どのような規模や種類のアプリでもだいたい同じです。
一度構築すれば他でも使い回せます。
本原稿ではFastlaneやCIサービス独自の機能をできる限り使わず、スクリプトベースでCI環境を構築する方法を紹介します。
そのため、どのようなCIサービスを使っていても取り入れやすいです。
【目次】
・ライブラリのセットアップ・ビルド・単体テストを実行するスクリプトの作成(Makefile)
・ビルド・単体テストを実行するCIの構築
・★キャッシュを使ってCIの実行時間を短縮する
「★」はGitHub Actions独自の機能を使う
【想定する読み手】
・iOSアプリ開発でCIしたことがない人
・CI環境の構築に苦戦している人
【ゴール】
・CIしたくなる
・CIの意味とメリットがわかる
・GitHub ActionsでiOSアプリをCIできる
・CIサービスにかかわらずiOSアプリをCIできる
【使っているツール・ライブラリ】
本原稿では以下のツールやライブラリを使います。
使っていなくても応用できるように説明しますが、知っていると原稿を理解しやすいです。
・Mint
・Bundler
・Carthage
・CocoaPods
・XcodeGen
・xcpretty
本原稿を読んで、実際にCI環境を構築してくださると嬉しいです!