SlideShare a Scribd company logo
~Rubyが切り開くイノベーション ~
   (開発標準と顧客創造)


      2011年7月27日
    株式会社 テクノプロジェクト

    Copyright(c)2011 Techno Project. Co., Ltd. All Rights Reserved.   1
Ruby業務システム開発の実績

2007年 IPA(情報処理推進機構)実証事業
   IPAオープンソフトウェアセンターがRuby/Railsを基幹業務に
   適用する実証事業を実施。
     ⇒ 松江市殿)医療・介護高額合算システム  
        (日本初:バッチ処理を含む基幹業務全体)
        約50人月   2007.9~2008.3
                 オン:14本、バッチ:24本
                 業務開発チーム:6名
                   ㈱テクノプロジェクト、㈱マツケイ
                 共通技術チーム:3名
                   ㈱ネットワーク応用通信研究所


           Copyright(c)2011 Techno Project. Co., Ltd. All Rights Reserved.   2
医療・介護 高額合算システム
  2007年度 IPA公募事業           医療・介護の高額合算システム(松江市殿)

                 住民異動情報                                                   窓口業務
住民記録システム                                                                                  市
                                          医療                                              民
                                                                                    相談支援
                 自己負担額・                                                             申請受付
                 資格情報                                                               証明書・通知書
国民健康保険システム                                介護                                             発行など
     (医療保険) 支給額情報
                                                                         内部処理
                 自己負担額・                   高額
                 資格情報                                                               自己負担額合算
後期高齢者システム                                                                           支給決定
(医療保険75歳以上)                                                                         支払い登録
                 支給額情報                    合算                                        口座振替情報など
                 自己負担額・
                 資格情報
介護保険システム                                   システム
                 支給額情報
                                                                     ・大量データ処理
                                                                     ・精度の高い帳票印刷
 既存業務システム                                                            ・再印刷やページ指定印刷
                                   Ruby開発システム                        ・バッチ処理環境
  (メインフレーム・C/S)
            Copyright(c)2011 Techno Project. Co., Ltd. All Rights Reserved.
                  Copyright(c)2009 Techno Project. Co., Ltd. All Rights Reserved.               3
メインフレームのオンライン構造 (MainFrame)



        オ
        ン
  端末    ラ      主                    業務処理
                                   業務処理
                                                              DB
        イ      プ             業務処理                            アクセス                 データ
        ン      ロ                                                                  ベース
        制
                                                             ルーチン
        御
                                                                                 ネットワークDB
                                                                                       DB
                                     画面定義体
                                   画面定義体
   メッセージ振り分け               画面定義体
   多重端末多重会話


C/Sシステム3階層開発

   プレゼンテーション層             アプリケーション層                           データベース層

                                                                       RDB

 業務処理に集中して開発できる環境                                    Best System Structure
               Copyright(c)2011 Techno Project. Co., Ltd. All Rights Reserved.
Web
Webアプリ(Railsシステム構造)

                       Ruby on Rails
                       Ruby on Rails(機能分割:モデル・ビュー・コントローラ)

                                      コントローラ
                  R               コントローラ
         W
                  A
                            コントローラ                            モデル
   端末    E                          業務処理
                  I
         B                        業務処理
                  L                                          Active                 データ
         サ                   業務処理                                                   ベース
                  S                                          Record
         |
                  制
         バ
                  御
                                                                                    MySQL
                                                                                    MySQL等
                                   ビュー
                                 ビュー
        Apache
        Apache等
                               ビュー画面定義体
                                画面定義体
                            画面定義体



※Ruby on Rails
   M:モデル(DBマクロ) 検索・挿入・更新・削除のSQL  (一部業務も含む)
   M
   V:ビュー(画面定義)  HTML・ヘルパー ・・・HTMLエディター
   V
   C:
   C:
   C:コントローラ(オンライン制御・業務処理)・・・業務ロジック
                  Copyright(c)2011 Techno Project. Co., Ltd. All Rights Reserved.
Railsでも、C/Sシステムと同様な画面IF(コンボボックス、オプションボタン、サブウィンドウ等)
窓口に市民が来た時の対応 ⇒ 1つの画面で完結(画面遷移の少ない処理)
 (上段:申請者情報,、中段:受給履歴、下段:申請内容)
              Copyright(c)2011 Techno Project. Co., Ltd. All Rights Reserved.   6
生産性(2008.2)
前提条件  全工程(100%)   設計工程(基本設計、詳細設計)               30%
                製造工程(PG設計、プログラミング、単体テスト)       40%
                テスト工程(結合テスト、総合テスト、運用テスト、操作研修) 30%

Ruby・Rails と既存の基幹業務の開発方法との生産性比較
  比較方法: 初めてのRails開発経験者に、ヒアリングを実施。
          前提として、Rails開発を2~3回こなし、習熟した場合に、生産性はどのようになるか。  
対象者:      50代SE 2名、30代SE/PG 3名
         (COBOL,VB,Javaによる基幹業務の開発経験者)

設計工程(30%)+製造工程(40%)×3/4+テスト工程(30%) ⇒ 全工程(90%)・・・10%改善
    変わらない      25%改善        変わらない
  ・ウォータフォール開発、開発要員は当初から全員投入しRuby教育やプロト開発を実施する。
  ・ドキュメント 設計工程:基本設計/詳細設計書、テスト工程:テスト仕様書/成績書
  ・詳細設計は、プログラム単位に詳細な機能説明を記述。プログラムのロジックを記述する
   プログラム設計書は作成していない(比較の元となる開発もプログラム設計書:未作成)。
  ・基幹業務の特性として、チェック処理が多い。1つのデータ登録に、100ステップ程度の
   整合性チェックなどが頻繁にある。 → どの言語で開発しても、生産性の改善はできない。
  ・自動テスト機能は、使用していない。アジャイルのような繰り返し開発に有効であるがウォー
   タフォール型の開発では、テスト手順の登録作業に、かえって工数が増大すると考えた。

               Copyright(c)2011 Techno Project. Co., Ltd. All Rights Reserved.
                     Copyright(c)2009 Techno Project. Co., Ltd. All Rights Reserved.   7
開発標準:COBOLerの復活(2007~) 

ベテランSE(COBOLer)がWebシステムの開発に参加できる
  ①ウォータフォール開発 (設計⇒製造⇒テスト)
  ②厳格なコーディング規約 (Rubyの自由度をなくす)
  ③日本語のDB項目名称(設計書とソースの見易さ)
  ④SQL記述(判り易さ、但し便利な部品が使えない)
  ⑤バッチ処理も同一言語で開発
  ⑥構造化設計(業務ロジック重視、従来のドキュメント類)
  ⑦少ない部品(少量の部品から始める、覚え易さ)
  ⑧画面定義(HTML)は、専任化:Webデザイナー
  ⑨クラス設計:テーブル毎の業務ロジックを含めたアクセスルーチン

       COBOLer向けRuby/Rails教育コース by テクノプロジェクト


          Copyright(c)2011 Techno Project. Co., Ltd. All Rights Reserved.   8
開発システムの事例(2007~2010) 
 県内自治体         遺失物管理システム                                                       約40人月
 県内自治体         行政システム                                                          約35人月
 県内自治体         施設予約システム                                                        約20人月
 県内財団法人        施設管理システム                                                        約12人月
 医療機関          勤務管理システム                                                        約18人月
 医療機関          化学物質管理システム                                                        -
 金融機関          ホームページ                                                          約4人月
 県外ソフトウェア業     業務系システム(パッケージ開発)                                                約20人月
 県外ソフトウェア業     Rails
               Railsを用いたシステム開発支援                                                 -
 県外情報サービス業 ソフトウエア構成管理システム                                                      約50人月
               地域経済情報化基盤整備補助事業
 経済産業省                                         -
               (地域連携:島根2社+広島2社)
               教育講座
 しまね産業振興財団                                     -
               業務開発者のためのRuby/Rails
                         Ruby/Rails
                         Ruby/Rails実践
               母子寡婦福祉資金システム(iOFW
                               iOFW
                               iOFW)再開発業務
 島根県                                         約40人月
               心身障害者扶養共済システム(iOFW iOFW
                                  iOFW)再開発業務
             Copyright(c)2011 Techno Project. Co., Ltd. All Rights Reserved.           9
アジャイル開発(2010)
Rubyビジネスモデル研究実証事業
   (製造業向けアジャイル開発)
・ 生産ラインの各種設備機器の検査記録システム
  顧客情報システム部門:1名、SE/PG:3名
  開発期間(4カ月)と予算(コスト)確定
  システム仕様は作りながら決定 
     スコープ(開発範囲) ⇒ 未達(顧客側で継続開発)
     顧客満足度      ⇒ 達成
・ アジャイル(スクラム方式)
  定期的な顧客リリース(2カ月単位) ⇒ 仕様調整
  開発チーム内は2・3週ごとに結合テスト ⇒ 早い段階で整合性確認+デモ
  テスト駆動開発(テストファースト+リファクタリング)
  ペアプログラミング      ⇒ 見られるという緊張感
  ダイナミックな作業割り振り ⇒ 前提:開発者の業務理解度が平準
  朝会・夕会           ⇒ 基本10分、時々議論の場にもなる

          Copyright(c)2011 Techno Project. Co., Ltd. All Rights Reserved.   10
ウォーターフォールとアジャイル
  ウォーターフォール
    計画的な開発(設計重視)
    静かな開発チーム ・ ・ ・

  アジャイル
    熱い集団(議論の場・設計の繰り返し)
    テスト駆動開発
    外部ライブラィ(便利な部品が多い) ・ ・ ・
     


        新たな開発標準へ
        Copyright(c)2011 Techno Project. Co., Ltd. All Rights Reserved.   11
開発標準を目指して
アジャイル+業務システム開発+請負契約
  開発手法
   ①開発方式とドキュメント
   ②開発チーム
   ③テスト駆動開発
   ④ソースレビューとペアプログラミング
  ツール
   ⑤プロジェクト管理・開発ツール
   ⑥外部ライブラリィの活用
   ※帳票作成ツール

品質・生産性・顧客満足度・開発者満足度 全ての向上に向けて
         Copyright(c)2011 Techno Project. Co., Ltd. All Rights Reserved.   12
開発手法
①開発方式とドキュメント
 (1)設計:ウォーターフォール
    業務システムは、一般的に制度・法律・慣習が詰まった複雑なもの。
    DB
    DB
    DBアクセスでは、多くの更新系処理が発生する。イレギュラー処理。
   ⇒ 設計が重要、特にDB設計
       最終ドキュメント:メンテナンス手引書として整備(含む納品物)
       構成品管理表、基本設計書・詳細設計書、操作・運用マニュアル
    ※開発途中は、ホワイトボードのデジカメ化でもOK
                          OK
 (2)実装(PG設計~結合テスト):アジャイル=素早く、繰り返し
   ⇒ 繰り返しの中で、早め早めの顧客確認(満足度)と開発チームの整合性確認
   ※顧客リリースは2~3カ月の単位で段階的に行う。
    実装は2~3週単位に。進捗と品質の確認を行う。




            Copyright(c)2011 Techno Project. Co., Ltd. All Rights Reserved.   13
開発手法

②開発チーム
   短期開発(1年以内):最初から全員投入
    ⇒ チームワーク・コミュニケーション
       PGの役割:SE補助作業・業務習得・先行開発
      “若手エンジニアの業務ノウハウ習得の場” ← 全工程に参加
      “                    ”
   朝会(スタンドアップミーティング):短時間→一人一人の進捗と予定の報告
   × ダイナミックな作業割り振り(朝会で調整。前提:全員が同一な業務ノウハウ)
        ⇒ 複雑な業務では、不可能である。




          Copyright(c)2011 Techno Project. Co., Ltd. All Rights Reserved.   14
開発手法
③テスト駆動開発
   テスト手続きの登録&自動テスト(含む、テストデータ登録)
      効果:品質向上(テストの自動化+ソースの最適化→リファクタリング)
   単体・機能テスト(ロジックの内部仕様)  評価:△ ← 生産性と効果より
      活用:ホワイトボックステスト(モデル・ビュー・コントローラ・モジュール単位)
      繰り返し[ 1テストケース登録 → ロジック記述(数ステップ)→ リファクタリング ]
          [
   機能テスト(業務の外部仕様)        評価:◎
       活用:ブラックボックステスト → ユーザサイドのテスト
      レグレッションテストの容易性、ライフサイクルでの活用 ⇒ 品質向上




             Copyright(c)2011 Techno Project. Co., Ltd. All Rights Reserved.   15
開発手法
④ソースレビューとペアプログラミング
 (1)基本パターン
     ソースレビュー  コーディング規約遵守、第三者の目に触れることが重要
                 タイミングは単体テストの終了段階
     開発者:中級レベル以上は単独開発が基本

 (2)オプション
     ペアプログラミング
     開発者:初級レベル(Rails
                 Rails
                 Rails初心者、新入社員アソシエイト、業務初めて)
          → 早期立ち上げを目的に、中級レベルのエンジニアがトレーナ役を
            担当し、つまづきを最小化する
            初心者が質問しやすい環境を強制的に作る




            Copyright(c)2011 Techno Project. Co., Ltd. All Rights Reserved.   16
ツール
⑤プロジェクト管理・開発ツール
  Ruby 1.9 + Rails:3.0 Ruby:1.8 + Rails:2.3 )
  Ruby
  Ruby:1.9 Rails:3.0 (
            Arel(SQL
               Arel( SQLライク)、CSS(
               Arel(SQL    ) CSS(
                             CSS(画面) )
  Redmine      案件管理・ToDo
  Subversion ソース履歴管理(Redmineと連携)
  NetBeans      開発ツール(IDE+ソースエディター)
  Cucumber 結合テストツール(画面単位、外部:ユーザサイドテスト)
                       日本語によるテスト仕様記述
  Capistrano  デプロイ(本番環境への更新モジュール反映)

  ※データベース 
         新規開発 → MySQL・PostgreSQL
         既存クラアントサーバシステムのWeb化 → Oracle・SQLSeverの継続使用
                                複合キーのサポート部品あり

              Copyright(c)2011 Techno Project. Co., Ltd. All Rights Reserved.   17
ツール
⑥外部ライブラリィの活用
   便利な部品の活用(ネット上+社内実績)
     部品の活用度に応じて、生産性・品質向上
   ※ 部品の管理が重要
        活用ノウハウ・逆引き・更新情報・ライセンス(MIT)・実績プロジェクト
                             (   )
        利用者・使用上の注意事項・Ruby/Railsのバージョン 等
                         /
        例:Pagenation 帳票・画面の一覧表および次ページ送りの部品
       ライブラリィ : GEMパッケージ、Railsプラグイン
※帳票ツール
  ・ Java用:JasperReports(iReport)・・・Ruby
                                   Ruby
                                   Rubyより利用可能
  ・ Ruby用:ThinReports(帳票エディタ、ビューア:PxDoc)
         オープンソースで㈱マツケイより提供(TPJ    TPJ
                                   TPJグループ企業)
         将来構想:HTML5ビューア開発・PDF化機能



              Copyright(c)2011 Techno Project. Co., Ltd. All Rights Reserved.   18
繰り返し回数の最適化
         繰り返し頻度のグラフ                          最少:プロト開発
                                                設計工程での実画面相当の画面を
     高
                                                作成し、顧客確認(操作性)
 業               少                      最少      1回(設計+実装)
 務                                           少 :スパイラル開発、サブシステム単位
 ノ                                              設計1回 → 実装2~3回
 ウ                           少                  基本設計1回
 ハ           多                                   → 2~3回(詳細設計+実装)
 ウ
 習                   多                            ※1回目は主要画面中心
 熟                                           多 :アジャイル開発
                                        少       基本設計1回
 度
                                                  → n回(詳細設計+m回(実装))
                                                      (           (   ))
     低    最多             多
                                             最多: “無謀”
                                                  “   ”
                                                     
         低                                 高
                                             ※ 実装:プログラミング・テスト・結合テスト+顧客確認
          プロジェクトチームの開発経験度
         (Ruby/Railsアプリ、新技術を含む)

第三の軸         顧客要件や利用者ニーズの変化のスピード
                変化の速いネットビジネスなどは、変化を吸収するフェーズ(繰り返し)を当初計画に盛り込む

                     Copyright(c)2011 Techno Project. Co., Ltd. All Rights Reserved.   19
新システム分野への展開
Ruby業務システム開発
  ・初期コストが少ない・・・全てオープンソースで構築できる(DBも)
  ・テストが容易である・・・Rails + アジャイル ⇒ 短期繰り返し開発


非定型の業務へ
  ・EXCELを使った統計分析の報告業務・・・担当者の交替により継続性がなくなる
     定期的な報告時の基礎データをシステム化し、継続性のある報告(質の向上)
  ・エビデンスのための定期的な記録作成
     点検・ヒアリング(装置類・システム・プロジェクト・組織・企業)をシステム化し、
     時系列分析や情報の見える化が可能
  ・基幹の業務から外れたもの
     トラブル報告、問題点管理、派遣社員の作業時間管理、・ ・ ・



        的確な指示・指導・改善へ
      (ホワイトカラーの生産性向上)
            Copyright(c)2011 Techno Project. Co., Ltd. All Rights Reserved.   20
システム提供側の変革
イノベーション  Rubyアジャイル開発を業務システムに適用

顧客創造   これまで、システム化の対象範囲から外れていたものを
         システム化の新分野として、新しい顧客を創り出してくれる。



ビジネス拡大
        オープンソースの活用技術(リテラシー)
          アジャイルによる業務システム開発
          新システム分野へのチャレンジ



         Copyright(c)2011 Techno Project. Co., Ltd. All Rights Reserved.   21
  Rubyの広がり
 ①米国で認められた製品の逆輸入(海外で認知)
 ②競争激化によるコストダウン要求
   有償ソフトから無償あるいは低価格ソフトへ
   OSから言語まで、すべてのミドル製品がオープンソースで揃う
 ③国の支援(世界で通用する国産技術)
   経済産業省(IPA)や総務省の支援
    国・地方自治体での調達指針
     2006
     2006
     2006年総務省ガイドライン:オープンな標準製品
           ⇒ 2011 3月 JIS 完了
             2011
             2011年3  JIS
                     JIS化
 ④C/SシステムをWeb化するタイミング ⇒ クラウドサービスの時代

 ⑤ Ruby/Railsの業務システム開発標準
           Copyright(c)2011 Techno Project. Co., Ltd. All Rights Reserved.   22
Copyright(c)2011 Techno Project. Co., Ltd. All Rights Reserved.   23

More Related Content

PDF
AgileJapan2010 官公庁でも取り組み始めたアジャイル! 山形県庁
PDF
C14_ひとつのdbでは夢を現実に変えられない!Human Dreams.Make IT Real by 石川太一
PDF
C#の強み、或いは何故PHPから乗り換えるのか
PDF
RWC2012(ワコムアイティ&テクノプロジェクト)
PDF
【17-E-6】クラウド環境下で実現する本格的な帳票開発と運用
PDF
元気が出るチケット駆動開発 - 補完型TiDDの経験 - @XP祭り関西2010
PDF
100714 Enterprise Front-end Integration
PDF
アダプタブル・ウォーターフォール開発の事例 ~想定外の作業はチケットで補完せよ!~
AgileJapan2010 官公庁でも取り組み始めたアジャイル! 山形県庁
C14_ひとつのdbでは夢を現実に変えられない!Human Dreams.Make IT Real by 石川太一
C#の強み、或いは何故PHPから乗り換えるのか
RWC2012(ワコムアイティ&テクノプロジェクト)
【17-E-6】クラウド環境下で実現する本格的な帳票開発と運用
元気が出るチケット駆動開発 - 補完型TiDDの経験 - @XP祭り関西2010
100714 Enterprise Front-end Integration
アダプタブル・ウォーターフォール開発の事例 ~想定外の作業はチケットで補完せよ!~

Similar to Rubyが切り開くイノベーション (20)

PDF
RWC2012(松江市&テクノプロジェクト)
PDF
スキニーなシステム開発にぴったりの契約形態
PDF
Hadoop Conference Japan 2009 - NTT Data
PDF
20100520 【qpstudy01】 チームでトライ!インフラ構築のススメ
PDF
システム運用 (インフラ編)
PDF
チケット駆動開発の概要と体験談
PDF
第3回SIA研究会(例会)プレゼン資料
PDF
地方企業がソーシャルゲーム開発を成功させるための10のポイント
PDF
事例でわかるBIGLOBEクラウドホスティング
PDF
【17-E-2】分散されたデータをいかに統合するのか 
PDF
経営を支えるIT部門実現の記録2005
PDF
Agile 459 | 11/17 資料
PDF
[INSIGHT OUT 2011] C23 「RDBMS」はコモディティーかする?クラウド環境に対応する実装とは(Goto)
PDF
uniPaaS SaaSビジネス
PDF
Amazon Web Servicesブース:UI×API×AWS 横田 聡
PDF
uniPaaS First Step
PDF
Company Introduction(会社案内)
PDF
Agile japan2010 rakuten様プレゼン資料
PDF
Intalio japan special cloud workshop
PDF
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏
RWC2012(松江市&テクノプロジェクト)
スキニーなシステム開発にぴったりの契約形態
Hadoop Conference Japan 2009 - NTT Data
20100520 【qpstudy01】 チームでトライ!インフラ構築のススメ
システム運用 (インフラ編)
チケット駆動開発の概要と体験談
第3回SIA研究会(例会)プレゼン資料
地方企業がソーシャルゲーム開発を成功させるための10のポイント
事例でわかるBIGLOBEクラウドホスティング
【17-E-2】分散されたデータをいかに統合するのか 
経営を支えるIT部門実現の記録2005
Agile 459 | 11/17 資料
[INSIGHT OUT 2011] C23 「RDBMS」はコモディティーかする?クラウド環境に対応する実装とは(Goto)
uniPaaS SaaSビジネス
Amazon Web Servicesブース:UI×API×AWS 横田 聡
uniPaaS First Step
Company Introduction(会社案内)
Agile japan2010 rakuten様プレゼン資料
Intalio japan special cloud workshop
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏
Ad

Rubyが切り開くイノベーション