LoginSignup
6
7

More than 5 years have passed since last update.

[Spider]新しい?AltJS「Spider」でHelloWorldを動かしてみる

Last updated at Posted at 2014-11-18

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

いかがでしたでしょうか。

まだまだ、ドキュメントがありませんし、
上手く動かない部分もあるようですが、

これから、どんどん改善されていくことを期待します!

今回つくったものまとめ

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();
6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7