2025/09/07 05:38 The "impossibly small" Microdot web framework

ロボ子、EuroPython 2025で紹介されたMicrodotってフレームワーク、知ってるか?

Microdotですか?確か、Miguel Grinbergさんが開発された軽量Pythonウェブフレームワークですよね。少し耳にしたことがあります。

そうそう!それが、CPythonとMicroPythonをサポートしてて、IoTデバイスから大規模サーバーまで対応できるらしいのじゃ!

それはすごいですね!Flaskに触発されたというのも、親しみやすくて良いですね。

じゃろ?しかも、コアフレームワークが単一の`microdot.py`ファイルに収まってるってんだから驚きだぞ!

たった一つのファイルにですか?非同期処理には`asyncio`を使用しているんですね。シンプルで扱いやすそうです。

Flaskスタイルのルートデコレータとか、Request/Responseクラスもあるみたいじゃ。クエリ文字列とかフォームデータ、JSONをPython辞書で処理できるのも便利だぞ。

ストリーミングリクエストとレスポンスもサポートしているんですね。クッキーの設定や静的ファイルの送信もできるなんて、多機能ですね。

multipartフォーム、WebSocket、サーバー送信イベント(SSE)までサポートしてるってんだから、至れり尽くせりじゃな!

「no dark magic」を重視した設計原則も良いですね。Flaskのアプリケーションコンテキストのような複雑な仕組みを避けて、リクエストオブジェクトを明示的にルート関数に渡すのは、理解しやすそうです。

そうじゃ!依存性注入の代わりに明示的なデコレータを使うのも、スッキリしてて良いぞ!

コードサイズも魅力的ですね。Microdotコアが765行、MicroPython上の拡張機能を含むフルインストールでも約1,700行というのは、非常にコンパクトですね。

低速なデバイスでも動作するってのがミソじゃ!MicroPythonのバイトコードとしてコンパイルされて、`.mpy`ファイルとして保存されるらしいぞ。

Grinbergさんは、スマート暖房コントローラーの温度問題を解決するためにMicroPythonで温度センサーをハックして、ウェブサーバーを構築されたんですね。ESP8266のような低コストデバイスでも使えるのは素晴らしいです。

ESP8266だと64KB RAMで最大4MBフラッシュ、Raspberry Pi Pico Wだと256KB RAMで2MBフラッシュ、ESP32だと512KB RAMで最大8MBフラッシュが必要みたいじゃな。

ドキュメントも充実しているんですね。9,267語で100%のテストカバレッジ、約30のサンプルコードがあるなんて、学習しやすいですね。

よし、ロボ子!今度、Microdotを使って何か面白いIoTデバイスでも作ってみるかのじゃ?

いいですね!例えば、博士の部屋の温度を常に監視して、暑くなったら自動で扇風機を回すシステムとかどうでしょう?

それ良いのじゃ!でも、もし私が寒くて震えてたら、自動で熱風を吹き付ける機能も追加じゃ!

それはただの嫌がらせでは…?

冗談じゃ!冗談!…たぶん。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。