Hub documentation
Spaces での Shiny
Spaces での Shiny
Shinyは、シンプルで美しく、パフォーマンスの高いデータアプリケーションを構築するためのオープンソースフレームワークです。 Shinyを開発する際の目標は、午後1日程度で誰かに教えられるほどシンプルでありながら、大規模でミッションクリティカルなアプリケーションを支えられるほど拡張性があるものを作ることでした。 数分で実用的なShinyアプリを作成できますが、プロジェクトの範囲が拡大しても、Shinyがそのアプリケーションに対応できることを確信できます。
Shinyを他のフレームワークと区別する主な特徴は、そのリアクティブな実行モデルです。 Shinyアプリを作成すると、フレームワークは入力、出力、および中間計算の間の関係を推論し、それらの関係を利用して、ユーザーの操作の結果として変更が必要な部分のみをレンダリングします。 その結果、ユーザーはデータを明示的にキャッシュしたり、コールバック関数を書いたりすることなく、効率的で拡張可能なアプリケーションを簡単に開発できます。
Shiny for Python
Shiny for Pythonは、Shinyの純粋なPython実装です。 これにより、Rを使用することなく、リアクティブ性、複雑なレイアウト、モジュールといったShinyの優れた機能すべてを利用できます。 Shiny for Pythonは、他のHugging Faceツールとスムーズに統合できるため、Hugging Faceのアプリケーションに最適です。
Spaceのデプロイを開始するには、このボタンをクリックしてハードウェアを選択し、Spaceを公開にするか非公開にするかを指定してください。 Spaceテンプレートは、アプリの開始に必要ないくつかのファイルを自動生成します。
app.py
このファイルはアプリのロジックを定義します。このファイルの修正方法について詳しく知るには、Shiny for Pythonのドキュメントを参照してください。 アプリが複雑になるにつれて、アプリケーションのロジックをモジュールに分割するのが良い考えです。
Dockerfile
Shiny for Python アプリのDockerfileは、ライブラリにシステム依存関係が少ないため非常にシンプルですが、アプリケーションに追加のシステム依存関係がある場合は、このファイルを変更する必要がある場合があります。 このファイルの必須機能は、スペースのREADMEファイルで指定されたポート(デフォルトでは7860)でアプリを公開して実行することです。
requirements.txt
Space は、requirements.txt ファイルに記載された依存関係を自動的にインストールします。 このファイルに shiny を含める必要があります。
R用Shiny
Shiny for Rは、Rコミュニティで人気かつ確立されたアプリケーションフレームワークであり、Hugging Faceのインフラストラクチャ上でRアプリをホストしたい場合や、優れたShiny R拡張機能のいくつかを利用したい場合に最適な選択肢です。 RアプリにHugging Faceのツールを統合するには、httr2を使用してHugging FaceのAPIを呼び出すか、reticulateを使用してHugging FaceのPython SDKのいずれかを呼び出すかのどちらかです。
R Shiny Spaceをデプロイするには、このボタンをクリックして、Spaceのメタデータを入力してください。 これにより、開始に必要なすべてのファイルがSpaceに配置されます。
app.R このファイルには、アプリケーションのロジックがすべて含まれています。必要に応じて、ui.R と server.R に分割することもできます。
Dockerfile
Dockerfile は rocker shiny イメージをベースに構築されます。追加のパッケージを使用するには、このファイルを修正する必要があります。
tidyverse のパッケージを多く使用している場合は、ベースイメージを rocker/shinyverse に切り替えることをお勧めします。
追加の R パッケージは、dockerfile の RUN install2.r セクションに追加することでインストールでき、GitHub 上のパッケージは RUN installGithub.r にリポジトリを追加することでインストールできます。
このDockerfileには、主に2つの要件があります。
まず、ファイルは README に記載したポートを公開する必要があります。デフォルトは 7860 であり、理由がある場合を除き、このポートを変更しないことをお勧めします。
第二に、現時点では、Hugging Face でのアプリのタイムアウト問題を解決する httpuv の開発版を使用する必要があります。