phpカンファレンス2012 最先端web開発 - 公開用
TRANSCRIPT
![Page 1: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/1.jpg)
PHPカンファレンス2012
最先端Web開発
KLab株式会社 黒井春人(Twitter: @halt ←フォローしてね♪)
![Page 2: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/2.jpg)
お詫び業務を遂行する上でフレームワークに求められるものはなんでしょうか?複雑なルーティング処理ができるRouterでしょうか?設定ファイルでjoinできるORMでしょうか?我々は現実の問題を解決するためにdietcakeを開発しました。高速に動作し、学習コストが低く、自由にカスタマイズが可能なオープンソースのフレームワークです。本講演はdietcakeを中心に我々KLab株式会社が行なっている最先端のWeb開発についてご紹介させていただきます。
![Page 3: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/3.jpg)
お詫び業務を遂行する上でフレームワークに求められるものはなんでしょうか?複雑なルーティング処理ができるRouterでしょうか?設定ファイルでjoinできるORMでしょうか?我々は現実の問題を解決するためにdietcakeを開発しました。高速に動作し、学習コストが低く、自由にカスタマイズが可能なオープンソースのフレームワークです。本講演はdietcakeを中心に我々KLab株式会社が行なっている最先端のWeb開発についてご紹介させていただきます。
![Page 4: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/4.jpg)
お詫び
今日はどうしても
技術の話よりも
コミュニケーション
の話がしたい!
![Page 5: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/5.jpg)
本日のセッションの内容
● 最先端Webってなに● 私達が採用した基盤技術● コミュニケーション
![Page 6: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/6.jpg)
今回のお話の最先端ってどこだい?
数十万単位のユーザーが、
同時に、かつ連続的に
DBへの書き込みを必要とし、かつ、
整合性を担保する必要があるような
リクエストを問題なくさばくシステムを開発している
=> 最先端
![Page 7: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/7.jpg)
今回のお話
最先端のシステムを
スキル差のあるメンバーが集まって、
短期間でたくさん開発している所
=> 最先端Web開発
![Page 8: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/8.jpg)
KLab株式会社とエンジニア
低レベルから高レベルまで、様々な技術のエキスパートが多数在籍する会社
iPhoroidUI, fluenpy, myprofiler, makuosanなどの、オープンになっている技術の他にも、社内ではすごい技術が作られつづけている。
![Page 9: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/9.jpg)
技術だけでは解決しない「人」の問題
● たくさんのソーシャルゲームを開発する必要がある。
● 開発には高度な知識が必要。● 高度な知識を持つ技術者が足りない。● 高度な知識を持つ技術者を見つけてきて雇うの
はかなり難しい。● 高度な知識を持っていても、1人で最初から最
後まで作るのでは時間がかかりすぎる。
普通の人が最先端Web開発に関わって成長してエ
リートになっていける仕組みが必要
![Page 10: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/10.jpg)
Q:どうすれば
普通の人たちが
最先端Web開発できるの?
![Page 11: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/11.jpg)
A:「技術による下地」を作って
「コミュニケーション」を
とればかなりいけるよ!
![Page 12: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/12.jpg)
II. 技術による下地を作る
プロジェクトメンバー全員がスーパーエリートプログラマーではないのだから、
できる限りシンプル(簡素)に、わかりやすく(覚える事を少なく)して、
間違いや失敗を、(自動的・他動的に)発見できる仕組みを作る
![Page 13: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/13.jpg)
私達が選択した2つの基盤技術
PHP + dietcake
![Page 14: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/14.jpg)
なぜPHPを使うのか
-> できる事は少ない方がいい
-> できない人と、できる人の差が少ない。
大原則:コード読まずに書き足すな。自分が理解できないコードを書くな。
フレームワークをマスターする=フレームワークのソースコードを全部読む
読めるような言語・フレームワークが必要
![Page 15: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/15.jpg)
なぜPHPを使うのか
根本の挙動を理解するのに時間がかかるようなエレガントとされる黒魔術に頼るのは悪魔と契約するようなもの
いつか裏切られる(ハマる)かもしれない
シンプル >> 越えられない壁 >> エレガント
![Page 16: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/16.jpg)
なぜdietcakeを(使った|作った)のか
既存フレームワークの致命的な問題
Rails 1系、今も触れますか?
mojaviやsymfony1系の案件、
苦もなくこなせますか?
同じ名前のフレームワークなのにバージョンによっ
て完全な別物
![Page 17: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/17.jpg)
なぜdietcakeを(使った|作った)のか
完成されたフレームワーク
実案件でずっと使われているにも関わらず、半年
間フレームワーク本体への変更なし(半年前の変更
も、機能を削っただけ)
昔から使っている人がそのまま開発できる。
変化しない事がメリット
![Page 18: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/18.jpg)
技術の下地をしっかり作る
変化する事のメリットより
変化しない事のメリットを
意識した上で、
技術を選択していく
![Page 19: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/19.jpg)
III. 3つのコミュニケーション
1.コードベースのコミュニケーション
githubによるPull Request運用
2.画面ベースのコミュニケーション
グループプログラミング
3.業務から離れたコミュニケーション
お菓子駆動開発
![Page 20: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/20.jpg)
1.コードベースで
コミュニケーション
![Page 21: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/21.jpg)
githubによるPull Request運用
![Page 22: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/22.jpg)
githubってなんだい?
gitっていうバージョン管理システムを使ってコードを管理できるプログラマ同士がつながって、一緒に作業できるソーシャルコーディングサイト。
http://github.com/
![Page 23: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/23.jpg)
Pull Requestってなんだ
作成したブランチをマージして欲しいと依頼できる機能。
開発メンバーの誰かが作ったコードを本体に取り込む時は、必ず別の誰かがチェックして問題があれば修正してもらい、問題がなければ取り込むようにする仕組み。
すべてのコードはPull Request経由で本体に取り
込むのがPull Request運用
![Page 24: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/24.jpg)
![Page 25: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/25.jpg)
1つのissueに1つのbranch
![Page 26: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/26.jpg)
ブランチを切る時に、[issue番号]-[そのブランチの概要]という名称にする事で、Pull Requestをマージするときに、issueの内容を元に、コードが正しいか検証しやすくなっている。
![Page 27: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/27.jpg)
現在のブランチの数 -> 735
特に破綻なくやれてます。
![Page 28: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/28.jpg)
githubにある道を見失わない仕組み
github付属のGraph機能や、APIを活用する事で、自分たちのプロジェクトの状況を把握する事ができる、
![Page 29: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/29.jpg)
![Page 30: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/30.jpg)
![Page 31: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/31.jpg)
github issue api と Google Docs Spread Sheetを使っ
たバーンダウンチャート
プロジェクトが健全に進行している事を知る
![Page 32: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/32.jpg)
2.画面ベースで
コミュニケーション
![Page 33: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/33.jpg)
グループプログラミングとは
ペアプログラミング操作するドライバーと、それを見てサポートするナビゲーターの二人ペアになって1つのパソコンを使い作業する
グループプログラミング1人のドライバーに、2人から4人のナビゲーターがつき、ドライバーのパソコン画面共有しながら作業する
![Page 34: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/34.jpg)
グループプログラミングとは
ペアプログラミング
グループプログラミング
![Page 35: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/35.jpg)
http://project-p.jp/halt/?p=1729
![Page 36: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/36.jpg)
グループプログラミングの方法
● ドライバーがjoin.meを起動し、ナビゲーターにjoin.meのURLを教える
● ナビゲーターはブラウザからURLをにアクセスして画面を見る。
● ドライバーの作業を見ながら、ナビゲーターはアドバイスしたり、先回りして仕様や関連する実装の確認などをする。
● 1時間前後でドライバーの体力を見ながら休憩したり交代したりする。
![Page 37: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/37.jpg)
グループプログラミングのメリット
● ペアプロと比較すると、1つの問題に対処する人数が多いため、疲労が少ない。
● ナビゲーターの数が増える事でドライバーへの情報量が圧倒的に増えるため、ドライバーはナビゲーターの導くままにノンストップでコーディングできる。
● メンバーの癖、得意・不得意を把握できる● 文字には起こせない案件独自の情報も含めて
一気に共有できるため、開発メンバーが増えた時に超高速で把握してもらえる。
![Page 38: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/38.jpg)
3.業務から離れた
コミュニケーション
![Page 39: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/39.jpg)
お菓子駆動開発
![Page 40: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/40.jpg)
お菓子駆動開発
ペアプロやグループプログラミング、長時間の集中によって消費した糖分を、迅速に補給したり、おいしいお菓子を食べて幸せなきもちになってコードを書く事によって、業務効率を上げる仕組み。
お菓子の味や好みを語り合ったり、他のチームに業者買いしたお菓子の絨毯爆撃を行って懐柔する事で、コミュニケーションを促進できる。
![Page 41: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/41.jpg)
![Page 42: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/42.jpg)
VI. 結果
● これまでは、機能単位で人を割り当てて開発し
ていたため、人が1人入れ替わるだけで引き継ぎ作業が発生していたが、現在では、リーダーが一週間休暇をとっても滞りなく仕事が回るようになった。
● Pull Requestとグループプログラミングで密な
連携を取ることで、仙台事業所、福岡事業所などの、他拠点に在籍するメンバーと、リモートで作業できた。
![Page 43: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/43.jpg)
V. まとめ
● チームの中でコードを書くという事を考えて見ると、実行速度を少し早くしてみたり、膨大なドキュメント書いたり、モダンな技術を使うだけでは解決しない問題がたくさんあるという事がわかる。
● できない人を見て「スキルがない=使えない」と安易に判断するのではなく、「どうやってスキル差を減らしながら、役割分担していくか」を考えていくべき
● 技術だけに注力しない
![Page 44: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/44.jpg)
PHPerとPHPの役割
誰もこれない場所へ行く
のではなく
誰もがこれる場所を作る
![Page 45: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/45.jpg)
最後に?
お客さまの中に、チームでの開発に興味を持った普通のPHPプログラマーはいませんか?
私達と一緒に楽しい開発してみませんか?
まずは Twitter: @halt までツイート、DMお待ちしております^^
![Page 46: PHPカンファレンス2012 最先端web開発 - 公開用](https://reader033.vdocuments.net/reader033/viewer/2022052222/55615597d8b42a857d8b5262/html5/thumbnails/46.jpg)
本当に最後に
もし、このセッションを聞いて、お菓子駆動でもなんでも良い、1つでもやってみようと思った方は是非実践してみてください。
そして次は、このセッションを聞いた皆さんが、この
場に登壇し、最先端のWeb開発を伝えてくれる事を
期待しています。