Streamlitをやってみました
Streamlitって何?
Streamlitをご存じでしょうか?
Pythonのライブラリなのですが、私は業務ではPythonを使っていないので最近まで知りませんでした。以下が公開サイトですね。
普通は、ここでStreamlitの概要の説明や、インストールの説明なんかを書くところなのでしょうが、それを書いていくと、それだけで終わってしまいそうなので、ここでは省略したいと思います。
ググってみると、これらについて書かれているサイトは結構ありますので、そちらを参考にしてみるとよいと思います。例えば、以下のサイトはいかがでしょうか。
私の感触では、Pythonをやっている人であれば、インストールは簡単ですので試してみてください。
Pythonをあまりやっていない者が言うのも何なのですが・・・
コーディングしてみた感想
まず感じるのは、非常に簡単にコーディングできるなというところです。
Streamlitのサイトを見ていただくとわかりますが、ボタンやテキストボックスなどのコンポーネントが用意されており、非常に簡単な実装で画面を作成することができます。
サイドバーの作成も簡単にできます。
マルチページの実装も数行で実現できます。
凝った画面でなければ、非常に簡単に実装できるなあという印象です。
pandasなどのデータやグラフなどを表示するだけの画面を作りたいと思った時には、すぐにそれを実現できるだろうなと感じました。
ただ、あくまでも凝った画面でなければという印象でした。
業務で作っているような、Javascriptなどでガンガン画面制御するようなサイトを作るのはつらいなあというのが感想です。
実装上の注意点
サイト内にフォームを利用する場合、Submitボタンで画面遷移するというのは、よくある実装ですね。
フォームの作成自体は非常に簡単にできます。これは、単純にありがたいなと思います。
ボタンがクリックされると、画面遷移されて、ボタン押下時の実装が実行されます。
ここで注意点があります。
確かに押下時の実装が実行されるのですが、その前にそのページの実装が頭から実装されてしまいます。
他の言語のイベント処理の実装に慣れていると、非常にやりにくいんですよね。
例えば、PHPならSubmit後の実装ファイルは、Submit前と別ファイルのこともよくありますし、フレームワークを使用している場合でも、そういうことは気にする必要がないです。ずいぶん昔のフレームワークがあまりメジャーではなかった頃は、一つのファイルにまとめて処理を書いていた頃もありましたので、懐かしいような気分になりましたね。
セッション管理が必要
イベントが発生するたびに頭から実行されてしまうと、変数が毎回初期化されてしまうという状況になってしまいます。
そうならないようにするためには、セッションを利用する必要があります。
変数の内容をセッションに入れておけば、次回の実行時にその値をセッションから取り出して利用するが切るようになります。
コールバックを使う
ボタンが押されたときに、最初から処理が実行されてしまいますが、場合によっては、その前に処理を実行したい場合があります。
例えば、ボタンが押されたら、ボタンの有効・無効を切り替えたいとか。
こういう、先に実行したい処理を書く場合にはコールバックを使います。
感想まとめ
ボタン押下などにより、処理が最初から実行されること。
セッションを使えば、前回の変数の結果を利用できること。
コールバックを使えば、他の実装の前に、処理を実行できること。
この3点を理解しておけば、あまり凝った制御をしなければ、驚くほど早くサイトを作れるんだなと感じました。目的によっては、非常に有用なライブラリなので、これからもそういう場面では利用したいなと思っています。