第 19 回 スクエア free セミナー 東 京 日 本 橋 久 松 町 区 民 会 館 COBOLエンジニアをRubyエンジニアに! ~ Ruby 業 務 システム 開 発 ~ 2012 年 5 月 25 日 株 式 会 社 テクノプロジェクト 代 表 取 締 役 社 長 吉 岡 宏 Copyright(c)2012 TechnoProject.Inc. All Rights Reserved. 1
テクノプロジェクトの 概 要 1984(S59) 年 設 立 富 士 通 40% 山 陰 中 央 テレビ40% 山 陰 合 同 銀 行 10% 本 社 : 島 根 県 松 江 市 売 上 2011 年 度 33.8 億 ( 内 : 機 器 2.0 億 ) 社 員 数 190 名 主 なソリューション 自 主 ビ CIMA(クリニック 小 病 院 療 養 型 病 院 向 け 電 子 カルテ) 医 療 ネット グループ 企 業 Ruby 開 発 ( 業 務 系 ) 地 域 の 製 造 業 サービス 業 向 けソリューション 開 発 ( 株 )マツケイ FCA 会 員 1975(S45) 年 設 立 2003 年 : 全 株 式 取 得 データセンター データパンチ システム 開 発 社 員 数 120 名 Copyright(c)2012 TechnoProject.Inc. All Rights Reserved. 2
Rubyへの 取 り 組 み 2007 年 1 月 :Ruby 開 発 へ 参 加 決 定 3 月 :Ruby 勉 強 会 開 催 (Rails) 7 月 :IPA 自 治 体 向 け 業 務 システムの 実 証 実 験 採 択 (7 千 万 ) 高 額 合 算 ( 松 江 市 ) 2008 年 IPAのRuby 調 査 事 業 施 設 予 約 など 2009 年 地 域 企 業 向 けシステム 開 発 県 の 部 局 システム 県 外 IT 企 業 支 援 教 育 コース マツケイ: 県 の 先 進 開 発 補 助 : 帳 票 エディターThinReports 2010 年 地 域 企 業 向 けシステム 開 発 県 の 部 局 システム 医 療 機 関 の 管 理 システム 県 の 先 進 開 発 補 助 :アジャイル 開 発 ( 製 造 業 ) 2011 年 松 江 市 )MISALIO 周 辺 システム 県 の 部 局 システム( 予 算 編 成 ) 教 育 コース 2012 年 全 県 医 療 ネットワーク 島 根 県 ) 予 算 編 成 Ruby 開 発 推 進 室 社 内 の 開 発 ノウハウの 蓄 積 と 活 用 開 発 標 準 作 成 2012 終 了 Copyright(c)2012 TechnoProject.Inc. All Rights Reserved. 3
Ruby 業 務 システム 開 発 の 実 績 2007 年 度 IPA 公 募 事 業 医 療 介 護 の 高 額 合 算 システム( 松 江 市 殿 ) 住 民 記 録 システム 国 民 健 康 保 険 システム ( 医 療 保 険 ) 後 期 高 齢 者 システム ( 医 療 保 険 75 歳 以 上 ) 介 護 保 険 システム 既 存 業 務 システム (メインフレーム C/S) 住 民 異 動 情 報 自 己 負 担 額 資 格 情 報 支 給 額 情 報 自 己 負 担 額 資 格 情 報 支 給 額 情 報 自 己 負 担 額 資 格 情 報 支 給 額 情 報 医 療 介 護 高 額 合 算 システム Ruby 開 発 システム 窓 口 業 務 内 部 処 理 市 民 相 談 支 援 申 請 受 付 証 明 書 発 行 など 自 己 負 担 額 合 算 支 給 決 定 支 払 い 登 録 口 座 振 替 情 報 など 大 量 テ ータ 処 理 精 度 の 高 い 帳 票 印 刷 再 印 刷 やヘ ーシ 指 定 印 刷 バッチ 処 理 環 境 Copyright(c)2012 TechnoProject.Inc. All Rights Reserved. 4
Ruby 業 務 システム 開 発 の 実 績 2007 年 IPA( 情 報 処 理 推 進 機 構 ) 実 証 事 業 IPAオープンソフトウェアセンターがRuby/Railsを 基 幹 業 務 に 適 用 する 実 証 事 業 を 実 施 松 江 市 殿 ) 医 療 介 護 高 額 合 算 システム ( 日 本 初 :バッチ 処 理 を 含 む 基 幹 業 務 全 体 ) 約 50 人 月 2007.9~2008.3 オン:14 本 バッチ:24 本 業 務 開 発 チーム:6 名 テクノプロジェクト マツケイ 共 通 技 術 チーム:3 名 ネットワーク 応 用 通 信 研 究 所 Copyright(c)2012 Techno Project. Inc.. All Rights Reserved. 5
Railsでも C/Sシステムと 同 様 なキメ 細 かな 画 面 窓 口 に 市 民 が 来 た 時 の 対 応 ( 上 段 : 申 請 者 情 報, 中 段 : 受 給 履 歴 下 段 : 申 請 内 容 ) Copyright(c)2012 TechnoProject.Inc. All Rights Reserved. 6
メインフレームのオンライン 構 造 端 末 オ ン ラ イ ン 制 御 主 プ ロ 業 務 処 理 業 務 処 理 業 務 処 理 DB アクセス ルーチン データ ベース ネットワークDB メッセージ 振 り 分 け 多 重 端 末 多 重 会 話 画 面 定 義 体 画 面 定 義 体 画 面 定 義 体 クラサバ3 階 層 開 発 プレゼンテーション 層 アプリケーション 層 データベース 層 RDB Copyright(c)2012 TechnoProject.Inc. All Rights Reserved. 7
Webアプリ(Railsシステム 構 造 ) Ruby on Rails ( 機 能 分 割 :モテ ル ヒ ュー コントローラ) 端 末 W E B サ バ Apache R A I L S 制 御 コントローラ コントローラ コントローラ 業 務 処 理 業 務 処 理 業 務 処 理 ビュー ビュー ビュー 画 面 画 定 面 義 定 体 義 体 画 面 定 義 体 モデル Active Record データ ベース MySQL Ruby on Rails M:モデル(DBマクロ) 検 索 挿 入 更 新 削 除 のSQL( 一 部 業 務 処 理 を 含 む) V:ビュー( 画 面 定 義 ) HTML ヘルパー HTMLエテ ィター(Webテ サ イナ) C:コントローラ(オンライン 制 御 業 務 処 理 ) 業 務 ロジック Copyright(c)2012 TechnoProject.Inc. All Rights Reserved. 8
開 発 標 準 :COBOLerの 復 活 (2007~) ベテランSE(COBOLer)がWebシステムの 開 発 に 参 加 できる 1ウォータフォール 開 発 ( 設 計 製 造 テスト) 2 厳 格 なコーディング 規 約 (Rubyの 自 由 度 をなくす) 3 日 本 語 のDB 項 目 名 称 ( 設 計 書 とソースの 見 易 さ) 4SQL 記 述 ( 判 り 易 さ 但 し 便 利 な 部 品 が 使 えない) 5バッチ 処 理 も 同 一 言 語 で 開 発 6 構 造 化 設 計 ( 業 務 ロジック 重 視 従 来 のト キュメント 類 ) 7 少 ない 部 品 ( 少 量 の 部 品 から 始 める 覚 え 易 さ) 8 画 面 定 義 (HTML)は 専 任 化 :Webテ サ イナー 9クラス 設 計 :テーフ ル 毎 の 業 務 ロシ ックを 含 めたアクセスルーチン COBOLer 向 けRuby/Rails 教 育 コース by テクノプロジェクト Copyright(c)2012 Techno Project. Inc.. All Rights Reserved. 9
COBOLエンジニア 向 けRuby 教 育 (1) ネック オブジェト 指 向 の 概 念 が 判 らない(クラス メソッド 継 承 ) サブルーチン( 外 部 ライブラリィ)が 膨 大 命 令 が 多 い( 業 務 システムでは 不 要 な 物 が 多 い: 文 字 列 操 作 ) Rails Webアプリの 構 造 仕 組 みが 判 らない COBOLエンジニア 向 けRuby 開 発 入 門 (Ruby 編 ) COBOLコーディングとの 比 較 言 語 の 基 礎 メソッド 変 数 定 数 配 列 予 約 語 1 日 コース 演 習 問 題 社 員 台 帳 ファイル CSV 部 門 別 社 員 台 帳 Rubyプログラム CSV 所 属 資 格 情 報 ファイル CSV 入 力 データ 読 み 込 み 読 み 込 み 終 了 判 定 件 数 カウンタ 入 力 データ 配 列 マッチングキーの 判 定 繰 り 返 し 処 理 ファイル 出 力 数 値 計 算 Copyright(c)2012 Techno Project. Inc.. All Rights Reserved. 10
COBOLエンジニア 向 けRuby 教 育 (2) COBOLエンジニア 向 けRuby 開 発 入 門 (Ruby on Rails 編 ) 1 日 コース 開 発 環 境 (フォルダ プロジェクト ソースコード) DB(データベース 作 成 DB 操 作 コマンド DBアクセスルーチンActiveRecord) Webアプリの 構 造 Railsの 仕 組 み(コントローラとビュー) 演 習 問 題 自 動 生 成 機 能 で 作 成 したM V Cの 修 正 ( 機 能 追 加 ) 見 やすい 多 機 能 な 画 面 の 作 成 スタイルシート 画 面 の 細 かな 制 御 ( 項 目 の 入 力 抑 制 色 変 更 数 値 編 集 日 付 編 集 など) 通 常 のRuby Ruby on Railsの 研 修 を 受 講 する 当 初 のネックが 解 消 された 状 態 オブジェクト 指 向 の 特 徴 を 活 かしたWebアプリの 開 発 スキルを 習 得 できる Copyright(c)2012 Techno Project. Inc.. All Rights Reserved. 11
開 発 標 準 への 不 満 面 白 くない!! アジャイル 開 発 新 しい 便 利 なものが 使 えない ライブラリィ ツール 製 造 業 の 製 造 機 器 管 理 システム スクラムの 伝 道 師 による 指 導 島 根 県 の 公 募 事 業 ( 半 額 補 助 ) 熱 い 集 団 ==> 開 発 の 楽 しさ 新 しいことへのチャレンジ 英 文 サイトの 調 査 ( 米 国 発 信 の 情 報 が 多 い) でも 全 てのエンジニアが 出 来 ることではない アジャイルは 少 人 数 のチームだから 出 来 る Copyright(c)2012 Techno Project. Inc.. All Rights Reserved. 12
スプリントプランニング Copyright(c)2012 Techno Project. Inc.. All Rights Reserved.
タスクボード Copyright(c)2012 Techno Project. Inc.. All Rights Reserved.
スプリントバーンダウンチャート Copyright(c)2012 Techno Project. Inc.. All Rights Reserved.
スプリントレビュー Copyright(c)2012 Techno Project. Inc.. All Rights Reserved.
ペアワーク Copyright(c)2012 Techno Project. Inc.. All Rights Reserved.
リリースふりかえり 時 系 列 に KPT スプリントバーンダウンチャート 取 り 入 れたプラクティス などを 壁 に 貼 り 良 かったこと/ 悪 かったこと をふりかえった Copyright(c)2012 Techno Project. Inc.. All Rights Reserved.
開 発 標 準 :コストダウン(2010~) アジャイル+ 業 務 システム 開 発 + 請 負 契 約 開 発 手 法 1 開 発 方 式 とドキュメント 2 開 発 チーム 3テスト 駆 動 開 発 4ソースレビューとペアプログラミング ツール 5プロジェクト 管 理 開 発 ツール 6 外 部 ライブラリィの 活 用 7 帳 票 作 成 ツール 参 考 業 務 システム (ここでの 想 定 ) 業 務 処 理 が 複 雑 ( 処 理 手 順 が 多 階 層 化 している 例 外 がある) きめ 細 かな 帳 票 (チェック 用 管 理 用 お 客 様 用 ) 他 システム 連 携 Copyright(c)2012 TechnoProject Inc, Ltd. All Rights Reserved. 19
開 発 手 法 1 開 発 方 式 とドキュメント (1) 設 計 :ウォーターフォール 業 務 システムは 一 般 的 に 制 度 法 律 慣 習 が 詰 まった 複 雑 なもの DBアクセスでは 多 くの 更 新 系 処 理 が 発 生 する イレギュラー 処 理 設 計 が 重 要 特 にDB 設 計 最 終 ト キュメント:メンテナンス 手 引 書 として 整 備 ( 含 む 納 品 物 ) 構 成 品 管 理 表 基 本 設 計 書 詳 細 設 計 書 操 作 運 用 マニュアル 開 発 途 中 は ホワイトボードのデジカメ 化 でもOK (2) 実 装 (PG 設 計 ~ 結 合 テスト):アジャイル= 素 早 く 繰 り 返 し 繰 り 返 しの 中 で 早 め 早 めの 顧 客 確 認 ( 満 足 度 )と 開 発 チームの 整 合 性 確 認 顧 客 リリースは2~3カ 月 の 単 位 で 段 階 的 に 行 う 実 装 は2~3 週 単 位 に 進 捗 と 品 質 の 確 認 を 行 う 参 考 COBOLでは 全 工 程 (100%) 設 計 工 程 ( 基 本 設 計 詳 細 設 計 ) 30% 製 造 工 程 (PG 設 計 プログラミング 単 体 テスト) 40% テスト 工 程 ( 結 合 テスト 総 合 テスト 運 用 テスト 操 作 研 修 ) 30% Copyright(c)2012 TechnoProject.Inc. All Rights Reserved. 20
開 発 手 法 2 開 発 チーム 短 期 開 発 (1 年 以 内 ): 最 初 から 全 員 投 入 チームワーク コミュニケーション PGの 役 割 :SE 補 助 作 業 業 務 習 得 先 行 開 発 若 手 エンジニアの 業 務 ノウハウ 習 得 の 場 全 工 程 に 参 加 朝 会 (スタント アッフ ミーティンク ): 短 時 間 一 人 一 人 の 進 捗 と 予 定 の 報 告 ダイナミックな 作 業 割 り 振 り( 朝 会 で 調 整 前 提 : 全 員 が 同 一 な 業 務 ノウハウ) 複 雑 な 業 務 では 不 可 能 である Copyright(c)2012 TechnoProject.Inc. All Rights Reserved. 21
開 発 手 法 3テスト 駆 動 開 発 テスト 手 続 きの 登 録 & 自 動 テスト( 含 む テストテ ータ 登 録 ) 効 果 : 品 質 向 上 (テストの 自 動 化 +ソースの 最 適 化 リファクタリング) 単 体 機 能 テスト(ロジックの 内 部 仕 様 ) 評 価 : 生 産 性 と 効 果 より 活 用 :ホワイトボックステスト(モテ ル ヒ ュー コントローラ モシ ュール 単 位 ) 繰 り 返 し[ 1テストケース 登 録 ロシ ック 記 述 ( 数 ステッフ ) リファクタリング ] 機 能 テスト( 業 務 の 外 部 仕 様 ) 評 価 : 活 用 :ブラックボックステスト ユーザサイドのテスト レグレッションテストの 容 易 性 ライフサイクルでの 活 用 品 質 向 上 Copyright(c)2012 TechnoProject. Inc. All Rights Reserved. 22
開 発 手 法 4ソースレビューとペアプログラミング (1) 基 本 パターン ソースレビュー コーディング 規 約 遵 守 第 三 者 の 目 に 触 れることが 重 要 タイミングは 単 体 テストの 終 了 段 階 開 発 者 : 中 級 レベル 以 上 は 単 独 開 発 が 基 本 (2)オプション ペアプログラミング 開 発 者 : 初 級 レベル(Rails 初 心 者 新 入 社 員 アソシエイト 業 務 初 めて) 早 期 立 ち 上 げを 目 的 に 中 級 レベルのエンジニアがトレーナ 役 を 担 当 し つまづきを 最 小 化 する 初 心 者 が 質 問 しやすい 環 境 を 強 制 的 に 作 る Copyright(c)2012 TechnoProject. Inc. All Rights Reserved. 23
ツール 5プロジェクト 管 理 開 発 ツール Ruby:1.9 系 + Rails:3 系 Redmine 案 件 管 理 ToDo Subversion ソース 履 歴 管 理 (Redmineと 連 携 ) NetBeans 開 発 ツール(IDE+ソースエテ ィター) Cucumber 結 合 テストツール( 画 面 単 位 外 部 :ユーサ サイト テスト) 日 本 語 によるテスト 仕 様 記 述 Capistrano デプロイ( 本 番 環 境 への 更 新 モジュール 反 映 ) データベース 新 規 開 発 MySQL PostgreSQL 既 存 クラアントサーハ システムのWeb 化 Oracle SQLSeverの 継 続 使 用 複 合 キーのサポート 部 品 あり Copyright(c)2012 TechnoProject.Inc. All Rights Reserved. 24
ツール 6 外 部 ライブラリィの 活 用 便 利 な 部 品 の 活 用 (ネット 上 + 社 内 実 績 ) 部 品 の 活 用 度 に 応 じて 生 産 性 品 質 向 上 部 品 の 管 理 が 重 要 活 用 ノウハウ 逆 引 き 更 新 情 報 ライセンス(MIT) 実 績 プロジェクト 利 用 者 使 用 上 の 注 意 事 項 Ruby/Railsのハ ーシ ョン 等 例 :Pagenation 帳 票 画 面 の 一 覧 表 および 次 ページ 送 りの 部 品 ライブラリィ : GEMパッケージ Railsプラグイン 7 帳 票 ツール Ruby 用 :ThinReports( 帳 票 エテ ィタ 帳 票 作 成 ) オーフ ンソースで マツケイより 提 供 (TPJグループ 企 業 ) HTML5ヒ ューア 開 発 PDF 化 機 能 外 字 サポート 帳 票 作 成 ライブラリィ Copyright(c)2012 TechnoProject. Inc. All Rights Reserved. 25
2012 年 2 月 第 四 回 福 岡 Ruby 大 賞 で 大 賞 を 受 賞 オープンソース 帳 票 ツール : シンレポーツ 日 高 克 也 氏 Matsukei Open Source Center http://osc.matsukei.net/ 日 経 BPより Copyright(c)2012 TechnoProject. Inc. All Rights Reserved. 26
繰 返 し 回 数 の 最 適 化 業 務 ノ ウ ハ ウ 習 熟 度 繰 返 し 頻 度 ( 顧 客 リリース 回 数 ) 高 低 多 最 多 少 多 多 少 最 少 少 低 高 プロジェクトチームの 開 発 経 験 度 (Ruby/Railsアフ リ 新 技 術 を 含 む) 最 少 :プロト 開 発 設 計 工 程 で 実 業 務 相 当 の 画 面 を 作 成 し 顧 客 確 認 ( 操 作 性 ) 1 回 ( 設 計 + 実 装 ) 少 :スパイラル 開 発 サブシステム 単 位 設 計 1 回 実 装 2~3 回 基 本 設 計 1 回 2~3 回 ( 詳 細 設 計 + 実 装 ) 1 回 目 は 主 要 画 面 中 心 多 :アジャイル 開 発 基 本 設 計 1 回 n 回 ( 詳 細 設 計 +m 回 ( 実 装 )) 最 多 : 無 謀 実 装 :フ ロク ラミンク テスト 結 合 テスト+ 顧 客 確 認 第 三 の 軸 顧 客 要 件 や 利 用 者 ニーズの 変 化 のスピード 変 化 の 速 いネットビジネスなどは 変 化 を 吸 収 するフェーズ( 繰 り 返 し)を 当 初 計 画 に 盛 り 込 む Copyright(c)2012 TechnoProject.Inc. All Rights Reserved. 27
新 システム 分 野 への 展 開 Ruby 業 務 システム 開 発 初 期 コストが 少 ない 全 てオープンソースで 構 築 できる(DBも) テストが 容 易 である Rails + アジャイル 短 期 繰 り 返 し 開 発 非 定 型 の 業 務 へ EXCELを 使 った 統 計 分 析 の 報 告 業 務 担 当 者 の 交 替 により 継 続 性 がなくなる 定 期 的 な 報 告 時 の 基 礎 データをシステム 化 し 継 続 性 のある 報 告 ( 質 の 向 上 ) エビデンスのための 定 期 的 な 記 録 作 成 点 検 ヒアリング( 装 置 類 システム プロジェクト 組 織 企 業 )をシステム 化 し 時 系 列 分 析 や 情 報 の 見 える 化 が 可 能 基 幹 の 業 務 から 外 れたもの トラブル 報 告 問 題 点 管 理 派 遣 社 員 の 作 業 時 間 管 理 非 定 型 業 務 のシステム 化 による 生 産 性 業 務 品 質 の 向 上 Copyright(c)2012 TechnoProject Inc. All Rights Reserved. 28
http://www.tpj.co.jp Copyright(c)2012 TechnoProject Inc. All Rights Reserved. 29