React Native 0.67の発表
皆さん、あけましておめでとうございます!本日はReact Nativeの最新リリースである0.67.0の発表と、ここ数ヶ月間取り組んできたリリースプロセスに関するいくつかのアップデートについてお知らせします。
セクション
0.67 のハイライト
Metaの2021年下半期の計画で述べられているように、React Nativeは新機能や修正(新しいアーキテクチャなど)がコミュニティに届くまでの期間を短縮するため、より頻繁なリリースを試みています。当然ながら、多くのリリースは修正と改善に焦点を当てたものになります。
0.67.0で導入される注目すべき変更点は以下の通りです。
- Lean-coreからの削除: DatePickerAndroid
- Gradleバージョンを7.2に、Kotlinバージョンを1.5.31に引き上げ KotlinとGradleのバージョンを引き上げ (#32319)
- 特筆すべき点として、0.67は引き続きHermes 0.9.0に依存しており、0.66から変更はありません。
完全な変更履歴はこちらで確認できます。
このリリースの状況に関する議論には、こちらのディスカッションで参加できます。また、いつものように、このバージョンへのアップグレードにはアップグレードヘルパー ⚛️ をご利用いただけます。
謝辞
このリリースには、74人のコントリビューターによる379件のコミットが含まれています!新旧すべてのコントリビューターの皆さんに感謝します!完全な変更履歴はこちらで確認できます。
また、0.67.0が大規模なリグレッションなしに皆さんのコードベースに届くように協力してくれたリリーステスターの方々にも感謝したいと思います。特に、以下の方々に感謝します。
- MargeloのMarc Rousavy氏 (@mrousavy)。彼はHermes 0.10のリグレッション(CIテストでは決して検出されなかったであろう問題)を表面化させてくれました。これはHermes 0.11、React Nativeの0.68リリースで修正される予定です。
- Reanimatedチーム。0.67 RCフェーズの早い段階で、ライブラリの0.67互換バージョンを迅速に準備してくれました。
- MattermostのElias Nahum氏 (@enahum)
- Invertaseと協力しているMike Hardy氏 (@mikeHardy)
また、Rainbow、Comm、そしてLedger Liveが「リリーステスター」プログラムのパイロットに参加してくれたことにも感謝します(詳細は後述)。
リリースプロセスの改善
前述の通り、React Nativeは新機能や修正がコミュニティに迅速に展開できるよう、リリースパイプラインの再構築を進めています。
ここ数ヶ月で、私たちはリリースを遅らせるいくつかの問題に取り組みました。
連携と知識の共有
リリースの実行方法、FAQ、リリースに関する問題の調整方法などを網羅したリリースドキュメントに投資しました。これらはすべてreact-native wikiのこのセクションで確認できます。ドキュメント化により、リリースが特定の個人や属人的な知識に依存して滞ることがなくなりました。
ドキュメント化に加えて、リリースの調整方法も刷新し、プレリリースの状況やパッチに関する議論を専用のディスカッショングループreact-wg/react-native-releasesに移行しました。
責任の明確化
ドキュメントの拡充により、リリース作業をスケールさせることができ、特定の人物がリリース実行に不可欠となることがなくなります。
React Nativeのリリースは、広範囲にわたる潜在的な失敗要因に影響されやすく、多くの依存関係やフォローアップ作業があります。コミュニティ全体でのReact Nativeの使われ方は様々であることを考慮すると、リリースにステークホルダーが関与することが不可欠です。私たちはリリースをサポートするための役割と責任を定義しました。
リリース候補版からのフィードバック
リリースのもう一つの課題は、リリースがビルドのリグレッションに見舞われないという確かなシグナルを得ることです。これはビルドバリアントのテストなどへの投資を増やすことで対処できますが、しばらくは実際に採用された結果からのフィードバックが有用であり続けます。
0.67のリリースでは、「リリーステスター」プログラムを試験的に実施しました。これは、オープンソースアプリに取り組むReact Native開発者が、自身のアプリでリリース候補版をテストすることにコミットするものです。以前は、コミュニティがリリース候補版をテストして潜在的な問題を指摘するという正式な期待はありませんでした。このプログラムは、リリースの安定性を確保するためのフィードバックをより迅速に得るのに役立ちます。
オープンソースのReact Nativeアプリは、ソースコードが利用可能であるため、リグレッションのデバッグに特に役立ちます。このプログラムの導入により、あるリリーステスターが0.67のリグレッションを発見し、私たちはより広範なコミュニティを欠陥のあるリリースで混乱させることなく、問題を解決することができました。
React Nativeの新しいリリースの安定化にご協力いただけますか?
リグレッションを検出する素晴らしい方法は、React Nativeのプレリリースバージョンであるreact-native@next
やreact-native@nightly
をCIに統合することです。リグレッションが見つかった場合は、リリースissueを報告し、適切なディスカッションで通知してください。
あなたのアプリや会社が「リリーステスター」プログラムへの参加に興味がある場合は、リリースの役割と責任のwikiの下部にある専用セクションで詳細をご確認ください。
最後に、リリース候補版を試したり、リリースに関する問題の解決を手伝っていただけることは、大変ありがたいです!