概要
Microdot は、 CPython と MicroPython の両方に対応した超軽量Webフレームワーク。 IoTデバイスからクラウドサーバーまで幅広く利用可能。 開発者は Miguel Grinberg で、 Flask にインスパイアされた設計。 機能は最小限かつ実用的で、拡張も容易。 ドキュメントやテストも充実したオープンソースプロジェクト。
Microdot:超軽量Webフレームワークの誕生背景
- Microdot は、 Miguel Grinberg によって開発されたPythonベースのWebフレームワーク。
- CPython と MicroPython の両方で動作し、IoTデバイスから大規模サーバーまで対応。
- Grinbergは Flask Mega-Tutorial の著者としても有名で、Flaskから多くのアイデアを得ている。
- Flask や Bottle はMicroPython環境では重すぎて動作不可、標準ライブラリの機能制限も課題。
- Grinberg自身のスマート暖房体験から生まれた実用的なニーズが開発のきっかけ。
Microdot開発のきっかけと実体験
- アイルランド移住後、暖房コントローラの不調に直面。
- サードパーティ製サーモスタットの温度誤差が±3°Cと大きく、快適な室温維持が困難。
- オーナーの協力を得られず、自力で MicroPython 搭載の独自制御システムを構築。
- 温湿度センサーと連携し、5分ごとに温度を計測してヒーターを自動制御。
- 精度±0.5°Cのセンサーで問題解決、さらにWebダッシュボードで情報を取得したい要望が発生。
Microdotの特徴と設計思想
- microdot.py 単一ファイルでコアが完結、フル非同期設計( asyncio ベース)。
- マイコン向けに プロセスやスレッド非対応、非同期処理のみ対応。
- Flask風デコレータ でルート定義、Request/Responseクラス、前後処理フックを搭載。
- クエリストリング・フォームデータ・JSONはPython辞書で処理。
- メモリ制約を考慮し、 ストリーミング対応 や静的ファイル送信も可能。
- サブアプリケーション (FlaskのBlueprint相当)でモジュール構成に対応。
- 独自Webサーバー( TLS対応)を内蔵。
拡張機能とエコシステム
- 拡張機能は各1ファイルで提供、コアを肥大化させず機能追加が可能。
- multipartフォーム (ファイルアップロード対応)
- WebSocket/SSE 対応
- テンプレート( utemplate /Jinja for CPython)
- 認証・セッション管理 (jwt.pyによるトークン認証)
- ドキュメントは書籍レベルで詳細、 9,267語・47分相当 の読みごたえ。
- 100%テストカバレッジ、30以上の実例付き。
設計原則と他フレームワークとの比較
- 「 No dark magic」を掲げ、暗黙的な動作や複雑な依存性注入を排除。
- リクエストオブジェクトは明示的にルート関数へ渡す設計。
- FastAPIのような依存性注入は明示的デコレータで代用。
- コード規模比較:
- Django :110,000行
- Flask+Werkzeug :15,500行
- FastAPI+Starlette :14,900行
- Bottle :3,000行
- Microdotコア :765行、拡張込みでも約1,700行
- URLマッチングも63行で実装、Flaskの1,362行に比べて圧倒的な軽量さ。
実機デモとハードウェア要件
- 発表では ESP8266 搭載サーモスタットをUSB接続しデモ。
- ESP8266 :64KB RAM/4MBフラッシュ、WiFi内蔵、約5ユーロ
- Raspberry Pi Pico W :256KB RAM/2MBフラッシュ
- ESP32 :512KB RAM/最大8MBフラッシュ
- ノートPC(32GB RAM)と比較し、超小型・低コストでWebサーバーが実現可能。
コードサイズ・パフォーマンス・最適化
- Microdotは外部でバイトコード( .mpy)へプリコンパイルし、デバイスへ転送。
- デバイス上での直接コンパイルは非現実的。
- ファームウェアに組み込み、RAM消費をさらに抑制可能。
- パフォーマンスは「 本当に遅い」が、IoT用途では十分実用的。
- コア機能の取捨選択で、 80%のユースケース を20%の実装でカバーする方針。
Microdotの今後とコミュニティ
- Grinbergは ドキュメントの質 や 拡張性 に強いこだわり。
- Flaskユーザーは移行が容易、IoTや小規模Webサービスに最適。
- オープンソースとしてコミュニティも活発、今後の発展が期待される。