0.56のリリース
待望のReact Native 0.56バージョンが利用可能になりました🎉。このブログ記事では、この新しいリリースで導入された変更点の一部をハイライトしています。また、3月以降、私たちが何に忙殺されてきたのかを説明する機会でもあります。
破壊的変更のジレンマ、あるいは「いつリリースするか?」
コントリビューターガイドでは、React Nativeへのすべての変更が経る統合プロセスについて説明しています。プロジェクトは多くの異なるツールで構成されており、すべてを適切に機能させるために連携と継続的なサポートが必要です。これに、プロジェクトに貢献する活気あるオープンソースコミュニティが加わると、その途方もない規模がわかるでしょう。
React Nativeの目覚ましい普及に伴い、破壊的変更は細心の注意を払って行われる必要があり、そのプロセスは望むほどスムーズではありません。コアチームが新しい一連の破壊的変更を統合しテストするために、4月と5月のリリースをスキップする決定がなされました。専用のコミュニティコミュニケーションチャネルが使用され、2018年6月の(0.56.0)リリースが、安定版リリースを辛抱強く待っていた人々にとって可能な限り問題なく採用できるものとなるよう、その過程で確保されました。
0.56.0は完璧か?いいえ、世の中のすべてのソフトウェアがそうであるように、完璧ではありません。しかし、「さらなる安定性を待つ」ことと「テストによって成功した結果が得られたので先に進むことができる」ことのトレードオフを考慮すると、リリースする準備ができたと感じています。さらに、最終的な0.56.0リリースで解決されていないいくつかの問題があることも認識しています。ほとんどの開発者は、0.56.0へのアップグレードで問題はないはずです。前述の問題でブロックされている方々には、私たちの議論にご参加いただき、これらの問題の解決策について一緒に取り組むことを楽しみにしています。
0.56.0は、より安定したフレームワークに向けた基礎的なビルディングブロックと考えることができるでしょう。すべてのエッジケースが取り除かれるまでには、おそらく1~2週間の普及期間が必要となるでしょうが、これにより2018年7月の(0.57.0)リリースはさらに優れたものになるはずです。
このセクションの最後に、合計818コミット (!) に取り組んだ67名のコントリビューター全員に感謝の意を表したいと思います。彼らの貢献があなたのアプリをさらに良くするでしょう 👏。
それでは、早速ですが...
大きな変更点
Babel 7
ご存知のように、私たち全員がJavaScriptの最新かつ最高の機能を使用できるようにするトランスパイラツールであるBabelは、まもなくv7に移行します。この新しいバージョンにはいくつかの重要な変更が伴うため、今がアップグレードの良い時期だと感じ、Metroがその改善を活用できるようにしました。
アップグレードで問題が発生した場合は、関連するドキュメントセクションを参照してください。
Androidサポートの近代化
Androidでは、周囲のツールが大幅に変更されました。Gradle 3.5、Android SDK 26、Fresco 1.9.0、OkHttp 3.10.0に更新し、さらにNDK APIのターゲットをAPI 16に変更しました。これらの変更は問題なく適用され、ビルドが高速化されるはずです。さらに重要なのは、来月施行される新しいPlay Storeの要件に開発者が準拠するのに役立つことです。
これに関連して、特にDulmandakh氏が、これを可能にするために提出された多くのPRに感謝したいと思います👏。
この方向性でさらにいくつかのステップを踏む必要があります。Androidサポートの更新に関する今後の計画と議論は、専用のイシュー(およびJSCに関する追加のイシュー)で追跡できます。
新しいNode、Xcode、React、Flow – 盛りだくさん!
Node 8がReact Nativeの標準になりました。実はすでにテストが行われていましたが、Node 6がメンテナンスモードに入ったため、私たちは両足を前に踏み出しました。Reactも16.4にアップデートされ、多くの修正がもたらされました。
iOS 8のサポートを終了し、iOS 9をターゲットにできる最古のiOSバージョンとしました。iOS 8が実行できるデバイスはすべてiOS 9にアップグレードできるため、これが問題になるとは予測していません。この変更により、iOS 8を実行している古いデバイスの回避策を実装するためにほとんど使用されていなかったコードを削除できました。
継続的インテグレーションツールチェーンはXcode 9.4を使用するように更新され、すべてのiOSテストがAppleが提供する最新の開発者ツールで実行されることを保証します。
多くの開発者に好評な新しいエラー形式を使用するために、Flow 0.75にアップグレードしました。また、さらに多くのコンポーネントの型を作成しました。まだプロジェクトで静的型付けを強制していない場合は、実行時ではなくコーディング中に問題を特定するためにFlowの使用を検討してください。
その他多くのこと...
たとえば、YellowBoxは新しい実装に置き換えられ、デバッグが大幅に改善されました。
完全なリリースノートについては、こちらの完全な変更ログを参照してください。また、この新しいバージョンへの移行で問題が発生しないように、アップグレードガイドにも注意してください。
最後に:今週から、React Nativeコアチームは毎月の会議を再開します。会議で何が議論されたかについて全員が最新の情報を把握できるようにし、今後の会議のために皆様からのフィードバックを手元に置いておくようにします。
皆さん、楽しいコーディングを!
Lorenzo、Ryan、そしてReact Nativeコアチーム一同
追伸:いつものように、React Nativeはまだ多くの変更が進行中であるため0.xバージョンであることを皆さんに思い出させたいと思います。したがって、アップグレードの際には、おそらく何らかの問題が発生したり、壊れたりする可能性があることを忘れないでください。問題提起やプルリクエストの提出の際にはお互いに協力し、施行されているCoCに従うことを忘れないでください。画面の向こうには常に人間がいます。