はじめに
github.io に Python のプレイグラウンドをホストし、
そのページへのURLをnotionに埋め込みます。
クエリパラメータとして渡されたgistのソースコードを初期値として表示します。
なので、リロードしてもソースコードの内容が空っぽになることはありません。
使い方
このURLを埋め込めば、冒頭のスクリーンショットと同じ結果になるはずです。
https://desktopgame.github.io/python-playground/?gist=dc4eb1bc28b33abfa9e961168b6718e4&file=gistfile1.txt
自分が書いたソースコードを埋め込みたい場合、public な gist をアップロードし、
その gist のIDとファイル名を代わりにパラメータとして渡してください。
他の方法はなかったのか?
replit という、オンラインのプログラミング環境があります。
wandbox とか codepen のようなもので、自分のPCに環境構築しなくてもコードを実行できる便利なものです。
しかももっと多くのプログラミング言語に対応しているようです。
そして、notionではこのサービスも埋め込むことができます。
なので最初はこれでよいと思ったのですが、実際埋め込んでみると私の想像とは違ったのです。
notion上ではコードの変更をできないほか、
実行しようとしたら replit のページに移動しなければいけません。
そしてなにより、replitは無料プランだと3つまでしかプロジェクトを保存できないようなのです。
このプレイグラウンドの特徴
- 最初に述べた通り、パラメーターとしてgistIDを渡すと読み込んでくれる
- gist API には制限があるので、内部的にはlocalStorageにキャッシュしています
- 読み込むgistにマジックコメントとしてパッケージ名を記述しておくと、起動時にインストールしてくれる
- Monacoではなく、Code Mirrorを使っているのでスマートフォンのブラウザでも動作する
ちなみに
Observableというメモの中に実行可能なコードを書けるサービスもあるようです。