Scratch3.0 mod 開発環境 (2)

Scratch3.0用の拡張機能を開発するためにScratch3.0 mod環境を構築します。

「Git」「Node」「Yarn」というツールをインストールしたら、いよいよGitHubからScratch3.0ソースコードをクローンします。


必ずしも開く必要はないですが、GitHubサイトのもとのページは以下のURLにあり、その中のリンク情報を使ってコマンドを入力します。

https://github.com/LLK/scratch-vm
https://github.com/LLK/scratch-gui

ターミナルを起動してコマンドラインで次のようにします。

【GitHubのScratch3.0をクローン】
$ mkdir {何かディレクトリ名}
$ cd {何かディレクトリ名}
$ git clone --depth 1 https://github.com/LLK/scratch-vm.git
$ git clone --depth 1 https://github.com/LLK/scratch-gui.git
【yarnで構築】
$ cd scratch-vm
$ yarn install
$ yarn link

$ cd ../scratch-gui
$ yarn install
$ yarn link scratch-vm

ここまで問題なく完了すれば、あとはScratch3.0 mod環境を起動して、独自のアドレスをWebブラウザからアクセスするとScratch3.0が使えます。

もし問題が発生した場合は、エラー原因を確認することが大事になりますが、たとえばNodeのバージョンの都合が悪い場合は切り替える必要がありますし、パッケージの更新やYarn等ツールの再インストールが必要になるかもしれません。


Scratch3.0 mod環境を起動するには次のコマンドを利用します。

$ npm start

しばらくコンパイルの時間がかかりますが、それが完了すれば、Webブラウザからアクセスすることができます。

【同じ端末上のWebブラウザからアクセスする】
http://localhost:8601/

Raspberry Piなどをサーバーとして他の端末のWebブラウザからアクセスする場合はRaspberry PiのIPアドレスを調べてアクセスします。

【10.55.0.1アドレスのRaspberry Piにアクセスする】
http://10.55.0.1:8601/

PaSoRichのようにデバイスを利用するため特殊なことをしている拡張機能の場合は、このままでは動作しません。https接続をする必要があります。

https接続を実現するためには webpack-dev-serverと呼ばれるパッケージを起動する際に「–https」オプションをつける必要があります。

【scratch-guiのpackage.json内を編集】
"start": "webpack-dev-server",
        ↓
"start": "webpack-dev-server --https",

以上でScratch3.0 mod環境を構築し、起動させることができました。

Raspberry Piを専用サーバーとすれば、開発環境をあちこち持ち運ぶことができます。また、Visual Studio Codeという開発用エディタを利用すれば、Raspberry Pi環境をリモートで操作・作業することができます。

Scratch3.0 mod 開発環境 (1)

SC2Scratch (PaSoRich)のような拡張機能を開発するためには、本家MITのScratch 3.0ではなく、独自に改造版(mod環境)を用意し、その上で開発作業を行うことになります。

ここでは、macOSまたはRaspberry Pi OS(Debian系)で、Scratch3.0 mod環境を構築する手順についてご紹介していきます。


Scratch3.0は開発版がGitHubというサイトで公開されています。改造版を構築するには、この開発バージョンをクローン(コピー)することになります。

まずはそのための準備からになります。

準備するもの
○Git
○Node.js
○Yarn

Git

gitは、ファイルやデータの管理ツールです。
https://ja.wikipedia.org/wiki/Git
https://git-scm.com/

あらかじめインストールされているため、わざわざ再インストールするようなことはしなくてもよいです。インストールされているか確認するためにバージョンチェックのコマンドを入力してみてください。

○バージョン確認

$ git --version

このようにして「git version 2.20.1」などと表示されればインストール済みです。そうでない場合はインストールしてください。

○インストール

【macOS】(Homebrewを導入後に)
$ brew install git
【Raspberry Pi OS】
$ apt install git

Node

Nodeは、Scratch3.0が動作するための基礎環境になります。
https://ja.wikipedia.org/wiki/Node.js
https://nodejs.org/ja/

Node本体を直接インストールする方法がありますが、Nodeにはさまざまなバージョンがあるため、場合によっては切り替えが必要になることがあります。そのため、切り替えが簡単にできるソフトをインストールしてから、それを使ってNodeをインストールしたほうがよいという解説もたくさんあります。

○バージョン確認

$ node -v

○インストール

【macOS】(Homebrewを導入後に)Nodeの安定版をインストール
$ brew install nodebrew
$ nodebrew install-binary stable
【Raspberry Pi OS】
$ git clone git://github.com/nodenv/nodenv.git ~/.nodenv
$ echo 'export PATH="$HOME/.nodenv/bin:$PATH"' >> ~/.bashrc
$ ~/.nodenv/bin/nodenv init
$ echo 'eval "$(nodenv init -)"' >> ~/.bashrc

$ git clone https://github.com/nodenv/node-build.git ~/.nodenv/plugins/node-build

$ git clone https://github.com/nodenv/nodenv-update.git ~/.nodenv/plugins/nodenv-update

$ exec $SHELL -l
$ curl -fsSL https://github.com/nodenv/nodenv-installer/raw/master/bin/nodenv-doctor | bash

$ nodenv install -l
$ nodenv install 14.16.0
$ nodenv global 14.16.0

参考リンク:NODENVのインストール
https://github.com/nodenv/nodenv
https://gitpress.io/@ippei8jp/20190628_1

Yarn

Yarnは、Node環境で使うパッケージ管理ソフトです。
https://e-words.jp/w/Yarn.html
https://yarnpkg.com/

○バージョン確認

$ yarn -v

○インストール

【macOS】
$ brew install yarn
【Raspberry Pi OS】
$ apt install yarn
または
$ npm install --global yarn

以上のツールを準備すれば、GitHubからScratch3.0のソースコードをダウンロードして、独自のScratch3.0環境を構築できます。

次はこれらのツールでScratch3.0 mod環境をつくる方法を説明します。


[余談]デプロイのために…

GitHubでmod環境を公開する場合は、gh-pagesというパッケージが必要になるときがあります。必要に応じてインストールしましょう。そうでなければ普通は必要ありません。

GitHub Pages
https://docs.github.com/ja/github/working-with-github-pages/about-github-pages
gh-pages
https://www.npmjs.com/package/gh-pages

○インストール

$ yarn add gh-pages

yarnやnpmでエラーなど発生した場合にやり直しをする際は余計なファイルやキャッシュをクリアする必要もあります。そのためのいくつかのコマンドを。

$ rm -rf node_modules package-lock.json yarn.lock
$ npm cache clean --force
$ yarn cache clean

新 拡張機能 開発中

2019年5月に開発した拡張機能「PaSoRich」は、ソニー製のRC-S830カードリーダーを用意することでスマートカード(Felica)の識別番号をScratch3.0で読み取ることができます。

電子マネーをピッかざす仕組みをScratch3.0で再現することができ、簡単な決済システムをシミュレートするプロジェクトの開発なら可能でした。

しかし、それらはあくまでも一つの端末のScratch環境に閉じた範囲でしか情報の処理が行なわれないため,たとえば別の端末上で同じプロジェクトを動かしても,ある端末で決済した情報が、別の端末に反映されることはありません。

つまり、あるお店で買い物をしてポイントを増やしたはずなのに,別のお店で買い物する際に、そのポイントが増えていないことが起こることを意味します。

これでは、スマートカードの利便性を再現できません。

PaSoRichを開発していた当時から、これは大きな課題でした。

この問題を解決するためにPaSoRichをバージョンアップする方法をずっと考えてきましたが,その部分だけ別の拡張機能として開発することにしました。

開発中の新拡張機能ブロック

ようやく動作するものができ上がりつつあります。まだ実験段階であり,本格的に公開するには検討すべきことが残っていますが,近々テスト公開できればと考えています。