KitchHike Tech Blog

KitchHike Product, Design and Engineering Teams

RN Features 2021年8月号 - React Native 0.65 のアナウンス、React Native EU 2021、Apple が iOSアプリ外での決済方法を提供

はじめに

キッチハイクのエンジニアメンバーでReact Nativeの気になるニュースを持ち寄ってみました!

f:id:yamataku3831:20210728190522p:plain

React Native Japanコミュニティの1ヶ月

コメント

「れんさんは技術書展でも共著されていた人ですよね」
「BeatFitのエンジニアなんですね」
「React Native Matsuri も近づいてきていますね!」
「お祭りノベルティーBox付きチケットを予約しました!Tシャツが楽しみです〜!」

React Native 公式ブログより8月3つの記事が公開

8/17 React Native 0.65 のアナウンス

reactnative.dev

  • Hermesの新しいバージョン v0.8.1にアップグレードされました。
    • 新しいコンカレントガベージコレクタ "Hades". 一時停止時間を最大30倍短縮
    • ECMAScript Internationalization API (ECMA-402, Intl)がAndroidのHermesに組み込まれ、デフォルトで有効に
    • iOSのHermesはApple M1 MacとMac Catalystをサポート
    • SMI (Small Integers) やポインタ圧縮を含むメモリの改善により、JSのヒープを30%縮小
    • Function.prototype.toStringの変更
  • アクセシビリティに関する修正・追加が行われました。
    • iOSでハイコントラストな明暗の値を指定できるように
    • AndroidにgetRecommendedTimeoutMillis APIを追加
    • TalkBack/VoiceOverのUI状態に関する修正
  • ライブラリのDependency Version のアップデートが行われました。

コメント

「ついに0.65ですね!はやくバージョンアップしたい!」
「キッチハイクアプリは0.64.2で、iOS/Android共にHermesが有効になっているのでどちらもパフォーマンス向上が期待されますね!」
Hadesとはギリシャ神話の死者の神で、Hermesは神々の使者だそうです」
「半熟英雄に出てきたな〜」

8/19 React Native の2021年下半期

reactnative.dev

  • コミュニティの育成
    • ビジョンと状況の共有を行い、より安定したスケジュールにする
  • 新しいアーキテクチャのオープンソースへの展開の開始
    • 上半期に、FacebookアプリのすべてのReact Nativeモバイル製品へ新しいReact Nativeアーキテクチャを展開した
    • 下半期ではOSSコミュニティに展開していく
    • リリースプロセス、リポジトリの健全性の向上
  • 技術の推進
    • Oculusと提携し、VR方面への展開

コメント

「Facebook、VR会議室のアプリもベータ版でリリースしているのでVR事業に力を入れているみたいですね」
「ザッカーバーグは、6月のテックカンファレンスでもVR・ARの未来について登壇していたそうです」

www.moguravr.com

8/26 React Native's Many Platform Vision

reactnative.dev

  • React Nativeのリーチをモバイル以外にも広げるため、すでにFacebookのデスクトップやVRチームと提携してスタートしている。
  • 各プラットフォームの制約を受け入れ、制度的な知識から学び、他のプレイヤーからインスピレーションを集める。
  • そうすることで、エコシステムのすべてのプラットフォームに利益をもたらす。
  • 最も重要なことは、そうすることで、React Native の指針に忠実でいられる。

コメント

「VRとの連携というのはびっくりしますね!」
「"各プラットフォームの制約を受け入れる"というのは、よりネイティブエンジニアの意見を吸収していくということだと解釈しました」
RelayはGraphQLのクライアントで、Javascriptフレームワークなのですね」
「RelayもGraphQLもFacebookが開発しています」
「VRもGraphQLも気になります!」
「いま自分が使用している言語でモバイルアプリじゃないものまで作れると思うと、よりReact Nativeへのありがたみや愛情が湧きますね」

relay.dev

React Navigation v6.0 リリース

reactnavigation.org

コメント

「キッチハイクは4系を使っているので早く上げたいです」
「一度調べたのですが、5系に上げるのが大変みたいです。時間を見つけてアップグレードしたいですね」

F&PジャパンがReact Nativeアプリをリリース

prtimes.jp

コメント

「新しいアプリでもReact Nativeが選択肢になっていて素晴らしいですね!」

レンダーがビジュアルでわかる記事

alexsidorenko.com

コメント

「React.memo()を適切に使うことで不要なレンダリングを防げるということが視覚的にわかりやすい記事ですね!」
「パフォーマンス改善のときに使えそうですね!」

開発用アプリ、プロダクションアプリで異なる環境変数を管理

medium.com

コメント

「キッチハイクも react-native-config を最近入れましたね。」
「今まで__DEV__で判定していたのですが、導入したことで条件分がなくなって見通しが良くなりました。」
「デバッグビルドとリリースビルドで参照する値が異なる変数を一覧で確認できるようになったのも嬉しかったです」
「最近セキュリティ周りでも環境変数に触れることが多いのでキャッチアップしておきます」

Recoil 0.4 release

recoiljs.org

Configurable selector caches

  • selector が値を cache できるようになった
  • これにより膨大な数の selector をもつアプリケーションにおいて、メモリ使用量を減らすことができるようになった。
  • Recoil の実用性がより高くなったのではないかと思う。
  • キャッシュ方式も3つから選べるとのこと。
    • lru: キャッシュサイズが maxSize で指定したサイズを超過した場合、もっとも古い値・依存関係をキャッシュから削除する
    • keep-all(default): 全ての値・依存関係をキャッシュする
    • most-recent: 最近保存した値・依存関係だけをキャッシュする

Transactions with multiple atoms

  • ひとつのトランザクションで複数の atom を更新する機能が改良された。
  • 従来は useRecoilCallback を使用してスナップショットにアクセスするという方法で行っていた。
  • しかし、スナップショットの作成にはオーバーヘッドがあるため、作成完了前の値を読み混んでしまって、意図しない不具合が発生するという欠点があった。
  • useRecoilTransaction_UNSTABLE は、スナップショットから値を読み込まないので、これまでよりも簡単で、より効率的で、より安全に使用できる。

コメント

useRecoilTransaction_UNSTABLE, まだ実験的な機能なのですね。ゆくゆくはUNSTABLEが取れるのかな」
「Figmaのようなコンポーネントが非常に多いWebアプリがターゲットみたいですね」
「大規模なWebアプリでも使えるよう、徐々にアップデートしているということですかね」
「0.2.0のリリース時にも、RN Featuresで取り上げてました」

tech.kitchhike.com

React Native EU 2021

www.react-native.eu

  • React Nativeのみに焦点を当てたヨーロッパ初のコミュニティカンファレンス
  • 今回で第5回目、オンライン開催は2回目
  • 2021/9/1(水), 9/2(木) 日本時間 22:00から
  • スピーカーはFacebook, Microsoft, Stripeなどの大企業からフリーランスまでさまざま

選者の特に気になるセッション

  • IMPROVE ALL THE REPOS – exploring Microsoft’s DevExp
  • Going 100% TDD with React Native Testing Library

コメント

「海外のカンファレンスで時差がありますが、最初の方は聴けそうですね!」
「去年 @Naturalclar さんが登壇されていたカンファレンスですね」

Apple が iOSアプリ外での決済方法を提供

www.apple.com

  • App Store小規模開発者に対する支援の文脈
  • アプリ内課金回避可能を明文化
    • 顧客の連絡方法(電子メールアドレス)収集が可能になった
    • 顧客に直接連絡し、Appleへの決済手数料がかからないかたちでの決済が可能になった
  • ほか手数料の引き下げの継続、アプリ内決済の支払い形態をより柔軟な形に変更など全7項目

コメント

「今後、大規模開発者がアプリ内課金回避の方向に動きそうですね」
「Epic Gamesとの抗争もありましたもんね」

date-fns のご紹介

github.com

date-fns.org

zenn.dev

  • 日付操作を簡単にしてくれるライブラリ
  • スポンサー企業が、1Passwordを初めたくさんいる

コメント

「YouTubeのクローンを作る記事で紹介されていたライブラリです」
It's like Lodash for datesというのがわかりやすいですね!」
「これは豆知識ですが、Lodash.jsはUnderscore.jsから分離したライブラリですね」

medium.com

react-native-search-header のご紹介

github.com

  • マテリアルデザインパターンに基づいた、使いやすいReact Nativeの検索ヘッダーコンポーネント
  • マテリアルデザインパターンに基づいていることもあり、汎用性は高そう
  • 検索ヘッダーを使用するには、ファクトリ関数(1つのオブジェクトを返す関数)をインポートしてレンダリング可能なコンポーネントを作成するだけでできる

コメント

「確かに、汎用性がかなり高そうなライブラリですね!」
「リポジトリの更新が2019年で止まっていますね」
「他の検索ボックスのライブラリだとこういうのも見つけました」

github.com

さいごに

これからも社内で持ち寄った技術ネタを共有します!

We're Hiring

キッチハイクでは、React Native アプリエンジニアを募集中です!

www.wantedly.com www.wantedly.com www.wantedly.com