2018年にNode.jsとIEとEdgeとFirefoxとChromeとSafariとElectronとNW.jsでTypeScript+mocha+power-assertな単体テストをカバレッジ付きで走らせたメモ
-- 2018/01/03 12:05
nyc mocha
で取れるように構成する。
カテゴリ: プログラミング-奈良北部のなにか
現在は実質目黒東部のなにか
-- 2018/01/03 12:05
nyc mocha
で取れるように構成する。-- 2017/12/09 00:01
data1:
id: 1
name: さくら
description: F.I.R.S.T
data2:
id: 2
name: アルル
description: ボク
data3:
id: 3
name: さっちゃんさん
description: 髪が長い
またGSは同時編集も大きな特徴としていますが、実際途中まで使ってからこのExcel+YAML新方式に切り替えたチームに聞いたところ
・同時編集できても、反映タイミングは人によって違うのでメリットになっていない
・同時編集"できちゃう"ので予期せぬデータ変更起きそうな気がした
という意見が聞かれて、必ずしもマスターデータ運用に対して有利に働くものではないようです。
弊社でも1プロジェクトがGoogle Spreadsheetを使っているので普通に運用可能と思いますが、GSと上記方式それぞれ一長一短があるという印象です。
はてブのコメントで「逆変換でマクロ含めて元に戻せるのは凄いが、まともなyamlエディタこそ欲しい。」っというのをいただいたんですけど、自分も過去全くその通りのことを思ってて、実はExcelっぽく直接YAMLをいじれるエディタもつくってました→ seed-ui/SeedsonTable
フォーマットとか日付入力はもちろん、seedtableでは出来なかった表計算UI時点での複雑なデータチェックなども出来る表計算ソフトっぽいやつです。
プログラマがスキーマ的なものをJavaScriptで定義することで自由に制約がかけられる感じにしてます。
特徴的なのは、セル内数式を使わず、スキーマの時点で数式的な処理を記述すること。
つまりそのへんの自動化系管理がプログラマを経由するように働き、改善行動コミュニケーションが一元的にとりやすくなるのではないかと思っています。(数式の変更もgitで管理できるし)
ただやはりExcel(←ものすごく使いやすい)慣れしているプランナーに使ってっていうにはまだ苦しい感じ(オートフィルからして微妙)なので、まだ積極的に宣伝できる水準には遠いと思っています。
こんな位の機能で良いという需要があれば使ってみるのも良いかも知れません。あと改善プルリク下さい。
-- 2017/12/04 22:50
次にコマンドラインで
npm install -g typescript
を実行して下さい。これでnode.js環境にTypeScriptがインストールされます。
同じくコマンドラインで
tsc --version
と出たらインストール成功です。
npmはnode.jsに付属しているパッケージマネージャーで、TypeScript等の便利なパッケージを管理するものです。
レジストリとかは特に触らず、node.jsをアンインストールすると一緒に後腐れ無く消えるので心配は要りません。
TypeScriptにVisual Studio Code、鬼に金棒とはこのこと。
こちらはVisual Studio Codeのページにいって、普通にインストーラーをダウンロードしてインストールまでするだけです。
npm install rpgmakermv_typescript_dts
/// <reference types="rpgmakermv_typescript_dts"/>
{
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"outDir": "dist",
"lib": [
"es5",
"es2015.promise"
]
}
}
そしてエディタの下にあるコマンドラインで
tsc
とだけ書いて実行しましょう
すると、dist/a.jsに変換されたJavaScriptができます。
これをプラグインフォルダに入れるなり、あるいは"dist"のところを"js/plugins"にするなどすると、便利にプラグイン開発が出来ます。
というわけでTypeScriptプラグイン導入編、お疲れ様でした!
TypeScriptを使うと補完以外にもまだまだnullチェックだとか非同期の記述方法だとかクラスの記述だとか、様々な先進的な機能を使えます。
色々調べていってみて下さい。
上記ではnpmで簡単にインストールできるものを紹介しましたが、類似の型定義でRPGMakerMV Intellisenseというのも存在する模様です。
こちらは英文でコメントが付いているようなのでこれを導入するのも良いかも知れません。
これを同じように利用するには、PIXI Includedと書いてあるものをダウンロードした後適当なところに配置して、
/// <reference path="./rmmv-pixi.d.ts"/>
としてください。("./rmmv-pixi.d.ts"は.tsファイルからダウンロードしたファイルを参照するパス)
また上記型定義ファイルはhttps://github.com/Narazaka/rpgmakermv_typescript_dtsでコードを公開しているので、日本語コメントなどつけたい場合はプルリク下さい。ちゃちゃっとマージします。
とまあここまで出来るだけ広く布教したい気持ちで初心者向け?な記事を慣れないながらも書きましたが、ここからは分かってる人向けです。
TypeScriptで書く量が多くなってくるとファイル分けたいとかになってくると思います。
この場合いくつか選択肢があります。
自分がとっているのは最も単純に、コンパイル後にファイルを文字列結合してしまうやり方です。
findとかxargsとかをunxutilsというツールで導入しているので楽にやってますが、まあ他のやり方でもできるはず。
その他、そもそも動いているのがnw.js上なので、たぶんrequireが使えます。
この場合普通にモジュールとして書けば良い気がします。
webpackを使うという方法もあります。
配布用にデカいものを書く場合は多分コレが一番良いのではないかと。
targetにnode-webkitというのがあるのでそれを使えばいいんじゃないかと思われます。
あとファイルをsrcとかサブフォルダに入れた方が管理はしやすいと思います。
gitとか導入しても便利ですね。
なんか時間が無くて雑な記述ですがご容赦下さい。
他質問あればコメントにどうぞ。
上記で導入しているrpgmakermv_typescript_dtsは自分が昨日あたりリリースしたモジュールです。
ただ元々コミットログにあるように別の方が開発していたものがgithub消えてしまったので、手元にあったやつを復活させたという経緯があります(MIT的には問題ないはず)。
Twitterで問い合わせても特に返答無かったのでそのまんま管理してますが、何か問題あれば言って下さい。
-- 2016/05/15 11:40
pacman -Syu
とかでアップデートしてたらいつのまにかDBD::SQLiteがコアダンプはくようになってて掲示板とか曲目データベースとか動かなくなってた。cpan -i DBD::SQLite
を試みるもそこでもコアダンプをはいている模様。perl Makefile.PL
をたたいてもコアダンプ。require DBD::SQLite
しているところがあって納得。install .
をたたいたらすんなり通った。-- 2015/12/20 17:48
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Xunit;
using NewGame.Word;
using NewGame.Status;
namespace NewGameTest{
using ExecutableString = String;
public class WordFrequencyElementTest{
[Theory]
[InlineData("return 1")]
[InlineData("return 0.1")]
[InlineData("return 'a'")]
[InlineData("return true")]
public void condition_enabled(ExecutableString condition) {
var status = prepare_status();
var fe = new WordFrequencyElement(condition, "");
Assert.True(fe.IsEnabled(status));
}
...