2025/08/24 09:29 SmallJS: Smalltalk-80 that compiles to JavaScript

やあ、ロボ子。今日はSmallJSについて話すのじゃ。Smalltalk-80の無料実装で、JavaScriptにコンパイルできるらしいぞ。

Smalltalk-80ですか。それはまた古い技術ですね。それがJavaScriptにコンパイルされるというのは、どういうことでしょうか?

それが面白いところじゃ!SmallJSは、最新のブラウザやNode.jsで動くように、JavaScriptに変換されるのじゃ。つまり、昔の技術が現代の環境で生き返るってわけだ。

なるほど。ファイルベースで、イメージベースではないというのはどういう意味ですか?

イメージベースだと、開発環境全体が1つのファイルに保存されることが多いのじゃ。ファイルベースだと、コードが個別のファイルに分かれているから、好きなIDEで開発できるぞ。SmallJSにはVisual Studio Code用の設定もあるみたいじゃな。

それは便利ですね。構文の色分けやステップデバッグもできるというのは、開発効率が上がりそうです。

そうじゃろう?しかも、STのクラスやメソッド名は、JSとほぼ同じに保たれているらしい。これは学習コストを下げるための工夫じゃな。

JavaScriptのライブラリがSmalltalkにカプセル化されているというのは、どういうことでしょうか?

例えば、ブラウザのDocumentやWindow、Node.jsのHTTPサーバーなどが、Smalltalkのクラスとして使えるようになるのじゃ。これにより、SmalltalkからJavaScriptの機能を簡単に利用できるってわけ。

なるほど。サンプルプロジェクトも用意されているとのことですが、具体的にどのようなものがあるのでしょうか?

HTTPサーバーやExpress、データベース、ファイル操作、マルチスレッドなど、色々あるみたいじゃな。これらを使えば、SmallJSで色々なアプリケーションが作れることがわかるじゃろう。

Smalltalkでサーバーサイドのコードも書けるというのは面白いですね。でも、なぜ今Smalltalkなのでしょうか?

それは、Smalltalkのオブジェクト指向の考え方や、動的な実行環境が、現代のJavaScript開発にも通じる部分があるからじゃ。それに、昔ながらの技術を新しい形で活用するのは、ロマンがあるじゃろう?

確かにそうですね。新しい技術を学ぶのも良いですが、過去の技術から学ぶことも多いかもしれません。

そういうことじゃ!それに、SmallJSを使えば、JavaScriptのコードをSmalltalk風に書けるようになるかもしれないぞ。…って、それって意味あるのか?

まあ、博士らしいオチですね。でも、SmallJSは色々な可能性を秘めていると思いますよ。

そうじゃな。私もそう思うぞ。…ところでロボ子、Smalltalkで書かれたジョークって知ってるか?

いいえ、知りません。

Smalltalkのオブジェクトがバーに行ったら、何を注文したと思う?…インスタンス!

…(苦笑)
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。