$30 off During Our Annual Pro Sale. View Details »

Shorebird について

oyuk
September 04, 2023

Shorebird について

oyuk

September 04, 2023
Tweet

More Decks by oyuk

Other Decks in Programming

Transcript

  1. Shorebird について
    Relic Tech MeetUp 11 2023/9/8
    oyuk

    View Slide

  2. 自己紹介
    oyuk(@oydku)
    プログラマ
    株式会社 Relic で Flutter やってます。

    View Slide

  3. Shorebird とは?
    Flutter で Code Push を実現するサービス
    [1] https://shorebird.dev/#products-code-push

    View Slide

  4. Shorebird とは?
    Code Push
    Code Push とはユーザーの端末に対して直接アップデートを配信する事。
    つまり iOS, Android においてはストアの申請を通さずにアプリを更新できる。

    View Slide

  5. Shorebird の使い方
    1. curl --proto '=https' --tlsv1.2
    https://raw.githubusercontent.com/shorebirdtech/install/main/install.sh
    -sSf | bash
    2. shorebird login
    3. Shorebird を使いたいアプリのルートディレクトリで shorebird init
    [2] https://m3.material.io/foundations/layout/applying-layout/window-size-classes#6e960b82-eff3-4f1b-92d3-
    5edb5e338f49

    View Slide

  6. Shorebird の使い方
    Release と Patch という概念が存在します。1 つの Release に対し 0 個以上のパッチが紐づ
    いているという関係になります。
    Release
    アプリのバージョンを示す。Storeに公開するアプリのバージョンと同じにすると分かりやす
    い。
    Patch
    Release に含まれる変更を指す。

    View Slide

  7. Shorebird の使い方
    1. Release を作成
    i. shorebird release
    コマンドでビルドを生成
    ii. 1.1で出力されたビルドをリリース
    2. 実装を変更する
    3. Patch を作成
    i. shorebird patch
    でビルドを生成、Shorebirdのサーバにビルドをpush
    4. アプリに適用(詳細は後述)
    一つのリリースにつき手順2~4は複数回行われる想定

    View Slide

  8. Shorebird の使い方
    どうやってcode pushを実現しているか
    起動時にpatchが適用されたビルドを取得している
    Flutter Engineの起動処理を一部書き換えて、起動時にコードを取得するように
    している。
    ShorebirdのSDK内にShorebirdで必要な機能を入れたFlutter SDKが含まれてい
    る。ShorebirdのコマンドはこのShorebird用Flutter SDKを用いてアプリをビル
    ドする。

    View Slide

  9. Shorebird の使い方

    View Slide

  10. Shorebird の使い方
    実際にやってみた
    動画で紹介

    View Slide

  11. Shorebird の使い方
    起動時にpatchを取得、適用するライブラリ updater
    は公開されている 。
    updaterはRustで書かれている。Rustで書いてCのAPIとして公開。Flutter Engine(c++)
    はそのAPIを使用している
    理由
    DartVMが二つ起動するのを防ぎたい
    複数の言語で updater
    を使用できるようにしたい
    [3] https://github.com/shorebirdtech/updater
    [4] https://docs.shorebird.dev/faq#why-are-some-parts-of-the-code-push-library-written-in-rust

    View Slide

  12. Shorebird の使い方
    updater
    の機能を切り出した shorebird_code_push
    というライブラリがある 。
    これを使うとアプリ内で任意のタイミングでpatchをインストールする事が可能。
    [5] https://pub.dev/packages/shorebird_code_push

    View Slide

  13. Shorebird の使い方
    任意のタイミングでpatchをインストールする例
    push通知を起点にpatchをインストールする

    View Slide

  14. Shorebird の使い方
    ストアのポリシーに違反しないか?
    違反していない
    アプリの挙動を大きく変える変更をするのはポリシー違反になる可能性がある
    [6] https://docs.shorebird.dev/faq#does-shorebird-comply-with-play-store-guidelines
    [7] https://docs.shorebird.dev/faq#does-shorebird-comply-with-app-store-guidelines

    View Slide

  15. Shorebird の使い方
    具体的なユースケース
    不具合を修正したい場合
    細かい機能アップデート
    [8] https://docs.shorebird.dev/faq#what-can-i-use-shorebird-code-push-for

    View Slide

  16. Shorebird の使い方
    料金
    無料のHobbyプランがあるので気軽に試しやすい

    View Slide

  17. Shorebird について
    まとめ
    ShorebirdはCode pushをするサービス
    細かい機能追加、不具合修正を審査を通さずに実現可能
    FAQが非常に充実している
    本記事はShorebird 0.14.6時点の情報です。

    View Slide