ソフラボの技術ブログ

仕事で使ったプログラミング、サーバー周りで役に立つこと、Webサービス開発に必要な技術情報、モバイル情報を書いてます。わかりやすく見やすくをモットーにしています。

CentOSにPhantomJSとCasperJSをインストールする

以前、CentOSに最新のPhantomJSをインストールしようとするとエラーが発生するという記事を書きました。shinsuke789.hatenablog.jp


その後、さらに調べてみると古いバージョンのバイナリが配布されていることがわかり、これをインストールすると問題なく使用できたので、その時の手順を紹介します。

環境

OS CentOS 6.4
PhantomJS 1.9.8
CasperJS 1.1.0-beta3

手順

PhantomJS

1.PhantomJSのBitbucketよりバイナリファイルをダウンロードします。そのままwgetすると長いURLになってしまうので、別名で保存します。

# 保存先に移動する
cd /usr/local/src

# バイナリをダウンロードする
wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.8-linux-x86_64.tar.bz2 -O phantomjs-1.9.8-linux-x86_64.tar.bz2

# 解凍する
tar jxvf phantomjs-1.9.8-linux-x86_64.tar.bz2

# 解凍後のディレクトリ名を変更する
mv phantomjs-1.9.8-linux-x86_64 phantomjs

# 移動する
cd phantomjs


2.「/usr/local/bin」にシンボリックリンクを作成します。

# phantomjsディレクトリで実行する(/usr/local/src/phantomjs)
ln -sf `pwd`/bin/phantomjs /usr/local/bin/phantomjs


3.インストールバージョンを確認します。

# 「/usr/local/src/phantomjs/bin」で実行する
phantomjs --version
1.9.8


パスの設定は行わず、そのままCasperJSのインストールを行います。

CasperJS

1.公式サイトのインストール手順(git)に従ってインストールを行います。

# gitがなければインストールする
yum install git

# gitより取得する(作業ディレクトリ:/usr/local/src)
git clone git://github.com/n1k0/casperjs.git

# ディレクトリに移動する
cd casperjs

# 「/usr/local/bin」にシンボリックリンクを作成する
ln -sf `pwd`/bin/casperjs /usr/local/bin/casperjs


2.インストールバージョンの確認を行います。

casperjs --version
1.1.0-beta3


この時点でPhantomJS、CasperJSともパスが通っているので、追加の設定は不要です。

サンプルプログラムの実行

1.Googleサイトのタイトルを取得する簡単なサンプルプログラム「test.js」をviエディタ等で作成します。

test.js

var casper = require('casper').create();

casper.start('http://www.google.co.jp/', function() {
    this.echo(this.getTitle());
});

casper.run();


2.サンプルプログラムを実行し、「Google」と出力されれば動作確認完了です。

casperjs test.js
Google

PhantomJS掲載の雑誌

WEB+DB PRESS Vol.77

WEB+DB PRESS Vol.77

  • 作者: 中川勝樹,山内沙瑛,舟崎健治,吉荒祐一,今井雄太,八木橋徹平,安川健太,近藤宇智朗,奥野幹也,天野祐介,賈成カイ,伊藤直也,住川裕岳,北川貴久,菅原一志,後藤秀宣,久森達郎,登尾徳誠,渡邊恵太,中島聡,A-Listers,小俣裕一,はまちや2,川添貴生,石本光司,舘野祐一,沖田邦夫,澤村正樹,卜部昌平,吉藤博記,片山暁雄,平山毅,WEB+DB PRESS編集部
  • 出版社/メーカー: 技術評論社
  • 発売日: 2013/10/24
  • メディア: 大型本
  • この商品を含むブログ (3件) を見る

CasperJS掲載の雑誌

WEB+DB PRESS Vol.80

WEB+DB PRESS Vol.80

ChromeがフリーズしすぎるのでFirefoxに乗り換えたら快適になった

f:id:shinsuke789:20150329193048j:plain


会社のパソコンでは、ブラウザにGoogle Chromeを使用していました。

以前よりページの読み込み時にフリーズすることがあり、試行錯誤して対処方法を探していました。

私が試した方法

以前の記事に3通り試した方法を書きました。


shinsuke789.hatenablog.jp

shinsuke789.hatenablog.jp

shinsuke789.hatenablog.jp

環境

会社のパソコンの環境は次のとおりです。

メーカー lenovo
モデル T520
CPU Core i5 2520M
メモリ 8GB
HDD 500GB


スペック的には十分なのですが、Chromeではなぜかフリーズします。
意味がわかりません。

HDDに障害があるのではと思い、チェックディスクや障害確認ツール等で調べましたが全く異常なしでした。

何をやっても改善されないので、諦めてブラウザをFirefoxに乗り換えることにしました。

Firefoxに乗り換えてから快適!!

Firefoxに乗り換えると、Chromeでのフリーズのストレスから解放され、快適にブラウザイングできるようになりました。

もっと早く乗り換えていたらと思いました。

Chromeと少し使い勝手が異なる所がありますが、慣れれば特に問題なしです。

Firefoxをもっと快適にするための設定

普通に使っても快適ですが、更に快適に使用するためにキャッシュをメモリ上に置くようにします。

次のサイトで詳しく解説しているので参考にして下さい。blog.halpas.com


まとめ

Chromeは、アップデートされるたびにどんどん重くなっています。

Chromeが謳っている「スピード、シンプル、セキュリティの 3 つに重点を置いて開発されたブラウザ」の「スピード」とは何なのか疑問に感じます。

私の環境では、会社のパソコンだけで動作が重く、プライベートで使用しているMacWindowsでは全く問題はありません。
違いとしては、HDD、SSDの違いです。
物理的な速度は全然違いますが、それにしてもHDDの場合重すぎます。

Chromeの遅さにイライラしている方は、これを機会にFirefoxに乗り換えてみてはいかがでしょうか。

IIJmioのデータ量が4月から増量される!キャリア契約が不要になるのも近いかも!

f:id:shinsuke789:20150315083159j:plain

IIJmioで2015年4月1日から無料データ量が現行より増量されます。

IIJmio:サービス仕様改定のお知らせ(IIJmio高速モバイル/Dサービス)


3GB,5GB,10GB 価格はそのままデータ増量!|IIJmio

月額とデータ増加量

月額料金は据え置きで、データ量のみ増加します。

プラン 容量 データのみ月額 音声+データ月額
ミニマムスタートプラン 2GB→3GB 900円 1,600円
ライトスタートプラン 4GB→5GB 1,520円 2,220円
ファミリーシェアプラン 7GB→10GB 2,560円 3,260円

※月額は税抜き

以下のパッケージ、カウンターからの契約も対象となります。

もうキャリア契約は不要!?

最安のミニマムスタートプランでも3GBまで制限なしで使えるので、高額なキャリア契約は不要になるかもしれません。

料金プランがわかりやすいauと比較してみます。

データプランのみ比較

容量 IIJmio au 差額
3GB 900円 4,200円 3,300円
5GB 1,520円 5,000円 3,480円
10GB 2,560円 8,000円 5,440円


auIIJmioより3〜4倍の料金が発生します。
au高すぎです。ボッタクリすぎです。

音声通話で比較

IIJmio au 備考
音声通話 700円 2,700円 auはかけ放題
データ通信(3GB) 900円 4,200円
LTE NET なし 300円
合計 1,600円 7,200円 差額5,600円


auは電話がかけ放題なので比較しにくいですが、5,600円(4.5倍)も差があります。
その差額でauの月額料の約8割をまかなえてしまいます。
節約分を貯めていくと約1年ぐらいで新品のスマホが買えてしまいますね。


IIJmioの特徴として、データ量を翌月まで繰り越すことができます。
3GBの場合、最大ひと月で6GBまで使うことができます。
6GBとなると足りないということはなかなかないのではないでしょうか。

贅沢な悩み、無料データ量が使い切れない

データ量が増えてうれしいのですが、そこまでデータ通信しない方には使い切れないと思います。

私は、現在ミニマムスタートプラン(現行2GB)を利用しています。
毎日、スマホで頻繁に通信をしてるわけではないので、2GB/月を使い切るのに困っています。

スマホでの通信頻度を増やすか、テザリング等を行って通信量を増やして消化するしかないですね。

おすすめのSIMカード

他にもIIJmio系列のSIMカードとして「BIG SIM」「DMM SIM」があります。
基本的にIIJmio系列のSIMカードを契約しておけば安心だと思います。

同じサービスでも、料金、データ量、オプションが異なっているので使い勝手の良いサービスを選択すればいいと思います。

DMM SIM

料金を節約したいというなら「DMM SIM」の1GBプランが660円と最安でおすすめです。
データ量も細かく区切られていてプランが豊富です。

DMM mobile データSIMプラン 1GB


今回IIJmioがサービス改定を発表したので、DMMとプランが同じものがでてきました。
ひょっとするとDMMもサービス改定を行うかもしれません。

BIG SIM

IIJmioと全く同じプランを提供しています。
違いは、オプションサービスとして公衆無線LAN「Wi2」が無料で使える特典がついています。
外出先でデータ量を気にせず通信を行いたい方におすすめです。

BIC SIM(ビックシム)-ビックカメラ.com

サービスへの要望

キャリアでは、条件を満たすと無料でデータ量を増量するサービスがあります。
MVNOもそれをマネてサービス向上を行うのではと思います。

キャリアからMVNOへMNPして使っている方には、データ量が増えた方がいいと思います。
でも、スマホはデータ通信専用、モバイルルータを持っている、複数端末でSIMカードを使っているなど、SIMカードをデータ通信のみで使用している方には、無料データ量を細かく分けて、料金を安くして欲しいと思います。

私の場合、月1.5GBもあれば十分なので、データ量を増やすのではなく料金を安くしてほしいです。

まとめ

2015年5月からSIMロック解除が義務化されるので、携帯関連に変化があり競争が激化すると思われます。

今までは携帯本体と通信会社はセットとして扱われてきましたが、それが別々に選択できるようになってきます。
まだまだSIMフリー端末は、高い印象があり、身近に購入できる存在ではないです。
それも時間とともに安くなり、家電と同じように端末のみで購入できる日がくるでしょう。

そういう環境が整ってくると、docomoausoftbankで契約する意味というのはなくなってくるはずです。
いくらMNPで乗り換えてスマホが無料でもらえるからといっても、通信費が月7,000円以上かかるのはメリットが薄いように感じます。

目先の利益よりもトータルでどれだけお得になるのかを考えて契約するのがいいと思います。

PhantomJSをCentOSでビルドしたらエラーが出てインストールできない

既存のサイトからデータを取得して欲しいという要望があったので、PhantomJSを使ってプログラムからブラウザを操作し、スクレイピングすることを最近行っています。

Macにはすんなりインストールできて、プログラムもある程度出来上がったのでサーバーにもインストールして動作確認をしてみようと、PhantomJSをインストールしてみたけどエラーが出てインストールが完了しませんでした。

その時のエラー内容を記載しておきます。
まだきっちり調べてませんが、他の人も問題に上げているようで解決方法がはっきりしていないように感じます。

環境

CentOS 6.4
PhantomJS 1.9 or 2.0

PhantomJSのインストール方法

Linux用バイナリにはまだ問題があるようで、ソースからのインストールを推奨すると公式サイトには書いてあります。

Binary packages for Linux are still being prepared. There are still issues to be solved until a static build is available (see issue 12948 for more details).

In the mean time, it is recommended to build the Linux version from source.

バイナリの代わりにソースからインストールする方法も書かれているので、それに従ってインストールします。
Build | PhantomJS


まず必要なパッケージをyumでインストールします。

sudo yum -y install gcc gcc-c++ make flex bison gperf ruby \
  openssl-devel freetype-devel fontconfig-devel libicu-devel sqlite-devel \
  libpng-devel libjpeg-devel


その後、PhantomJSのソースをGitから取得しビルドします。

cd /usr/local/src
git clone git://github.com/ariya/phantomjs.git
cd phantomjs
git checkout 2.0
./build.sh

PhantomJS2.0をビルドした結果

2.0でビルドすると次のエラーが発生し、インストールに失敗します。
最終あたりのログを抜粋しています。

Encountered 4 configuration warning(s):

 ! QtQuick module not found, QML APIs will not be built
 ! Missing GStreamer or QtMultimedia, disabling HTML5 media element support
 ! Missing QtTest module, disabling DumpRenderTree, WebKitTestRunner and tests
 ! QtWebKitQml will not be build. It is not supported with static linking

The WebKit build was disabled for the following reasons: 
    * Missing gperf from PATH
    * Missing ruby from PATH 

make: `first' に対して行うべき事はありません.

Building main PhantomJS application...

cd src/ && ( test -e Makefile.phantomjs || /usr/local/src/phantomjs/src/qt/qtbase/bin/qmake /usr/local/src/phantomjs/src/phantomjs.pro -o Makefile.phantomjs ) && make -f Makefile.phantomjs 
Project ERROR: Unknown module(s) in QT: webkitwidgets
make: *** [sub-src-phantomjs-pro-make_first-ordered] エラー 3

PhantomJS1.9をビルドした結果

2.0では失敗するので1.9でやればうまくいくと書かれているものがあったので、やってみたけどこれも失敗します。

# /usr/local/src/phantomjsで
git checkout 1.9
./build.sh


最終あたりのログを抜粋しています。

g++ -m64 -Wl,-O1 -Wl,-rpath,/usr/local/src/phantomjs/src/qt/lib -o ../bin/phantomjs phantom.o callback.o webpage.o webserver.o main.o csconverter.o utils.o networkaccessmanager.o cookiejar.o filesystem.o system.o env.o terminal.o encoding.o config.o childprocess.o repl.o gif_err.o gifalloc.o egif_lib.o gif_hash.o quantize.o gifwriter.o mongoose.o linenoise.o utf8.o qcommandline.o minidump_file_writer.o convert_UTF.o md5.o string_conversion.o crash_generation_client.o exception_handler.o log.o linux_dumper.o linux_ptrace_dumper.o minidump_writer.o file_id.o guid_creator.o memory_mapped_file.o safe_readlink.o moc_phantom.o moc_callback.o moc_webpage.o moc_webserver.o moc_networkaccessmanager.o moc_cookiejar.o moc_filesystem.o moc_system.o moc_env.o moc_config.o moc_childprocess.o moc_repl.o moc_qcommandline.o qrc_phantomjs.o qrc_ghostdriver.o qrc_WebKit.o qrc_InspectorBackendStub.o    -L/usr/local/src/phantomjs/src/qt/lib -L/usr/local/src/phantomjs/src/qt/plugins/codecs -lqcncodecs -L/usr/local/src/phantomjs/src/qt/lib -lqjpcodecs -lqkrcodecs -lqtwcodecs -lQtWebKit -lQtGui -lfreetype -lfontconfig -lQtNetwork -lQtCore -lm -ldl -lrt -lpthread 
/usr/bin/ld: cannot find -lQtWebKit
collect2: ld はステータス 1 で終了しました
make[1]: *** [../bin/phantomjs] エラー 1
make[1]: ディレクトリ `/usr/local/src/phantomjs/src' から出ます
make: *** [sub-src-phantomjs-pro-make_default-ordered] エラー 2

エラーの原因

1.9、2.0とも「QtWebKit」に問題があると出ています。

「QtWebKit」はブラウザのレンダリングエンジンのライブラリなのかなと思います。
少しだけ調べると、「Qt」というライブラリがあるようです。
PhantomJSにWebKitは含まれているらしいのですが、それに問題があるのでしょうか。

もう少し調べてみようと思います。

WiMAX2+の新端末「W01」を使ってみての感想

WiMAX2+が2月19日までなら無制限で使えるということでGMOとくとくBBで新端末「W01」を契約しました。

WiMAX2+を申し込んだ理由

現在So-netWiMAXを1年契約で使っています。
WiMAX2+の新サービスが開始すると制限がかかる、WiMAXの速度が低下するというのを聞いていました。


子供がときどきYoutubeで動画を見ることがあって、7GB/月制限があるとすぐに制限にかかってしまい、128Kbpsになるとネットが出来ないに等しいのでそれは厳しいと思っていました。


現在契約しているWiMAXの更新月は、2015年5月でまだ期間はあるのですが、WiMAXを固定回線として使っているので、制限がかかるのはマズイということで、2月に入ってからすぐにWiMAX2+を契約しました。

GMOとくとくBB WiMAX2+ 月額3,609円

開封レビュー

端末のW01は白を選んだので、箱はグレーで暗い感じでした。
f:id:shinsuke789:20150211193551j:plain


WiMAX2+からSIMカードを使用するようになりました
f:id:shinsuke789:20150211193705j:plain


端末は結構大きく感じます。簡易的な液晶保護フィルムが最初から貼られています。
f:id:shinsuke789:20150215171947j:plain


端末にSIMカードを挿して電源を入れます。
f:id:shinsuke789:20150215172001j:plain


電源を入れた後の時計表示。
f:id:shinsuke789:20150215172336j:plain


ホーム画面。
f:id:shinsuke789:20150215172345j:plain


設定画面。縦にスクロールします。
f:id:shinsuke789:20150215172408j:plain

端末が届いたけど圏外!?

申し込んでから、1週間ほどで端末が届きました。


WiMAX2+からSIMカードを挿すようになっていたのでそれを行いました。
いつもながら電源を入れるだけで繋がると思っていたので、電源を入れましたがなぜか圏外の表示でした。
「制限かからないから契約したのになんで圏外?マジかよ…」と思い、若干冷や汗が出ました。


説明書を見ると「プロバイダーからの接続情報を設定する」と書いており、なんかおかしいなーと思いながらも操作をしてみました。でも、すでに接続設定はされていました。
そもそも、WiMAXは端末が届いたらすぐに使えるようになっているはずなのに…。


公式サイトでエリアを確認すると、エリア内でした。
そりゃそうだ。それを確認して申し込んだのだから繋がるはず。


ひょっとすると、家の中だと電波を掴みにくいのかなと思って、電波を掴むまで外に出ていました。
すると電波を掴んで通信が出来る状態となったので、家の中に入ると見事に繋がりました!

端末の使い勝手

タッチパネルになっていてスマホと同じ感覚で操作できます。
メニューが多いのでどこに何があるかわかりにくいと思いました。


無線LANで5GHz帯が使用できます。
2.4GHz帯で使っていると電子レンジ等と電波干渉しやすいので、そういう場所で使う場合は5GHzを使うと電波干渉がなくなります。
ただ、5GHz帯は気象レーダーと電波周波数が被っている所があるので、接続前にチェック処理が1分かかります。
電源を入れるたびに発生するので、その点が使い勝手が悪いと感じました。

WiMAX2+の速度

家の中のいろんな場所で速度測定してみました。

測定環境

使用サイト http://www.speedtest.net/
使用端末 iPad mini 2 Retina
無線 2.4GHz
時間帯 日曜日の17時頃

測定場所

場所 電波表示(4段階) 下り 上り
1Fリビング(家の中心部) 2本 3.85M 0.28M
1Fリビング(窓際) 2本 2.29M 0.08M
1Fリビング(窓際から2m離す) 3本 7.60M 0.18M
1F-2F階段踊り場窓際 3本 12.64M 3.04M
2F窓際 3本 6.21M 0.30M

※環境によっていろいろ変わりますのであくまで参考程度にして下さい。


先ほど測定すると、いつもより遅い感じでした。
端末が届いてからの測定の結果をまとめると、下り2M〜43M、上り0.01M〜5Mの幅でした。
WiMAXの電波特性なのか、結構不安定でムラがあります。
WiMAXと比べるとムラがあっても、最低速度が速いので遅いと感じることはなくなりました。


体感的にはかなり速く、最近のWiMAXのようにダイヤルアップ並にカクカク表示されるというのはないです。
下りは5M以上は出ているような感じで、速い時は30M以上出ているので非常に満足です。
制限がないと調子に乗っていると3GB/3日に引っかかるかもしれないので注意が必要です。
3GB/3日制限は、2015年4月以降にかかるようです。


上りは、公称値10Mなので仕方ないかもしれないですが、10K台では遅すぎです。
初速は1M以上でているようなので、軽いものだと問題ないかもしれません。
しかし、写真等アップロードすることが多い方は、Y!モバイルや光ファイバーにした方がいいかもしれません。


普通に使う分にはWiMAX2+で十分です。
速度的には十分速いので、工事が必要で開通まで1ヶ月ほど必要な光ファイバーを契約するより、工事不要で家でも外でおm使えるWiMAXの方が気楽でいいです。

気になること

電源を切って半日以上おいて、再度電源をいれると完全に電源が切れた状態から起動するみたいで、起動に少しだけ時間がかかります。
その時に限って必ず圏外表示になって繋がりません。
端末の画面に時計が表示されなかったらおかしいと思ってもいいです。
また充電が終わった後も同じ現象が発生します。


こうなったときは、外に出たり電波を掴みやすい所に移動して圏外を脱して下さい。
その後は、完全電源オフまたは充電後以外は、すぐに起動し電波も普通に掴みます。

プログラミング言語別、正規表現チェッカーまとめ

オンラインで正規表現チェックが出来るサービスをプログラミング言語別にまとめました。

代表的な正規表現

詳説 正規表現 第3版

詳説 正規表現 第3版

正規表現クックブック

正規表現クックブック

正規表現辞典 (Desktop reference)

正規表現辞典 (Desktop reference)

WiMAX2+を7GB/月制限なしで使うには2月19日までに申し込みを!!

f:id:shinsuke789:20150112171455p:plain

2015年1月30日よりWiMAX2+のキャリアアグリゲーション対応端末が発売されました。

キャリアアグリゲーションサービスの開始時期

このサービスは、2月20日から新プランとともに開始されます。

新プランになると、7GB/月制限のプランと無制限のプランの2種類が選択できるようになります。
無制限になると月制限ありのプランに比べ約700円値上げになります。

WiMAX2+を「月制限なし」で使うには?

キャリアアグリゲーションサービスが開始される直前の2月19日までにWiMAX2+を契約すれば、月制限なしで2年間使用することができます。
固定回線として使われる方には、ぜひこの期間に契約することをおすすめします。

私も固定回線として使っていて、制限があると困るので新規でWiMAX2+を契約しました。
現在契約しているWiMAXは更新月まで4ヶ月残っていますが、解約してしまうと特典がもらえないので、そのまま契約しています。

「制限」の注意点

月の制限がなしといっても、3GB/3日の制限があります。
この場合の速度は700Kbpsになると言われていますが、緩い制限と思われます。
2月19日までは1GB/3日なので特に注意が必要です。

下り220Mbps対応新端末「W01」で最安なプロバイダー

調査すると「GMOとくとくBB」でした。
私もここで契約しました。
GMOとくとくBB WiMAX2+ 月額3,609円

f:id:shinsuke789:20150208074151j:plain

端末 W01
初月 無料 1ヶ月目
月額 3,609円
4,175円
2〜24ヶ月目
25ヶ月目
キャッシュバック 27,390円 クレードルなし
実質月額 2,439円

旧端末の在庫処分セールが始まる!?

2月19日の1週間前あたりまたはその後に、キャリアアグリゲーション非対応端末(HWD15、NAD11)の在庫処分が始まるのではと予測します。

非対応端末だと月額料金が安かったり、キャッシュバック額が多かったりします。
費用を抑えてWiMAX2+を利用したいなら非対応端末もおすすめです。

キャリアアグリゲーション対応で下りが最大220Mbpsで使用できるのですが、非対応でも下り最大110bpsで使えるので速度的には十分だと思います。
実際に使っている方に聞くとWiMAXより速いと言ってました。

旧端末「NAD11」で最安なプロバイダー

調査すると新端末と同じく「GMOとくとくBB」でした。
GMOとくとくBB WiMAX2+ 月額3,609円

f:id:shinsuke789:20150208074242j:plain

端末 NAD11
初月 無料 1ヶ月目
月額 3,609円
4,175円
2〜24ヶ月目
25ヶ月目
キャッシュバック 29,000円 クレードルなし
実質月額 2,377円

旧端末「HWD15」で最安なプロバイダー

調査すると「Racoupon」でした。
RaCoupon WiMAX

f:id:shinsuke789:20150208074251j:plain

端末 HWD15
初月 2,312円 1ヶ月目
月額 2,312円
3,772円
2〜23ヶ月目
24~25ヶ月目
キャッシュバック なし
実質月額 2,424円