Definy is Web App for Web App.
ゲームとツールを手軽に作れて公開できるプログラミング言語とエディタ,ゲームエンジン,SNS. Elmで作っていた時期もあったが, 今は React で作られている Web アプリ. PureScript に移行中. まだ, ぜんぜんできていない
ここで動作を確認できる
古いバージョンでは WebAssembly を使って数値の足し算, 引き算, 掛け算ができる
- インストールの必要なく, Web ブラウザで動くため, 開発環境構築に時間がかからない
- Web ブラウザで 動作するので多くの端末, OS で動作する
- Web ブラウザ上のエディタで, プログラムを書く
- 言語仕様がシンプル
- 純粋関数型言語であり, 全てが不変データなため動作が予想しやすい
- エラーは Result 型で表現するため, 実行時エラーがかなり少ない
- 言語機能と結びついた構造化されたバージョン管理システムが付属している
- コードが文字列でなく, AST のような構造化されたデータをコードとして編集するので, 文法エラー, 参照不明のエラーがない
- コード整形ツールが不要
- 式の評価過程をエディタ上で確認できる
- 独自のリテラルを作れる
- 画像や音声, 3D モデルをプリミティブに扱える
- キーコンフィグ機能が自動でつく
- マクロ, TAS 機能, RTA タイマーが使える
- Chrome で, Google 翻訳が使える. 海外のゲームを日本語でできる
- 配信者のゲームの状態を受け取って, そこからゲームを再開できる
- 全てのゲームとツールのコードはプチコン 3 号のようにオープン
/.github/workflows/deploy_firebase.yml
: Firebase へのデプロイの処理が書かれている/.github/workflows/deploy_gen.yml
: npm パッケージ@narumincho/gen
へのデプロイの処理が書かれている/.github/workflows/pull_request
: Pull Request したときに実行されるテストの処理が書かれている/build
: ビルドのスクリプト/client
: TypeScript で書かれたクライアント用のコード/common
: クライアントとサーバーの共通のコード/core
: コンパイラのような処理が書かれている/functions
: サーバーのコード/gen
: データやコードを生成するプログラムのコード/static
: スタティックなファイルが置かれている/storybook
: UI の見た目や動作を確かめられる, storybook の設定や, ストーリーが書かれている/src
PureScript で書かれたコード/deno-lib
Deno で書かれたコード
Node.js LTS, Java (Firestore のエミュレータに必要) をインストールする必要がある.
corepack enable
を事前に実行することによって, pnpm が自動的にインストールされる
Google でログインするための 鍵を, 1 つ上の階層のファイルに保存し, npm script の start
を実行するを開発用にアプリが起動する. Ctrl + C キーを押すと エミュレータを停止することができる. VSCode の ゴミ箱ボタンだと, firestore のエミュレータが終了されないので注意. タスクマネージャーの Open JDK Platform binary などのそれっぽいものを停止すれば, firestore のエミュレータを停止させることができる.
Deno と Node.js 向けの拡張機能は共存できないため, 別で VSCode を起動する必要がある
Deno 向けワークスペースの起動
code ./for-deno.code-workspace
起動
deno run --watch --check --allow-env --allow-net=:2520 --allow-read --allow-write=./client/generated ./deno-lib/definyDesktopProxy/main.ts
カレントディレクトリは リポジトリと同じ場所
deno run --check --watch --allow-net=:2520 --allow-write=./deno-lib/definyRpc/client/generated --allow-read ./deno-lib/definyRpc/example/exampleDev.ts
--allow-write
--allow-read
とかで指定しているのは, サーバーでコード生成したときに, ファイルを保存するため
http://localhost:2520 にアクセスすれば, ビルドしたクライアントでの起動になる
deno run -A --check ./deno-lib/definyRpc/build.ts
Deno で書かれたコード. Deno への移植をどんどん進めている
cd ./deno-lib && deno run -A --check ./build.ts
Node RED から definy RPC のサーバーにデータを送信できる (できるようにする) ライブラリ
https://www.npmjs.com/package/@definy/node-red
deno run --check -A ./deno-lib/nodeRed/build.ts
cd ./nodeRedServerForNode && npm publish .
cd ~/.node-red
node-red
npm install path/to/nodeRedServerForNode