ターボワープでスクラッチが速くなるのはナゼ?

ターボワープでスクラッチが速くなるのはナゼ?
ターボワープがなぜ爆速でスクラッチを読み込めるのかをカンタンに解説してます。

ターボワープでプレイするボタンを設置しました

新たにターボワープでプレイするボタンを設置しました。

今までは作品を立ち上げてからターボワープに切り替えるボタンしかありませんでしたが、最初からターボワープで起動できるボタンも設置しました。

やっぱりターボワープだとスクラッチゲームのロードが速いからストレスフリーですよね。

とくに太鼓の達人とかスマブラとかマイクラとか、重たいプロジェクトはターボワープじゃないとカクカクしちゃうこともあって、もはやスクラッチャーにとってなくてはならないツールだと思ってます。

ターボワープとは何者なの?

ターボワープはスクラッチを効率よく動作させることを目的に作られた非公式ツールです。

https://turbowarp.org/

スクラッチチームやスクラッチから正式に認められてはいませんが、だからといって危険かと言うとそんなことはないです。今までもう何年も使っていますが支障が出たことはありません。

スクラッチを効率的に動作させるというのは前々から試みが色々あって、その中の最も成功したツールの1つがターボワープだと思います。ほかにもフォークフォラスとか色々と類似ツールはあるけど、個人的にはターボワープ最強かなと思います。(どちらもGarboMuffinさんがメンテナンスの代表アカウントになってる)

なぜターボワープは速いの?

ターボワープを使ったことがある人なら感じたことがあると思いますが、ターボワープだとスクラッチを読み込む速度がレベチです。めちゃ速い。

まぁだいたいは「速いんだ〜いいじゃん」で終わりなんですが、中には「……ところで、なんで速いの?」と疑問を抱く人もいるかも知れません。

そういう疑問を持つ視点ってすごく大切なんじゃないかな!知らんけど。

ターボワープとスクラッチは読み込む仕組みが違う

いきなり結論を言うと、スクラッチはインタープリターなのに対して、ターボワープはコンパイラーだからです。うん、これで分かる人はたぶんプログラマーですね。大丈夫、もっとカンタンに伝えていく予定。

スクラッチを作ると、ブロックをポチポチ置いていくよね。「緑の旗が押されたら」「大きさを10にする」みたいな感じで。

ブロックを繋げてコーディングするというのは言い換えると、「●●したらAする、その次にBする、それで■■になったらCへ、でなければDへ……」みたいな一連の手続きを作っているわけだよね。厳密にはもっと複雑だけど、ここでは理解のためにコーディング≒手続きってことにしておく。

この手続きの処理方法がスクラッチとターボワープだと違う。で、この処理方法がさっき出てきた専門用語の「インタプリター(インタープリンティング)」なのか「コンパイラー(コンパイリング)」なのかっていうことになるんだけど、すごーく具体的にインタープリターとコンパイラーの解説をしてもダルいよね?!そこでここではイメージを伝えたい。

ターボワープでスクラッチが速くなるのはナゼ?を語るじゅうぞう じゅうぞう

いや、じっくりたっぷり深く知りたいぜ、という方は英語だけどこのページが役立つと思う。チェケラ。

https://docs.turbowarp.org/how

手続きの処理方法の違い

たとえば役所とか職員室とか図書館とか病院とか、書類やカードを提出して許可をもらうみたいなシーンってまぁまぁあると思います。

その中にこんな手続きがあったとしましょう。

  1. 受付Aで書類をもらってハンコを押す
  2. 次に受付Bでハンコをもらう
  3. 再び受付Aに戻り、Bのハンコが押されていることを確認してもらう
  4. 今度は受付Cにに行ってハンコをもらう
  5. その書類を持って受付Bに行く
  6. ついに最終書類がもらえるからハンコを押して提出する

すごい長い手続きですね……フリーランスの僕としては確定申告を思い出して吐き気がしますワクワクします。

でもこの手続よーく見てください。結局こっちがやるのってハンコ2つ押すだけなんですよね……

インタープリター(スクラッチ)の場合

インタープリター型で手続きを処理すると、この流れの通り1から6まで関連各所で処理を行っていきます。

プログラムが行ったり来たりするわけですが、人間と違ってそもそも処理速度が速いので6ステップごときでは大して遅くありません。

まぁプログラミングの世界では6万ステップとか60万ステップとかになることは日常茶飯事なので、やがて問題が起きることもあるかも。

冒頭で挙げたスクラッチのマイクラとか太鼓の達人とかスマブラとか、処理がめっちゃ多いプロジェクトとかはまさに処理ステップがめっちゃあって、それの読み込み時に上図のような「行ったり来たり」が大量に発生するため重たいのです。

コンパイラー(ターボワープ)の場合

コンパイラーだとどうなるでしょうか。まず手続書類を見て「あーこれって結局ハンコ2箇所もらえばいいだけじゃん」という結論ありきで処理が進みます。いちいち関係各所にお尋ねする「たらい回し」みたいなことはせず、ザクッと処理を短縮してくれます。

まとめ

すごくカンタンにいうと以上がスクラッチで読み込みが遅いプロジェクトも、ターボワープだと速く読み込めるカラクリです。

厳密にインタープリターとかコンパイラーの仕組みを調べるともっと全然いろいろ違うカラクリがあって複雑だけど、そこはプログラミングに興味ある人は追々調べてください。

アニメーションとか音楽とか、そっちに興味があるだけならそこまで知らなくてもいい世界の話かも。

プログラマーでもまぁそこまで厳密に知らなくてもいいかも……。JavascriptはインタープリターでJavaはコンパイラーで動いてるとか、その程度の理解でも全然良くて、そういう知識に出会ったときに「そういえばスクラッチとターボワープでインタなんとかコンパなんとかってあったなぁ」って感じでOKです。むしろそれだけでも優秀かも。

ということでターボワープのリンクを設置した報告だけだったのにナゼかターボワープの仕組みに言及してしまってスゴイ長い記事になってしまったという謎の記事でした。お付き合いありがとう。