はじめまして
- 鈴木健太 (@suzu_v) と申します
- 株式会社VOYAGE GROUP
- 新卒2年目です
- アドテクノロジー関連事業をしています
- 普段はcosmiというデータをマネジメントするプラットフォームを開発しています
本日のメンバー
- @brtriver さん
- 解説をしていただきます
- @makoga さん
- 弊社CTOです。今日は客席で。
- サポーターズの皆様
唐突ですが、アンケートします
- 普段使ってる言語はなんですか?
- C, C++, Java, Scala, Clojure, Python, PHP, Perl, Ruby, Lisp, Haskell, ObjC ...
- みなさんの領域はなんですか?
- Web Apps, iOS / Android, Middleware, Infrastructure...
- 普段使ってるエディタはなんですか?
- Eclipse, Vim, Emacs, NetBeans, IntelliJ IDEA, ...
今日やること
- ライブコーディングします
今日のテーマ
- テスト駆動開発(TDD)
- 継続的インテグレーション(CI)
環境
- GitHub
- TravisCI
- PHP >= 5.4
作業リポジトリ
- suzuken/tt
Travis CI
- Travis CI - Free Hosted Continuous Integration Platform for the Open Source Community
- CIのためのSaaS
- OSSプロダクトだと無料で使える
- 各種バージョンごとのテストなども行ってくれる
- GitHubとの連携がとても簡単
見どころ
- GitHubを利用したPull Requestベースの開発フロー
- testrunnerを利用したローカルでの自動テスト
- ビルトインWebサーバを利用したローカルでの振る舞いテスト
- Shellの使い方, Alias
- TravisによるCI
- Vim
- Vimperator
お題1
- 上司「ねえねえ、鈴木くん」
- 僕「はい、なんですか」
- 上司「よしなに時刻を渡したらいい感じに日本語で返してくれる仕組みがほしいんだけど」
- 僕「はぁ」
- 上司「たとえば2013/10/03 19:30:01って渡したら2013年10月03日19時30分01秒って返してくれたらいいなぁ」
- 僕「わかりました」
お題2
- 上司「さっきはありがとう。またお願いしたいことがあるんだけど。」
- 僕「はい、なんですか。」
- 上司「最近すぐお腹がすいちゃってさあ。お昼12時のランチの時間まであと何分なのか出せるようにしたいんだよね」
- 僕「はい。」
- 上司「あ、待って。夕飯も18時に食べたいから、18時まであと何分なのかも出せるようにしたいなぁ。」
- 僕「いろいろふわっとしてますが、とりあえず作ってみます。」
休憩
- 5分
お題3
- 上司「さっきはありがとう。」
- 僕「はい」
- 上司「最近海外出張が多くてさ。いい感じにtimezone設定したら、日本時間から時刻変換できるようにしてくれない?」
- 僕「あー、いいですよ」
- 上司「日付の返却形式は前に言ったとおり、2013年10月03日19時30分01秒とか、そんな感じで。」
- 僕「かしこまりました」
お題4
- 上司「さっきはありがとう。だが、ここまではウォーミングアップのようなものだ…」
- 僕「( ゚д゚)ハッ! 口調が変わっている…」
- 上司「とりあえずさっきまで作ったの、よしなにWebAPI化してくれない?」
- 僕「はぁ。」
- 上司「たとえば、GETで時刻が渡されたら日本語に。あとtimezone変換もしてほしい。それから、ある時刻が現在時刻から何分かを出せるようにもして欲しいんだよね。」
- 僕「なるほど」
- 上司「返却形式はJSONでよろしく。」
お題4続き(仮設計)
- GETパラメータ
- time: 指定する時刻
- tz: タイムゾーン指定
- 戻り値
- time: 日本語の時刻
- diff: 現在時刻からの差分
まとめ
- テストから書くと、要求がすっきりして意識をプログラムに落としやすくなります
- ポイント: 複数人でつかうときでも、誰もがテストの方法がわかるようにしておくこと
- たとえば、
make test
- たとえば、
いろいろ
- .gitignoreに必ず指定することまとめ - @katzchang.contexts
- PHP: The Right Way
- Composer
環境とか
- suzuken/dotfiles