wasm-compatibility
marimoノートブックがWebAssembly(WASM)と互換性があるかどうかを確認し、問題があれば報告します。WASMデプロイを検討している際に、互換性の問題を事前に把握するために使用します。
description の原文を見る
Check if a marimo notebook is compatible with WebAssembly (WASM) and report any issues.
SKILL.md 本文
marimo ノートブック用 WASM 互換性チェッカー
marimo ノートブックが WebAssembly (WASM) 環境(marimo プレイグラウンド、コミュニティクラウド、またはエクスポートされた WASM HTML)で実行できるかどうかを確認します。
手順
1. ノートブックを読み込む
対象のノートブックファイルを読み込みます。ユーザーが指定しない場合は、どのノートブックをチェックするのか尋ねてください。
2. 依存関係を抽出する
ノートブックが依存している全パッケージを、両方のソースから収集します:
-
PEP 723 メタデータ — トップの
# /// scriptブロック:# /// script # dependencies = [ # "marimo", # "torch>=2.0.0", # ] # /// -
Import ステートメント — すべてのセルから
import fooとfrom foo import barをスキャンします。このテーブルを使用してインポート名を PyPI ディストリビューション名にマップします:インポート名 ディストリビューション名 sklearnscikit-learnskimagescikit-imagecv2opencv-pythonPILPillowbs4beautifulsoup4yamlpyyamldateutilpython-dateutilattr/attrsattrsgiPyGObjectserialpyserialusbpyusbwxwxPythonほとんどの他のパッケージについては、インポート名がディストリビューション名と一致します。
3. 各パッケージを Pyodide に対してチェックする
各依存関係について、WASM で実行できるかどうかを判定します:
-
Python 標準ライブラリに含まれているか? ほとんどの stdlib モジュールは動作しますが、これらは動作しません:
multiprocessing— ブラウザサンドボックスではプロセス生成ができないsubprocess— 同じ理由threading— エミュレートされている。実際の並列処理なし(警告。厳密な失敗ではない)sqlite3— 代わりにapswを使用(Pyodide で利用可能)pdb— サポートされていないtkinter— ブラウザに GUI ツールキットなしreadline— ブラウザにターミナルなし
-
Pyodide 組み込みパッケージか? 完全なリストは
pyodide-packages.mdを参照してください。これらはそのまま動作します。 -
純粋な Python パッケージか?
.pyファイルのみを含むパッケージ(コンパイルされた C/Rust 拡張機能がない)は、実行時にmicropip経由でインストールでき、動作します。確認するには:PyPI でpy3-none-any.whlホイールを探します(例:https://pypi.org/project/<package>/#filesにアクセス)。プラットフォーム固有のホイール(例:cp312-cp312-manylinux)のみの場合、パッケージはネイティブ拡張機能を持ち、動作しない可能性が高い。動作する一般的な純粋 Python パッケージ(Pyodide 組み込みではないが micropip 経由でインストール可能):
plotly,seaborn,humanize,pendulum,arrow,tabulatedataclasses-json,marshmallow,cattrs,pydantic(組み込み)httpx(組み込み),tenacity,backoff,wrapt(組み込み)
-
Pyodide 用にビルドされていない C/ネイティブ拡張機能があるか? これらは動作しません。一般的な原因:
torch/pytorchtensorflowjax/jaxlibpsycopg2(純粋 Python モードのpsycopgを提案)mysqlclient(pymysqlを提案)uvloopgrpciopsutil
4. WASM 非互換パターンをチェックする
WASM で動作しないパターンについてノートブックコードをスキャンします:
| パターン | 失敗の理由 | 提案 |
|---|---|---|
subprocess.run(...), os.system(...), os.popen(...) | ブラウザではプロセス生成ができない | 削除するか非 WASM チェックの背後に配置 |
multiprocessing.Pool(...), ProcessPoolExecutor | プロセスフォーク不可 | シングルスレッドアプローチを使用 |
threading.Thread(...), ThreadPoolExecutor | エミュレートされたスレッド。実際の並列処理なし | 警告のみ。動作しますが高速化なし。I/O に asyncio を使用 |
open("/absolute/path/..."), ハードコードされたローカルファイルパス | リアルファイルシステムなし。メモリ内ファイルシステムのみ | URL 経由でデータをフェッチ(httpx, urllib)またはノートブックに埋め込み |
sqlite3.connect(...) | stdlib sqlite3 利用不可 | apsw または duckdb を使用 |
pdb.set_trace(), breakpoint() | WASM にデバッガなし | ブレークポイントを削除 |
環境変数の読み取り(os.environ[...], os.getenv(...)) | ブラウザで利用可能な環境変数なし | ユーザー入力に mo.ui.text を使用するかデフォルトをハードコード |
Path.home(), Path.cwd() (リアルファイル期待) | 仮想ファイルシステムのみ | URL または埋め込みデータを使用 |
| 大規模データセットロード(>100 MB) | 総メモリ上限 2 GB | より小さいサンプルまたはリモート API を使用 |
5. PEP 723 メタデータをチェックする
WASM ノートブックは、ノートブック起動時に自動的にインストールされるように、PEP 723 # /// script ブロックにすべての依存関係をリストする必要があります。次の問題をチェックします:
- メタデータ不足: ノートブックに
# /// scriptブロックがない場合、推奨する警告を発行します。依存関係をリストすることで、WASM でノートブックが起動するときに自動インストールされます。これがないと、ユーザーはインポートエラーを見ることがあります。 - パッケージ不足: パッケージがインポートされているが依存関係にリストされていない場合、追加を提案する警告を発行します。 注:PEP 723 メタデータのバージョンピンと下限はそのまま使用できます。marimo は WASM で実行する場合、バージョン制約をストリップします。
6. レポートを作成する
以下のセクションを含む、明確で実行可能なレポートを出力します:
互換性:PASS / FAIL / WARN
これらの判定を使用します:
- PASS — すべてのパッケージとパターンが WASM 互換
- WARN — おそらく互換。ただしいくつかのパッケージを純粋 Python として確認できない(ユーザーが確認できるようにリストアップ)
- FAIL — 1 つ以上のパッケージまたはパターンが確実に非互換
パッケージレポート — 列:Package、Status (OK / WARN / FAIL)、Notes のテーブル
例:
| パッケージ | ステータス | 注釈 |
|---|---|---|
| marimo | OK | WASM ランタイムで利用可能 |
| numpy | OK | Pyodide 組み込み |
| pandas | OK | Pyodide 組み込み |
| torch | FAIL | WASM ビルドなし。ネイティブ C++/CUDA 拡張機能が必要 |
| my-niche-lib | WARN | Pyodide に含まれていない。純粋 Python であることを確認 |
コード問題 — 見つかった各問題のあるコードパターンをリストアップ。セルまたは行とともに修正案を提示。
推奨事項 — ノートブックが失敗する場合、具体的な修正を提案:
- 非互換パッケージを WASM フレンドリーな代替品に置き換え
- 非互換コードパターンを書き直し
- 重い計算をホストされた API に移動して結果をフェッチすることを提案
追加コンテキスト
- WASM ノートブックはブラウザで Pyodide 経由で実行
- メモリは 2 GB に制限
- ネットワークリクエストは動作しますが、CORS 互換エンドポイントが必要な場合あり
- Chrome は WASM パフォーマンスが最良。Firefox、Edge、Safari も対応
micropipは実行時に PyPI から任意の純粋 Python ホイールをインストール可能- 完全な Pyodide 組み込みパッケージリストについては、
pyodide-packages.mdを参照
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- marimo-team
- リポジトリ
- marimo-team/skills
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/marimo-team/skills / ライセンス: Apache-2.0
関連スキル
superfluid
Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper
civ-finish-quotes
実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。
nookplot
Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。
web3-polymarket
Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。
ethskills
Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。
xxyy-trade
このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。