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標準ライブラリ全体がこのランタイムに同梱されています — mathjsonredatetimeなど — そのため標準ライブラリだけで完結するコードは変更なしにそのまま動作します。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に再コンパイルしたものです。言語仕様の挙動、エラーメッセージ、標準ライブラリはすべて通常のローカルインストールと一致します。

コメント

まだコメントはありません — 最初のコメントを書いてみましょう!

関連ツール