STF(Smartphone Test Farm)をCentOS 6.7で動かしてみる(インストール編)


## 1.STFとは

株式会社サイバーエージェントの[プレスリリース](https://www.cyberagent.co.jp/news/press/detail/id=10664)より

>「STF-Smartphone Test Farm」は、開発者が、Android最新機種を含む170超の端末表示をブラウザから簡単に検証することができるシステムです。開発したアプリやウェブサイトをブラウザ上で複数台同時にリモート操作し、デザインチェックを行うことができるほか、システムログを一覧でリアルタイムに取得し、効率的にデバッグを行うことができます。また、ドラッグ＆ドロップで簡単にアプリ（.APKファイル）のインストールや実機のリモートシェルコマンド*2の実行等、スマートフォンサービス開発関連事業者にとって便利な機能が揃っています。

主な機能としては以下のものがあるようです。

>■「STF-Smartphone Test Farm」機能概要
・スマートフォン・PCから実機のAndroid機を遠隔操作
・簡単にURLブラウジング
・Web上で各端末のリアルタイムログを取得
・ドラッグ&ドロップでアプリ（.APKファイル）のインストール
・複数端末を同時に操作可能
・Android Studio、Eclipse、Chrome Remote Debug Toolsとの連携が可能
・Android端末に送るコマンド全てがブラウザ上で操作可能
・対応OS（2015年6月末現在）： Android 2.3~5.1、Preview M、Wear 5.1、Fire OS等
（尚、対応OSはオープンソース化することにより今後増えていく予定です）

詳細については、[STFの公式ページ](https://openstf.github.io/)も参照して下さい。

## 2.目的
インストール編では以下のことを目的とします。
※Android端末の接続や遠隔操作については、[Android端末接続編](http://qiita.com/hojojon/items/45ffc00b316f81c68c95)で説明します。

* STFのインストールに必要なツールやライブラリをインストールする
* STFをインストールする
* STFを起動する
* ブラウザからSTFにアクセスする


## 3.前提条件
CentOS 6.7がインストールされた仮想マシンまたは実機

## 4.STFのインストール

STFのインストールには、以下のツールやライブラリを事前にインストールしておく必要があります。
まずはそれらのインストールを行い、その後にSTFをインストールしていきます。

* node.js
* RethinkDB
* GraphicsMagick
* ZeroMQ
* Protocol Buffers
* yasm
* pkg-config


### 必要なパッケージのインストール
STFのインストールで必要となるパッケージをyumでインストールしておきます。

```
yum -y install wget git gcc gcc-c++
```

### node.jsのインストール
node.jsのバージョン管理ツールであるnvmを使って、node.jsをインストールします。

```
cd /tmp
git clone https://github.com/creationix/nvm.git ~/.nvm
source ~/.nvm/nvm.sh
nvm install 0.12.7
```

### RethinkDBのインストール
yumのリポジトリを追加して、RethinkDBをインストールします。

```
wget https://download.rethinkdb.com/centos/6/`uname -m`/rethinkdb.repo -O /etc/yum.repos.d/rethinkdb.repo
yum -y install rethinkdb
```

### GraphicsMagickのインストール
GraphicsMagickのバイナリRPMをダウンロードして、yumでインストールします。

```
# CentOS6.7 32bit版の場合
wget http://mirrors.ustc.edu.cn/fedora/epel/6/i386/GraphicsMagick-1.3.20-3.el6.i686.rpm
yum -y install GraphicsMagick-1.3.20-3.el6.i686.rpm

# CentOS6.7 64bit版の場合
wget http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/GraphicsMagick-1.3.20-3.el6.x86_64.rpm
yum -y install GraphicsMagick-1.3.20-3.el6.x86_64.rpm
```

### ZeroMQのインストール
yumのリポジトリを追加して、ZeroMQをインストールします。

```
wget http://download.opensuse.org/repositories/home:/fengshuo:/zeromq/CentOS_CentOS-6/home:fengshuo:zeromq.repo -O /etc/yum.repos.d/home:fengshuo:zeromq.repo
yum -y install zeromq zeromq-devel
```

### Protocol Buffersのインストール
Protocol Buffersのソースファイルをコンパイルして、インストールします。

```
cd /usr/local/src/
wget http://protobuf.googlecode.com/files/protobuf-2.5.0.tar.bz2
tar xjvf protobuf-2.5.0.tar.bz2 
cd protobuf-2.5.0
./configure
make
make install
```

### yasmのインストール
yasmのソースファイルをコンパイルして、インストールします。

```
cd /usr/local/src/
wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
tar xvfz yasm-1.2.0.tar.gz
cd yasm-1.2.0
./configure --prefix=/usr/local
make
make install
```

### pkg-configのインストール
pkg-configのソースファイルをコンパイルして、インストールします。

```
cd /usr/local/src/
wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.29.tar.gz 
tar zxvf pkg-config-0.29.tar.gz
cd pkg-config-0.29
./configure --with-internal-glib
make
make install
```

### STFのインストール
最後に、node.jsのパッケージマネージャであるnpmを使ってSTFのインストールを行います。

```
npm install -g stf
```

## 5.STFの起動
### RethinkDBの起動

STFのデータを格納するDBとして、RethinkDBを起動します。
`rethinkdb`コマンドを実行すると、`rethinkdb_data`というフォルダが作成され、そこにデータが格納されるようになります。


```
rethinkdb
```

### STFの起動
他の端末からアクセスできるように、ファイアウォール(iptables)を切っておき、--public-ipオプションに公開用のIPを指定してSTFを起動します。

``` 
service iptables stop
stf local --public-ip 192.168.33.10
```

## 6.STFへのアクセス
ブラウザのアドレスバーにSTFの公開用のIPアドレスを入力し、STFへアクセスします。ポートは7100番になります。

表示されたログイン画面でユーザ名とメールアドレスを入力して、Log inボタンをクリックします。

![スクリーンショット 2015-11-29 14.42.46.png](https://qiita-image-store.s3.amazonaws.com/0/77455/93839544-a974-3a5c-7631-2e42d08bfba5.png "スクリーンショット 2015-11-29 14.42.46.png")


STFのTOP画面が表示されました。

![スクリーンショット 2015-11-29 14.44.19.png](https://qiita-image-store.s3.amazonaws.com/0/77455/ee59b120-da88-3cda-84a7-61d194ff4b76.png "スクリーンショット 2015-11-29 14.44.19.png")






##