PharoがWebAssemblyでブラウザ上に登場、インストール不要でSmalltalk環境が動く

Pharo in the Browser with WebAssembly

PharoのVMをWebAssembly化し、ブラウザ内で直接Smalltalk環境を動かせる「Pharo World」が公開された。Pharo 13.1から15までのイメージを選んで起動でき、.stファイルや.imageをドラッグ&ドロップで開くことも可能。保存したイメージはブラウザ内に保持され、IcebergによるGit操作やMetacelloの読み込みにも対応する。

保存したイメージはこのブラウザ内だけに残り、Downloadを選べばコピーが手元に残ります。
  1. jsrcout

    1981年のByte誌のSmalltalk特集は今でも覚えている[0]。高校生だった自分には間違いなく「未来」だった。すごくクールに見えた。だが家のApple II+[1]で試す手段はなかったのだけど。

    ここ数年、Smalltalk系の様々なシステムを試して分かったのは、システム全体を単一の言語で実装し、単一のイメージ上で動かすことの利点だ。すべてに爽やかな一貫性と予測可能性があり、フラクタル的な複雑さではなく行き渡ったシンプルさがある。

    コードベース全体を一つのウィンドウで閲覧できる——言語/コンパイラ、数学演算(たぶん基本プリミティブは除く)、データ構造、グラフィックス、ウィンドウシステム、どれも見事に整理されている。メソッドは重要なものでさえ大半が小さく素直で無駄がない。1行か2行だけのものも多い。

    Smalltalkは開発者に絶大な力を与える。「コードの中」で直接作業し、変更は即座に反映される。システム自体を書き換えるのも簡単で、そこへ行ってタイプを始めるだけだ。すべて同じブラウザウィンドウの中で。動いているプログラムの内部を簡単に覗き、そのデータやコードさえ変更して、そのまま続けられる。今でも未来的に感じる。

    OpenGL/Vulkan/GUI/DOMのライブラリを選んでmake/rpm/docker/pip/npmのようなツールを設定するいつもの話ではなく、強力なグラフィックスとウィンドウシステムが最初から使える。これがおそらく最も「SF的」な点だろう。

    要するに、これは自分が始めた頃に可能に思えた「ジェットソンズ」的な未来だった。実際に手に入った未来は、[…]

  2. pmkary

    Pharoがこれほど速く、ブラウザ上で、モバイルで動くのを目の当たりにして信じられない。世の中が進歩して、もっととんでもないものがあるのは分かっている(Infinite MacでOS X Tigerを動かすとか、SketchUp webとか……)けれど、それでもこれは衝撃だ。技術の進歩が速すぎて、このサルの脳みそが追いつかない。

  3. lynndotpy

    2017年か2018年ごろにPharoで少し遊んで、マインスイーパーのクローンを作った。

    迅速かつ即時の反復が可能な環境が本当に_本当に_好きだ。特に、制作に何らかの芸術性や探求が含まれるプロジェクトでは。一つには、(場合によっては)そうでなければ見られなかった中間的・創発的・意図しない結果が見られることだ。

    特に興味深い意図しない結果ではないけれど、あるロジックの不具合(だったと思う)で、マインスイーパーの展開が各操作ごとに起きた(つまり、クリアされたセルが一瞬でではなく一歩ずつ伝播した)。

  4. ajasmin

    いいね!

    ということは、これはEmscriptenでコンパイルされたバイトコードインタプリタなのかな?Squeakにも似たような試せるページがあったっけ?

    イメージコードの一部をJITしたり事前コンパイルしたりする試みはないのだろう。Smalltalkの動的な性質とWebAssemblyの限られた実行モデルを考えれば、それは偉業だろうけど。

    こういうのを遊べるようにしたかったんだ。コードはどうやってビルドするの?

  5. Cieric

    Pharoは使ったことがないけれど、私のFirefoxでは左上に寄りすぎて表示される。マウスがキャンバスにどう変換されているのか分からないが、問題があるようだ(あるいは逆で、奇妙なキャンバスのスケーリングが原因かも)。キャンバスのCSSから`transform: scale(calc(1 / var(--world-dpr, 1)));`を削除すると直るようだ。

この日のほかの記事

2026-11-11