こんにちは、JS2IIUです。
Streamlitは、Pythonでデータサイエンスや機械学習のWebアプリケーションを簡単に構築できるフレームワークです。その中でもMagic機能は、Streamlitの使いやすさを象徴する機能の一つで、シンプルなコードで機能的な表示が可能です。実例を交えて説明していきます。今回もよろしくお願いします。
Magic機能とは?
通常、Webアプリケーションを開発する際には、HTMLやJavaScriptなどのフロントエンド技術を駆使して、データを表示したり、ユーザーからの入力を受け取ったりする必要があります。しかし、StreamlitのMagic機能を使えば、Pythonの変数を記述するだけで、Webページ上に値を表示することができます。まるで魔法のように、複雑なコードを書かずに、データやグラフなどをWebページに表示できるのです!
変数を書くだけで表示されるのは、Google Colabを使っているのと感覚が近いかもしれません!
例えば、以下のコードはどちらも同じ結果になります。
import streamlit as st
# st.write()を使う場合
st.write("Hello, Streamlit!")
# Magic機能を使う場合
"Hello, Streamlit!" サンプルプログラム
それでは、Magic機能を使ったサンプルプログラムを見てみましょう。
import streamlit as st
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 文字列
s ="Hello, Streamlit!"
s
# 絵文字
emj = ":smile:"
emj
# 数値
pi = 3.1415926535
pi
# リスト
l = [1, 2, 3, 4, 5]
l
dl = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
dl
# タプル
tp = (10, 20, 30)
tp
# 辞書
d = {"key1": "value1", "key2": "value2"}
d
# NumPy配列
npa = np.array([1, 2, 3, 4, 5])
npa
# Pandas Series
ser = pd.Series([10, 20, 30, 40, 50])
ser
# Pandas DataFrame
df = pd.DataFrame({
'A': [1, 2, 3, 4, 5],
'B': [10, 20, 30, 40, 50]
})
df
# Matplotlib Figure
fig, ax = plt.subplots()
ax.plot([1, 2, 3, 4, 5], [10, 40, 30, 60, 55])
fig
# 関数
def my_function(x):
''' This is a simple function '''
return x * 2
my_function
# クラス
class MyClass:
''' This is a simple class '''
class_variable = 123
def __init__(self, value):
self.value = value
def get_value(self):
return self.value
@classmethod
def class_method(cls):
return cls.class_variable
MyClass
# None
None
サンプルプログラムの詳細説明
このプログラムでは、様々な種類の変数を定義し、それぞれをMagic機能を使って表示しています。
- 文字列、絵文字、数値、リスト、タプル、辞書: これらの変数は、そのままWebページ上に表示されます。
- NumPy配列、Pandas Series、Pandas DataFrame: これらのデータ構造は、整形されたテーブルとして表示されます。
- Matplotlib Figure: Matplotlibで作成したグラフをWebページに埋め込むことができます。
- 関数、クラス: 関数やクラスの定義を表示することもできます。Docstringの表示と、メソッドやクラス変数も見やすく表示してくれます。ただし、実行結果は表示されません。
- None: Noneは数値の表示と同じ要領で表示されます。。
補足
Streamlitのコマンドをもっと明示的に呼び出したい場合は、~/.streamlit/config.tomlで以下の設定をして、magicをいつでもオフにすることができます
[runner]
magicEnabled = false今のところ、マジックは Python アプリのメインファイルでのみ動作し、インポートされたファイルでは動作しません。問題点については GitHub issue #288 を参照してください。
Support magic in imported modules · Issue #288 · streamlit/streamlit
参考になるWEBサイト
ぜひ、StreamlitのMagic機能を活用して、効率的にWebアプリケーションを開発してみてください!
Pythonに関する書籍の<PR>です。
24年9月に出版された「ハイパーモダンPython-信頼性の高いワークフローを構築するモダンテクニック」、Claudio Jolowicz著、嶋田、鈴木訳。開発環境の構築、プロジェクトの管理、テストに関して実践的な内容でとても参考になる一冊です。
最後まで読んでいただきありがとうございました。


コメント