HerokuにRailsをデプロイする
HerokuはPostgresqlなのでインストール
Gemfile
group :production do
gem 'pg'
end
# bundle install
# git add .
# git commit -m "message"
# git push heroku master
Ruby基礎
クラス
・クラス名は必ず大文字で始める
・オブジェクトの外部からインスタンス変数に直でアクセスすることはできない
→カプセル化が強制されている
→外部アクセスが必要なものだけattr_accessor等を定義する
class Hoge # コンストラクタ def initialize(args = "hoge") # インスタンス変数にセット @var = args end # インスタンスメソッド定義 def hello print "Hello, ", @var, " ! \n" end =begin アクセサメソッド定義 =end # setter 2種類の書き方 attr_reader :var, :var2 # 複数はカンマ区切り def var return @var end # getter 2種類の書き方 attr_writer :var def var=(value) @var = value end # setter と getter を同時に定義 attr_accessor :var # クラスメソッド # def クラス名.メソッド名 〜 end # def self.メソッド名 〜 end def Hoge.hello(name) # def self.hello(name) print name, " said hello. \n" end end
・アクセス修飾子
public (デフォルト)
private
protected
class AccTest def pub puts "pub is a public method." end public :pub # pubメソッドをpublicに設定 def priv puts "priv is a private method." end private :priv # privメソッドをprivateに設定 end
・複数のメソッドのアクセス修飾子をまとめて設定する
class AccTest public # これ以降に定義したメソッドはpublicになる def pub puts "pub is a public method. " end private # これ以降に定義したメソッドはprivateになる def priv puts "priv is a private method. " end end
・継承
class クラス名 < スーパークラス名 end
変数
・英数、アンダースコア
・数字からは始められない
・変数の種類4つ
グローバル変数
$variable
ローカル変数
variable
インスタンス変数
@variable
クラス変数
@@variable
定数
・大文字から始まる
Hoge HOGE
コメント
・1行コメント
#
・複数行コメント
=begin コメント コメント =end
EC-CUBEでTDD
EC-CUBE開発コミッターのnanasess様が神のようなスライドを公開されていました。
<PHPUnit>テスト入門
「テストを書く」という感覚がイマイチ分からない現状に危機感を抱き始めたので、
テストについて勉強していきたいと思います。
・プロダクトコード以上に見やすく
・サンプルコードの役割も果たす
・プログラマーの精神安定剤
・変更の恐怖を開放して自信をつける
テスティングフレームワーク
xUnitとは、コンピュータプログラムの単体テスト(ユニットテスト)を行うためのテスティングフレームワークの総称である。
これらのフレームワークでは、関数やクラスなど、ソフトウェアの様々な要素(ユニット)をテストすることができる。
xUnitフレームワークの主な利点は、テストを自動化できること、同じテストを何度も書かずに済むこと、個々のテストの結果がどうあるべきかを覚えておかなくても良いことである。
wikipediaより。
Java: JUnit
Ruby: RubyUnit
Python: PyUnit
JavaScript: JsUnit
PHP: PHPUnit
普段から親しんでいるPHPで始めます。
リーンスタートアップ
リーンスタートアップとは、成功するサービスを作り上げるためのプロセスをまとめた手法。
Lean = 無駄のない、引き締まった
- 考え方
- プロセス
- 仮説の設定( 価値仮説、成長仮説 )
- 仮説の検証( BMLループ )
- ピボット
- まとめ
考え方
失敗することを前提に、
「ユーザーに実際に利用してもらいながら、失敗からいかに早く無駄なく成功にたどり着くか」
プロセス
1. 仮説の設定
2. 仮説の検証
3. ピボット(方向転換)
仮説の設定
・価値仮説
「なぜプロダクトに価値があるのか?」
ユーザー ___ は
欲求 ___ (し)たいが、
課題 ___ (ない)ので、
製品の特徴 ___ (こと)に価値がある
・成長仮説
「なぜプロダクトのユーザーが増えるのか」
ユーザー ___ は
きっかけ ___ することで、
需要の発生 ___ するようになる
・成長エンジン
1. ペイドエンジン( Paid Engine )
2. バイラルエンジン( Viral Engine )
3. スティッキーエンジン( Sticky Engine )
ゼロからサービスを立ち上げる場合だけでなく、サービスを構成する単一の機能に対しても適用できる。
生み出そうとしているものが継続的に価値を提供できるものかどうか。
どのような仮説が検証されれば、この問いの答えになるのかを明確にする。
仮説の検証
・BMLループ
1. 構築( Build )
2. 測定( Measure )
3. 学習( Lean )
・構築
仮説に関するユーザーのフィードバックを得られる最小限のプロダクトを用意する。
→MVP( Minimum Viable Product )
最小限の労力と時間でできるものにする。
→動くアプリケーションである必要もない。
・測定
コホート分析と呼ばれる手法が推奨される。
コホート = ユーザーグループ
複数のユーザーグループにプロダクトの出し分けを行うことで比較評価する。
・検証に基づく学習
予想に対して上回ったのか下回ったのかには関わらず、「なぜその結果が導かれたのか」について検討する。
リーンスタートアップでは、学びを得ることこそが「スタートアップにおける成果」とされる。
「1つの仮説を最小の時間で検証するにはどうすればよいか?」に、すべての知恵と工夫を投入することが、検証フェーズの鍵。
ピボット
ピボット = 「プロダクト・事業・戦略に関して重要な仮説が新たに生まれた際の明確な方向転換」
ピボットのカタログ
→現在のプロダクトの問題発見にも有効
・ズームインピボット
・ズームアウトピボット
・カスタマーセグメント/ニーズピボット
・プラットフォームピボット
・ビジネスアーキテクチャピボット
・バリューキャプチャピボット
・成長エンジンピボット
・チャネルピボット
・テクノロジピボット
ピボットするべきタイミング
「成長が止まった、または成長が鈍化したとき」
まとめ
<PHP> クロージャ
クロージャはPHP5.3から使えるようになった。
クロージャとは、関数内部に関数が定義されたとき、内部の関数が外部の関数の変数に
アクセスできる仕組みのこと。
無名関数を定義する際に、use キーワードで使う変数を宣言する。
<?php function something($a) { // useキーワードを使う $less_than_a = function($b) use ($a) { return $a > $b; }; // 無名関数呼び出し if ( $less_than_a($b) ) .... ; } ?>