💜
Streamlitの書きやすさでReactの反応性を。Pythonの新Webフレームワーク「Violit」

はじめに
Pythonでデータ可視化やAIデモを構築する際、Streamlitは非常に強力なツールです。しかし、プロジェクトが大きくなるにつれ、「Full-Script Rerun(スクリプト全体の再実行)」によるパフォーマンスの低下や、デザインのカスタマイズ性に限界を感じることはありませんか?
この課題を解決するために、Streamlitの直感的な構文を維持しつつ、**Reactのような細粒度の反応性(Fine-grained Reactivity)**を実現した新しいオープンソースフレームワーク Violit(バイオリット) を開発しました。
Violitの3つの主要な特徴
- No Full Rerun : ページ全体を再ロードしません。状態(State)が変化したコンポーネントのみをピンポイントで更新します。
- Zero Learning Curve : Streamlitユーザーなら、わずか10分で使いこなせます。
- Beautiful by Default : 20種類以上のテーマ(Cyberpunk, Dracula, Vaporwaveなど)をコード1行で適用可能です。

コード例
複雑なコールバックやJavaScriptの知識は不要です。
import violit as vl
app = vl.App(title="Violit Demo")
count = app.state(0)
# ボタンをクリックしてもスク리プト全体は再実行されず、countだけが更新されます
app.button("Increment", on_click=lambda: count.set(count.value + 1))
app.text("Current Count:", count)
app.run()
ベンチマーク結果
大量のデータを扱う際、ViolitはRerunのオーバーヘッドがないため、圧倒的なスピードを実現します。
| Data Points | Streamlit Rendering | Violit Rendering |
|---|---|---|
| 100K | ~62ms | ~14ms |
| 500K | ~174ms | ~20ms |
| 1M | ~307ms | ~24ms |
おわりに
Violitは、単なるStreamlitの代替品ではなく、Pythonだけで完結する**本格的なWebサービス(MVP)**の構築を可能にすることを目指しています。 現在、GitHubで絶賛開発中(v0.1.12)です。ぜひ一度触ってみて、フィードバックをいただけると嬉しいです!
- GitHub : https://github.com/violit-dev/violit
- Docs : https://violit.cloud/ (Violitで構築されています)
Discussion