Three.jsとTypeScriptによるWebGL開発環境

カバー画像

下記ZIPファイルでThree.jsとTypeScriptによる開発をすぐに試せます。

threejs-ts.zip (728KB)

本文では展開したZIPファイルのpackage.jsonがあるディレクトリをプロジェクトディレクトリとし、すべてのパスをプロジェクトディレクトリからの相対パスで表します。

TypeScriptを利用するメリット

Three.jsはJavaScriptのライブラリですが、TypeScriptにも対応しています。TypeScriptはJavaScriptのスーパーセットで、次のようなメリットがあると考えています。

型がある

JavaScriptは動的型付け言語ですが、TypeScriptには型があります。これにより、強力な入力補完が効いたりエラーチェックができたりするため開発効率が圧倒的に向上します。書いていて気分がいいです。

他のファイルをインポートできる

Three.jsでシェーダーを利用する場合、JavaScriptだとファイル読み込みがやや不便でシェーダーコードをJavaScriptの文法上の文字列として扱う必要があります。TypeScriptのimportを利用するとシェーダーを個別のファイルとして分離することができ、シェーダー開発時にエディタの補完の恩恵を受けられます。

開発環境の構築

Node.jsが動かせる環境があれば十分です。構築方法としては下記のいずれかになります。

上記の開発環境ZIPファイルはどちらにも対応しています。

Node.jsのDockerコンテナを利用

プロジェクトディレクトリで下記コマンドを利用してDockerコンテナをビルドします。

$ make build

Dockerコンテナが作成されて起動します。make stopでコンテナを停止できます。使用できるmakeコマンドはMakefileにあります。

システムのNode.jsを利用

https://nodejs.org/ja/より、Node.jsをインストールします。

プロジェクトディレクトリの構成と説明

.
├── .devcontainer/ <- VSCodeリモートコンテナ用
├── .vscode/       <- VSCodeの設定ファイル
├── dist/          <- ビルドされたソースコードがここに出力される
├── src/           <- TypeScriptやシェーダーなどソースコード
├── Dockerfile         <- Dockerコンテナ作成用ファイル
├── Makefile           <- Dockerコマンドをラップ
├── package-lock.json  <- npmパッケージ(依存関係を含めてすべて。編集はしない)
├── package.json       <- npmパッケージ(開発者が任意に編集する)
├── tsconfig.json      <- TypeScript設定ファイル
└── webpack.config.js  <- ビルド設定ファイル(Webpackの設定)

開発

パッケージのインストール

$ npm install
でThree.js含め、開発に必要なパッケージがnode_modulesにインストールされます。

ビルド

$ npm run build
をするとビルドが実行されます。
$ npm run watch
をすると、src/index.tsおよびインポートしているファイルを監視し、変更が発生したらその都度自動でビルドしてくれます。開発中はこれを動かしていることが多いです。 npm runで実行できるスクリプトはpackage.jsonscriptsで定義しています。

表示の確認

Dockerコンテナを利用している場合

DockerコンテナにはNginxがインストールされているため、http://localhostをブラウザで開くとdistに出力されたファイルを確認できます。

システムのNode.jsを利用している場合

dist/index.htmlをブラウザで開きます。

表示例

デバッグ

ブラウザの開発者ツールでデバッグコンソールを確認できます。多くのブラウザでF12キーを押すと開きます。シェーダーのエラーも出力されます。

VSCodeユーザー向けの情報

VSCodeにRemote Development拡張機能パックをインストールしてプロジェクトディレクトリを開くと、Dockerコンテナにリモート接続して開発できます。.devcontainer.vscodeはそれ用です。

最終更新: