ruby on railsの実力を検証 - オープンソースビジネ … on...1.1 ror(ruby on rails)1.1...

32
Ruby on Railsの実力を検証 エンタプライズ適用けて エンタ プライズ適用けて 日立ソフトウェアエンジニアリング株式会社 Rubyセンタ 正村 勉 2009年12月10日 Copyright © 2009 Hitachi Software Engineering Co., Ltd.

Upload: trinhhanh

Post on 17-Jun-2018

229 views

Category:

Documents


0 download

TRANSCRIPT

Ruby on Railsの実力を検証~ エンタープライズ適用に向けて ~~ エンタ プライズ適用に向けて ~

日立ソフトウェアエンジニアリング株式会社

Rubyセンタ

正村 勉

2009年12月10日

Copyright © 2009 Hitachi Software Engineering Co., Ltd.

会社概要会社概要

日立ソフトウェアエンジニアリング株式会社(略称:日立ソフト)社 名

1970年 9月21日設 立

341億円(2009 3月末)資本金 341億円(2009.3月末)資本金

<連結>1,658億円(2009.3月期)<単独>1 524億円(2009 3月期)

売上高<単独>1,524億円(2009.3月期)

<連結>7,151人(2009.3月末)<単独>5 283人(2009 3月末)

従業員数<単独>5,283人(2009.3月末)

システム開発、サービス、プロダクト&パッケージ、情報処 機 提供

事業内容

ISO 9001 認定、 CMMI レベル5達成品質保証

情報処理機器の提供事業内容

ISO 9001 認定、 CMMI レ ル5達成品質保証

Rubyアソシエーション認定システムインテグレータ

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 2

CMMI及びCapability Maturity Model Integrationは、米国カーネギーメロン大学ソフトウェア工学研究所が開発したソフトウェア企業の生産性や品質向上を目的として、開発のプロセスを見直し、改善するための世界的な標準の指標です。

目次目次

1. エンタープライズ適用への課題

2 RoR(Ruby on Rails)適用の検証項目2. RoR(Ruby on Rails)適用の検証項目

3. 実力の検証

4. 今後の取り組み

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 3

1 エンタ プライズ適用への課題1. エンタープライズ適用への課題

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 4

1.1 RoR(Ruby on Rails)1.1 RoR(Ruby on Rails)の適用分野の適用分野

RoRの特徴

高い生産性高い生産性

Webアプリケーション開発に特化した開発環境

プログラムの変更が容易プログラムの変更が容易

RoRが向いているシステムRoRが向いているシステム

情報系システム基幹システム

早く実現したいシステム

情報系システム基幹システム

新規ビジネス向けITシステム

スモールスタートのシステムシステム化検討時の”動く仕様書”

初期投資を抑えたいシステム

基幹システムのプロトタイプ

コミュニケーション系システム B2C

システム化検討時の 動く仕様書

ユーザの意見を取り込みたいシステム

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 5

コミュニケ ション系システム B2C

1.2 1.2 エンタープライズで利用するためにはエンタープライズで利用するためには

RoRRoRの特長を活かしたアジャイル開発ができることの特長を活かしたアジャイル開発ができること

開発 保守を行うことができる人材が豊富に存在すること開発 保守を行うことができる人材が豊富に存在すること開発、保守を行うことができる人材が豊富に存在すること開発、保守を行うことができる人材が豊富に存在すること

容易に開発環境、実行環境が構築できること容易に開発環境、実行環境が構築できること

開発時、運用時に適切なサポートが受けられること

導入コストが低いこと

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 6

2. RoR(Ruby on Rails)適用の検証項目

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 7

2.1 RoR2.1 RoR適用にあたっての検証項目適用にあたっての検証項目

生産性

他環境と比較して 良いのか悪いのか?他環境と比較して、良いのか悪いのか?

注意すべき観点は何か?

信頼性信頼性

性能:

• インタプリタであるが実用に耐えられるかインタプリタであるが実用に耐えられるか

品質:

• 不良の作りこみはどうか?不良の作りこみはどうか?

• 摘出のし易さや修正コストはどうか?

拡張性拡張性

• システムの変更はし易いか?

• 変更に掛かるコストはどの程度か?変更 掛かる トはど 程度か?

システム開発にRoRを適用し、評価を実施

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 8

2.2 2.2 検証対象システム検証対象システム

大まかな機能仕様が確定している

既存システムとの比較が可能であること既存システムとの比較が可能であること

開発後、ユーザの観点からシステムの実力を評価できること

毎日利用するシステムに適用する

実際に業務として利用する

PHPで作られたOpenPNEをOpenPNE(PHP) RoR

日記 日記

メッセージ メッセージ

で作られたOpe を

RoRで書き換え

コミュニティ コミュニティ

カレンダ カレンダ

チーム

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 9

MySQL

2.2 2.2 画面サンプル画面サンプル

社員が登録した

最新の日記最新の日記

社員が登録した

最新のノウハウ

友達が登録した

最新の日記

最新のQ&A

チーム、コミュニティでの最新書き込み

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 10

2.3 2.3 開発規模開発規模

JavaScript4%

CSS99 [99 [画面画面]]画面数画面数 Ruby

41%

CSS11%

ステップ数ステップ数 8,119 [step]8,119 [step]

HTML44%

42テーブルビュー モデル

44%

コントローラ42テーブル

HTMLRuby

9173,573Ruby

1,919

JavaScript

ヘルパバッチ873

CSS Ruby

174

バッチ

Ruby

309354

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 11

174309

2.4 2.4 利用状況(2009年)利用状況(2009年)

登録ユーザ数登録ユーザ数 5,000 [ユーザ]

ログインユーザ数ログインユーザ数 550 [ユーザ/日]

ペ ジ閲覧数ペ ジ閲覧数 24 000 [PV/日]ページ閲覧数ページ閲覧数 24,000 [PV/日]

投稿数投稿数 250 [件/日]

時間帯別ページ閲覧数

2,612 2,8632,827

4,0264,092

3 000

3,500

4,000

4,500

(PV)

2,863

2,425

2,5862,827

2,117 2,0321,500

2,000

2,500

3,000

ージ閲覧数(

32 3 4 3 76 92 237128114 57 20

655

1,254

500

1,000

0 1 2 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

ペー

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 12

0 1 2 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

時間(時)

2.5 2.5 実行環境実行環境

サーバ

クライアント

アプリケーションアプリケーション

ライブラリ2.0

ver 2.2

LDAP

Internet Explorer 6、7Firefox 2、3

will_paginate、rmagickbetter_nested_set

ruby-net-ldap、mecab-ruby

senger 2

Web Serv

Firefox 2、3

Windows XP MySQLMySQL4.04.0

Ruby on Rails 2.2

Ruby 1 8

Pass

Apache W

Ruby 1.8

Redhat Enterprise Linux ES 4

CPU:Intel Xeon 3.8GHz × 2個CPU:Intel Core 2 Duo

メモリ:4GB

ディスク:400GB

メモリ:4GB

ディスク:75GB

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 13

ディスク 75GB

2.6 2.6 プロジェクト管理方法プロジェクト管理方法

プロジェクト概要アジャイルを意識した管理アジャイルを意識した管理

イテレーションを4回実施2008/5

2日 3週 2週 2週 1週 3日2008/7

計画システムテスト

2日

1

3週

2

2週

3

2週

4

1週 3日

本番稼動

管理方法機能 : 具体的に実現する機能群

タ ク 機能を実現するため 個々 作業タスク : 機能を実現するための個々の作業

機能 8

管理ツール

タスク 182

管理ツ ルオープンソースのtracを活用• マイルストーンで機能を管理

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 14

• チケットでタスクを管理

3. 実力の検証

本来なら 100プ ジ クト以上の値から本来なら、100プロジェクト以上の値から

評価するべきですが、今回は参考値として評価する きですが、今回は参考値として

本プロジェクトの値をご紹介します。

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 15

3.1 3.1 生産性の検証生産性の検証

アジャイル開発仕様書は作成していない

ウォーターフォール型の開発と単純比較することは危険

体制開発者 A B

Ruby経験 × ○

その他の言語 Lotus Notes 他 Java 他その他の言語 Lotus Notes、他 Java、他

Webアプリケーション ○ ○

経験年数 11年 4年

開発工数 : 638 [h] (計画 ~ システムテスト)

開発規模 : 8,119 [step]、99 [画面]

生産性

12 78,119 [step] 8,119 [step]

82= 12.7 [step/h]638 [h]

= 6 4 [h/画面]638 [h]

99 [画面]= 82 [step/画面]

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 16

= 6.4 [h/画面]99 [画面]

信頼性の検証信頼性の検証

3.2 3.2 性能測定の環境と測定方法性能測定の環境と測定方法

測定環境

CPU : Intel Xeon 3GHz × 1個CPU : Intel Xeon 3GHz × 1個

メモリ : 5GB

ディスク: 73GB(SCSI) × 1個ディスク: 73GB(SCSI) × 1個

負荷

同時接続ユーザを50から500まで測定同時接続ユ ザを50から500まで測定

シナリオ

ログインして日記一覧を表示 (30 000中20件表示)ログインして日記 覧を表示 (30,000中20件表示)

同じシナリオでRoRとOpenPNEを測定

ログイン:150 [step]

登録ユーザ:5,000 [件]

日記 30 000 [件]

日記一覧表示:1,137[step]

ログイン:150 [step]RoR側ダイナミックステップ数:

1000base-T 1000base-T日記:30,000 [件]

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 17

JMeter

信頼性の検証信頼性の検証

3.3 3.3 測定結果測定結果

25.0

15 7

19.4

20.0

秒]

13 416.2

12.5

15.7

15.0

時間 [秒 OpenPNE

9.0

11.3

13.4

4 26.6

8.810.0

均応答時

RoR

3.35.0

7.21.9

4.2

0 2

5.0平均 RoR

0.2 0.3 1.03.30.2

0.0

50 100 150 200 250 300 350 400 450 500

同時接続ユーザ数 [人]

OpenPNEにおいてユーザ450、500は無応答エラーが発生し、測定不可

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 18

OpenPNEにおいて ザ450、500は無応答 ラ が発生し、測定不可

信頼性の検証信頼性の検証

3.3 3.3 性能の評価性能の評価

100

120

140

120ユーザは1秒以下実用に耐えられるかの検証

60

80

100

ユーザ [人]

200ユーザ接続時

平均応答時間は、3.3秒であるが、 同時接続200ユーザ時

0

20

40

応答時間1秒以内が120ユーザとなる

最大値は12秒

日々の利用には問題のない性能 00 10,000 20,000 30,000 40,000 50,000 60,000

応答時間 [ミリ秒]

140

日々の利用には問題のない性能

500ユーザ接続時

100

120

140

人]

500ユ ザ接続時

平均応答時間は、16.2秒であるが、応答時間3秒以内が40ユーザとなる

40

60

80

ユーザ [人

1秒以内はゼロ

20秒以上は250ユーザとなる

最大値は60秒

同時接続500ユーザ時

0

20

40

0 10,000 20,000 30,000 40,000 50,000 60,000

最大値は60秒

ハードウェアの増強が必要と考える

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 19

0 10,000 20,000 30,000 40,000 50,000 60,000

応答時間 [ミリ秒]

信頼性の検証信頼性の検証

3.4 3.4 不良の発生状況不良の発生状況

テスト方法

開発メンバーによるモンキーテスト開発メンバ によるモンキ テスト

テスト環境を使用し、数十名によるユーザテスト

平均修正工数: 2 6 [h/件]平均修正工数: 2.6 [h/件]

本番リリース

イテレーション

#1 #2 #3 #4 #5 #6 計

バグ [件] 31 8 1 1 16 0 57

[ ] 87 0 21 6 3 0 1 0 38 4 0 0 151修正工数[h] 87.0 21.6 3.0 1.0 38.4 0.0 151

2 8 2 7 3 0 1 0 2 4 - 2 6件数あたりの修正工数 [h/件] 2.8 2.7 3.0 1.0 2.4 2.6修正工数 [h/件]

イテレーションの進捗で修正に掛かる工数に変化はない

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 20

進捗 修 掛 数 変化

3.5 3.5 拡張性の検証拡張性の検証

リリース時点

機能改善数: 113 [件]機能改善数: 113 [件]

イテレーションあたりのタスク数: 28.3 [件/回]

平均工数: 4 3 [h/件]平均工数: 4.3 [h/件]

本番稼動の後

機能改善数: 95 [件]機能改善数: 95 [件]

イテレーションあたりのタスク数: 47.5 [件/回]

平均工数: 4.2[h/件] 本番リリース平均工数 4.2[h/件]

イテレーション

#1 #2 #3 #4 #5 #6 計

本番リリ ス

機能改善[件] 69 29 4 11 78 17 208

工数[h] 283 143 19 36 321 75 877

4 1 4 9 4 8 3 3 4 1 4 4 4 2件数あたりの

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 21

4.1 4.9 4.8 3.3 4.1 4.4 4.2件数あたりの修正工数 [h/件]

3.6 3.6 人材の育成人材の育成

RoRを使ったことがない人材が多い

RoR未経験者の戦力化が必要

技術者の育成

RoR未経験者の戦力化が必要

技術者の育成

知識の教育

作り方の教育作り方の教育

作業の標準化作業の標準化

統一した実装をさせる

同じ問題を繰り返さない開発ガイドラインの作成

同じ問題を繰り返さない開発ガ ラ 作成

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 22

3.6 3.6 技術者の育成技術者の育成

「Rubyプログラミング講座」 : 2日間Rubyプログラムを作成するための基本的な知識を習得Rubyプ グラムを作成するための基本的な知識を習得

「RoRプログラミング講座」 : 2日間プ 得実習を通じてRoRを使ったアプリケーション開発を習得

10画面程度、2~3[kstep]を開発

学習に必要な教材を用意

独学で簡単なアプリケーションを作るための教材開発チュートリアル開発チュートリアル

リファレンスコードリファレンスコード お手本となるソースコード

サンプルアプリケーションサンプルアプリケーションオープンソースとして利用可能なサンプルプログラム(7つ)

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 23

3.6 3.6 開発ガイドライン開発ガイドライン

開発に必要な各種ガイドラインを作成

クラス設計、命名規則、コーディング規約など開発手法ガイド開発手法ガイド

開発時のルールを記載したガイド(43ページ)開発手法ガイド開発手法ガイド

開発の環境を構築するためのガイドとツ ル開発の環境を構築するためのガイドとツール、ライブラリの利用方法を記載(17ページ)

開発環境構築ガイド開発環境構築ガイド

実行環境の構築ガイド(17ページ)実行環境構築ガイド実行環境構築ガイド

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 24

3.7 3.7 ライブラリを使いこなすライブラリを使いこなす

ライブラリを使いこなすことが困難

メンテナンスされていないライブラリも多く 使用している環境で動作メンテナンスされていないライブラリも多く、使用している環境で動作しないケースがある

1つのライブラリから派生したものが多くあり、それぞれ機能が異なる

例:データのページング・ライブラリ

• 数:25種類

ライブラリを見つけ出すには手間がかかる

見つけ出すことができず、作りこんでしまった

• 例:検索機能

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 25

3.7 3.7 推奨ライブラリを選別推奨ライブラリを選別

推奨ライブラリを選別

よく利用されるライブラリを検証し、有用なものを選別

各種アダプタ(DB、LDAP)、検索エンジン、データ操作、認証など

使い方がわかるサンプルを用意

開発環境と共に提供

<< 認証 >>

restful_authentication

<< 画像操作 >>

rmagick

<< LDAPライブラリ >>

ruby-net-ldap

<< HTML操作 >>

hpricot

<< 検索エンジン >>

ferret

<< DBアダプタ >>

mysql postgresp

RedCloth acts_as_ferret

y q p g

sqlite3-ruby

<< データ操作 >><< デ タ操作 >>

will_paginate better_nested_set

acts_as_taggable_on_steroids fastercsv

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 26

4 今後の取り組み4.今後の取り組み

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 27

4.1 Ruby4.1 Rubyソリューションのメニューソリューションのメニュー

企画 設計 製造運用保守

テスト企画 設計 製造保守

テスト

システム開発システム開発

プロトタイプ開発

アジャイル開発コンサルテーション-プロジェクトコンサルテーション-開発コンサルテーション

システム診断・改善

開発環境提供 運用、保守

シ テ 診断 改善

実行環境提供

教育-セミナー学習環境提供サ ビス

実行環境構築

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 28

実行環境提供-学習環境提供サービス

4.2 4.2 学習環境提供サービス学習環境提供サービス

学習環境をPaaSとして提供導入と同時にRoR環境を利用可能導入と同時にRoR環境を利用可能

月額サービスで必要な期間だけ利用

学習コンテンツRoR学習の教材(チュートリアル、リファレンスコード、サンプルアプリ)

開発に必要な開発ガイドライン

推奨ライブラリ推奨ライブラリ

開発者 開発環境

P 教材教材 MySQL

Subversion開発ガイドライン開発ガイドライン・教材を使った学習

・開発スキルの習得

Apache

WebServer

Passenger 教材教材

Ruby on Rails

MySQL・開発の実践

推奨ライブラリ推奨ライブラリVPN

WebServer

Ruby

CentOS

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 29

VMware

4.3 4.3 システム開発システム開発

Ruby案件を扱う専門組織「Rubyセンタ」を設立

技術者を集めて Rubyの実力を発揮するための徹底したアジャイ技術者を集めて、Rubyの実力を発揮するための徹底したアジャイル開発を実施

開発ノウハウ ソフトウェア資産を蓄積開発ノウハウ、ソフトウェア資産を蓄積

その結果を教育サービス、コンサルテーション、運用保守サービスに活用活用

Rubyセンタ Ruby技術者

システム開発

アジャイル開発アジャイル開発

お客様

開発ノウハウ、ソフトウェア資産を蓄積

アジャイル開発アジャイル開発

ソフトウェア資産を蓄積

教育 コンサル 運用、保守

ソリューションメニューへ

...

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 30

教育 ンサル 運用、保守 ...

ご清聴ありがとうございましたご清聴ありがとうございました。

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 31

• Apacheは、Apache Software Foundationの登録商標または商標です。Apacheは、Apache Software Foundationの登録商標または商標です。

• DB2は、米国International Business Machines Corporationの米国およびその他の国における商標です。

• Firefoxは、Mozilla Foundationの米国およびその他の国における登録商標です。

• Linuxは、Linus Torvaldsの米国およびその他の国における登録商標または商標です。

• Intel, Core 2 Duo, Xeonは、 Intel Corporationまたはその子会社の米国およびその他の国における登録商標または商標です。

• MySQLは、MySQL AB社の米国およびその他の国における登録商標です。

• NetBeansは、米国Sun Microsystems, Inc.の米国およびその他の国における登録商標または商標です。NetBeansは、米国Sun Microsystems, Inc.の米国およびその他の国における登録商標または商標です。

• OpenPNEは、株式会社手嶋屋の登録商標です。

• ORACLEは、米国Oracle Corporation の登録商標です。

• Red Hatは、米国Red Hat, Inc.ならびにその子会社の登録商標です。

UNIXは Th O G の米国およびにその他の国における登録商標です• UNIXは、The Open Groupの米国およびにその他の国における登録商標です。

• VMwareは、VMware, Incの米国およびその他の地域における登録商標または商標です。

• Windows、Windows XP、IIS、InternetExplorer、SQL Serverは、Microsoft Corporationの米国およびその他の国における登録商標または商標です。

Copyright © 2009 Hitachi Software Engineering Co., Ltd.Copyright © 2009 Hitachi Software Engineering Co., Ltd. 32

• その他、記載されている会社名、商品名は、各社の登録商標または商標です。