この記事はReact Nativeアドベントカレンダーの11日目の記事です。
どうも!ハムカツおじさんという名前でtwitterやってます(@hmktsu)🤘
自分でだったり弊社でだったりなどReact Nativeでの開発を行う上でExpoを使っています。
なので今日はExpoの2018年の動きについてまとめたいと思います。
ちなみにExpoについてというのは大体の人が知っている前提で話をしてしまいます。
知らない人は「react native expo」でググると色々と記事が出てきますのでそちらをご覧ください。
はじめに
Expoはコミュニティがかなり活発です。
- ドキュメント:https://docs.expo.io
- フォーラム:https://forums.expo.io
- リクエスト:https://expo.canny.io
- github:https://github.com/expo/expo
という感じで大きく4つの場所があります。
ドキュメントは言わずもがな、フォーラムは主に質問とかそういうの、リクエストで機能要望を出したりどういう機能を今作っているよっていう感じです。
ちなみにgithubでも活発に質問などが行われています。
自分もよくフォーラムで質問したり答えたり、リクエスト出したり、githubでもうんちゃらとやっています。
さらにバージョンアップもかなり頻繁に行われます。
ということでこの1年間の動きについてをつらつらと書いていきたいと思います。
細かいところまで書くと面倒なので大きなところだけですが。
ちなみに自分の活動についても記述していきたいと思います。
2018/01
v25リリース
Expo SDK v25.0.0 is now available
v25が2018/01/23にリリースされました。
-
app.json
にてassetBundlePatterns
をサポート- バイナリに画像などのアセットをセットするための機能
- v23にて追加された
release-channel
をアップデート- 履歴見れたり、あるリリースチャンネルから違うリリースチャンネルにプロモートできたり
- AWS Amplifyをejectせずに使えるように
- Calendarが使えるように
- MailComposerが使えるように
- GLViewのアップデート
- Audio/Videoのアップデート
2018/03
v26リリース
Expo SDK v26.0.0 is now available
v25から約二ヶ月後の2018/03/30にリリース。
- Expoのクライアントアプリにて、同じアカウントでなければExpoプロジェクトを共有できなくなる
- iOSのスタンドアローンのビルド時間を短縮
- OTAアップデートに色々とオプションをつけて制御できるように
- Blobサポート
- GestureHandlerがDangerZoneから単独APIに
- PrintをDangerZoneに追加
- LocalizationをDangerZoneに追加
- GLViewのアップデート
- Calendarのアップデート
- Audio/Videoとカメラのアップデート
- Notificationsのアップデート
ちなみにこのアップデートからReact 16.3.0サポートなので、componentWillMount
やcomponentWillReceiveProps
やcomponentWillUpdate
などが非推奨になりました。
あとreact-navigation
がbetaが外れて安定板としてv1.5.8
となっています。
v25からv26の間に急激にreact-navigation
がアップデートかかったタイミングでもありました。
2018/04
v27リリース
Expo SDK v27.0.0 is now available
v26から約一ヶ月後の2018/04/26にリリース。
- ExpoKitで作成したアプリ内にバンドルをアセットできるように
- MediaLibraryが使えるように
- Hapticが使えるように
- AndroidのFCM通知のサポート
- Linkingのアップデート
- Updatesのアップデート
- ExpoKitのアップデート
- Audio/VideoとImageManipulatorのアップデート
- GLViewのアップデート
- snack.expo.ioのアップデート
2018/06
v28リリース
Expo SDK v28.0.0 is now available
v27から約二ヶ月後の2018/06/13にリリース。
- AndroidのtargetSdkVersionを26に変更し、ビルドツールを最新バージョンにアップデート
- Androidのnotification channelsのサポート
- Androidのadaptive launcher iconsのサポート
- AndroidのGCM通知をそろそろ廃止したい旨
- iOSのSKStoreReviewControllerが使えるように
-
react-native-gesture-handler
とreact-native-reanimated
を追加 - AR APIが使えるように
- Audio/Videoとカメラのアップデート
- v26で追加されたPrintをDangerZoneから単独APIに
- v27で追加されたMediaLibraryに
addEventListener
を追加 - snack.expo.ioのアップデート
ちなみにreact-navigation
がv2.3.1
となっています。
この二ヶ月間も怒涛のアップデート期間でした。
2018/07
ReactNative LT会 #1 byFACTBASEにてLT
「事例で見るExpoプロダクションアプリ」という題名でReactNative LT会 #1 byFACTBASEにて初LTをしました。
ドラム式洗濯機の配達が遅すぎたせいで大遅刻をしてしまいましたが。
v29リリース
Expo SDK v29.0.0 is now available
v28から約一ヶ月後の2018/07/27にリリース。
ちなみに自分が以前ブログにこのリリースについてを雑にまとめてあります。
Expo29.0.0の主な変更点的なお話
- ExpoKitの分離を始める
-
expo-cli
をリリース、XDEを非推奨に - ビルドのアップデート
- snack.expo.ioのアップデート
- エディタをMonacoに変更
- ブラウザ内でプレビューできる人数を増やした
- Expoのプッシュ通知配信APIサーバのアップデート
- SMS APIが使えるように
- SplashScreen APIが使えるように
- Contacts APIの改善
このアップデート前ぐらいにreact-native
がちょうどv0.56.0
になったタイミングでした。
ただこのv0.56.0
はbabelが7.0.0-beta.47
となっており、バグだったりもそうですけど破壊的変更が多すぎたのと、react-native
をv0.56.0
にしてもExpo的にはあまり恩恵がなかったので、内部的にはreact-native
はv0.55.4
としておく感じでした。
2018/08
ReactNative LT会 #2 byFACTBASEにてLT
「WebViewを使って面倒なことから逃げよう」という題名でReactNative LT会 #2 byFACTBASEにてLTをしました。
今回は遅刻しませんでした。
2018/09
v30リリース
Expo SDK 30.0.0 is now available
v29から約一ヶ月半後の2018/09/13にリリース。
こちらも自分が以前ブログにこのリリースについてを雑にまとめてあります。
Expo30.0.0の主な変更点的なお話
- iOS9とAndroid4.4を切り捨てていく予定
- JSのbundleを自分のサーバでホストできるように
- ExpoKit分離がんばっているよ
-
expo-cli
がv2.0
として正式にリリース-
exp
(XDE)の廃止日決定 - 今後は
expo
コマンドを使うように
-
- snack.expo.ioのアップデート
- オープンソース化
- Vimサポート
-
react-native-screens
を追加 - AndroidのExpoKitでExpo Analyticsを無効にできるように
-
BarCodeScanner
でQRコードの画像を読み込めるように - FingerprintをLocalAuthenticationという名前に変更
- Androidのintentフィルターが設定できるように
ちなみにv30も同じくreact-native
をアップデートしないでv0.55.4
としておく感じでした。
ただチェリーピックとして色々と本家で問題になっているものは吸収したとのことでした。
その中で特に大きかったものとしてはTextInputで日本語が打てない問題です。
こちらは自分が謎のハック方法を導き出しておいたんですが、これを使う必要がなくなったっていうだけですごく助かりました。
またExpoで使えるQRコード画像をデコードする方法って今までなかったから自分でライブラリを作っていたんですが、それがついに必要なくなったとのこと。
ちょっと悲しいような嬉しいような。
React Native Meetup #9にてLT
「Expoで本番運用をしてみよう」という題名でReact Native Meetup #9にてLTをしました。
約百名の前で行ったのでさすがにちょっと緊張しました。
2018/10
技術書典5にて本を出す
技術書典5にて本を出す側で参加しました。
「ExpoでストアリリースするReact Native「最速」アプリ開発」という本でした。
ExpoとFirebase使ってInstagram風のアプリ作っちゃいましょうという内容です。
2018/07のFACEBASE LT会にて知り合ったFACTBASE CTOの@ggtmtmggさんに誘われてという形です。
ちなみにこの日の様子などについては下記にまとめてあります。
技術書典5にて共著でReact Native Expo + Firebase本を書いて出版したので、当日の雰囲気的なところから課題的なところまで的なお話
Expoの将来的な話
Expo for Professionals
v31がリリースする約一週間前の2018/10/26にこのような題名でブログが更新されました。
今後のExpoの方向性などそういったものについてを詳しく。
ちなみにこちらも同じく自分のブログで雑にまとめてあります。
Expoがオープンソースになったり、TypeScriptになったり、よりよいAPIの提供だったり、カスタムネイティブコードだったりなどなどに対応するよ的なお話
かいつまんでいくと下記のような感じです。
- 開発にあたって:オープンソースだったり、MITにしたり、JSのセルフホストだったり、自分でスタンドアローンをビルドできるようになったり、カスタムでネイティブモジュールを作れたり。
- 技術品質厳しさ:ハイクオリティなAPIや、安定性や、堅実なテストだったり、React Navigation v3だったり、AndroidやiOS以外にも。
- よりよい開発体験:expo-cli v2だったり、TypeScriptだったり、シングルSDKでビルドだったり、チーム対応だったり。
- 将来的に:SDK31とかモダンなJSC(JavaScript Core)だったり、バックグラウンドAPI、64bit APK対応、スピードとかクオリティとか安定さとか色々と対応するためのExpo年間プランとか。
これらはv31にも関連する内容ですが、全部が全部v31でリリースされてたりアップデートされてるわけではないです。
この記事に関してはこれからがんばっていくぞ!という意思表明みたいな感じですね。
2018/11
v31のリリース
Expo SDK v31.0.0 is now available
v30から約二ヶ月後の2018/11/03にリリース。
ちなみにいうとExpo fro Professionalsから約一週間後にリリース。
こちらも自分が以前ブログにこのリリースについてを雑にまとめてあります。
Expo v31になったのでReact Native 0.57やAndroid JSCのアップグレードやスタンドアローンビルドのサイズダウンなど変更点的なお話
-
react-native
をv0.57.0
に変更 - AndroidのJSC(JavaScript Core)のアップデート
-
turtle-cli
のリリース- Expoのビルドサーバを使わずに自分でビルドサーバを用意してビルドできるように
- スタンドアローンビルドのサイズが小さく
- iOS9とAndroid4.4のサポート終了
- snack.expo.ioのアップデート
- オートセーブ
- Markdownサポート
- Localizationのアップデート
- FileSystemにてBase64エンコードのサポート
実はこの約2週間後にreact-navigation
のv3.0.0
がリリースされました。
2018/12
技術書典5にて出した本の商業版の発売
実践Expo React NativeとFirebaseで、SNSアプリを最速ストアリリース! (NextPublishing)という本をインプレスR&Dさんから出させていただくことになりました。
唐突な宣伝となってしまいますが、内容としては同人版の改訂版となっていましてかなり詳しく情報を載せました。
ぜひぜひ買ってください。
2018/12/10予約開始の2018/12/14発売となっています。
1年間を通して
かなりのリリースがなされています。
v29あたりから細かいアップデートが多すぎてAudioとかVideoとかそういうアップデートについてを書いていないですが、もちろんアップデートされています。
ちなみにExpoのコアメンバーがreact-navigation
を管理しているので、react-navigation
もかなりアップデート速度は早いです。
両方とも追うのはかなり大変。
本当はv32が2018/11末か2018/12頭に出るっぽかったんですが色々とあるのでまだ厳しいのかなぁと。
個人的にかなり活動した一年だったなぁと思っています。
LTし始めたり本を書いたりなどもそうですが、react-native
にPR送ってcontributorになったり、react-navigation
にPR送ってcontributorになったり、expo
にPR送ってcontributorになったりなどなど。
ちなみにApp.js Confというカンファレンスが2019/04にポーランドで行われます。
こちらのLT枠に応募して結果は2019/02/14あたりに出るということで通るかどうかワクワクドキドキです。
最後に
かなりつらつらと書いてしまいましたが、こんな感じでExpoは年間アップデートされています。
色々な機能がバージョンアップのたびに追加されています。
ある程度のアプリだったらejectなどせずともExpoのみでできるので、よければみなさんExpoでアプリを作ってみてください。