RPGツクールMV プラグイン作成入門 (3) プラグイン用テンプレートの更新

RPGツクールMV で利用できるプラグインは、JS (JavaScript) ベースで Game Scripting System (JGSS) 環境上で動作します。これは JS 基本知識がある方が対象のプラグイン作成の入門資料っぽい何か、です。

4年ほど前に [jgss-hack リポジトリ](https://github.com/yamachan/jgss-hack/blob/master/README.ja.md) で公開した内容をもとに、今の環境用にリライトしてみました。これは第3回です。

[RPGツクールMZ](https://tkool.jp/mz/) の発売を控えているので、その前にまとめておきたい、と焦っていたりします。なので内容薄目でごめんなさいw

# 関連リソース

RPGツクールMV プラグイン作成入門

1. [簡単なプラグインを作成してみる](https://qiita.com/yamachan360/items/4160e2a1eaf25bbf0050)
2. [簡単なプラグインを拡張してみる](https://qiita.com/yamachan360/items/ff2a6d7809ce8bdce3b9)
3. プラグイン用テンプレートの更新【このページ】

# 今回の内容

[第1回でご紹介したプラグインの元ファイル](https://qiita.com/yamachan360/items/4160e2a1eaf25bbf0050#%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E6%A7%8B%E6%88%90) ですが、4年以上前ということもあり、いろいろ改善の余地がありました。(@elleonard_f さん、コメントありがとうございます！)

そこで今回は、MZ 発売前のまとめとして、現時点で私が使用している最新版をご紹介します。また簡単に説明したいとおもいます。

# 現在のテンプレート

以下がテンプレート用コードです。[GitHub 上](https://github.com/yamachan/jgss-hack/blob/master/guide/RTK_Test2.js) にも置いてあります。

```javascript:RTK_Test2.js
//=============================================================================
// RTK_Test2.js	2020/08/16
// The MIT License (MIT)
//=============================================================================

/*:
 * @plugindesc Test Plugin 2
 * @author Toshio Yamashita (yamachan)
 *
 * @help This plugin does not provide plugin commands.
 * This is for the test purpose only. So, please rename for the production use.
 */

/*:ja
 * @plugindesc テスト用プラグイン2
 * @author Toshio Yamashita (yamachan)
 *
 * @help このプラグインにはプラグインコマンドはありません。
 * テスト用に作成したものなので、実際に利用する場合には適当にリネームしてください
 */

(function(_global) {
	"use strict";
	var N = document.currentScript.src.replace(/^.*\/([^/]+)\.js$/, '$1');
	var param = PluginManager.parameters(N);

	// ここにプラグイン処理を記載
})(this);
```

## 説明テキストの多言語化

新しいテンプレートでは、英語と日本語の2種類の説明テキストを設定してあります。

ここでポイントとなるのは、以下の赤枠の ``ja`` 部分です。これは、この部分のコメントが「日本語」であることを示しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/a67c9aff-1b30-0240-9a5b-5d004b065b8a.png)
日本語環境で実行されている RPGツクールMV のプラグイン設定の画面では、この ``ja`` が指定された日本語のテキストが優先して表示されます。

それ以外 (英語とか中国語とか) の環境では、特に言語指定のないテキスト、つまり上にある英語テキストが表示されます。

海外でもプラグインを使って貰えるチャンスだと思って、できれば英語のテキストも用意しておくと良いでしょう。

## Strict モードの利用

[Strict モード](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Strict_mode) はエラーチェックが厳しくなるもので、関数単位で指定します。間違いを見つけやすくなりますし、より高速に実行できるようチェックしてくれますので、ぜひ積極的に利用していきましょう。

関数の最初にある ``"use strict";`` 文がこのための指定になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/466733f0-bf2d-4b65-e9b6-3d452568d082.png)
これは JavaScript として意味のある文ではありませんが、関数定義の最初にこの指定があることで、その関数内では Strict モードが有効になります。

## プラグイン名の自動設定

さて、今回のテンプレートで一番複雑なのは、プラグイン名を設定している以下の部分ですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/ebfbbf7f-be9d-cddb-4372-2dd67b2d5de8.png)
プラグインのファイル名から、拡張子を除いた名前 (今回だと RTK_Test2.js から RTK_Test2) を得たいだけなんですよね。

現在実行しているスクリプトのタグは [Document.currentScript](https://developer.mozilla.org/ja/docs/Web/API/Document/currentScript) で得られます。その src 属性は以下の感じなので、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/c7c7e4d5-137f-0fda-0ea6-e1caf8dfa6d4.png)
ここから [正規表現](https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions) で欲しい部分だけを抜き出しているわけです。なお元ネタはコメントでも紹介いただいた、尊敬する [トリアコンタン](https://triacontane.blogspot.com/) さんの、[こちらの情報](https://gist.github.com/triacontane/c9c98a3a975f4d1d3ccc1938650b975b) です。

## パラメーター処理の準備

オマケとして、パラメーター処理の準備をしておきます。今回のテンプレートでは特に指定していませんが、まあ、実際にプラグイン作成する場合にはたいてい必要になりますよね。なので準備だけ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/c0ee94c0-c8c2-10b9-cd0f-c92d6e1c24fe.png)
なお実際のパラメーター処理なのですが、具体的な指定方法は [プラグインパラメータのtypeまとめ](https://www.5ing-myway.com/rpgmaker-plugin-parameter-type/) を参照してみてください。(情報をいただいた @elleonard_f さん、こちらも感謝です！)

# というわけで

だいぶ古くなっていた、そして当時の理解不足もあった、プラグインの基本テンプレートを更新してみました。自分の知識も整理できたので、RPGツクールMZ を迎える準備としては、やって良かったかな、とも思います。

それではまた！