エラーが日本語表示される Python オンライン実行環境

# 要約

- [ブラウザ上で動作し、エラーが日本語表示される Python 実行環境](https://nodai2hitc.github.io/pythonja/) を作りました。
  - [エラーが起きるスクリプト例](https://nodai2hitc.github.io/pythonja/#IjEyMyIgKyA0NTY.) を実際に実行してみてください。
  - 学校でのプログラミング教育等に使えるのではないかと思います。
- 保存機能はありませんが、現在のスクリプトを URL の形で保存・受け渡しすることは可能です。
  - 例：[FizzBuzz](https://nodai2hitc.github.io/pythonja/#Zm9yIGkgaW4gcmFuZ2UoMSwgMTAxKToKICAgIGlmIGkgJSAxNSA9PSAwOgogICAgICAgIHByaW50KCJGaXp6QnV6eiIpCiAgICBlbGlmIGkgJSAzID09IDA6CiAgICAgICAgcHJpbnQoIkZpenoiKQogICAgZWxpZiBpICUgNSA9PSAwOgogICAgICAgIHByaW50KCJCdXp6IikKICAgIGVsc2U6CiAgICAgICAgcHJpbnQoaSkK)
- numpy, matplotlib 等も利用可能な[拡張バージョン](https://nodai2hitc.github.io/pythonja/ex.html)もあります。
  - 例：[ランダムウォーク](https://nodai2hitc.github.io/pythonja/ex.html#aW1wb3J0IG1hdHBsb3RsaWIucHlwbG90IGFzIHBsdCAjIOOCsOODqeODleaPj_eUu_ODqeOCpOODluODqeODqgppbXBvcnQgbnVtcHkucmFuZG9tIGFzIHJkICMg5Lmx5pWw44Gu44Gf44KB44Gu44Op44Kk44OW44Op44OqCng9WzBdICNYIOOBruWIneacn_WApOOCkiAwIOOBq_OBmeOCiwp5PVswXSAjWSDjga7liJ3mnJ-lgKTjgpIgMCDjgavjgZnjgosKZm9yIGkgaW4gcmFuZ2UoMTAwMCk6CiAgICB4LmFwcGVuZCh4W2ldK3JkLnJhbmRvbSgpIC0gMC41KSAjWCDmlrnlkJEKICAgIHkuYXBwZW5kKHlbaV0rcmQucmFuZG9tKCkgLSAwLjUpICNZIOaWueWQkQoKdHJhY2UgPSBbeCwgeV0gI1hZIOW5s_mdoueKtuOBrueJqeS9k_OBruW6p_aomeOCkiB0cmFjZSDjgajjgYTjgYblkI3liY3jga7phY3liJfjgavku6PlhaUKcGx0LnBsb3QoKnRyYWNlKSAjIOmFjeWIl_imgee0oOOBruOCsOODqeODleaPj_eUuwpwbHQuYXhpcygiZXF1YWwiKSAjIOOCsOODqeODleOBrue4puaoquavlOOCkuetieOBl_OBjwpwbHQudGl0bGUoInJhbmRvbSB3YWxrIikgIyDjgrDjg6njg5Xjga7jgr-jgqTjg4jjg6vjgpLjgaTjgZHjgosKcGx0LnNob3coKSAjIOOCsOODqeODleOCkuihqOekug..)

# 制作理由

先日、Python のエラーメッセージを日本語化する [etupem](https://qiita.com/nodai2h_ITC/items/6a5a92d5194347f68df2) というものを作ったのですが、これに対して以下のような Tweet がありました。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">すごい<br>ただこれ導入できる人はエラー読めると思う <a href="https://t.co/K7QLafFira">https://t.co/K7QLafFira</a></p>&mdash; ガルム.dylib (@garume_) <a href="https://twitter.com/garume_/status/1552893465910190080?ref_src=twsrc%5Etfw">July 29, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

ごもっとも。

言い訳をさせていただくと、「導入」と「利用」は別の人が行うことを想定していました。そもそもプログラミング初学者にとって最初の壁となるのが「環境構築」であり、そこで躓く人を作らないために最も確実な方法は『環境構築は別の詳しい人が事前にやっておく』ことです。[^1] そうした状況において、Python 等をインストールするついでに etupem もインストールしておく…という使い方を想定していたわけです。

[^1]: 「環境構築くらい自分でできるようになるべきではないか」と思われる方も居ると思いますが、ここではプログラミングスクールのような「プログラマーになる」という意思を持った人が集まる場ではなく、例えば高校の授業のように多種多様な目標を持った人にプログラミングを教えるような場をイメージしています。そうした場においては、環境構築などの面倒な部分はできるだけ肩代わりして、プログラミングの面白さを伝えていくことが重要だと思います。

ところで環境構築をもっとも簡単に行う方法といえば、例えば [Paiza.io](https://paiza.io/ja/projects/new?language=python3) のようなオンライン実行環境を用いることでしょう。ですが こうしたオンライン実行環境の場合、ローカル環境と異なりカスタマイズがほとんど行えない場合が多いので、etupem をインストールすることはできません。

そんなわけで、「エラーが日本語表示される Python オンライン実行環境」が無ければ作ってしまおうと思ったのでした。

# 工夫した点

## `input` を使うとダイアログで入力が求められる

上で挙げた Paiza.io などもそうですが オンライン実行環境の多くは、あらかじめプログラム実行前に入力用の欄に入力内容を書いておき、`input` 等を用いると そこに書かれたテキストが入力される…という動作になっています。

個人的に この動作はあまり好きではありません。だってせっかく入力を求めるプログラムを書いたのであれば、実行時に「入力」をできてほしいんですよ。あらかじめ「プログラム」と「入力」を書いてから実行するのであれば、入力処理を無くして全部プログラムに書いても同じじゃないですか。[^2]

[^2]: 競技プログラミング等の用途に使うのであれば、あらかじめ「入力」を書いておく方式の方がメリットが有るとは思います。ですがここで想定しているのは初学者の学習用途であり、そうした用途であればインタラクティブ性がある方が良いでしょう。

そんなわけで、`input` による入力はダイアログを用いて実行時に入力するようにしました。→ [input を使った例](https://nodai2hitc.github.io/pythonja/#bmFtZSA9IGlucHV0KCLjgYLjgarjgZ-jga7lkI3liY3jgpLmlZnjgYjjgabjgY-jgaDjgZXjgYQiKQpwcmludCgi44GT44KT44Gr44Gh44Gv44CBIiArIG5hbWUgKyAi44GV44KTIik.)

## matplotlib を利用可能

Pyodide を用いてブラウザ上で Python を動かせるようにしよう、ということ自体は多くの人がやっています。例えば日本でも少し調べると、岩手県立大学による [Python実行サーバを必要としないオンラインプログラミング環境の開発](https://ipsj.ixsq.nii.ac.jp/ej/index.php?active_action=repository_view_main_item_detail&page_id=13&block_id=8&item_id=212349&item_no=1) という記事が見つかります。（ところでその成果物はどこにあるんでしょう…見つかりませんでした。）

上の記事のものは、matplotlib を利用できることを 1 つの売りにしているようです。matplotlib が利用できると、文科省の [高等学校情報科「情報Ⅰ」教員研修用教材](https://www.mext.go.jp/content/20200722-mxt_jogai02-100013300_005.pdf) にあるスクリプトの多く[^3] を動作させられるようになるためです。

[^3]: さすがに Micro:bit と連携するスクリプトや、Web API を利用するスクリプトは動かせません。

というわけで、対抗意識を燃やして こちらも matplotlib を利用できるようにしました。ただし初期化に非常に時間がかかってしまうため、通常バージョンとは別に拡張バージョンとして作ってあります。以下、上述の文科省教員研修用教材のスクリプト実行用リンクを貼っておきます。

- [P101 図表 7 オーバーフローの発生](https://nodai2hitc.github.io/pythonja/#aW1wb3J0IHN5cyAjIOWkieaVsOOChOmWouaVsOOBruODqeOCpOODluODqeODquOCkuWRvOOBs_WHuuOBlwp4PXN5cy5mbG9hdF9pbmZvLm1heCAjZmxvYXQg5Z6L44Gn6KGo44Gb44KL5pyA5aSn5YCk44KSIHgg44Gr5Luj5YWlCnByaW50KHgpICMg55S76Z2i44GrIHgg44Gu5YCk44KS6KGo56S6Cng9MS43OTc2OTMxMzQ4NjIzMTU3OTk5OTllKzMwOCAjZmxvYXQg5Z6L44Gu5bCP5pWw54K55Lul5LiL44GrIDUg5qGB44CMOeOAjeOBrui-veWKoOOBl_OBn_WApOOCkuS7o_WFpQpwcmludCh4KSAjIOeUu_mdouOBqyB4IOOBruWApOOCkuihqOekugp4PTEuOGUrMzA4ICNmbG9hdCDlnovjga7mnIDlpKflgKTjgojjgorlpKfjgY3jgarlgKTjgpLku6PlhaUKcHJpbnQoeCkgIyDnlLvpnaLjgasgeCDjga7lgKTjgpLooajnpLo.)
- [P102 図表 8 コンピュータの計算誤差](https://nodai2hitc.github.io/pythonja/#eCA9IDI4LTI3ICN4IOOBqyAyOC0yNyDjga7oqIjnrpfntZDmnpzjgpLlhaXjgozjgosKcHJpbnQoeCkgIyDnlLvpnaLjgasgeCDjga7lgKTjgpLooajnpLoKeSA9IDAuMjgtMC4yNyAjeSDjgasgMC4yOC0wLjI3IOOBruioiOeul_e1kOaenOOCkuWFpeOCjOOCiwpwcmludCh5KSAjIOeUu_mdoiB5IOOBruWApOOCkuihqOekug..)
- [P116 図表 7 コード](https://nodai2hitc.github.io/pythonja/#cHJpbnQoIuOBiuOBr_OCiOOBhiIpICPjgIzjgYrjga-jgojjgYbjgI3jgajnlLvpnaLooajnpLrjgZnjgosKcHJpbnQoIuOBk_OCk_OBq_OBoeOBryIpICPjgIzjgZPjgpPjgavjgaHjga-jgI3jgajnlLvpnaLooajnpLrjgZnjgosKcHJpbnQoIuOBiuOChOOBmeOBvyIpICPjgIzjgYrjgoTjgZnjgb-jgI3jgajnlLvpnaLooajnpLrjgZnjgos.)
- [P116 図表 10 コード](https://nodai2hitc.github.io/pythonja/#eCA9IDgwICMgeD04MCDjgajjgZnjgosKaWYgeCA_PSA2MDogIyB4IOOBjCA2MCDku6XkuIrjga7jgajjgY3jga7lh6bnkIYKICAgIHByaW50KCLlkIjmoLwiKQplbHNlOiAjIHgg44GMIDYwIOS7peS4iuOBp_OBquOBhOOBqOOBjeOBruWHpueQhgogICAgcHJpbnQoIuS4jeWQiOagvCIp)
- [P117 図表 13 コード](https://nodai2hitc.github.io/pythonja/#eCA9IDAKcHJpbnQoInggPSAiICwgeCkKZm9yIGkgaW4gcmFuZ2UoMSwgNiwgMSk6ICMgMSDjgYvjgokgNiDmnKrmuoDjga7plpMgMSDjgZrjgaTjgqvjgqbjg7Pjg4jjgpLlopfjgoTjgZfjgarjgYzjgonnubDjgorov5TjgZkKICAgIHggPSB4ICsgMTAKICAgIHByaW50KCJ4ID0gIiAsIHgp)
- [P118 図表 16 コード](https://nodai2hitc.github.io/pythonja/#eCA9IDAKcHJpbnQoInggPSAiICwgeCkKZm9yIGkgaW4gcmFuZ2UoMSwgNiwgMSk6CiAgICB4ID0geCArIDEwCiAgICBpZiBpJTI9PTE6ICMgaSDjgpIgMiDjgaflibLjgaPjgZ-jgajjgY3jga7kvZnjgorjgYwgMSDjga7jgajjgY0KICAgICAgICBwcmludCgieCA9ICIgLCB4KQ..)
- [P122 図表 2 リストを用いたプログラムの例 1](https://nodai2hitc.github.io/pythonja/#YT1bNTYsMyw2MiwxNyw4NywyMiwzNiw4MywyMSwxMl0gIyDjg6rjgrnjg4ggYSDjga7lrprnvqkKZ291a2VpID0gMApnb3VrZWkgPSBhWzNdK2FbN10KcHJpbnQoZ291a2VpKQ..)
- [P122 図表 3 リストを用いたプログラムの例 2](https://nodai2hitc.github.io/pythonja/#YT1bNTYsMyw2MiwxNyw4NywyMiwzNiw4MywyMSwxMl0KZ291a2VpID0gMApmb3IgaSBpbiByYW5nZSgwLDEwLDEpOgogICAgZ291a2VpID0gZ291a2VpK2FbaV0gIyBhWzBdIO_9niBhWzldIOOBvuOBp_WFqOOBpuWKoOOBiOOBpuOBhOOBjwpwcmludChnb3VrZWkp)
- [P123 図表 4 乱数を用いたプログラムの例 1](https://nodai2hitc.github.io/pythonja/#aW1wb3J0IHJhbmRvbSAjIHJhbmRvbSDjg6Ljgrjjg6Xjg7zjg6vjgpLoqq3jgb-ovrzjgoAKYSA9IDUKciA9IHJhbmRvbS5yYW5kcmFuZ2UoMTApICMgMCDvvZ4gOSDjgb7jgafjga7mlbTmlbDjgpLjg6njg7Pjg4Djg6DjgavnmbrnlJ8KaWYgYT09cjoKICAgIHByaW50KCIg5b2T44Gf44KKICIpCmVsaWYgYT5yOgogICAgcHJpbnQoImEg44Gu5pa544GM5aSn44GN44GEICIpCmVsaWYgYTxyOgogICAgcHJpbnQoImEg44Gu5pa544GM5bCP44GV44GEICIp)
- [P123 図表 5 乱数を用いたプログラムの例 2](https://nodai2hitc.github.io/pythonja/#aW1wb3J0IHJhbmRvbQpyID0gcmFuZG9tLnJhbmRyYW5nZSgxMCkrMQpwcmludChyKQ..)
- [P124 図表 9 関数で分割したプログラムの例](https://nodai2hitc.github.io/pythonja/#ZGVmIGxpc3Rnb3VrZWkoYSk6ICMg5ZCI6KiI44KS5rGC44KB44KL6Zai5pWwIGxpc3Rnb3VrZWkg44KS5L2c5oiQCiAgICBnb3VrZWkgPSAwCiAgICBmb3IgaSBpbiByYW5nZSgwLGxlbihhKSwxKToKICAgICAgICBnb3VrZWkgPSBnb3VrZWkrYVtpXQogICAgcmV0dXJuIGdvdWtlaQoKYSA9IFs1NiwzLDYyLDE3LDg3LDIyLDM2LDgzLDIxLDEyXQpnb3VrZWkgPSBsaXN0Z291a2VpKGEpICMg5L2c44Gj44Gf6Zai5pWwIGxpc3Rnb3VrZWkg44KS5ZG844Gz5Ye644GXCnByaW50KGdvdWtlaSk.)
- [P128 図表３ コード](https://nodai2hitc.github.io/pythonja/#ZGVmIGxpbnNlYXJjaChhLHApOgogICAgZm9yIGkgaW4gcmFuZ2UoMCxsZW4oYSksMSk6CiAgICAgICAgaWYgYVtpXT09cDoKICAgICAgICAgICAgcHJpbnQoIuimi_OBpOOBi_OCiuOBvuOBl_OBnyIpCiAgICAgICAgICAgIGJyZWFrCmEgPSBbNjEsMTUsODIsNzcsMjEsMzIsNTNdCnAgPSA4MgpsaW5zZWFyY2goYSxwKQ..)
- [P129 図表６ コード](https://nodai2hitc.github.io/pythonja/#ZGVmIGJpbnNlYXJjaChhLHApOgogICAgaSA9IDAKICAgIGogPSBsZW4oYSktMQogICAgd2hpbGUgaTw9ajoKICAgICAgICBtID0gaW50KChpK2opLzIpCiAgICAgICAgaWYgYVttXT09cDoKICAgICAgICAgICAgcHJpbnQoIuimi_OBpOOBi_OCiuOBvuOBl_OBnyIpCiAgICAgICAgICAgIGJyZWFrCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgYVttXT5wOgogICAgICAgICAgICAgICAgaj1tLTEKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGk9bSsxCgphID0gWzI1LDMzLDQzLDUxLDY2LDcxLDg4XQpwID0gNDMKYmluc2VhcmNoKGEscCk.)
- [P130 図表９ コード](https://nodai2hitc.github.io/pythonja/#ZGVmIHNlbGVjdGlvbnNvcnQoYSk6CiAgICBmb3IgaSBpbiByYW5nZSgwLGxlbihhKSwxKToKICAgICAgICBmb3IgaiBpbiByYW5nZShpKzEsbGVuKGEpLDEpOgogICAgICAgICAgICBpZiBhW2pdPGFbaV06CiAgICAgICAgICAgICAgICB0ZW1wID0gYVtpXQogICAgICAgICAgICAgICAgYVtpXSA9IGFbal0KICAgICAgICAgICAgICAgIGFbal0gPSB0ZW1wCgphID0gWzcsMjIsMTEsMzQsMTcsNTIsMjYsMTMsNDAsMjAsMTAsNSwxNiw4LDQsMiwxXQpwcmludCgi44K944O844OI5YmNIixhKQpzZWxlY3Rpb25zb3J0KGEpCnByaW50KCLjgr3jg7zjg4jlvowiLGEp)
- [P131 図表 11 コード](https://nodai2hitc.github.io/pythonja/#ZGVmIHF1aWNrc29ydChhLHN0YXJ0LGVuZCk6CiAgICBtID0gaW50KChzdGFydCtlbmQpLzIpCiAgICBpID0gc3RhcnQKICAgIGogPSBlbmQKICAgIHdoaWxlKGk8aik6CiAgICAgICAgd2hpbGUgYVtpXSA8IGFbbV06CiAgICAgICAgICAgIGkgPSBpKzEKICAgICAgICB3aGlsZSBhW2pdID4gYVttXToKICAgICAgICAgICAgaiA9IGotMQogICAgICAgIGlmIGk_PWo6CiAgICAgICAgICAgIGJyZWFrCiAgICAgICAgdGVtcCA9IGFbaV0KICAgICAgICBhW2ldID0gYVtqXQogICAgICAgIGFbal0gPSB0ZW1wCiAgICAgICAgaWYgaT09bToKICAgICAgICAgICAgbSA9IGoKICAgICAgICBlbGlmIGo9PW06CiAgICAgICAgICAgIG0gPSBpCiAgICAgICAgaSA9IGkrMQogICAgICAgIGogPSBqLTEKICAgIGlmIHN0YXJ0IDwgaS0xOgogICAgICAgIHF1aWNrc29ydChhLHN0YXJ0LG0tMSkKICAgIGlmIGVuZCA_IGorMToKICAgICAgICBxdWlja3NvcnQoYSxtKzEsZW5kKQoKYSA9IFs3LDIyLDExLDM0LDE3LDUyLDI2LDEzLDQwLDIwLDEwLDUsMTYsOCw0LDIsMV0KcHJpbnQoIuOCveODvOODiOWJjSIsYSkKcXVpY2tzb3J0KGEsMCxsZW4oYSktMSkKcHJpbnQoIuOCveODvOODiOW_jCIsYSk.)
- [P137 図表 3 預金の複利計算のプログラム](https://nodai2hitc.github.io/pythonja/#eW9raW4gPSAxMDAwMDAgIyDpoJDph5EKcmlyaXRzdSA9IDAuMDUgIyDliKnnjocKZm9yIGkgaW4gcmFuZ2UoMTApOiAjaSDjga7lgKTjgpIgMCDjgYvjgokgOSDjgb7jgacgMTAg5Zue57mw44KK6L_U44GZCiAgICByaXNva3UgPSB5b2tpbipyaXJpdHN1ICMg44Gd44Gu5bm044Gu5Yip5oGvCiAgICB5b2tpbiA9IHlva2luICsgcmlzb2t1ICMg6aCQ6YeR44Gr5Yip5oGv44KS5Yqg44GI44KLCiAgICBwcmludChpKzEsIiDlubTnm64gOiIseW9raW4pICMg55S76Z2i44Gr6KGo56S6)
- [P137 図表 5 グラフ化のプログラム](https://nodai2hitc.github.io/pythonja/ex.html#aW1wb3J0IG1hdHBsb3RsaWIucHlwbG90IGFzIHBsdCAjIOODl_ODreODg_ODiOOCquODluOCuOOCp_OCr_ODiOOCkuOCpOODs_ODneODvOODiApyaXJpdHN1ID0gMC4wNSAjIOWIqeeOhwp5b2tpbiA9IFsxMDAwMDBdICMg6aCQ6YeR6YWN5YiX44Gu5pyA5Yid44Gu5YCk44GvIDEwIOS4hwpmb3IgaSBpbiByYW5nZSgxMCk6ICNpIOOBruWApOOCkiAwIO_9niA5IOOBvuOBp_OAgTEwIOWbnue5sOOCiui-lOOBmQogICAgcmlzb2t1ID0gaW50KHlva2luW2ldKnJpcml0c3UpICMg5Yip5oGv44Gv54__5Zyo44Gu6aCQ6YeR6aGNIMOXIOWIqeeOhyAoIOaVtOaVsOWMliApCiAgICB5b2tpbi5hcHBlbmQoeW9raW5baV0rcmlzb2t1KSAjIOmFjeWIl_OBq_ioiOeul_e1kOaenOOCkui-veWKoAoKcGx0LnRpdGxlKCJGVUtVUkkgS0VJU0FOIikgIyDjgrDjg6njg5Xjga7jgr-jgqTjg4jjg6sKcGx0LnhsYWJlbCgiWWVhciIpICNYIOi7uOOBruODqeODmeODqwpwbHQueWxhYmVsKCJZb2tpbltZRU5dIikgI1kg6Lu444Gu44Op44OZ44OrCnBsdC5wbG90KHlva2luLCBtYXJrZXI9Im8iKSAjIOOCsOODqeODleOCkuODl_ODreODg_ODiApwbHQuc2hvdygpICMg44OX44Ot44OD44OI44Kq44OW44K444Kn44Kv44OI44KS6KGo56S6Cg..)
- [P138 図表 7 乱数発生のプログラム](https://nodai2hitc.github.io/pythonja/ex.html#aW1wb3J0IG51bXB5LnJhbmRvbSBhcyByZCAjIOS5seaVsOOCkueZuueUn_OBleOBm_OCi_mWouaVsOOBruWRvOOBs_WHuuOBlwpyYW5zdXUgPSByZC5yYW5kKCkgIyAwIO_9niAxIOOBruS5seaVsOOCkiAxIOWAi_eUn_aIkApwcmludCgi5Lmx5pWwIiwgcmFuc3V1KSAjIOS5seaVsOOBruWApOOCkuihqOekug..)
- [P138 図表 8 サイコロのプログラム](https://nodai2hitc.github.io/pythonja/ex.html#aW1wb3J0IG51bXB5IGFzIG5wICMg5pW05pWw44KS44Kr44Km44Oz44OI44GZ44KL44Gf44KB44Gu6Zai5pWw5ZG844Gz5Ye644GXCmltcG9ydCBudW1weS5yYW5kb20gYXMgcmQgIyDkubHmlbDjgpLnmbrnlJ-jgZXjgZvjgovplqLmlbDjga7lkbzjgbPlh7rjgZcKc2Fpa29ybyA9IHJkLnJhbmRpbnQoMSwgNisxLCAxMDApICMg44K144Kk44Kz44Ot44KSIDEwMCDlm57mjK-jgosKcHJpbnQoc2Fpa29ybykgIyDkubHmlbDjga7lgKTjgpLooajnpLoKZGVtZSA9IFsgXSAjIOWHuuebruOBruaVsOOCkuaVsOOBiOOCi_mFjeWIlwpmb3IgaSBpbiByYW5nZSg2KToKICAgIGRlbWUuYXBwZW5kKG5wLmNvdW50X25vbnplcm8oc2Fpa29ybz09aSsxKSkgIyDlh7rnj77lm57mlbDjgpLmlbDjgYjjgabphY3liJfjgavov73liqAKCnByaW50KCLlh7rnj77mlbA6IixkZW1lKSAjIOS5seaVsOOBruWApOOCkuihqOekug..)
- [P139 図表 10 度数分布（棒グラフ）表現のプログラム](https://nodai2hitc.github.io/pythonja/ex.html#aW1wb3J0IG51bXB5IGFzIG5wICMg5pW05pWw44KS44Kr44Km44Oz44OI44GZ44KL44Gf44KB44Gu6Zai5pWw5ZG844Gz5Ye644GXCmltcG9ydCBudW1weS5yYW5kb20gYXMgcmQgIyDkubHmlbDjgpLnmbrnlJ-jgZXjgZvjgovplqLmlbDjga7lkbzjgbPlh7rjgZcKaW1wb3J0IG1hdHBsb3RsaWIucHlwbG90IGFzIHBsdCAjIOOCsOODqeODleODl_ODreODg_ODiOOBruWRvOOBs_WHuuOBlwpzYWlrb3JvID0gcmQucmFuZGludCgxLCA2KzEsIDEwMCkgIyDjgrXjgqTjgrPjg63jgpIgMTAwIOWbnuaMr_OCiwpkZW1lID0gWyBdICMg5Ye655uu44Gu5pWw44KS5pWw44GI44KL6YWN5YiXCmZvciBpIGluIHJhbmdlKDYpOgogICAgZGVtZS5hcHBlbmQobnAuY291bnRfbm9uemVybyhzYWlrb3JvPT1pKzEpKSAjIOaVsOOCkuaVsOOBiOOBpumFjeWIl_OBq_i-veWKoAoKbGVmdCA9IFsxLCAyLCAzLCA0LCA1LCA2XSAjIOOCsOODqeODleOBruW3puaWueWQkeOBruWApOaMh_WumueUqApwbHQudGl0bGUoIlNBSUtPUk8gU0lNVUxBVElPTiIpICMg44Kw44Op44OV44Gu44K-44Kk44OI44OrCnBsdC54bGFiZWwoIk1FIikgI1gg6Lu444Gu44Op44OZ44OrCnBsdC55bGFiZWwoIktBSVNVVSIpICNZIOi7uOOBruODqeODmeODqwpwbHQuYmFyKGxlZnQsIGRlbWUsIGFsaWduPSJjZW50ZXIiKSAjIOOCsOODqeODleOCkuODl_ODreODg_ODiApwbHQuc2hvdygpICMg44OX44Ot44OD44OI44Kq44OW44K444Kn44Kv44OI44KS6KGo56S6)
- [P139 図表 12 円周率を求めるプログラム](https://nodai2hitc.github.io/pythonja/ex.html#aW1wb3J0IG51bXB5LnJhbmRvbSBhcyByZCAjIOS5seaVsOOCkueZuueUn_OBleOBm_OCi_mWouaVsOOBruWRvOOBs_WHuuOBlwp0b3RhbGNvdW50ID0gMTAwMCAjIOODqeODs_ODgOODoOOBq_aJk_OBpOeCueOBrue3j_aVsAppbmNvdW50ID0gMCAjIOWGhuOBq_WFpeOBo_OBn_eCueOBruaVsApmb3IgaSBpbiByYW5nZSh0b3RhbGNvdW50KToKICAgIHggPSByZC5yYW5kb20oKSAjIDAtMSDjga7nr4Tlm7Ljga7lgKQKICAgIHkgPSByZC5yYW5kb20oKSAjIDAtMSDjga7nr4Tlm7Ljga7lgKQKICAgIGlmIHgqKjIgKyB5KioyIDwgMS4wOiAjIOWNmOS9jeWGhuOBruS4reOBq_WFpeOBo_OBn_OCiQogICAgICAgIGluY291bnQgKz0gMSAjIOWFpeOBo_OBn_OCq_OCpuODs_OCv_ODvOOBq__8keOCkuWKoOOBiOOCiwpwcmludCgi5YaG5ZGo546HIDoiLCBpbmNvdW50ICogNC4wIC8gdG90YWxjb3VudCkgIyDmsYLjgb7jgaPjgZ-lhoblkajnjoc.)
- [P140 図表 13 散布図を作成するプログラム](https://nodai2hitc.github.io/pythonja/ex.html#aW1wb3J0IG51bXB5LnJhbmRvbSBhcyByZCAjIOS5seaVsOOCkueZuueUn_OBleOBm_OCi_mWouaVsOOBruWRvOOBs_WHuuOBlwppbXBvcnQgbWF0cGxvdGxpYi5weXBsb3QgYXMgcGx0ICMg44Kw44Op44OV44OX44Ot44OD44OI44Gu5ZG844Gz5Ye644GXCnRvdGFsY291bnQgPSAyMDAwICMg44Op44Oz44OA44Og44Gr5omT44Gk54K544Gu57eP5pWwCmluY291bnQgPSAwICMg5YaG44Gr5YWl44Gj44Gf54K544Gu5pWwCmZvciBpIGluIHJhbmdlKHRvdGFsY291bnQpOgogICAgeCA9IHJkLnJhbmRvbSgpICMwLTEg44Gu56_E5Zuy44Gu5YCkCiAgICB5ID0gcmQucmFuZG9tKCkgIzAtMSDjga7nr4Tlm7Ljga7lgKQKICAgIGlmIHgqKjIgKyB5KioyIDwgMS4wOiAjIOWNmOS9jeWGhuOBruS4reOBq_WFpeOBo_OBn_OCiQogICAgICAgIGluY291bnQgKz0gMSAjIOWFpeOBo_OBn_OCq_OCpuODs_OCv_ODvOOBq__8keOCkuWKoOOBiOOCiwogICAgICAgIHBsdC5zY2F0dGVyKHgsIHksIGM9InJlZCIpICMg6LWk6Imy44Gn44OX44Ot44OD44OICiAgICBlbHNlOgogICAgICAgIHBsdC5zY2F0dGVyKHgsIHksIGM9ImJsdWUiKSAjIOmdkuiJsuOBp_ODl_ODreODg_ODiApwcmludCgi5YaG5ZGo546HIDoiLCBpbmNvdW50ICogNC4wIC8gdG90YWxjb3VudCkgIyDmsYLjgb7jgaPjgZ-lhoblkajnjocKcGx0LnRpdGxlKCJNb250ZSBDYXJsbyBtZXRob2QiKSAjIOOCsOODqeODleOBruOCv_OCpOODiOODqwpwbHQuc2hvdygp)
- [P145 図表 2 放物運動のプログラム](https://nodai2hitc.github.io/pythonja/ex.html#aW1wb3J0IG1hdGggYXMgbWF0aCAjIOaVsOWApOioiOeul_ODqeOCpOODluODqeODqgppbXBvcnQgbWF0cGxvdGxpYi5weXBsb3QgYXMgcGx0ICMg44Kw44Op44OV5o_P55S744Op44Kk44OW44Op44OqCgpkdCA9IDAuMDEgIyDlvq7lsI-mmYLplpMgKCDmmYLplpPplpPpmpQgKQp2MCA9IDMwICMg5Yid6YCf5bqmCmcgPSA5LjggIyDph43lipvliqDpgJ-luqYKeCA9IFswXSAjIOawtOW5s_S9jee9ruOBruWIneacn_WApCAwCnkgPSBbMF0gIyDpiZvnm7TkvY3nva7jga7liJ3mnJ-lgKTjga8gMAphbmdsZSA9IDQ1LjAgKiBtYXRoLnBpIC8gMTgwLjAgIyDmipXjgZLkuIrjgZLop5LluqYKdnggPSBbdjAqbWF0aC5jb3MoYW5nbGUpXSAjIOawtOW5s_aWueWQkeOBruWInemAn_W6pgp2eSA9IFt2MCptYXRoLnNpbihhbmdsZSldICMg6Ymb55u05pa55ZCR44Gu5Yid6YCf5bqmCmZvciBpIGluIHJhbmdlKDEwMDApOgogICAgdnguYXBwZW5kKHZ4W2ldKSAjIOW_ruWwj_aZgumWk_W_jOOBruawtOW5s_aWueWQkeOBrumAn_W6pgogICAgdnkuYXBwZW5kKHZ5W2ldLWcqZHQpICMg5b6u5bCP5pmC6ZaT5b6M44Gu6Ymb55u05pa55ZCR44Gu6YCf5bqmCiAgICB4LmFwcGVuZCh4W2ldK3Z4W2ldKmR0KSAjIOW_ruWwj_aZgumWk_W_jOOBruawtOW5s_S9jee9rgogICAgeS5hcHBlbmQoeVtpXSsodnlbaV0rdnlbaSsxXSkvMi4wKmR0KSAjIOW_ruWwj_aZgumWk_W_jOOBrumJm_ebtOS9jee9rgogICAgaWYgeVtpXSA8IDAgOiAjIOOCguOBl_mJm_ebtOS9jee9ruOBjCAwIOOCkuS4i_WbnuOBo_OBn_OCiQogICAgICAgIGJyZWFrICMg44Or44O844OX5Lit5patCnBsdC5wbG90KHgseSkgIyDkvY3nva7jga7phY3liJfjgpLjg5fjg63jg4Pjg4gKcGx0LnRpdGxlKCJwYXJhYm9sbGljIG1vdGlvbiIpICMg44Kw44Op44OV44Gu44K-44Kk44OI44OrCnBsdC54bGFiZWwoImRpc3RhbmNlIikgI3gg6Lu444Op44OZ44OrCnBsdC55bGFiZWwoImhlaWdodCIpICN5IOi7uOODqeODmeODqwpwbHQuc2hvdygp)
- [P146 図表 6 個体の増加プログラム](https://nodai2hitc.github.io/pythonja/ex.html#aW1wb3J0IG1hdHBsb3RsaWIucHlwbG90IGFzIHBsdCAjIOOCsOODqeODleaPj_eUu_ODqeOCpOODluODqeODqgp6b3VrYSA9IDAuMDEgIyDlopfliqDnjocKY2FwYWNpdHkgPSAxMDAwICMg55Kw5aKD5Y_O5a655pWwCm4gPSBbMTBdICMg5pyA5Yid44Gu5YCL5L2T5pWwCmZvciBpIGluIHJhbmdlKDEwMDApOgogICAgem91a2FzdXUgPSBuW2ldKnpvdWthICMg5aKX5Yqg5pWwCiAgICBnZW5zeW91c3V1ID0gbltpXSoobltpXS9jYXBhY2l0eSkqem91a2EgIyDmuJvlsJHmlbAKICAgIG4uYXBwZW5kKG5baV0rKHpvdWthc3V1IC0gZ2Vuc3lvdXN1dSkpICMg5YCL5L2T5pWwCgpwbHQucGxvdChuKSAjIOOCsOODqeODleOBq_ODl_ODreODg_ODiApwbHQudGl0bGUoIm51bWJlciBvZiBsaWZlIikgIyDjgrDjg6njg5Xjga7jgr-jgqTjg4jjg6sKcGx0LnhsYWJlbCgidGltZSIpICN4IOi7uOOBruODqeODmeODqwpwbHQueWxhYmVsKCJudW1iZXIiKSAjeSDou7jjga7jg6njg5njg6sKcGx0LnNob3coKQ..)
- [P147 図表 8 プログラム](https://nodai2hitc.github.io/pythonja/ex.html#aW1wb3J0IG1hdHBsb3RsaWIucHlwbG90IGFzIHBsdCAjIOOCsOODqeODleaPj_eUu_ODqeOCpOODluODqeODqgppbXBvcnQgbnVtcHkucmFuZG9tIGFzIHJkICMg5Lmx5pWw44Gu44Gf44KB44Gu44Op44Kk44OW44Op44OqCng9WzBdICNYIOOBruWIneacn_WApOOCkiAwIOOBq_OBmeOCiwp5PVswXSAjWSDjga7liJ3mnJ-lgKTjgpIgMCDjgavjgZnjgosKZm9yIGkgaW4gcmFuZ2UoMTAwMCk6CiAgICB4LmFwcGVuZCh4W2ldK3JkLnJhbmRvbSgpIC0gMC41KSAjWCDmlrnlkJEKICAgIHkuYXBwZW5kKHlbaV0rcmQucmFuZG9tKCkgLSAwLjUpICNZIOaWueWQkQoKdHJhY2UgPSBbeCwgeV0gI1hZIOW5s_mdoueKtuOBrueJqeS9k_OBruW6p_aomeOCkiB0cmFjZSDjgajjgYTjgYblkI3liY3jga7phY3liJfjgavku6PlhaUKcGx0LnBsb3QoKnRyYWNlKSAjIOmFjeWIl_imgee0oOOBruOCsOODqeODleaPj_eUuwpwbHQuYXhpcygiZXF1YWwiKSAjIOOCsOODqeODleOBrue4puaoquavlOOCkuetieOBl_OBjwpwbHQudGl0bGUoInJhbmRvbSB3YWxrIikgIyDjgrDjg6njg5Xjga7jgr-jgqTjg4jjg6vjgpLjgaTjgZHjgosKcGx0LnNob3coKSAjIOOCsOODqeODleOCkuihqOekug..)

# 今後やりたいこと

## スクリプト中のエラー箇所を表示

**追記：この機能は対応しました。**

言語は違いますが、[C++入門者向けコード実行エディタ Simple C++ Editor](https://qiita.com/TumoiYorozu/items/7a9b862071edd5427200) も同様にエラーの日本語表示機能を持っています。

ですが Simple C++ Editor はそれだけではなく、[行番号だけじゃなくて、ソースコード上にもコンパイルエラー表示](https://qiita.com/TumoiYorozu/items/7a9b862071edd5427200#3%E8%A1%8C%E7%95%AA%E5%8F%B7%E3%81%A0%E3%81%91%E3%81%98%E3%82%83%E3%81%AA%E3%81%8F%E3%81%A6%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E4%B8%8A%E3%81%AB%E3%82%82%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB%E3%82%A8%E3%83%A9%E3%83%BC%E8%A1%A8%E7%A4%BA) することができます。

こうした機能があると より初学者がエラー箇所を理解しやすいだろうなぁと思うので、入れられれば入れたいところです。

## turtle 等の移植

タートルグラフィックスに限らず、視覚的にインパクトがあるもののほうがプログラミング学習者に興味を持ってもらいやすいでしょう。

ですので turtle とか PyGame とかが移植できたらいいなぁと思っていますが、だいぶ重たそうなので手が出ません。