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

Post on 24-May-2015

16.330 views 1 download

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

PHPカンファレンス2012

最先端Web開発

KLab株式会社 黒井春人(Twitter: @halt ←フォローしてね♪)

お詫び業務を遂行する上でフレームワークに求められるものはなんでしょうか?複雑なルーティング処理ができるRouterでしょうか?設定ファイルでjoinできるORMでしょうか?我々は現実の問題を解決するためにdietcakeを開発しました。高速に動作し、学習コストが低く、自由にカスタマイズが可能なオープンソースのフレームワークです。本講演はdietcakeを中心に我々KLab株式会社が行なっている最先端のWeb開発についてご紹介させていただきます。

お詫び業務を遂行する上でフレームワークに求められるものはなんでしょうか?複雑なルーティング処理ができるRouterでしょうか?設定ファイルでjoinできるORMでしょうか?我々は現実の問題を解決するためにdietcakeを開発しました。高速に動作し、学習コストが低く、自由にカスタマイズが可能なオープンソースのフレームワークです。本講演はdietcakeを中心に我々KLab株式会社が行なっている最先端のWeb開発についてご紹介させていただきます。

お詫び

今日はどうしても

技術の話よりも

コミュニケーション

の話がしたい!

本日のセッションの内容

● 最先端Webってなに● 私達が採用した基盤技術● コミュニケーション

今回のお話の最先端ってどこだい?

数十万単位のユーザーが、

同時に、かつ連続的に

DBへの書き込みを必要とし、かつ、

整合性を担保する必要があるような

リクエストを問題なくさばくシステムを開発している

=> 最先端

今回のお話

最先端のシステムを

スキル差のあるメンバーが集まって、

短期間でたくさん開発している所

=> 最先端Web開発

KLab株式会社とエンジニア

低レベルから高レベルまで、様々な技術のエキスパートが多数在籍する会社

iPhoroidUI, fluenpy, myprofiler, makuosanなどの、オープンになっている技術の他にも、社内ではすごい技術が作られつづけている。

技術だけでは解決しない「人」の問題

● たくさんのソーシャルゲームを開発する必要がある。

● 開発には高度な知識が必要。● 高度な知識を持つ技術者が足りない。● 高度な知識を持つ技術者を見つけてきて雇うの

はかなり難しい。● 高度な知識を持っていても、1人で最初から最

後まで作るのでは時間がかかりすぎる。

普通の人が最先端Web開発に関わって成長してエ

リートになっていける仕組みが必要

Q:どうすれば

普通の人たちが

最先端Web開発できるの?

A:「技術による下地」を作って

「コミュニケーション」を

とればかなりいけるよ!

II. 技術による下地を作る

プロジェクトメンバー全員がスーパーエリートプログラマーではないのだから、

できる限りシンプル(簡素)に、わかりやすく(覚える事を少なく)して、

間違いや失敗を、(自動的・他動的に)発見できる仕組みを作る

私達が選択した2つの基盤技術

PHP + dietcake

なぜPHPを使うのか

-> できる事は少ない方がいい

-> できない人と、できる人の差が少ない。

大原則:コード読まずに書き足すな。自分が理解できないコードを書くな。

フレームワークをマスターする=フレームワークのソースコードを全部読む

読めるような言語・フレームワークが必要

なぜPHPを使うのか

根本の挙動を理解するのに時間がかかるようなエレガントとされる黒魔術に頼るのは悪魔と契約するようなもの

いつか裏切られる(ハマる)かもしれない

シンプル >> 越えられない壁 >> エレガント

なぜdietcakeを(使った|作った)のか

既存フレームワークの致命的な問題

Rails 1系、今も触れますか?

mojaviやsymfony1系の案件、

苦もなくこなせますか?

同じ名前のフレームワークなのにバージョンによっ

て完全な別物

なぜdietcakeを(使った|作った)のか

完成されたフレームワーク

実案件でずっと使われているにも関わらず、半年

間フレームワーク本体への変更なし(半年前の変更

も、機能を削っただけ)

昔から使っている人がそのまま開発できる。

変化しない事がメリット

技術の下地をしっかり作る

変化する事のメリットより

変化しない事のメリットを

意識した上で、

技術を選択していく

III. 3つのコミュニケーション

1.コードベースのコミュニケーション

githubによるPull Request運用

2.画面ベースのコミュニケーション

グループプログラミング

3.業務から離れたコミュニケーション

お菓子駆動開発

1.コードベースで

コミュニケーション

githubによるPull Request運用

githubってなんだい?

gitっていうバージョン管理システムを使ってコードを管理できるプログラマ同士がつながって、一緒に作業できるソーシャルコーディングサイト。

http://github.com/

Pull Requestってなんだ

作成したブランチをマージして欲しいと依頼できる機能。

開発メンバーの誰かが作ったコードを本体に取り込む時は、必ず別の誰かがチェックして問題があれば修正してもらい、問題がなければ取り込むようにする仕組み。

すべてのコードはPull Request経由で本体に取り

込むのがPull Request運用

1つのissueに1つのbranch

ブランチを切る時に、[issue番号]-[そのブランチの概要]という名称にする事で、Pull Requestをマージするときに、issueの内容を元に、コードが正しいか検証しやすくなっている。

現在のブランチの数 -> 735

特に破綻なくやれてます。

githubにある道を見失わない仕組み

github付属のGraph機能や、APIを活用する事で、自分たちのプロジェクトの状況を把握する事ができる、

github issue api と Google Docs Spread Sheetを使っ

たバーンダウンチャート

プロジェクトが健全に進行している事を知る

2.画面ベースで

コミュニケーション

グループプログラミングとは

ペアプログラミング操作するドライバーと、それを見てサポートするナビゲーターの二人ペアになって1つのパソコンを使い作業する

グループプログラミング1人のドライバーに、2人から4人のナビゲーターがつき、ドライバーのパソコン画面共有しながら作業する

グループプログラミングとは

ペアプログラミング

グループプログラミング

http://project-p.jp/halt/?p=1729

グループプログラミングの方法

● ドライバーがjoin.meを起動し、ナビゲーターにjoin.meのURLを教える

● ナビゲーターはブラウザからURLをにアクセスして画面を見る。

● ドライバーの作業を見ながら、ナビゲーターはアドバイスしたり、先回りして仕様や関連する実装の確認などをする。

● 1時間前後でドライバーの体力を見ながら休憩したり交代したりする。

グループプログラミングのメリット

● ペアプロと比較すると、1つの問題に対処する人数が多いため、疲労が少ない。

● ナビゲーターの数が増える事でドライバーへの情報量が圧倒的に増えるため、ドライバーはナビゲーターの導くままにノンストップでコーディングできる。

● メンバーの癖、得意・不得意を把握できる● 文字には起こせない案件独自の情報も含めて

一気に共有できるため、開発メンバーが増えた時に超高速で把握してもらえる。

3.業務から離れた

コミュニケーション

お菓子駆動開発

お菓子駆動開発

ペアプロやグループプログラミング、長時間の集中によって消費した糖分を、迅速に補給したり、おいしいお菓子を食べて幸せなきもちになってコードを書く事によって、業務効率を上げる仕組み。

お菓子の味や好みを語り合ったり、他のチームに業者買いしたお菓子の絨毯爆撃を行って懐柔する事で、コミュニケーションを促進できる。

VI. 結果

● これまでは、機能単位で人を割り当てて開発し

ていたため、人が1人入れ替わるだけで引き継ぎ作業が発生していたが、現在では、リーダーが一週間休暇をとっても滞りなく仕事が回るようになった。

● Pull Requestとグループプログラミングで密な

連携を取ることで、仙台事業所、福岡事業所などの、他拠点に在籍するメンバーと、リモートで作業できた。

V. まとめ

● チームの中でコードを書くという事を考えて見ると、実行速度を少し早くしてみたり、膨大なドキュメント書いたり、モダンな技術を使うだけでは解決しない問題がたくさんあるという事がわかる。

● できない人を見て「スキルがない=使えない」と安易に判断するのではなく、「どうやってスキル差を減らしながら、役割分担していくか」を考えていくべき

● 技術だけに注力しない

PHPerとPHPの役割

誰もこれない場所へ行く

のではなく

誰もがこれる場所を作る

最後に?

お客さまの中に、チームでの開発に興味を持った普通のPHPプログラマーはいませんか?

私達と一緒に楽しい開発してみませんか?

まずは Twitter: @halt までツイート、DMお待ちしております^^

本当に最後に

もし、このセッションを聞いて、お菓子駆動でもなんでも良い、1つでもやってみようと思った方は是非実践してみてください。

そして次は、このセッションを聞いた皆さんが、この

場に登壇し、最先端のWeb開発を伝えてくれる事を

期待しています。