
Pythonユーザーのための最強ツール:Streamlit Cloudではじめる無料Webアプリ開発入門
「このPythonで作った分析ツール、すごく便利なんですが...」
「でも相手のパソコンにPythonが入ってないと使えないんですよね」
こんな経験、ありませんか?
せっかく便利な分析ツールやAIモデルを作っても、Pythonが使える環境がないと相手に使ってもらえない。これって、もったいないですよね。
実は、Pythonを使って作ったプログラムを、Pythonがインストールされていないパソコンでも使えるようにする方法があります。
それが、Streamlit Cloudです。
ブラウザさえあれば、WindowsでもMacでも、スマートフォンでも、誰でも使えます。しかも無料で。まるでWebサイトを見るような感覚で、あなたが作ったPythonプログラムを使ってもらえるのです。
Streamlitとは
Streamlitは、Pythonのコードだけでウェブアプリケーションが作れるフレームワークです。通常、ウェブアプリを作るには、HTML、CSS、JavaScriptなど複数の言語を扱う必要があります。しかしStreamlitなら、普段使っているPythonのコードを少し修正するだけで、見た目の良いウェブアプリが作れます。データの可視化やAIモデルの実行結果を表示するのも簡単です。たとえば、Pandasのデータフレームを表示したり、Matplotlibのグラフを埋め込んだり、ファイルのアップロード機能を追加したりと、わずか数行のコードで実現できます。
Streamlit Cloudの特徴
では、StreamlitでローカルPCに作ったアプリを、どうやって他の人に使ってもらえるようにするのか。ここで登場するのが、Streamlit Cloudです。Streamlit Cloudは、あなたが作ったStreamlitアプリをインターネット上で公開できるホスティングサービスです。GitHubにコードをアップロードするだけで、自動的にウェブアプリとして公開されます。サーバーの設定やデプロイ作業は一切不要です。しかも、無料で利用できます。つまり、あなたが作ったPythonプログラムを、相手のパソコンにPythonをインストールすることなく、ブラウザだけで使ってもらえるようになるのです。
実際の使い方
例えば、こんな場面で活躍します。毎月の売上予測を行うとします。通常であれば、エクセルにデータを入力し、Pythonで予測モデルを実行し、結果をまた別のファイルに出力する...という手順が必要です。これをStreamlitアプリにすると、ブラウザ上でエクセルファイルをドラッグ&ドロップするだけで、グラフや予測結果が表示されます。また、機械学習モデルのデモとしても便利です。たとえば画像認識モデルを作った場合、相手に「このパッケージをインストールして...」と説明する代わりに、「このURLにアクセスして、画像をアップロードしてください」と伝えるだけでOKです。
こんなアプリを作ってみました
実際に、私が作成した需要予測アプリをご紹介します。
このアプリでは、過去の販売実績のエクセルファイルをアップロードするだけで、AIを使った需要予測が可能です。
A列に日付、B列に数量データを入れたエクセルファイルを用意するだけで、すぐに未来の需要予測が行えます。
SARIMAモデルなどの高度な予測モデルも利用可能ですが、データ量や予測期間によっては処理に時間がかかる場合があります。実際にアクセスして、お試しいただけます。
開発とサービス利用のポイント
ただし、これだけの便利なサービスなので、もちろんメリットだけではありません。
無料プランでの制限事項
Streamlit Cloudの無料プランには、いくつかの制限があります。メモリ使用量は1GBまでという制限があり、大量のデータを扱う場合は注意が必要です。また、一定時間利用がないとアプリはスリープ状態になります。スリープからの復帰には少し時間がかかるため、初回アクセス時は少々お待ちいただく必要があります。
パフォーマンスを考慮した開発
快適に使ってもらうためには、いくつかの工夫が重要です。データの読み込みや処理は必要最小限にとどめましょう。先ほどの需要予測アプリを例にすると、予測モデルの計算には時間がかかるため、処理状況を表示するプログレスバーを設置しています。また、大量のデータを扱う場合は、事前にデータの絞り込みや集計を行うことをお勧めします。
セキュリティへの配慮
基本的に公開されたアプリは誰でもアクセスできます。機密性の高いデータを扱う場合は、パスワード認証の実装を検討しましょう。また、アップロードされたデータの取り扱いにも注意が必要です。セッション管理機能を使って、処理終了後にデータを適切に削除することも重要です。
効果的な画面設計
ユーザーが迷わず使えるインターフェースを心がけましょう。入力方法の説明や、エラーメッセージは分かりやすく表示します。また、処理結果のグラフや表は、見やすいサイズと配置を工夫すると良いでしょう。画面のレイアウトは、スマートフォンでも見やすいように調整することをお勧めします。
運用時の注意点
アプリの更新は、GitHubのリポジトリを更新するだけで自動的に反映されます。ただし、大きな変更を加える場合は、テスト用の環境で十分に動作確認をしてから本番環境に反映することをお勧めします。また、定期的にアプリの動作状況をチェックし、必要に応じてメンテナンスを行うことも大切です。
他のサービスとの比較
Pythonで作ったプログラムをWebで公開するサービスには、いくつかの選択肢があります。それぞれの特徴を見ていきましょう。
Google App Engine
Googleが提供している大規模なサービスです。できることはとても多く、大きな会社でも使えるような本格的な機能が揃っています。ただし、使い始めるまでの設定が複雑で、慣れるまでに時間がかかります。料金体系も複雑で、使用量によって予期せぬ請求が発生することも。個人や小規模チームでの利用には少し大げさかもしれません。
Heroku
長年多くの開発者に使われている定番サービスです。Pythonだけでなく、様々なプログラミング言語に対応しているのが特徴です。最近まで無料プランがあり人気でしたが、2022年末に無料プランが終了してしまいました。現在は月額7ドルからと、個人利用にはちょっと高めです。また、Streamlit Cloudと比べると、プログラムの公開までの手順が多く、初心者には敷居が高いかもしれません。
PythonAnywhere
名前の通り、Python専用のサービスです。基本的な機能は無料で使え、操作もシンプル。特に、プログラミングの学習用として人気があります。ただし、できることが限られており、データ分析や機械学習のプログラムを動かすには、少し工夫が必要です。また、無料プランではアクセス制限があり、商用利用には向いていません。
これらのサービスと比べると、Streamlit Cloudの特徴がはっきりと見えてきます。
まず、操作の簡単さです。他のサービスでは、プログラムを公開するまでに複雑な設定が必要ですが、Streamlit Cloudなら、GitHubにプログラムをアップロードするだけ。データ分析や機械学習のプログラムを、そのままWebアプリとして公開できます。
次に、コストの面です。無料プランの制限は確かにありますが、個人や小規模チームの利用であれば十分な機能が揃っています。メモリ制限も1GBまでと、データ分析には十分な容量です。
さらに、Pythonユーザーにとって最も嬉しいのは、「Pythonのコードを書くだけ」で済む点です。他のサービスでは、Webアプリを作るための追加の知識(HTML、CSS、JavaScriptなど)が必要になることが多いのですが、Streamlit Cloudならその必要がありません。
まとめ
「せっかく作ったPythonプログラムを、もっと多くの人に使ってもらいたい」
そんな思いを持つプログラマーにとって、Streamlit Cloudは心強い味方になってくれます。プログラミングの知識がない人でも、ブラウザを開くだけで使えるWebアプリに変身させてくれるのですから。特に、データ分析や機械学習に携わる方には、うってつけのサービスです。
これまでは
「このプログラムを動かすには、Pythonの環境構築が必要で...」
と説明していたものが、
「このURLにアクセスして、データをアップロードするだけです」
という会話に変わります。
もちろん、無料版には制限もあります。でも、個人や小規模チームでの利用なら、十分すぎるほどの機能が揃っています。しかも、GitHubと連携することで、プログラムの更新も簡単。コードを修正してアップロードするだけで、自動的にWebアプリも更新されます。
Pythonプログラミングの可能性を、大きく広げてくれるStreamlit Cloud。まずは簡単な分析ツールから始めて、徐々に機能を追加していくのがおすすめです。きっと、プログラミングの新しい楽しさが見つかるはずです。