SwiftのコードをJavaScriptに変換してくれるnpmパッケージ「shift-js」

主にiOSやmacOSなどのアプリの開発で使用されるプログラミング言語「Swift」。2014年に公開されてから、もう3年が経とうとしています。バージョンもすでに3となり、今年中にはSwift 4のリリースも控えています。GitHub上のSwiftのリポジトリ数は23万を越え、名実ともに人気プログラミング言語の仲間入りを果たしてきています。

そんな状況なので、Swiftメインなエンジニアもたくさんいることでしょう。今回紹介する「shift-js」は、Swiftメインのエンジニアの方が使えそうな、Swiftで書いたコードを、JavaScriptのコードに変換してくれるツールです。

shift-jsについて

shift-jsは、SwiftのコードをJavaScriptのコードに変換するJavaScriptで書かれたオープンソースのトランスパイラーです。Node.js上で動くnpmのパッケージです。注意して欲しいのはパッケージ名です。「swift-js」ではなく「shift-js」なのでお気をつけください。

Swiftのデータ型(Int, UInt, Double, Float, Bool, String)やコレクション型(Array, Set, Dictionary)、算術演算子や論理演算子、制御フロー(Control Flow)、関数に対応しています。

shift-jsの使い方

shift-jsの使い方はいたってシンプルです。インストールから実際にSwiftのコードをJavaScriptのコードに変換するまでの方法を説明します。なお、shift-jsを使用するには、お使いのパソコンにNode.jsがインストールされている必要があります。

Node.jsのインストールについては、当ブログの以下の記事などを参考にしてください。

shift-jsのインストール

以下のコマンドでshift-jsをシステムにインストールします。[shift.js]コマンドが使えるようになります。

$ npm i shift.js --g

swiftファイルの作成

お好きなディレクトリの中にswiftファイルを作成します。当記事では「example.swift」ファイルとして説明していきます。

$ touch example.swift

Swiftのコードを書く

作成した「example.swift」ファイルをお好きなエディタで開いて、Swiftのコードを書きます。今回は簡単な例としてFizzBuzzのコードを書きます。コードを書き終わったら保存します。

for let i: Int = 1; i <= 100; i++ {
  if (i % 3 == 0) {
    if i % 5 == 0 {
      print("FizzBuzz")
    } else {
      print("Fizz")
    }
  } else if (i % 5) == 0 {
    print("Buzz")
  } else {
    print(i)
  }
}

shift-jsでJavaScriptに変換

「example.swift」ファイルにSwiftのコードを書いたら、shift-jsを使ってJavaScriptに変換してみましょう。ターミナル上でJavaScriptに変換したいファイルを指定して以下のコマンドを実行します。

$ shift.js example.swift

Swiftのコードに問題がなければ、JavaScriptのコードに変換されて、新たに「example.js」ファイルが作られます。「example.js」ファイルを開くと以下のようにJavaScriptに変換されていることがわかります(ほとんど似たようなコードなので違いがわかりにくいでしょうか…)。

for (var i = 1; i <= 100; i++) {
  if (i % 3 == 0) {
    if (i % 5 == 0) {
      console.log('FizzBuzz');
    } else {
      console.log('Fizz');
    }
  } else if (i % 5 == 0) {
    console.log('Buzz');
  } else {
    console.log(i);
  }
}

なお、shift.jsには「-w」をコマンドにつけることで、ファイルの保存を監視してコマンドを実行するオプションがあります。

$ shift.js -w example.swift

JavaScriptファイルの実行

変換したJavaScriptのファイルを実行してみましょう。[node]コマンドを使って実行します。

$ node example.js

コードに問題なければ、FizzBuzzの結果が表示されます。

まとめ

いかがでしたでしょうか。JavaScriptは近年、Webの世界からサーバーサイド、Nativeアプリ、IoT、VR、ゲームなどその用途の範囲を拡大しています。SwiftのコードをJavaScriptのコードに変換できるということは、JavaScriptで書いていたプログラムをSwiftでも書けるようになるということです。実用に耐えるかわかりませんが、ぜひSwiftエンジニアの方はどんなものか試してみてもらえればと思います。

Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 (WEB+DB PRESS plus)
  • 『Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 (WEB+DB PRESS plus)』
  • 著者: 石川 洋資,‎ 西山 勇世
  • 出版社: 技術評論社
  • 発売日: 2017年2月7日

コメント一覧

  • 必須

コメント