Spiderとは?
Spiderは、AltJSと呼ばれる言語のひとつです。
AltJSは、コンパイルするとJavascriptに変換されるものです。
ここではテーマとそれるため言及しませんが、
詳しく知りたい方は検索してみてください。
Spider公式ドキュメント
Spider is a programming language that compiles to JavaScript. It takes the best ideas of Swift, Python, C# and CoffeeScript.
Spiderは、SwiftやPython, C#, CoffeeScriptなどを参考に
開発されたそうです。
では、さっそくインストールしてみましょう!
Spiderのインストール
インストールはnpmですぐにできます。簡単ですね。
npm install -g spider-script
Spiderをコマンドラインから実行するには
下記のコマンドを実行します。
ファイルの拡張子は「.spider」です。
spider /path/to/script.spider
Javascriptに変換する時はこちら。
spider -c /path/to/script.spider
The compiler will generate the output JavaScript file and a source map file for debugging. Note that the original spider file and the source map file aren't necessary for production.
Spiderのコンパイラーは、
Javascriptとソースマップファイルを出力してくれますが、
生成物はJavascriptファイルだけ動きます。
.spiderファイルやソースマップファイルは
プロダクトに必要なものではないということです。
spiderでHello Worldを動かす
では、Hello Worldを作っていきます。
まずは animal.spiderファイルを作成し、
そのなかに、Animalクラスを作ります。
( func で定義するが、クラスのような扱い方をする )
また、メンバ関数は「this.~」で定義できます。
func Animal(name) {
this.hello = func () {
::console.log('Hello everyone! My name is \(name) ');
};
}
※ここのconsole.logについている「::」は、
グローバルスコープに出力することを示しています。
作ったクラスは、「extends」で拡張できます。
Animalを拡張して、Cat、Dogを作成しましょう。
親のAnimalクラスの関数を呼ぶには、「super.~」を使います。
func Cat(name) extends Animal(name) {
this.hello = func () {
super.hello(name);
};
}
func Dog(name) extends Animal(name) {
this.hello = func () {
super.hello(name);
};
}
次は、作ったCat, Dogを実行する命令です。
こちらは一般的な書き方ができますね!
var cat = new Cat('Kitty');
var dog = new Dog('Shiba');
cat.hello();
dog.hello();
作ったファイルを実行する
コンソール上で実行するには、下記のコマンドをたたきます。
spider animal.spider
すると、console.log() が実行されて文字が出力されるはずです。
Hello everyone! My name is Kitty
Hello everyone! My name is Shiba
なお、.jsファイルに変換する方法は -c をつけて実行するだけです。
spider -c animal.spider
いかがでしたでしょうか。
まだまだ、ドキュメントがありませんし、
上手く動かない部分もあるようですが、
これから、どんどん改善されていくことを期待します!
今回つくったものまとめ
func Animal(name) {
this.hello = func () {
::console.log('Hello everyone! My name is \(name) ');
};
}
func Cat(name) extends Animal(name) {
this.hello = func () {
super.hello(name);
};
}
func Dog(name) extends Animal(name) {
this.hello = func () {
super.hello(name);
};
}
var cat = new Cat('Kitty');
var dog = new Dog('Shiba');
cat.hello();
dog.hello();