2013年10月19日土曜日

Facebook 広告を試してみる

会社の求人の広告をするためにFacebook広告を利用してみました。ターゲティングの詳細さに感動したのでちょっと紹介してみます。

まず、右上のアイコンから広告の作成ページに飛ぶ事ができます。




で、Headlineや説明や画像を設定したりできるのですが、ターゲティング機能が恐ろしくすごいです。

まずは市町村区単位での地域、年齢や性別の絞り込みは当然として、興味などでも絞り込みができます。例えば以下では東京都港区在住の30才以下でArsenalというサッカーチームに興味のある男女に絞り込んでいます。




また、利用しているアプリや恋愛関係のステータス、言語や学歴等でも絞り込む事ができます。婚活サイトや出会い系は独身者をターゲットに、転職エージェントは出身大学をターゲットにして広告を打っているといるんでしょう。「早稲田大学出身のあなたに」とかでてきますからね。



ちなみに、絞り込みを調整しながら、ターゲットの数が何人くらいになるのか、広告のクリック単価がいくらになるのかというのも確認する事ができます。



後は、予算と期間を決めて広告を出すだけです。



実際に広告がはじまると以下の画面からPVやらクリック数やらの詳細情報が見られるようになります。また、広告のストップなどもすぐに行う事ができます。




ところで、広告が始まった瞬間に以下のような画面が現れて、広告のアカウントが止められてしまうという問題が発生しました。サポートに怒りのメールを投げてみたら2日ほどで対応して直してくれました。どうやらPay PalのBilling Addresと僕の現在地や広告先が違っていたのが原因だったようです。





2013年10月18日金曜日

Rails Operation in Heoku

Heoku上でdeployとdbのマイグレーションやseedの流し込みをしたので簡単にまとめてみる。

基本的にはHeroku Toolbeltを利用してオペレーションをする事になり、簡単な運用方法はHeokuのサイトにまとまっています。

Getting Started with Rails 4.x on Heroku

けっこーな数のコマンドがあります。

$ heroku help
Usage: heroku COMMAND [--app APP] [command-specific-options]

Primary help topics, type "heroku help TOPIC" for more details:

  addons    #  manage addon resources
  apps      #  manage apps (create, destroy)
  auth      #  authentication (login, logout)
  config    #  manage app config vars
  domains   #  manage custom domains
  logs      #  display logs for an app
  ps        #  manage dynos (dynos, workers)
  releases  #  manage app releases
  run       #  run one-off commands (console, rake)
  sharing   #  manage collaborators on an app

Additional topics:

  account      #  manage heroku account options
  certs        #  manage ssl endpoints for an app
  drains       #  display syslog drains for an app
  fork         #  clone an existing app
  git          #  manage git for apps
  help         #  list commands and display help
  keys         #  manage authentication keys
  labs         #  manage optional features
  maintenance  #  manage maintenance mode for an app
  pg           #  manage heroku-postgresql databases
  pgbackups    #  manage backups of heroku postgresql databases
  plugins      #  manage plugins to the heroku gem
  regions      #  list available regions
  stack        #  manage the stack for an app
  status       #  check status of heroku platform
  update       #  update the heroku client
  version      #  display version


Dynoのステータスの確認

heroku ps
=== web (1X): `bin/rails server -p $PORT -e $RAILS_ENV`
web.1: up 2013/10/17 17:38:06 (~ 1h ago)

Rails Consoleもリモートの環境のものがこんな感じで使えてしまいます。

$ heroku run rails console
Running `rails console` attached to terminal... up, run.2213
Loading production environment (Rails 4.0.0)
irb(main):001:0> User.all
=> #<ActiveRecord::Relation [#<User id: 2, email: ...

rakeのCommandもheroku runとタイプするだけで走ってしまう。例えばdb:migrateだったらこんな感じ。

$  heroku run rake db:migrate
Running `rake db:migrate` attached to terminal... up, run.6382
Migrating to DeviseCreateUsers (20131014182214)
==  DeviseCreateUsers: migrating ==============================================
-- create_table(:users)
   -> 0.0243s
-- add_index(:users, :email, {:unique=>true})
   -> 0.0076s
-- add_index(:users, :reset_password_token, {:unique=>true})
   -> 0.0087s
==  DeviseCreateUsers: migrated (0.0419s) =====================================

$  heroku run rake db:seed
Running `rake db:seed` attached to terminal... up, run.6750
ただ、rake db:migrate:resetとかのDBを書き換えちゃうようなコマンドはPermissionで怒られます。

$ heroku run rake db:migrate:reset
Running `rake db:migrate:reset` attached to terminal... up, run.2597
FATAL:  permission denied for database "postgres"
DETAIL:  User does not have CONNECT privilege.
そんな時はheroku pgコマンドで対応できるっぽい。

$ heroku pg:reset DATABASE

 !    WARNING: Destructive Action
 !    This command will affect the app: $host
 !    To proceed, type "$host" or re-run this command with --confirm $host

> $host
Resetting HEROKU_POSTGRESQL_AMBER_URL (DATABASE_URL)... done

うーん。超簡単ですね。今後はDatabase周りの細かいオペレーションが必要になってくると思うので、この辺をみながらいじってみて勉強しとこっと。

2013年10月10日木曜日

RSpec with Rails4

今日はrspec-railsを使ってRails4にRSpecを導入してました。ここ(https://www.relishapp.com/rspec/)にドキュメントがすごくしっかりまとまっているので、これを見ながらやってました。

導入は相変わらず超簡単でGemfileにこんな感じで追加してbundle installした後にrails genearateで必要なファイルを生成するだけ。

# RSpec
group :development, :test do
  gem 'rspec-rails', '~> 2.0'
end

bundle install
rails generate rspec:install

モデルを作ると以下のようにTest:Unitの代わりにSpecを自動生成してくれる。
rails generate model test name:string
      invoke  active_record
      create    db/migrate/20131011100432_create_tests.rb
      create    app/models/test.rb
      invoke    rspec
      create      spec/models/test_spec.rb

Specだけ作りたい時はこんな感じ。
rails generate rspec:model user
      create  spec/models/user_spec.rb

こんな感じで他のSpecと同じように書けます。ちゃんとRubyMineで補完もしてくれる。

describe User do
  before :each do
    @testee = User.create! email:'hoge@hoge.com', password:'testtest'
  end

  it 'has fields' do
    expect(@testee.email).to eq('hoge@hoge.com')
    expect(@testee.password).to eq('testtest')
  end
end

bundle exec rspecで実行はできますが、.rpecファイルか引数でformat指定するとSpecの出力もしてくれて少し幸せになれる。

bundle exec rspec --format documentation

User
  has fields

Finished in 0.40579 seconds
1 examples, 0 failures

Randomized with seed 13270

という感じで安定のお手軽さに感動しました。

2013年10月9日水曜日

Railsでモデル生成のお勉強中

今日はこの辺りRails Guide - Getting Started with Rails#Adding a Second Modelを参考にしてrailsでmodelの実装をしてました。あまりの簡単さにびっくりした。

とりあえずrake generate modelでモデルの定義をするとmodel classとそのUnit Testとdbのmigration fileをわんさか作ってくれます。DBのmigration手順はここ(Rails Guide - Active Record Migrations)に良くまとまっていますが、必要に応じてindexやrelationなんかを追加しつつrake commandで簡単にDBを作る事ができます。rake db:migrateでdb/migrate以下に作られたmigration fileを元にじゃんじゃかテーブルを作ります。以下の順序で行われるっぽい。

  1. db/migrate以下のファイルからテーブルを作成
  2. データベースからdb/schema.rbを作る
また、rake db:migrate:resetを実行するとmigration filesからテーブルを作成してseed.rbを作り直す。db:resetだとseed.rbからテーブルを作るのでmigration fileを何回変更しても変わらない。
少しハマった…。

rakeのコマンドとかもまだ全く覚えていないのですが、rake --tasksで他のタスクがぞろぞろでてきてくれます。rake -Pで親タスクやその依存関係とかも出力してくれるっぽい。

例えば上記のdb:migrate:resetは3つのタスクを組み合わせたものらしい。

rake db:migrate:reset
    db:drop
    db:create
    db:migrate
また、rake test:allでUnit Testの全実行をしてくれるっぽい。

db/seed.rbに開発環境用のデータを用意できる。rake consoleから実行するのと同じように$class.new(:$field1 => $value)みたいな感じで書ける。RubyのScriptなのでファイルから読み込んでLoopでオブジェクト生成とかも非常に簡単にできそう。rake db:seedだと単純にseed.rbからデータをLoadする。rake db:setupだとスキーマごと作り直してからデータをLoadする。ちょこちょこデータファイルを変更する時は後者を使う。

あ、後作ったModelやそのObjectはrails consoleから確認してったら超効率よくできた。こんな感じで一通りモデルを作って、DBに反映させて、テストして、開発用データの準備までが半日かからずにできちゃいました。DBとModelの定義を固定して厳しい命名規則を受け入れるだけでこれだけの恩恵をうけられるとは。明日はRSpecを導入する予定。Rails楽しいね。

2013年10月8日火曜日

Cambridge到着

無事にTeir1 Visaもとれてケンブリッジに引っ越しをしました。人口も十万人少々しかいない小規模な町ですが生活に必要なものはすべて揃っているし、人々も親切で治安も良い非常に住みやすい町だと思います。緑が多く綺麗ですし、食べ物も想像していたよりずっと美味しいです。短くとも2年くらいは住む事になるはずなので、とても素敵な町で安心しています。



ケンブリッジで落ち着くまでの一ヶ月間は本当にドタバタでした。転職直後で慣れない仕事を進める傍ら、大学で授業を行いつつ、もろもろの住所変更やら部屋の引き払い等の引っ越し準備を行い、数多くの送別会でお別れを言いつつ、さらに父親が心筋梗塞で倒れるという災難まで重なり毎週名古屋に帰省するという、間違いなく僕の人生で一番大変だった訳の分からない一ヶ月間でした。幸い一度は心臓が止まった父親は後遺症もなく順調に回復し、僕も無事予定通りにケンブリッジに辿り着く事ができました。と思いきや初日というか飛行機の中から体調を崩して到着日に救急病院のお世話になるという超ドタバタが続き、体力的にも精神的にも疲弊しきっている状態だったのですが、仲間の支えもあり一週間たった今では十分に落ち着いて仕事に集中する環境ができています。

初めの週で銀行口座開設、携帯電話の契約、NHS(国民保険サービス)の登録、職場での環境設定、自転車購入などの必要最低限の生活インフラもひと通り整い、町にも少しずつ慣れてきました(まだけっこー迷うけど)。同じようなスタートアップ企業が集まるCo-Workingスペースが職場なのですが、早速他の会社の日本企業との商談を手伝ってあげたりして人間関係も非常に上手くいっています。

食べ物も思っていたよりは遥かにまともそうです。レストランもちょっと値段は高いけど十分美味しいし、スーパーも豊富にあるので近くのコリアンショップで肉を買って焼き肉をしたり、チキンを一匹オーブンで焼いて食べてみたり、日本のカレーライスを作ってみたりなどなどして食事を楽しんでいます。また、こちらは食べ物のデリバリーがすごく盛んなのでJUSTEATで調べれば数えきれないくらい多くデリバリー料理が見つかります。



父親の件もあり自分のこれからの人生や生死なんかについて一度落ち着いて考えてみたいななんて思ったりもする訳ですが、とりあえずは後悔のないように新しい仕事に全力で打ち込んでみたいと思います。街を案内できるくらいにはなっておくのでイギリスにお越しの際には是非お立ち寄りください。