はじめに
皆さん、Streamlit使っていますか?
とても便利ですよね!!!ね(´・ω・`)?
Streamlitは簡単にWebアプリケーションを開発するだけでなく、クラウドサービスへのデプロイも簡単であることから人気のあるWebフレームワークとなっています。
そんなStreamlitですが、データを読み込んだ際にどんな入出力の流れになっているのだろう?と思ったので、超ざっくりですがアーキテクチャとして流れをまとめてみました。
※主観的な意見も混じっているかと思いますので、間違いがあればご指摘ください。
もっと細かな仕組みを知りたい方は以下の記事を参照してみてください。
アーキテクチャ
早速アーキテクチャを示しました。
StreamlitはフロントエンドとしてReactを用いて開発されているようです。
バックエンドは当然Pythonですね。
Pythonのコードでフロントエンドも開発できるようにReact側?で設計されているのだと想像します。
データの流れとしてはアーキテクチャのように、ユーザーからの入力はブラウザを通してバックエンド側に読み込まれます(アーキテクチャではいきなりバックエンドに書いてますが、正確にはフロントエンドで入力したものがバックエンドで読み込まれます)。
フロントエンドから受け取ったデータ等をバックエンドで処理した結果を、JSON形式などにシリアライズしたものをフロントエンドに送信し、ユーザーに表示されるという仕組みになっています。
また、フロントエンド側でスライダーやボタンなどのユーザーインターフェースの操作をイベントとしてデータを取得し、その結果をバックエンドに渡すことで処理が実行し、最新の結果が表示されることになります。
ローカル環境で実行する際は、このデータの流れは特に意識する必要はありませんが、クラウド上にデプロイする際には、フロントエンドとバックエンド間の通信を暗号化するなどしてデータの安全性を高めることが重要です。
社内のIPアドレスからのみアクセスできるように制限をかけるなど、データ漏洩に細心の注意を払わないとですね!
まとめ
いかがだったでしょうか。
今回は技術的なことを一切書いてはいませんが、Streamlitをより理解するために知っておいて良いのかなと思ったのでまとめました。
実際にITやDXに疎い企業はたくさんあります。私が転職する前に在籍していた会社もデータ漏洩などにはかなり気を付けていたので、こういうデータの流れというのを説明できるようにしておくのも必要かと思います。
はじめにも記載しましたが、間違いがあれば是非ご指摘いただけると助かります(/・ω・)/
それでは!!!