【Streamlit】Magic機能で楽々Webアプリ開発!

Streamlit
この記事は約7分で読めます。

こんにちは、JS2IIUです。

Streamlitは、Pythonでデータサイエンスや機械学習のWebアプリケーションを簡単に構築できるフレームワークです。その中でもMagic機能は、Streamlitの使いやすさを象徴する機能の一つで、シンプルなコードで機能的な表示が可能です。実例を交えて説明していきます。今回もよろしくお願いします。

Magic機能とは?

通常、Webアプリケーションを開発する際には、HTMLやJavaScriptなどのフロントエンド技術を駆使して、データを表示したり、ユーザーからの入力を受け取ったりする必要があります。しかし、StreamlitのMagic機能を使えば、Pythonの変数を記述するだけで、Webページ上に値を表示することができます。まるで魔法のように、複雑なコードを書かずに、データやグラフなどをWebページに表示できるのです!

変数を書くだけで表示されるのは、Google Colabを使っているのと感覚が近いかもしれません!

例えば、以下のコードはどちらも同じ結果になります。

Python
import streamlit as st

# st.write()を使う場合
st.write("Hello, Streamlit!")

# Magic機能を使う場合
"Hello, Streamlit!" 

サンプルプログラム

それでは、Magic機能を使ったサンプルプログラムを見てみましょう。

Python
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をいつでもオフにすることができます

TOML
[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著、嶋田、鈴木訳。開発環境の構築、プロジェクトの管理、テストに関して実践的な内容でとても参考になる一冊です。

最後まで読んでいただきありがとうございました。

コメント

タイトルとURLをコピーしました