麻布十番で働くデータ分析者のブログ

グロースハック、プログラミング、データ分析の色々を発信します

Rubyテスト自動化とRspec入門

f:id:nimi0370376:20171203015455p:plain

 

プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plusシリーズ)

 

の3章をやっていきます。

今回のテーマは、テストの自動化です。RubyのMinitestを使ってどんどん自動化していきます。

ディレクトリ構造

f:id:nimi0370376:20171203020842p:plain

続きを読む

プロを目指す人のためのRuby入門 1日目

こんばんは!

最近しっかりとRubyレベルから学び直したいと思い下記の書籍を購入しました。 

  著者の伊藤さんは、前々からqiitaでもTwitterでも知っていました。 解説が超わかりやすいなあと思い、本を買っても間違いないだろうと思い購入しました。

個人的にはRubyの本は「たのしいRuby」から2冊目です。 しかし、最近Rubyの書き方を忘れたりうまく読めなかったりしたので、本書を購入したに至ります。

今日から1章ずつ読んでいき、気になったところや、ここ忘れてたーと思うところをピックアップしていきたいと思います。 今日は2章の「Rubyの基礎を理解する」です。

文字列の比較

文字列が同じかどうか調べる場合は==を、異なる値かどうかを調べる場合は!=を使う。

‘ruby’ == ‘ruby’ #=> true

ちなみにrubyで使うのは、’ ‘でも” "でもどちらでも大丈夫

&&や||の戻り値と評価を終了するタイミング

例えば次の例を見てみる

1 && 2 && 3 #=> 3
1 && nil && 3 #=> nil

nil | | false #=> false
false | | nil #=> nil

Rubyは式全体が真または偽であることが決定するまで左辺から順に式を評価します。 ちなみに | | は「または」の意

似たような演算子にand、or、notがありますが、&& | | のほうが優先度が高くなります。

デフォルト値付きのメソッド

def greeting(country)
     if country == ‘japan’
        ‘こんにちは’
    else
        ‘hello’
    end
end

# 引数が少ない
greeting
#=> ArgumentError: wrong number of argument(given 0, expected 1)

# 引数が多い
greeting (‘us’,’japan’)
#=> ArgumentError: wrong number of argument(given 2, expected 1)

ただしRubyでは、メソッドの引数に先にデフォルトを入れておくことができる。

def メソッド名(引数1 = デフォルト値1, 引数2 = デフォルト値2)
    #処理
end


def greeting (country = ‘japan’)
    if country == ‘japan’
        ‘こんにちは’
    else
        ‘hello’
    end
end

greeting #=> “こんにちは”
greeting (‘us’) #=> “hello”

特に最後のデフォルト値付きのメソッドは、オブジェクト指向であるRubyで大事な概念でしょう。 ここで紹介したのはほんの一部なので、気になる方はぜひ書籍を手にとってみてください!

KPIの意味とマーケティング施策の考え方について

f:id:nimi0370376:20171112005254p:plain

最近得た学びについて久々にブログに書きます。

最近得た学びは主に2つあって、1つはチームや企業でKPIを設定する意味とマーケティング施策の考え方です。

続きを読む

「Python3とOpenCVで射影変換と面積計算を行う」を投稿しました

ご無沙汰です。

最近研究でOpenCVとPython3を使っており、コードを書いたのでqiitaに投稿しておきました。

 

qiita.com

 

とりあえず、pythonopencvで画像の色素抽出をして面積計算をするのがゴールとなっています。

 

斜めから撮っちゃったけどまっすぐに直したいなあって時は見てみてください!

Mercari Tech Conf 2017(MTC17)に行ってきた!

f:id:nimi0370376:20171002005540p:plain

 

こんばんは!

2017年9月30日に六本木で開催されたMercari Tech Conf 2017(MTC17)に行ってきました!

参加は一般人が2000円で学生が無料でした。この記事では、MTC17で学んだことやどんな感じだったかをシェアしていきます。

ちなみに基調講演のスライドは下記からご覧いただけます。

 

メルカリは色々ハックされている

f:id:nimi0370376:20171002010133p:plain

 

まず今回のMTCでもっとも学びが多かったのは技術的な側面より、組織作り的な側面でした。メルカリのマネジメント、開発、デザイン、プロセスは多様な面でハック(最適化)されており、見習う点が多いと感じました。

 

まずデザイン面で言うとメルカリの各国のUIの違いです。メルカリは各国ごとに異なるUI・UXを提供しており、ソースコードも異なるものをある一定のところから書き直すらしいです。

 

ちなみに日本限定なのはメルカリチャンネルやメルカリボックスがあるそうです。MTCでは日米のUI比較ブースも用意されていました。

f:id:nimi0370376:20171002010542j:plain

 

 

開発におけるユーザー目線と開発者目線

f:id:nimi0370376:20171002010750p:plain

 

メルカリの開発には、開発者目線とユーザー目線の二つを取り入れながらバランスを取っていました。リリース当初のメルカリには検索機能がなかったらしいです。

 

そこで上記のような二つの視点から必要になった時に実装しようとなったようです。ユーザー目線はよく聞きますが、開発者目線からも腹落ちする感覚は結構大事なのでしょう。

 

 

新しい技術を取り入れる

f:id:nimi0370376:20171002010957j:plain

 

メルカリは開発チームを横断的にする反面、Scalable、Elasticableにするために新しい技術の取り入れを頻繁に行っているそうです。機械学習は現在すでに導入されており、今後も利用の幅を広げていきたいのだとか。

 

またBlockChainなどもやりたいとおしゃっていました。メルカリのプロダクトは日々進化していることを実感できました。

 

上記写真は、機械学習のブースですね。実際にどんなセグメントで機械学習をしているのかをソースコードと共に出展してありました。

 

間違いがおきても大丈夫な仕組みづくり

f:id:nimi0370376:20171002011358p:plain

 

メルカリがここまで成長してきたのには、問題解決のシステムも整備されているからだと言えます。

 

上記のスライドは東京中央銀行(半沢直樹)とメルカリの問題解決に対する概要ですね。

とにかくミスが起きるのを責めずに、原因究明から行われます。そしてそれに対してシステムを整えてあげるのが大切なんですね。

 

上記のようなシステムが整備されていれば新しい技術を取り入れても安心できますね。

 

 

 

Mercari Tech Confから見るこれからのメルカリ

f:id:nimi0370376:20171002011710j:plain

 

今回のMTCでは他にも画像認識の話やUKチームの発足術などが講演されていました。また、隣接されたサブブースでは実際にメルカリ社員の方とお話ができたり、自動テスト(SET)を見学できたりとメルカリを身近に感じられるイベントになっていました。

とにかくメルカリは当たり前のことをシステム化していくのが上手だなと感じました。

  • Go Bold
  • All for One
  • Be Professional

の3つの指標から本当に必要なものやチャレンジングな精神を忘れず、パッケージング化してシステムに組み込んでいました。これはメルカリがこれからもスタートアップユニコーンであり続ける最大の武器だなと思いました。

 

今後もメルカリの動向に注目し、吸収できるところはしていきたいと感じました。