LoginSignup
23
24

More than 5 years have passed since last update.

MacのサービスとしてJavaScript/CoffeeScriptを実行する

Posted at

概要

Macの「サービス」ってありますよね。
これ使って、任意のエディタ上に入力したJavaScript/CoffeeScriptのコードを実行させてしまおうという記事です。

実は以前、Rubyバージョンを作成された方がおられまして、それが元ネタです。すみませんアイデア丸パクリですw

準備

まずはNode.jsをインストールしましょう。ちなみに私はnodebrewというnode.jsの環境構築ツールを使いました。
次に、CoffeeScriptもインストールします。

$ npm install -g coffee-script

あと、今回のサンプル用に、何らかのパッケージも読み込んで利用できることを示すために、d3パッケージをインストールします。

$ npm install -g d3

環境構築

Automatorを起動します。今回は2つのサービスを作ります。1つがJavaScript用、もう一つがCoffeeScript用です。

JavaScript用のサービス

Automatorで新規書類を作成し、種類は「サービス」にします。
ウィンドウが開いたら、「シェルスクリプトを実行」というアクションを右ペインにドラッグ&ドロップしましょう。

次に、「入力の引き渡し方法」を「引数として」にします。

そして肝心のコードですが、以下を入力します。

export NODE_PATH=/Users/emadurandal/.nodebrew/current/lib/node_modules:$NODE_PATH
/Users/emadurandal/.nodebrew/current/bin/node --harmony -e "$1" 2>&1 || echo;

NODE_PATHやnodeコマンドのパスは、各自のみなさんの環境のものに置き換えてください。ちなみにNODE_PATHを指定する理由は、エディタに入力するJavaScriptコードで、パッケージをrequireするときに、パッケージがちゃんと見つかるようにするためです。

以下の様な感じになりましたか?

スクリーンショット 2015-07-13 9.49.31.jpg

--harmonyオプションをつけているので、ECMAScript2015(いわゆるES6)の文法も使えます。

CoffeeScript用のサービス

さて、2つ目、今度はCoffeeScript用です。
Automatorで新規サービスを作成し、JavaScript用と同じ設定をします。違うのはコード部分だけでして、以下のようにします。

export NODE_PATH=/Users/emadurandal/.nodebrew/current/lib/node_modules:$NODE_PATH
PATH=/Users/emadurandal/.nodebrew/current/bin/:$PATH
/Users/emadurandal/.nodebrew/current/bin/coffee -e "$1" 2>&1 || echo;

これも、各パスは皆さんの環境に置き換えてください。

さっそくためしてみよう!

何か、エディタを立ち上げてください。そして、例えば以下の様なJavaScriptコードを入力します。

var d3 = require('d3');
d3.entries({"hoge": 32, "piyo": 43}).forEach((elm)=>{
    console.log(elm);
})

そしたら、このJavaScriptコードの文字列を選択して、サービスメニューから先ほど保存したサービスを選びます。

スクリーンショット 2015-07-13 9.41.00.jpg

すると、

{ key: 'hoge', value: 32 }
{ key: 'piyo', value: 43 }

おお、ちゃんと実行されてます。ね、簡単でしょう?(ボブ・ロス風)

もちろん、CoffeeScriptコードも同様に実行できます。上記JavaScriptコードをCoffeeの文法に書き換えて、ぜひ試してみてください。

まとめ

さて、これ、何の役に立つのか。そうですねぇ。

  • Emmet的な、何らかの大量の文字列データの生成に使う。
  • エディタ上でさくっとJavaScript/CoffeeScriptをプレイグラウンド的に試すために使う(文法を間違えるとちゃんとエラー文が出てくれますので)

って感じですかねー。後者は別にnodeコマンドとかAtomエディタのscriptパッケージでもできるじゃん、という話なので、やはり前者の用途が一番でしょうか。

何か、こんなことにも使えたよーという方いらっしゃったらぜひ教えてくださいw

23
24
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
23
24