シリコンバレーのマーケター日記

東京、シンガポールを経てシリコンバレーで働く、マーケター。英語、プログラミング、データ分析は次世代マーケターの必須スキルだと信じて進む。

オススメのデータ解析学習サイト:DataCamp

今週、前職の韓国人の同期からすごーく久しぶりに連絡がありました。

12月にハーバード大学の統計学のマスターを卒業する予定で、アメリカで職探しをしている模様。韓国のヨンセ大学で学士、ハーバード大学で修士。どんだけやねん。

 

ここ数ヶ月は、データ分析系の仕事に手を広げており、SQL, Hiveを触っていました。

Step.1が、テーブルを作る、データを引っ張る

だとすると、

Step.2は、引っ張ったデータを分析する

です。

 

というわけで、Rをもう一度やり直したいとハーバード修士に相談したところ、以下のサイトを紹介してもらいました。

DataCamp

Monthly: $29

Yearly: $300

感想

無料のトライアルがあるので、ひとまずそれでRを触っていますが、とても良い!

ローカルでRを使うときは、環境整備してターミナルでコマンドを叩いてという感じなのですが、ウェブ上に直接打ち込んで、コンソールに結果も出てくる。UIが綺麗で楽しくなります。

ビデオも英語で、語学勉強にもなります。最初から英語で覚えてしまった方が汎用性が高く良いです。

マジで、大学生の時にこんなサイトがあったら良かったなぁ。

 

f:id:yuyutata:20161023132151p:plain

Linux バージョン管理システム

今日は、バージョン管理システムを学びました。

分散型で開発を進めていくときにメリットを発揮するようです。

分散型バージョン管理

各開発者はレポジトリのコピーを “クローン” し、自身のハード ドライブ上にそのプロジェクトの 完全な 履歴を持ちます。このコピー (または “クローン”) には、オリジナルのすべてのメタデータが含まれています。

メリット

  • チェンジセットのプッシュやプル以外の操作の実行は非常に高速です。理由は、ツールがアクセスする必要があるのはリモート サーバーではなくハード ドライブだからです。
  • 誰の目にもさらされることなく、新しいチェンジセットのコミットをローカルで行えます。チェンジセットのグループの準備が完了したら、それらをすべて一度にプッシュできます。
  • プッシュとプル以外のすべての操作はインターネット接続なしに行えます。したがって、飛行機の中でも作業できます。また、複数のバグ修正を 1 つの巨大なチェンジセットとしてコミットする必要はありません。
  • プログラマーはプロジェクト レポジトリの完全なコピーをそれぞれ持っているため、変更を同時に 1 人か 2 人のプログラマーと共有してフィードバックを得てから、その変更を全員に公開できます。

コマンドラインインターフェース

  • Git
  • Marcurial 

Marcurialの使い方

$ hg feature ブックマーク名 : ブックマーク作成

$ hg bookmarks :どのブックマークにいるか表示

hg update ブックマーク : ブックマーク切り替え

 参考:

バージョン管理とは : 集中型 vs. DVCS - Atlassian Japan

Mercurial 対 Git:なぜ Mercurial を選ぶのか? - Atlassian Japan

 

おまけ

-ls -la : 隠しフォルダ・ファイル(.から始まるやつ)も全て表示される 

 

Amazon ec2でサイトを公開する

Amazon ec2でサイトを公開してみます。

1) apatchが入っていることを確認する

$ httpd -v

Server version: Apache/2.4.23 (Amazon)

Server built:   Jul 29 2016 21:42:17

2) /var/www/html/ ディレクトリーにファイルを入れる

ローカルからAWSにアップロードするとき

2段階を取るのは、/bar以下は、sudo権限なので、一度にアップできなかったためです。

2-1) ホーム以下にアップロード

scp -i ~/.ssh/秘密鍵 アップしたいファイルの場所 ホスト名@IPアドレス:送りたい場所

2-2) AWS内で/var/www/htmlにアップロード

mv: ファイルを移動、ファイル名前を変更

 

ということで、無事にできました。

さて、LinuxってOSなのかと思ってたのですが、Linuxパッケージの総称だそうで、以下のような種類があるみたいです。

  • CentOS
  • Fedora
  • Debian
  • Ubuntu

AWSでサーバーの種類を選ぶ画面で確かに出ていたような。。また一歩deepになってきた。

Amazon ec2とRDSをつなぐ

ec2にMySQLを入れたのですが、開発の過程で外部にデータベースだけ解放したいと思っていたので、RDSを使ってみることにしました。

pythonファイルと、MySQLをつなぐために、mysql-connector-pythonを使いました。

1) mysql-connector-pythonを入れる

$ mkdir lib

$ cd lib

$ git clone https://github.com/mysql/mysql-connector-python.git

 $ python setup.py build

$ python setup.py install

2) ちゃんと動くか確認する

$ python -c "import mysql.connector" //一行だけでそのまま実行できる

 

3) pythonファイル

import mysql.connector

if __name__ == '__main__':

connect = mysql.connector.connect(user='ユーザー名', password='パスワード',host='ホスト名', database='DB名', charset='utf8')
cursor = connect.cursor()

d = ''

e = ''

f = ''

statment = 'insert into results (a,b,c) values(%s,%s,%s)'

# insert
cursor.execute(statment, (d,e,f))
connect.commit()

 

ちなみに、RDSのアクセス権限がわからなかったので、ひとまずダウンロードして共有しましたw

1) アマゾンRDSのデータベースをダウンロード

$ mysqldump -u ユーザー名 -h エンドポイント -p DB名 テーブル名 > results.sql

2) EC2サーバーからローカルにファイルをダウンロードする

~/Desktop/aws-comment $ scp -i ~/.ssh/秘密鍵.pem ユーザー名@IPアドレス:ファイルの場所 保存したいディレクトリ

 

Linuxサーバーを構築する

 AWSサーバー環境を作成しています。Linuxをちゃんと理解しないとダメだなと思いつつ、さくらレンタルサーバーに逃げてました。やはり自由度がないので、AWSに再度挑戦。

1) AWSでアカウント作ってEC2(仮想サーバー)でインスタントを作る

2) 秘密鍵(拡張子.pemのファイル)をゲットする

3) sshで接続

ssh -i ~/.ssh/秘密鍵.pem ec2-user@IPアドレス

// 秘密鍵は$homeの.sshフォルダーに移す

4) 必要なパッケージを入れまくる

  • MySQL: 

 sudo yum install mysql-server mysql

  • Apatch:

sudo yum install -y httpd

  • PHP:

sudo yum install -y php

  • MyphpAdmin:

sudo yum --enablerepo=epel install -y phpMyAdmin

  • PHP:

sudo yum install -y php

  • Git (gitを使ってインストールするために)

sudo yum -y install gcc gcc-c++ make git openssl-devel bzip2-devel zlib-devel readline-devel sqlite-devel

  • ANACONDA2とpyenv (python用パッケージ)

cd $HOME git clone https://github.com/yyuu/pyenv.git ~/.pyenv

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile

echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile

echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

source ~/.bash_profile

pyenv install anaconda2-4.1.0

pyenv global anaconda2-4.1.0

pyenv rehash

  • Google Could SDK:こちら
  • Google APIs Client Library for Python:こちら
  • Mysql-connect-python (pythonからmysqlにやり取りするためのライブラリ):こちら

学び

  • Apatchをアクティベイトしても、ポートを解放しないとブラウザから見れない。AWSでのポートの解放の仕方はこちら
  • MyphpAdminにブラウザアクセスするときは、IP adress/ myphpadmin
  • 基本的にローカルでbashをいじる時は、$HOMEディレクトリー下にある.bash_profileというファイル(ユーザー個別の設定ファイル)
  • .bash_profileは、lsコマンドでは出てこない
  • ホームディレクトリーに行って、エディタで開く

$ vim ~/.bash_profile

  • 書き換えた後は、sourceコマンドの実行 

# source ~/.bash_profile

  • 通っているパスの確認

echo $path 

  • pip(pythonパッケージ管理ツール)でインストール可能なパッケージを確認 

$ pip freeze : インストールされているパッケージの一覧表示

$ pip search mysql:インストール可能なパッケージの検索

 

例:bashをいじってみる:

やりたいこと:プロンプトに、ディレクトリーを入れる

~/.bash_profileを開いて、

PS1='[\u@\h] \w \$ '

と入れてsorceコマンドを実行すると

[username@hostname] ~/Desktop $

となりました!

 

参考:

AWSのEC2に基本的なLAMP環境を作ってみる(2) - Qiita

ユーザーの環境変数を設定するbashの設定ファイルと、カスタムプロンプトについて 

 

テキストエディタ Atom を使う

天才エンジニアに、Atomが良いですよとオススメされたので、以前から使っていたBracketから、Atomに切り替えました。プラグインが充実しているようです。

remote-sync

FTP機能を使って、Atomから直接サーバー上のファイルの書き換えができるプラグイン。

1) Atomのsettingから検索してEnable

f:id:yuyutata:20160804224003p:plain

2) プロジェクトフォルダーから、右クリックでRemote Sync -> Configure

f:id:yuyutata:20160804224111p:plain

 

3) サーバー情報を入れて完了!

f:id:yuyutata:20160804224423p:plain

 

おまけ:ターミナルから直接Atomを開く方法

atom .    //今いるディレクトリーでatomが立ち上がる 

 

Google クラウド自然言語APIを実装する① Pythonを使う

 

前回は、クラウド自然言語APIをcURLで活用してみましたが、実際のサービスに実装するにはどうしたらいいのかなと、困っていました。

弊社の天才エンジニア救世主に教えを被り、順調に進めることができました。横でコーディングを見ているとマジで惚れます。萌えます。あーー。

Google先生が、GitHubにPythonを使ったクラウド自然言語APIの実装例が載せていたので、これを参考にしながら、進めていきます。

python-docs-samples/language/api at master · GoogleCloudPlatform/python-docs-samples · GitHub

 

まずは、Python環境を作る

1) pyenvをインストール

pyenvとは、Pythonの様々なversionの環境を作ることができるもの。githubからインストールすると、home下に環境が作られます。

pyenv lets you easily switch between multiple versions of Python. It's simple, unobtrusive, and follows the UNIX tradition of single-purpose tools that do one thing well. 

 というわけで、terminalを立ち上げてコマンド入力。

f:id:yuyutata:20160802224219p:plain

cd $HOME
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
exec $SHELL
pyenv install 2.7.12
pyenv global 2.7.12
pyenv rehash 

 これで、home下にpython環境ができました。

2) pythonの基本文法

f:id:yuyutata:20160802225648p:plain

.py : Python fileの拡張子 

import : ライブラリー呼び出し

def xxxx(): :関数定義

if __name__ == '__main__': :起動プログラム。これがないと何も動かない

3) terminalで動かす

Python fileのあるディレクトリーまで移動し、そこで、以下を叩くことでファイルが起動されます。print()で出力することができます。

python test.py

 

こんな感じでござる。