Pythonエディタ(ブラウザで実行)
インストール不要、サーバー不要、アカウント登録不要 — ブラウザ上で本物のPythonを書いて実行できます。WebAssemblyにコンパイルされた完全なCPythonビルド「Pyodide」を使用しています。
1,152回閲覧
仕組み
これはデスクトップのpython3コマンドの基盤にもなっている、まさにそのリファレンス実装であるCPythonインタプリタを、Pyodideを通じてWebAssemblyにコンパイルしたものを、ブラウザに一度だけ読み込み、お使いの端末上で完全に実行するものです。あなたのコードがこのサイトのサーバーに届くことは一切ありません — バックエンド上のサンドボックス化されたサブプロセスも、キューに入れられるジョブも、アップロードするものも存在しません。初回実行時にはPythonランタイム(約12MB)がダウンロードされ、その後はブラウザがキャッシュするため、それ以降の実行 — そして次回以降の訪問時の実行 — はいずれも何も再ダウンロードすることなく即座に始まります。
模擬的な限定サブセットではなく本物のCPythonであるため、Pythonの実際の意味論はローカル環境とまったく同じように適用されます。これにはPythonを特徴づける構文規則も含まれます — Pythonは、関数本体やループ、if分岐がどこで始まりどこで終わるかを、インデント(字下げ)の深さだけから判断します。同じ目的のために{}の波括弧を使うC、Java、JavaScriptとは対照的です。1つのブロック内でタブとスペースを混在させることは、この本物のインタプリタが黙って推測するのではなくIndentationErrorとして拒否するまさに典型的なケースです。Python 3は、インデントが曖昧なコードの実行そのものを拒否するからです。
知っておくとよいこと
Python標準ライブラリ全体がこのランタイムに同梱されています — math、json、re、datetimeなど — そのため標準ライブラリだけで完結するコードは変更なしにそのまま動作します。PyPI上のサードパーティ製パッケージは事情が異なります。これらは事前に読み込まれていません。なぜなら、それらを同梱すると、必要としない訪問者も含めてすべての人の初回ダウンロードサイズが大きく膨らんでしまうからです。
よくある質問
なぜ初回実行だけ数秒かかるのですか?
ブラウザが最初の1回だけ、WebAssembly版のPythonランタイムをダウンロードして初期化するためです。それ以降はキャッシュされるため、次回以降の訪問(および同じページでの再実行)は即座に始まります。
numpyやrequestsのようなパッケージをインストールできますか?
このツールは標準ライブラリのみを実行します。Pyodideはmicropipを介して純粋なPython製パッケージをインストールする機能をサポートしていますが、それには追加のダウンロード手順が必要になり、この軽量ツールの対象範囲を超えます — その場合はPyodide自体のコンソールを直接お使いください。
コードはあなたのサーバー上で実行されますか?
いいえ — どこにもアップロードされません。Pythonインタプリタは、このページの他のJavaScriptと同様に、あなた自身のブラウザタブの中でWebAssemblyとして実行されます。
タブとスペースを混在させるとなぜIndentationErrorが出るのですか?
Pythonにはブロックの開始と終了を示す波括弧がありません — インデントの深さそのものがブロック構造です。Python 3は、行と行のあいだでタブとスペースが一貫性なく混在しているファイルを、意図を推測するのではなく意図的に実行拒否します。そのため、この本物のPythonインタプリタはコードを黙って誤って解釈するのではなく、IndentationErrorを送出します。
これは本当にPythonですか、それとも限定的なJavaScriptによる再実装ですか?
本物のCPythonです — サーバーやデスクトップでPythonを動かしているのと同じC言語ベースのインタプリタを、ブラウザのサンドボックス内で実行できるようWebAssemblyに再コンパイルしたものです。言語仕様の挙動、エラーメッセージ、標準ライブラリはすべて通常のローカルインストールと一致します。
関連ツール
問題を報告
Pythonエディタ(ブラウザで実行)
コメント
まだコメントはありません — 最初のコメントを書いてみましょう!