reactnative
expo
ReactNativeアドベントカレンダー2018

Expoのこの1年間の動きと自分の動き(2018年)

この記事はReact Nativeアドベントカレンダーの11日目の記事です。

どうも!ハムカツおじさんという名前でtwitterやってます(@hmktsu)🤘

自分でだったり弊社でだったりなどReact Nativeでの開発を行う上でExpoを使っています。

なので今日はExpoの2018年の動きについてまとめたいと思います。

ちなみにExpoについてというのは大体の人が知っている前提で話をしてしまいます。

知らない人は「react native 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サポートなので、componentWillMountcomponentWillReceivePropscomponentWillUpdateなどが非推奨になりました。

あと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-handlerreact-native-reanimatedを追加


  • AR APIが使えるように

  • Audio/Videoとカメラのアップデート

  • v26で追加されたPrintをDangerZoneから単独APIに

  • v27で追加されたMediaLibraryにaddEventListenerを追加

  • snack.expo.ioのアップデート

ちなみにreact-navigationv2.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-nativev0.56.0にしてもExpo的にはあまり恩恵がなかったので、内部的にはreact-nativev0.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-cliv2.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-nativev0.57.0に変更

  • AndroidのJSC(JavaScript Core)のアップデート


  • turtle-cliのリリース


    • Expoのビルドサーバを使わずに自分でビルドサーバを用意してビルドできるように



  • スタンドアローンビルドのサイズが小さく

  • iOS9とAndroid4.4のサポート終了

  • snack.expo.ioのアップデート


    • オートセーブ

    • Markdownサポート



  • Localizationのアップデート

  • FileSystemにてBase64エンコードのサポート

実はこの約2週間後にreact-navigationv3.0.0がリリースされました。


2018/12


技術書典5にて出した本の商業版の発売

5143rVLh+4L._SX352_BO1,204,203,200_.jpg

実践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でアプリを作ってみてください。