MicroPythonとは?データサイエンティストが知るべき活用場面と基礎知識

Published on: | Last updated:

最近、MicroPythonってやつについて考えてて。

Stack Overflowの今年のサーベイで見かけたのがきっかけ。たしか、最も人気のある技術カテゴリで…1.6%だったかな。まぁ、2%弱。数字自体は小さいけど、なんでリストに入ってるんだろうって。これがハードウェアとソフトウェアの「橋渡し」になるんじゃないか、って思ったんだよね。

この記事は、そのへんのメモみたいなもの。結局MicroPythonって何なのか、データサイエンティストとして知っておくべきことってあるのか、とか。自分用の整理に近いかな。

TL;DR

先に結論を言うと、MicroPythonは、データサイエンティストが「ハードウェアを触る」ための、すごく良い入り口になる。Pythonが書けるなら、追加でC++みたいな難しいのを学ばなくても、モノを動かせる。これに尽きる。

ソフトウェアとハードウェアをつなぐ架け橋としてのMicroPython
ソフトウェアとハードウェアをつなぐ架け橋としてのMicroPython

じゃあ、実際どんな感じなの?

正直、いきなりハードウェア買えって言われても困るよね。自分もそう。でも、Web上で動くシミュレーターがあるから、それで試せる。一番簡単な「Hello, World!」的なやつ、LEDをチカチカさせるやつをやってみる。

やることは単純。ブラウザのターミナルにコードを一行ずつ入れていくだけ。

# まずは時間を扱うライブラリを読み込む
# シミュレーターだから、標準の'time'を使う。実機だと'utime'とかになる
import time
# 次にLEDを点滅させる関数を定義する
# 5回繰り返すだけ
def blink_led():
    for _ in range(5):
        print("LEDの状態: ON")
        time.sleep(0.5)  # 0.5秒待つ
        print("LEDの状態: OFF")
        time.sleep(0.5)
# 最後に関数を呼び出す
blink_led()

これを実行すると、コンソールに「ON」「OFF」が交互に表示される。うん、地味だけど、これが基本。実際には `print` の代わりに、ハードウェアを直接叩く命令を書くことになる。でも、Pythonのロジックでハードが動く感覚は、これで何となく掴めるはず。

Webシミュレーター上での実行結果のイメージ
Webシミュレーター上での実行結果のイメージ

そもそもMicroPythonって何者?

さっきのLEDチカチカの裏側にあるのがMicroPython。要するに、これ、すごくコンパクトなPython 3なんだよね。

普通のPythonがPCとかサーバーみたいなパワフルなマシンで動くのに対して、MicroPythonは「マイクロコントローラ」っていう、めちゃくちゃ小さなコンピュータの上で動くように設計されてる。

  • マイクロコントローラって?:通称マイコン。一つのチップにCPUとかメモリが乗ってる小さなコンピュータ。IoTセンサーとか、スマート家電とか、ロボットとか、そういうものの頭脳になる部分。
  • リソースが少ないって?:メモリが数キロバイトとか、そういうレベル。スマホやPCとは比べ物にならないくらい小さい。だから、普通のPythonは重すぎて動かない。
  • GPIOピン:マイコンについてる足(ピン)のこと。ここから電気信号を出したり入れたりして、LEDを光らせたり、センサーの値を読み取ったりする。さっきの `print("ON")` が、実際にはこのピンに電圧をかける命令になるわけ。

なんでこれが重要かっていうと、C++とかアセンブリ言語とか、ハードウェア寄りの難しい言語を知らなくても、慣れたPythonの文法でハードウェアを制御できるから。プロトタイプを素早く作りたいときには、すごく便利。

普通のPythonと何が違うの?

じゃあ、いつものPythonと何が違うのか。これが一番大事なところかも。別物と考えた方がいい。

比較項目 Python (いつも使ってるやつ) MicroPython
ターゲット PC、サーバー。リソースはたっぷりある前提。 マイクロコントローラ。メモリもCPUもカツカツ。手のひらサイズの基板とか。
標準ライブラリ `pandas` `numpy` `scikit-learn`... 何でもござれ。データ分析からWeb開発までフルセット。 かなり絞られてる。`math` `os`みたいな基本的なものはあるけど、縮小版。`pandas`?もちろん無い。
得意なこと 大量のデータを処理したり、複雑な計算をしたり、機械学習モデルを学習させたり。 ハードウェアを直接叩くこと。センサーからデータを「集める」、モーターを「動かす」、LEDを「光らせる」。
立ち位置 データ分析やアプリ開発の主役。 ハードウェアとの通訳。データサイエンスのパイプラインで言えば、一番最初の「データ収集」部分を担当する感じ。

この表を見ればわかるけど、MicroPythonで `import pandas as pd` はできない。それが答え。MicroPythonは、データを集めたり、事前に学習させたすごく小さなAIモデルを実行したり(エッジAI)するためのもの。デバイス上で大規模なデータ分析をするためのものじゃないんだよね。

反例と誤解の整理

ここでよくある誤解をいくつか解いておきたい。

  • 誤解1:「Pythonの代替品でしょ?」
    いや、違う。さっきの表の通り、完全に専門分野が分かれてる。データ分析には普通のPython。ハードを動かすならMicroPython。適材適所。
  • 誤解2:「電子工作の知識が必須なんでしょ?」
    あれば有利だけど、必須じゃない。Pythonが分かっていれば、LEDを光らせるくらいならすぐできる。そこから先は、やりたいことに合わせて学んでいけばいい。ハードルはC++よりずっと低い。
  • 誤解3:「デバイス上で複雑なAIが動かせるんでしょ?」
    動かせない。動かせるのは、あらかじめ別の場所で学習させた、ものすごく軽量化されたモデルを使った「推論」だけ。例えば、画像に「猫」が写ってるかどうかを判断する、みたいな単純なタスク。モデルの「学習」はPCやクラウドでやる必要がある。

このへん、海外のコミュニティ、例えばRaspberry Pi Foundationのフォーラムとか見てるとDIY精神旺盛な人が多いけど、日本ではM5Stackみたいに最初からケースや画面がついてるデバイスが人気な印象がある。あれだとハンダ付けとかしなくても始めやすいから、よりソフトウェア寄りの人にはとっつきやすいかも。QiitaにもM5StackとMicroPythonを使った作例記事がたくさんあるしね。

PythonとMicroPythonの役割分担
PythonとMicroPythonの役割分担

で、結局、学ぶ価値ある?

正直なところ、ほとんどのデータサイエンティストにとって、日常業務で「必須」になることはないと思う。でも、知っておく価値は間違いなくある。

IoTとかエッジAIとか、言葉だけはよく聞くけど、それがどうやって動いてるのか、データの源流で何が起こってるのかを肌で感じられるから。自分の書いたコードで現実世界のモノが動くっていうのは、単純に面白いしね。

データがどうやって生まれるのか、その「現場」を知ることで、データに対する解像度が上がる。そういう意味で、一度は触ってみるのがおすすめかな。

ちょっと考えてみよう

もし、Pythonの知識だけで何か小さなガジェットを作れるとしたら、何を作ってみたいですか?

例えば「植物の水やりを自動化するやつ」とか、「部屋の二酸化炭素濃度を測って換気を促すアラーム」とか。あなたのアイデアをコメントで教えてください。

Related to this topic:

Comments

  1. Guest 2025-11-27 Reply
    データサイエンティストの仕事で海外プロジェクトに絡んだ時、あの…MicroPythonが思ったよりガチで役立った話。東南アジアのすっごい田舎の農地とか、本当に人もまばらな場所でIoTセンサー設置してデータ集めてた案件だったんだけどさ。最初は普通にRaspberry Pi使えばいいやってノリだったけど、よく考えたらコスパ最悪だしバッテリー問題もしょっちゅう。そこで仕方なくっていうか半分賭けみたいな感じでMicroPython動く小さいボード導入したら、一気に現場と本部(解析チームね)の距離感ギュッと縮まった気分になった。現場サイドでもちょっとした前処理ぐらいなら、その場でコード動かせるからゴチャゴチャ全部クラウド送る必要もないし。 Jupyter Notebookばっか触ってきた自分としては正直「いや、自作コードなんて無理じゃん」くらい思ってた部分もあった。でも、こういう極端な環境こそシンプルな言語・軽量ボードが生きる瞬間あるんだなーと割と衝撃だった。他にも中東行った時や南米出張中でも「あれ?これまたMicroPythonいけるやつでは?」的なの何回か遭遇したし。 結局ツール選びとか技術はマジで状況次第…TPO大事って改めて実感させられたわ。
  2. Guest 2025-11-04 Reply
    昨日、子どもと一緒にMicroPythonで温度センサー作ってみた。正直、自分は全然プログラムとかやらない親なんだけど、思ったより簡単だったからちょっと驚いた。コード打ちながら「あれ、ここ合ってる?」って何回も手が止まるし、間違えて動かない時もあった。ネットで調べてやり直して…それでもうまく反応した瞬間、なんか妙にテンション上がる。 普段より会話も増えた気がする。データ取って、それをグラフっぽくしてみたりしてさ。こういう小さいことからでも、一緒に色々覚えられるのって意外と面白いなと思った。本当はもっと手際よくできたらいいんだろうけど、多分このぐだぐだ感が逆に良かったんじゃないかな…まあ、またやるかもしれない。
  3. Guest 2025-09-13 Reply
    うーん、このMicroPythonって、子供のプログラミング教育に使えるのかな?小学生でも理解できるレベルなのかちょっと気になるんだけど…。IoTとか最近よく聞くけど、本当に役立つのかな?