🔥

Posit Connect Cloud を使ってみる

2024/07/12に公開

Posit Connect Cloud というサービスのアルファ版が公開されていたのでちょっとだけ触ってみました。

Posit Connect Cloud とは?

データ関連のアプリケーションやドキュメントを公開できるプラットフォームだ、とのことです。現時点でデプロイできるのは以下の7種類のようです。

  • Quarto
  • Shiny
  • R Markdown
  • Streamlit
  • Jupyter Notebook
  • Dash
  • Bokeh

たぶん Shinyapps.io みたいに、正式リリースされたら、無料枠はありつつ一定以上使うならお金払ってね、って感じになるのかな?という気がしています。今のところは無料で使えるみたいです。

Posit Connect とは?

Posit Connect 自体は Posit Connect Cloud と同じくデータ関連のアプリケーションやドキュメントを公開できるプラットフォームで、エンタープライズ向けに提供されています。

https://posit.co/products/enterprise/connect/

デプロイできる項目はほぼ同じですが、Flask、FastAPI、Plumber あたりは Posit Connect Cloud にはまだないみたいです。パブリックで使うにはいろいろ自由にできすぎるのかもしれません。

ちなみに、このサービス自体はけっこう昔からあって、社名変更前は RStudio Connect という名前でした。ベータ版をちょっと試してみた、という記事が8年前にはあるので、けっこう歴史のあるサービスです。

https://qiita.com/okiyuki99/items/88baa2361beb06824377

サインアップ

サインアップは、Posit Connect Cloud のページの「Sign up for free」というボタンからいけます。

まず、この画面が出るので「Sign Up with GitHub」をクリックします。

次に、GitHub 側での連携の承認が求められるので、承認します。

この画面はアンケートです。スキップしてもいいみたいです。

これでサインアップは終わりです。

パブリッシュするコンテンツの準備

上記のように、パブリッシュするにはまず GitHub 上にレポジトリを用意する必要があります。今回は試しに、サンプルコードそのままの Shiny のアプリケーションを publish してみることにします。

https://github.com/yutannihilation/posit-connect-cloud-simple-shiny-app

コードはサンプルコードそのままでいいんですが、一つだけやることは、R の場合は必ず manifest.json を含めないといけないそうです。これは Python でいう requirements.txt に当たるもので、必要なパッケージのバージョンなどが書かれています。以下のコマンドを実行すれば書き出せます。renv なども考慮してくれるみたいです。

library(rsconnect)
writeManifest()

https://docs.posit.co/connect-cloud/how-to/r/dependencies.html

デプロイ

デプロイは、↑の画面の「Publish content」をクリックすると、まずはコンテンツの種類を選ぶ画面になります。今回は Shiny なので Shiny を選びましょう。

次に、レポジトリを選びます。

なぜか Python のバージョンを聞かれます。Python 版の Shiny もあるから...? よくわかりませんが、特にいじらなくて大丈夫だと思います。もし問題あればあとで変えられます。

あと、公開レポジトリということで、API キーとかパスワードとかは使えないと思ってたんですが、ここの Variables という設定に書けるみたいです。値は環境変数としてコード中から参照できます(ドキュメント)。

以上で設定は終わりです。デプロイのログを数十秒眺めます。

はい、公開されました。

実際の Shiny アプリケーションは、以下の URL からアクセスできます。

https://connect.posit.cloud/yutannihilation/content/0190a573-b41c-c76c-700d-6b1540dd9f65

参考

アナウンスのブログ記事:

https://posit.co/blog/introducing-posit-connect-cloud/

Discussion