ReactPyは、Pythonを使用してインタラクティブなWebアプリケーションを構築するためのフレームワークです。ReactJSのシンプルさと強力さを取り入れたReactPyは、Python開発者がJavaScriptをほとんど使用せずにモダンなWebアプリケーションを作成できるようにします。以下に、ReactPyの概要とその特徴を具体的な例を交えて紹介します。
ReactPyの特徴
Python中心の開発
ReactPyはPythonで完全に書かれているため、Pythonに慣れている開発者にとって使いやすいです。これにより、フルスタックのWeb開発がPythonだけで可能になります。
コンポーネントベースのアーキテクチャ
ReactPyはReactJSと同様に、コンポーネントベースのアーキテクチャを採用しています。これにより、再利用可能なUIコンポーネントを簡単に作成できます。
リアクティブプログラミング
データの変化に応じてUIを自動的に更新するリアクティブプログラミングをサポートしています。これにより、インタラクティブなユーザーインターフェースの構築が容易になります。
例題1: 基本的なReactPyアプリケーションの作成
以下の例では、ReactPyを使用してシンプルなカウンターアプリケーションを作成します。このアプリケーションでは、ボタンをクリックするたびにカウンターの値が増加します。
必要なライブラリのインストール
pip install reactpy
カウンターアプリケーションの作成
from reactpy import component, use_state, html, render
@component
def Counter():
count, set_count = use_state(0)
def increment():
set_count(count + 1)
return html.div(
html.h1(f"Count: {count}"),
html.button("Increment", on_click=increment)
)
render(Counter, "index.html")
このコードでは、ReactPyのcomponent
デコレータを使用してカウンターコンポーネントを定義しています。use_state
フックを使用して状態を管理し、ボタンのクリックイベントでカウンターの値を更新します。render
関数でコンポーネントをレンダリングし、HTMLファイルに出力します。
アプリケーションの実行
上記のコードをapp.py
という名前のファイルに保存し、ターミナルで以下のコマンドを実行します。
python app.py
ブラウザでindex.html
を開くと、カウンターアプリケーションが表示されます。ボタンをクリックするたびにカウンターの値が増加します。
例題2: フォーム入力とリストの表示
次に、ユーザーがフォームに入力したデータをリストに追加して表示するアプリケーションを作成します。
from reactpy import component, use_state, html, render
@component
def TodoList():
new_task, set_new_task = use_state("")
tasks, set_tasks = use_state([])
def add_task(event):
if new_task:
set_tasks(tasks + [new_task])
set_new_task("")
def handle_input_change(event):
set_new_task(event.target.value)
return html.div(
html.h1("Todo List"),
html.input(value=new_task, on_change=handle_input_change),
html.button("Add Task", on_click=add_task),
html.ul([html.li(task) for task in tasks])
)
render(TodoList, "todo.html")
このコードでは、TodoList
コンポーネントを作成し、ユーザーが入力したタスクをリストに追加して表示します。use_state
フックを使用してフォームの入力値とタスクリストの状態を管理します。handle_input_change
関数で入力値を更新し、add_task
関数で新しいタスクをリストに追加します。
例題3: APIからデータを取得して表示
次に、外部APIからデータを取得して表示するアプリケーションを作成します。この例では、JSONPlaceholder APIを使用してユーザーリストを取得します。
import requests
from reactpy import component, use_state, use_effect, html, render
@component
def UserList():
users, set_users = use_state([])
def fetch_users():
response = requests.get("https://jsonplaceholder.typicode.com/users")
if response.status_code == 200:
set_users(response.json())
use_effect(fetch_users, [])
return html.div(
html.h1("User List"),
html.ul([html.li(user['name']) for user in users])
)
render(UserList, "users.html")
このコードでは、UserList
コンポーネントを作成し、use_effect
フックを使用してコンポーネントのマウント時にデータを取得します。requests
ライブラリを使用してAPIからデータを取得し、ユーザーリストを更新します。
結論
ReactPyは、Pythonを使用してモダンなWebアプリケーションを構築するための強力なフレームワークです。ReactPyを使用することで、データ入力、動的なデータ表示、インタラクティブな操作など、科学技術分野で必要とされる多くの機能を簡単に実装できます。基本的なカウンターアプリケーションからAPIを使用したデータ取得まで、ReactPyの理解と適用は、効率的なWebアプリケーションの開発において非常に有用です。