Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

PHPカンファレンス2012 最先端web開発 - 公開用

18,098 views

Published on

Published in: Technology
  • Be the first to comment

PHPカンファレンス2012 最先端web開発 - 公開用

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

×