nigoblog

暫定無職のブログ

phantomjsをインストールしてみる

今回はphantomjsをインストールしてみました!

  1. phantomjsとは
  2. インストール
  3. サンプル
  4. 感想

こんなかんじで書いてきます。
ちなみに参考はこちらフレームワークで実践! JavaScriptテスト入門(2):PhantomJSとJasmineで振る舞い駆動開発なJavaScriptテスト (1/3) - @IT

phantomjsとは

先の記事によると、「ブラウザなしでJSを動作させるツール」らしいです。
つまりテストがコマンドラインからできて楽チンみたいな感じでしょうか。
というか現段階ではphantomjsのこと一切知りません笑
一緒に見て行きましょう。

インストール

何はなくともとりあえずphantomjsをインストールしてみましょう。
環境はmac
インストールにはbrewをつかいました。
まずは次のように入力

brew search phantomjs

すると

phantomjs

となるのであるなと。
次に

brew install phantomjs

すると

Warning: Your Xcode (4.3.3) is outdated
Please install Xcode 4.5.
Warning: It appears you have MacPorts or Fink installed.
Software installed with other package managers causes known problems for
Homebrew. If a formula fails to build, uninstall MacPorts/Fink and try again.
==> Downloading http://phantomjs.googlecode.com/files/phantomjs-1.7.0-macosx.zip
######################################################################## 100.0%
/usr/local/Cellar/phantomjs/1.7.0: 4 files, 10M, built in 32 seconds

xcodeのバージョンアップしたいです…
最後にシンボリックリンクを作っておしまい。

sudo ln -s ~/usr/local/Cellar/phantomjs/1.7.0

早速バージョン確認

phantomjs --version

すると

1.7.0

というわけでインストール完了!!

サンプル

何はなくともとりあえずhello worldから。
hello.js

console.log('Hello, world');
phantom.exit();

これをターミナルで実行

phantomjs hello.js

すると

Hello, world

なんとターミナルだけでJSが実行できました!!

というわけでfizzbuzz(参考テスト駆動開発でFizzBuzz問題を解く - nigoblog)
fizzbuzz.js

for(i=1; i< 30;i++){
   if(i%3 == 0 && i%5 == 0){
     console.log('fizzbuzz');
   }else if(i%3 == 0){
     console.log('fizz');
   }else if(i%5 == 0){
     console.log('buzz');
   }else{
     console.log(i);
   }
 }
phantomjs fizzbuzz.js
1
2
fizz
4
buzz
fizz
7
8
fizz
buzz
11
fizz
13
14
fizzbuzz
16
17
fizz
19
buzz
fizz
22
23
fizz
buzz
26
fizz
28
29

いちいちデベロッパーツールを使わないで確認ができます。

フィボナッチ数列(意外にブログで取り上げてなかった
fib.js

function fib(n){
  if(n == 0){ return 1; }
  else if(n == 1){ return 1; }
  else { return fib(n-1) + fib(n-2); }
}
for(i=0;i< 20;i++){
  console.log(fib(i));
}
phantomjs fib.js
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765

サンプルはこれくらいで。

感想

とりあえずまだその効果を存分に活かせてはいないと思うけど、
コマンドラインでもJSを実行できるのは相当楽。
これからどんどん使い方を探って行きたいと思います。
テストコードやCIツールなんかと相性がいいかな??
herokuとかもブラウザを使わずテストできるからよいかも。
というわけで以上phantomについてでした!!