56
株式会社万葉 Ruby による 開発プロジェクトを うまく回すには ~ 8年間で得られた知見 ~ 2015. 6. 29 (株) 万葉 大場寧子 (@nay3)

Rubyによる開発プロジェクトをうまく回すには(1)

  • Upload
    nay

  • View
    1.047

  • Download
    3

Embed Size (px)

Citation preview

株式会社万葉

Ruby による 開発プロジェクトをうまく回すには

~ 8年間で得られた知見 ~2015. 6. 29

(株) 万葉 大場寧子 (@nay3)

株式会社万葉

大場寧子 (株) 万葉

株式会社万葉

8年間の歩み•2007 創業 •ずーっと Rails の受託開発をしています •非Rails の Ruby案件もやっています •スマフォアプリとPHPもちょっと

株式会社万葉

プロジェクト 状況の変遷

株式会社万葉

使用技術 形態

当初Ruby 1.8 Rails 2 SVN

SES契約 / 派遣で客先外注

近代Ruby 1.9 Rails 3 Git

持ち帰り増えるも 儲からず

原価計算はじめる

最近Ruby 2.1 Rails 4 GitHub

持ち帰り改善 勤務場所Flexible チーム開発重視

株式会社万葉

きょうの構成1. Ruby/Railsの受託開発の実践から得た技術・ビジネスのノウハウ紹介

2. チーム開発のために行っている取り組みの紹介

株式会社万葉

2時間近く 話すとなると 聞く方も

大変かと思います ので…

株式会社万葉

途中に適当に 質疑を挟んだりして 変化をつけられると

良いなと 思っています

株式会社万葉

1.Ruby/Railsの受託開発の実践から得た技術・ビジネスのノウハウ紹介

株式会社万葉

Q. Ruby / Railsを使ったプロジェクトを経験されて いる方?

株式会社万葉

Rubyの うれしいところ

株式会社万葉

•書きやすい •良いライブラリ(gem)がいろいろある •ナイスな文化

株式会社万葉

Rubyの 難しいところ

株式会社万葉

•習熟が必要 •プログラマ不足 •バージョンアップが早くて置いていかれやすい (特にRails)

株式会社万葉

人の問題•ナイスな人が必要 •git •コミュニケーション •Ruby •Web •DB •サーバ •開発規模をスケールさせるのは大変

株式会社万葉

人の問題に どう立ち向かうか•人脈を活用(コミュニティ) •はやめの募集 •動かせるスコープ •要求・要件を迅速に出す •一人プロジェクトは避ける

株式会社万葉

一人は避ける

•レビューされる環境が大事 •他人の目を意識することでコードはだいぶ良くなる •一人が辞めてもメンテナンスできる

株式会社万葉

バージョンアップ•リリース後も定期的にバージョンアップする計画でないと辛い •そのためにはある程度自動テストがないと辛い •プロジェクト側に理解(予算)がないと辛い

株式会社万葉

バージョンアップ

•やらないと死ぬ •いいプログラマが集まらない •受託会社的には、旧バージョン割増料金なども視野

株式会社万葉

bundle update

•使っているgemを最新にする •最新にして大丈夫かそれぞれの更新情報などを見て確認 •bundle update 当番

株式会社万葉

どのgemがいいか

•という話は今日はしません •しませんが、どうやって判断するかという話をします

株式会社万葉

gemとの つきあい方

株式会社万葉

gem は コード読んだり 手を入れたり 貢献したり 乗り換える物

株式会社万葉

コードも読まず ただ入れてみて 利用できて便利 というのは幻想

株式会社万葉

そういう付き合い 前提なら

最悪、使ってみれば わかります

株式会社万葉

どう判断しているか

•使いやすい I / F か •よく使われてそうか •最近メンテナンスされてそうか •知人の評判はどうか •メンバーの意見はどうか

株式会社万葉

Q. 皆様の 悩みを

教えてください

株式会社万葉

見積もり? 案件? 人数? 採用?

株式会社万葉

Ruby / Rails 開発で

これだけは守りたい 原則

株式会社万葉

バージョンアップに 追随する

株式会社万葉

バージョンアップに 追随する

•アプリケーションをメンテナンスし続けるために最も重要 •人が来なくてはメンテできない •選択の余地はない

株式会社万葉

自由 民主主義 多様性

株式会社万葉

自由•Rubyと自由は相性がよい •大した理由のない「制限」にはこだわらなくていい •自由は生産性を高める •レールを自分たちで作り、変えていく

株式会社万葉

民主主義•チーム内で話し合って合意を作って決めるスタイルがおすすめ •チームは社外にも緩く連携 •間違った決定をするリスクが低い •誰もが責任を負う

株式会社万葉

多様性•Ruby なのに Java みたいなプロジェクト •for 禁止で常に each •POSTしたら絶対 redirect •テスト通したのを確認しないとコミットできない(SVNで長蛇の列 TT •強い制約

株式会社万葉

多様性

•一貫性は絶対ではない •一筆書きで正解に辿り着くのは難しい •ためしに一部だけこうする、というのもおすすめ

株式会社万葉

できればアジャイル開発に寄せたい

株式会社万葉

Q. いまアジャイル開発をしている方?

株式会社万葉

Q. いまアジャイル開発でない開発をしている方?

株式会社万葉

アジャイルに寄せたい•Rails では機能ごとに各層を一人で担当したりする •要求の確認から実装までを何度も行ったり来たりする •ウォーターフォールだと待ち時間や無駄が多くなりそう

株式会社万葉

自動テスト

株式会社万葉

自動テスト

•開発するための自動テストと、維持のための自動テストは違う •メンテナンスには機能レベルの自動テストが必要

株式会社万葉

名前づけ

株式会社万葉

名前づけ•変数やメソッドの内容は名前だけで示す •変数に入るオブジェクト / メソッドの返すオブジェクトを正確に伝える必要がある •※別資料あります

株式会社万葉

8年間の 事件簿と対策

株式会社万葉

1.「見積もりが 安すぎた!!」

株式会社万葉

一人で見積もると 性格の差が 吸収しづらい

株式会社万葉

見積もりは なるべく大勢で レビューする

株式会社万葉

規模が増えれば増える工数を自動計算 (PMとか)

株式会社万葉

2.「持ち帰り 儲からない…」

株式会社万葉

原価計算して 毎月原価率を

みんなで見るように しました

株式会社万葉

原価計算に要るもの•プロジェクト別時間集計 •月ごとの決算処理(経理) •プロジェクト別の進捗率を毎月出す •コストと進捗でリアルタイム原価率を見られるシステム

株式会社万葉

ちゃんとできるのに1年くらい かかりました

株式会社万葉

はかるだけ ダイエット!

株式会社万葉

3. 「チーム」

株式会社万葉

Part2 へ続く!