JavaScript から Web版 SDK を使う

最終更新: 2020年1月30日

このページではCubism 4 SDK for Web の Framework を JavaScript の webpack プロジェクトから使用するための手順を紹介します。

既存の JavaScript の webpack プロジェクトに必要なファイルを追加する

Cubism 4 SDK for Web から以下のディレクトリをプロジェクトにコピーします。

  • Coreフォルダ
  • Frameworkフォルダ

既存のプロジェクトにパッケージを追加する

既存の JavaScript の webpack プロジェクトで、TypeScript をビルドするために ts-loader パッケージを追加します。

プロジェクト上で下記のコマンドを入力すると package.json にパッケージが追加されます。

npm install --save-dev ts-loader

既存のプロジェクトの webpack の設定を変更する

既存の JavaScript の webpack プロジェクトで Framework のビルドが行えるようにいくつか追加の設定を行います。

まずは、TypeScript ファイルを webpack のビルド対象に追加するために下記を設定します。

module.exports = {
  ...
  resolve: {
    extensions: ['.ts', '.js']
  }
  ...
}

次に、webpack がビルド時に TypeScript を変換するために下記の設定を追加します。

module.exports = {
  ...
  module: {
    rules: [
      {
        test: /.ts$/,
        exclude: /node_modules/,
        loader: 'ts-loader'
      }
    ]
  }
  ...
}

以上で webpack のビルドを正常に行うことができます。

下記にwebpack.config.js のサンプルを掲載します。

var path = require('path');

module.exports = {
  entry: './src/main.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.js',
    publicPath: '/dist/'
  },
  resolve: {
    extensions: ['.ts', '.js'],
  },
  module: {
    rules: [
      {
        test: /.ts$/,
        exclude: /node_modules/,
        loader: 'ts-loader'
      }
    ]
  }
}

JavaScript から Framework を使用する

JavaScript から TypeScript のフレームワークを使用する方法になります。

使用したいモジュールを import して利用する場合以下のように記述します。

import { Live2DCubismFramework } from "../../../../Framework/live2dcubismframework";

Live2DCubismFramework.CubismFramework.CubismFramework.startup();

フレームワーク内クラスのインポート

フレームワークは名前空間 Live2DCubismFramework でラッピングされているため、複数 import すると重複してしまいます。
重複を解決するには import 時に違う名前を指定する必要があり、import 時の名前空間の後に as [任意の名前] を指定することで解決できます。

さらに、import [任意の名前] = モジュール名 と記述することで、内部モジュールを別の名前で定義することができます。

import { Live2DCubismFramework as live2dcubismframework } from '../../../../Framework/live2dcubismframework';
import CubismFramework = live2dcubismframework.CubismFramework;

CubismFramework.startup();
この記事に関するご意見・
ご要望をお聞かせください。