Python で Twitter から情報収集 (環境構築編)

# 今回作るシステム

![7b140c972221df05d34479ef3cdd851e.png](https://qiita-image-store.s3.amazonaws.com/0/58390/779f1c71-fea6-1832-feea-065beb5cd663.png)

Twitter から情報をクロールしてきて、情報を整形し、ひたすらDBにストアしていくためのシステムを構築してみる。とりあえず実験として Vagrant を利用して仮想環境上にテスト環境を作成する。

* Vagrant (VirtualBox) の仮想環境を利用
    * OS:
        * Debian Wheezy 7.6
    * Language:
        * Python 2.7.3
            * virtualenv にてモジュールを管理。
    * Database:
        * MySQL
    * Tools:
        * MeCab 0.99
        * IPA辞書 (mecab-ipadic-utf8)
        * MeCab の Python バインディング

# 仮想マシン周りの環境構築
## VirtualBox のインストール
[https://www.virtualbox.org/wiki/Downloads](https://www.virtualbox.org/wiki/Downloads) から最新版をインストール。

仮想環境の作成は Vagrant から行う。

## Vagrant のインストール
[http://www.vagrantup.com/downloads](http://www.vagrantup.com/downloads) から最新版をダウンロードしてインストール。

## 仮想マシン作成
Vagrantで仮想環境を作成する。

```
$ mkdir -p ~/vagrant/debian7_twitter
$ vagrant box add debian7.6_twitter https://github.com/jose-lpa/packer-debian_7.6.0/releases/download/1.0/packer_virtualbox-iso_virtualbox.box
$ vagrant init debian7.6_twitter
$ vagrant up
$ vagrant ssh
```

これで仮想環境にログインできる。


終了する場合は、ログアウト後

```
$ vagrant halt
```

で終了できる。以後は仮想環境を作成したディレクトリ下で、
`vagrant up` -> `vagrant ssh` でいつでもこの環境にログイン可能。


# Python 周りの設定
## Python
デフォルトで Python 2.7.3 がインストールされているのでこれを利用する。

```
$ Python -V
Python 2.7.3
```

## virtualenv
プロジェクト単位で、使用するモジュールを管理するために virtualenv を利用する。
### インストール
apt を利用する。

```
$ sudo apt-get update
$ sudo apt-get install python-dev python-virtualenv
```

### virtualenv による Python 環境の切り替え
任意の作業ディレクトリに移動して以下のコマンドを実行する。

```
$ virtualenv twi-py
```

これでカレントディレクトリに `twi-py` ディレクトリが作成され、ここに独立した Python　環境ができる。
作成したディレクトリに移動し、下記コマンドを実行する。
```
$ source bin/activate
```

シェルプロンプトの先頭に `(twi-py)　...` がついていれば `twi-py` 環境に切り替わっている。

特定のモジュール環境から抜けてデフォルトに戻るには下記コマンドを実行する。

```
$ deactivate 
```

以後 MeCab 関連のモジュールのインストール等はこの `twi-py` 環境で行う。

# MeCab 周りの設定
## MeCab 本体のインストール
apt を利用する。

```
$ sudo apt-get update
$ sudo apt-get -y install mecab
$ sudo apt-get -y install mecab-ipadic-utf8
$ sudo update-alternatives --config mecab-dictionary # ipadic-utf8 になっているかどうか確認
```

## MeCab の Python バインディング (mecab-python) のインストール
apt で必要なライブラリのインストール。
```
$ sudo apt-get -y install python-dev
$ sudo apt-get -y install libmecab-dev
$ sudo apt-get -y install build-essential
$ sudo apt-get -y install g++
```

Debian 7 wheezy 用のバージョンの Python バインディングを `twi-py` 環境下にインストール。
```
(twi-py)$ pip install https://mecab.googlecode.com/files/mecab-python-0.99.tar.gz
```

## MeCab と Python の動作確認
「すもももももももものうち」を形態素解析してみる。

```
$ Python
>>> import MeCab
>>> mecab = MeCab.Tagger("-Ochasen")
>>> print mecab.parse("すもももももももものうち")
すもも	スモモ	すもも	名詞-一般		
も	モ	も	助詞-係助詞		
もも	モモ	もも	名詞-一般		
も	モ	も	助詞-係助詞		
もも	モモ	もも	名詞-一般		
の	ノ	の	助詞-連体化		
うち	ウチ	うち	名詞-非自立-副詞可能		
EOS

>>>
```
きちんと解析できた。

これで今回作るシステムを実現するための道具は揃った。


# MySQL の設定
## インストール
apt を利用してインストール。
# MySQL の設定
## インストール
apt を利用してインストール。

```
$ sudo apt-get -y install libmysqlclient-dev
$ sudo apt-get -y install mysql-server-5.5
```

インストール中、rootパスワードの設定を求められるので `vagrant` と入力。

## 動作チェック
root ユーザでログイン。

```
$ mysql -u root -pvagrant
mysql> SELECT user,host,password FROM mysql.user; 
+------------------+----------------------------------+-------------------------------------------+
| user             | host                             | password                                  |
+------------------+----------------------------------+-------------------------------------------+
| root             | localhost                        | *04E6E1273D1783DF7D57DC5479FE01CFFDFD0058 |
| root             | packer-virtualbox-iso-1411922062 | *04E6E1273D1783DF7D57DC5479FE01CFFDFD0058 |
| root             | 127.0.0.1                        | *04E6E1273D1783DF7D57DC5479FE01CFFDFD0058 |
| root             | ::1                              | *04E6E1273D1783DF7D57DC5479FE01CFFDFD0058 |
| debian-sys-maint | localhost                        | *A5B3FEE41C7F1F2C147B4876D39D6A4F65E79B7D |
+------------------+----------------------------------+-------------------------------------------+
```

無事動いた。

## MySQL にアクセスするための Python のモジュールをインストール
`twi-py` 環境下にインストール。

```
(twi-py)$ pip install MySQL-python
```

### 動作チェック

```
$ python
>>> import MySQLdb
```

これでエラーが出なければOK。

# 最後に
これで必要なツールはひと通り揃った。
これからクロール部分、情報の成形部分、DBへのストア部分等を作っていく。
それらの記事はまた後ほど。