« 2015年1月 | トップページ | 2015年3月 »

2015年2月

2015/02/26

ITに係る全般統制とDevOpsの緊張関係

アジャイル開発に慣れている人から見ればDevOpsなんて当たり前に見えるが、DevOpsを阻む障壁として「ITに係る全般統制」がある。
ITに係る全般統制とDevOpsは真っ向から対立する概念と捉えた方がいいのではないか、と最近考えている。
以下メモ。

【参考】
開発と運用の新しい関係、「DevOps」とは何か? - Publickey

全般統制,業務処理統制[ITの統制]

海外会計税務用語 :総合型税理士法人山田&パートナーズ|東京,関西,名古屋,福岡の総合税理士事務所

【DevOpsが変える開発と運用[#1]】 DevOpsは開発と運用の分離と対立するのか?:情報インフラ24時 眠らないシステム:ITmedia オルタナティブ・ブログ

【DevOpsが変える開発と運用[#3]】運用が権威的になると開発のやる気が損なわれる:クックパッドのチャレンジ:情報インフラ24時 眠らないシステム:ITmedia オルタナティブ・ブログ

【DevOpsが変える開発と運用[#2]】 開発と運用のコラボレーションはそこにあるか:日本CAの提案:情報インフラ24時 眠らないシステム:ITmedia オルタナティブ・ブログ

(2) 最近「DevOps」という言葉を目にすることが多くなりました。... - オージス総研グループ ビジネスイノベーションセンター

クラウド&DevOps時代の運用をZabbixで(1):クラウド&DevOps時代に求められる運用とは~Zabbixが有効な理由 (1/2) - @IT

【0】DevOpsという概念は、アジャイル開発なら当たり前だ。
チームを形成するメンバーは、プログラマであろうが、インフラ担当者であろうが、顧客に価値を届けるために、システムを完成させ、リリースさせる。
一つのゴールに向かって作業するからには、己の役割を超えた作業もいとわない。

以前の僕は、開発担当者として、アプリの運用も障害対応も夜間対応も対応していたから、DevOpsの概念はなんて当たり前なのだろう、別に必要ないのでは、と思っていた。
むしろ、DevOpsを支えるツール群であるZabbixやChefなどに興味があった。

【1】しかし、J-SOXに基づく「ITに係る全般統制」を厳格に守っているシステム運用の現場を見て、DevOpsの概念が必要と言われる理由がようやく分かった。

「ITに係る全般統制」を厳格に守る場合、開発担当者と運用担当者は明確に分離される。
双方の役割を一人の担当者が兼務して作業することはありえない。

開発担当者は、システムをリリースする準備までのフェーズが担当であり、運用担当者にリリースモジュールとリリース手順書を運用担当者に引き渡すことで作業を終える。
その後の運用は、運用担当者の作業になる。
開発担当者は、基本は本番環境に入れないし、本番環境のデータやシステムを更新することも認められない。

「ITに係る全般統制」を盾にしてシステム運営すると、開発担当者はシステムを作ることしか頭が回らなくなり、リリース後のことは何も考えなくなる。
ログファイルにどんなメッセージを出して運用を楽にすべきか、障害対応時はどんな手順でバッチをリランすべきか、ということまで考えなくなる。

一方、運用担当者は、インフラの運用だけでなく、アプリ運用に近い作業まで負担するようになる。
でも、アプリを開発していないから、アプリ障害の詳細は分からないし対応できない。
結局、ユーザからクレームを受けたものの、SLAを満たすことができず、障害発生から業務を停止させる時間がどんどん長引いてしまう。

開発組織と運用組織が、一つの会社でサイロ組織になってしまい、かみ合わなくなるのだ。
そして、日本の現場でよくありがちな例としては、開発チームも運用チームも互いにディフェンシブな作業スタイルになってしまい、どちらも責任のなすりつけに発展してしまう。

【2】J-SOXに基づく「ITに係る全般統制」が法律として定められている限り、「DevOpsは開発チームと運用チームを解散して、一つのチームにまとめることだ」という主張は実現できない。

開発チームと運用チームが一体化してしまうと、不正な本番環境への変更を抑止するための牽制機能が効かなくなる。
特に昨今は、個人情報の流出やセキュリティリスクが高まっているので、本番環境へのアクセス管理を性善説で運用することはありえないだろう。

【3】では、開発チームと運用チームが相互牽制しあうようなスタイルを残したまま、DevOpsは実現できるのか?

その解決方法は、リリース作業やシステム運用をツールで自動化することで解決できるわけではない。
ツールの自動化は手段の一つに過ぎず、「開発組織と運用組織が一つの会社でサイロ組織になっている」という根本問題を解決しない。

その根本問題を解決するには、お互いの組織のコミュニケーションを行き来しやすくする方向しかありえない。

一つの方法としては、【DevOpsが変える開発と運用[#3]】運用が権威的になると開発のやる気が損なわれる:クックパッドのチャレンジ:情報インフラ24時 眠らないシステム:ITmedia オルタナティブ・ブログのように、開発チームと運用チームの体制は残すものの、担当者を定期的に双方のチームにシフトさせる方法がある。
そうすれば、双方を経験した担当者が多いほど風通しも良くなるし、要員変動にも耐えられる。

でも、本番環境への不正アクセスの防止という観点では、開発・運用の双方を経験した担当者を増やすことは矛盾しているのかもしれない。

個人的には、ITに係る全般統制とDevOpsには緊張関係があり、その根本問題である「開発チームと運用チームの相互牽制とサイロ化」に決定的な有効な解決方法はないのでは、と思ったりする。
さらに考えてみる。

| | コメント (0)

2015/02/22

第12回#RxTstudy勉強会 「ITS活用最前線 〜現場からの実践報告〜」 (03月21日) #RxTstudy を開催します

第12回#RxTstudy勉強会 「ITS活用最前線 現場からの実践報告」 (03月21日) #RxTstudy を開催します。

今回の勉強会は、「入門Redmine 第4版」出版記念、SQiP2014やSPES2014でRedmineの導入事例を講演された方々(赤羽根さん、陸野さん)をお呼びしますので、内容も盛り沢山です。
Redmineやチケット駆動開発、ITSやBTSによるプロジェクト管理に興味のある方は是非ご参加下さい。

【リンク】
RxTStudy #12 「ITS活用最前線 現場からの実践報告」 - RxTStudy~Redmineとタスクマネジメントに関する勉強会 | Doorkeeper

RxTStudy #12 「ITS活用最前線 〜現場からの実践報告〜」

【概要】
第12回 RxTstudyを開催します。

関西圏でプロジェクト管理ツール「Redmine」でのタスク管理にフィーチャーした勉強会を開催しています。
※「Redmine」以外の「プロジェクト管理ツール」「ITS(タスク管理システム)」を含みます。
Redmine を触ったことがない方も、チケット駆動バリバリという方も
プロジェクト、タスク遂行をより良くするための情報共有の場としてふるってご参加ください。
公式サイト : https://sites.google.com/site/rxtstudy/
FaceBook : https://www.facebook.com/RxTstudy

【タイムスケジュール】

今回は、Redmine.jpでお世話になっている書籍「入門Redmine 第4版」著者前田剛様、SQiP2014でRedmineの導入を発表された赤羽根州晴様、多様なプロジェクト管理の発表でSPES2014ベストプレゼンテーション賞を受賞された陸野 礼子様をお迎えし、「現場でのRedmine活用事例」をテーマにセッション・LT・パネルディスカッションを行います。

12:40-13:00 受付
13:00    オープニング
13:10-13:50 講演1

 事例から探る、Redmineの機能とよりよい運用
 ファーエンドテクノロジー株式会社 前田剛様

13:50-14:00 休憩
14:00-14:40 講演2

 「効率、品質、統制」の共通課題に着目した現場主導によるITS導入の効果検証
 株式会社島津ビジネスシステムズ 赤羽根州晴様

14:40-14:50 休憩
14:50-15:30 講演3

 多様なプロジェクト管理の課題に対するツールの適用 ~Redmine の活用事例~
 AVCテクノロジー株式会社 陸野礼子様

15:30-15:40 休憩
15:40-17:00 パネルディスカッション

 テーマ「組織に応じたRedmineの運用法」
 モデレーター:あきぴーさん
 パネラー:前田様、陸野様、赤羽根様

17:00-17:05 休憩
17:05-17:40 LT 3名

 Redmineはキャズムを超える 株式会社SRA 阪井誠様
 Redmineプラグイン Lychee シリーズの新作発表 株式会社アジャイルウェア 川端光義様
 RedmineとExcelを使ってCCPMっぽい事をしてみる 株式会社アスタリスク  野村昌由様(@nmrmsys)

17:40-17:50 閉会

【セッション詳細】

講演1 事例から探る、Redmineの機能とよりよい運用

ファーエンドテクノロジー株式会社 前田剛様
Redmine公式サイト (www.redmine.org) およびRedmineを顧客サポートや月次の事務処理に利用しているケースでの運用事例から、各機能の使いこなしやより一層活用するための運用パターンを探ります。

講演2 「効率、品質、統制」の共通課題に着目した現場主導によるITS導入の効果検証

株式会社島津ビジネスシステムズ 赤羽根州晴様
株式会社島津製作所グループの基幹業務システムの開発運用(100種、200名)の現場において、IT統制水準とシステム品質の向上を目的としたRedmine(以降、ITS)の全面導入を行い、2012年7月にRxTstudyで発表しました。その後、通算5年分のITS運用結果(14万チケット)の定量・定性分析に基づいて導入効果を検証したところ、各種要求の実現、管理手順の有効な定着、低負荷の工数管理、多重管理の無駄をなくす、という効果が確認できたのでコミュニティにご紹介します。(本発表はソフトウェア品質シンポジウム(SQiP2014)に採録された経験論文 を基にした内容です)

講演3 多様なプロジェクト管理の課題に対するツールの適用 ~Redmine の活用事例~

AVCテクノロジー株式会社 陸野礼子様
ソフトウェア開発管理は、プロジェクトの目的や成果物によってプロセスや管理手法が変化します。
プロジェクト管理のツールは数多く存在しますが、その中でも、Redmineは、障害管理だけでなく、タスク(作業)管理、情報共有も行える汎用性の高いツールです。
弊社においては、その柔軟性を活用し、不具合管理やプロジェクトの進捗管理など様々なプロジェクトに対応してまいりました。それらの事例をご紹介いたします。

パネルディスカッション

「組織に応じたRedmineの運用法」をテーマに 120 分ほどを予定しています。

LT

Redmineはキャズムを超える 株式会社SRA 阪井誠さん
Redmineプラグイン Lychee シリーズの新作発表 株式会社アジャイルウェア 川端光義さん
RedmineとExcelを使ってCCPMっぽい事をしてみる 株式会社アスタリスク 野村昌由さん(@nmrmsys)
進捗率なんて無かったんや!、信じるのはあと何時間で終わるかのみ
如何にして私は%で進捗報告をするのを止めて、CCPMしたくなったのか
チケット駆動開発を運用して行くしんどさって、あるよね~

| | コメント (0)

「実験的アプローチによる改善活動」の記事のメモ

「実験的アプローチによる改善活動」の記事がとても参考になるのでメモ。

【参考】
第162回 実験的アプローチによる改善活動(全4回の第1回)|SQiP:Software Quality Profession

第163回 実験的アプローチによる改善活動(全4回の第2回)|SQiP:Software Quality Profession

パイロット開発にAgile開発のアイデアを適用した事例~実験的アプローチ #JaSST_Kansai: プログラマの思索

実験的アプローチによる現場改善~JaSSTソフトウェアテストシンポジウム-JaSST'13 Kansai

akipiiさんはTwitterを使っています: "同感。手段が問題を具現化する。特にITはそう。「ある手段を知らない状態では、課題と感じないような部分が、実は大きく改善できるポイントがあるケースが多いから」第163回 実験的アプローチによる改善活動(全4回の第2回)http://t.co/oya8EMekoB"

【1】(引用開始)
よく、「手段を目的化してはだめだよ」と言われます。私は、それは正しいと考えていますが、「最初にまず目的を考えて、それに合った手段を考えなければならない」か、と言うと、必ずしもそうではないと考えています。
なぜかというと、ある手段を知らない状態では、課題と感じないような部分が、実は大きく改善できるポイントである場合があるからです。

実験的アプローチによる改善活動では、日常的になるべく多くの「筋が良い手段」を効率良く収集することと、反復活動の中で小さな課題を抽出することで、日々の活動の中で、「あ、前に収集した手段で改善できる課題がありそうだ」「あ、今課題になっていることに、あの手段が使えそうだ」というように、なるべく小さな粒度で課題と手段を相互に結び付けます。
(引用終了)

新しいツール、道具、手法を知ることで、新たな問題や課題を感じ取り、その課題を解決できるように手段を適用していくやり方は、僕は好きだ。
IT業界の技術革新の流れを振り返れば、このパターンによる解決がかなり多いのではないか、と思う。

【2】僕の経験としては、RedmineやTestLinkを使いこなすことで、アジャイル開発やテスト管理で感じていた諸問題に適用できる!と気づいて、色々試すことができた。

オープンソースのツールは、簡単に試せるし、中身のソースも読めるから自分なりに改造もできる。
また、ツールのコミッタと議論すれば、自分が抱えている問題を解決するような機能改善を実現してくれる場合もある。
さらに、オープンソースのツールを使う人達と議論すれば、新たな利用シーンで別の問題を解決してくれる事例に気づかせてくれる。

実際、RedmineやTestLinkのコミュニティで議論して、色んな機能が改善された場合もあったし、Redmineをこんなシーンで使うのか!という気付きを得た時もあった。

僕は、オープンソースのツールを使って、業務プロセスやソフトウェア開発プロセスを改善ないし変革する手法が好きだ。
ソフトウェアは単なるツールではない。
ソフトウェアを導入すれば、運用が変わり、不要な人員や役割が削除されて組織も変わり、人の行動すらも変わっていく。

プログラミングだけでなく、作ったシステムが人に影響を与えて、人の行動や価値観すらも変えてしまう所にすごく興味がある。

【3】そんな経験を踏まえて、僕が今考えているアイデアはいくつかある。
一つは、Redmineというツールを色んな角度で分析することで、どのような方向へ発展すべきか、という問題意識を持っている。

Redmineが今後発展する方向のアイデア: プログラマの思索

もう一つは、ERPやCRMのオープンソースのツールを使いこなすことで、中小企業向けの業務に適用して、業務の効率化や業務改革を行えないか、という問題意識がある。

オープンソースの業務アプリケーションを組合せてERPを構築するアイデア: プログラマの思索

ERPはなぜ難しいのか?~オープンソースERPで業務改革を試したい: プログラマの思索

オープンソースCRM「vtigerCRM」の資料: プログラマの思索

この辺りも試してみたいと思っている。

【追記】
残り2回の記事も公開されている。
第3回の記事では、原因結果グラフとテスト駆動開発の組合わせに関する実験結果も書かれていて、非常に興味深い。

第164回 実験的アプローチによる改善活動(全4回の第3回)|SQiP:Software Quality Profession

第165回 実験的アプローチによる改善活動(全4回の第4回)|SQiP:Software Quality Profession

| | コメント (0)

2015/02/21

第39回IT勉強宴会の感想~花束を作る花屋の業務モデルをT字形ERと三要素分析法で比較する

第39回IT勉強宴会に参加してきた。
大阪にDOAの一流モデラーが集まり、お互いのモデルを見せて、議論するというイベント。
聞いた内容を元に、感想をラフなメモ書き。
間違っていたら後で直す。

【参考】
第39回IT勉強宴会in大阪 : ATND

花束問題のしおり

花束問題V1.2

[#benkyoenkai] WHATとHOWの溝をモデルでつなぐ - 三要素分析法を考える -: ソフトウェアさかば

競演モデリング発表会<第39回IT勉強宴会in大阪> | IT勉強宴会blog

PHPメンターズ -> IT勉強宴会「競演モデリング」の感想

nmrmsysさんはTwitterを使っています: "今回もエコまっしぐら省エネ感想ブログをキメたw ”第39回IT勉強宴会in大阪 競演モデリング発表会” http://t.co/YNoSvkkT7x #benkyoenkai"

【0】花束を作る花屋の業務モデルの意図

【0-1】上記のリンクに花束を作る花屋の業務用件が詳しく記載されている。
その問題は、佐野さんと渡辺さんが10年前に、MRPの初歩的事例として作ったものらしい。

つまり、BOM(部品表)を元に製造計画を作り、その計画を元にいつどれだけのモノが必要なのか、そしてモノの在庫はどのように管理すれば良いのか、を提示する問題として作った、とのこと。
すなわち、渡辺さんが提唱する在庫管理推移方式の事例として問題を作ったらしい。

その観点で花束を作る花屋の問題を読むと、実はこの花屋は第2次産業である製造業のカテゴリに含まれるように思える。
実際、業務要件のストーリーは、カーネーションやバラという品目(BOM)に対し、見込生産するために発注計画(MRPの元ネタとなる計画)を作り、受注のタイミングで、カーネーションやバラを選択して花束を作る加工指示が発生し、出荷され、送り状と一緒に花束が送付される。

【0-2】勝手な憶測では、この花屋は、ユニクロやナイキのような製造小売業(SPA:第5次産業)に近い。
つまり、原材料は調達するが、中国などのオフショアで安く衣料を開発し、その衣料を自社の直販店で販売する方式に近い。
もし、この花屋が、近くの畑で花を自家栽培していれば、農業・製造業・小売業のプロセスも自社で持つなら、いわゆる第6次産業になる。

製造小売業 - Wikipedia

第六次産業 - Wikipedia

最近のビジネスを見渡せば、卸売だけのような単なる小売業では、利益率が低い事例が多いと聞く。
だから、小売業を本業に持つ大企業は、自社ブランド製品(NBなど)を自社の工場で生産して販売するという製造小売業(SPA)のビジネスを持ち込もうとしている。
あるいは、日本の農業も6次産業化すべきだ、そのためにも農業に株式会社の発想を持ち込もうとする動きもある。
つまり、自分たちが販売する商品に付加価値をつける手法なわけだ。
もちろん、従来の小売業の業務しか知らない会社が製造業に手を出せば、すぐに在庫の山が作られて、逆に利益が出ない場合が多いだろう。

そんな流れの中で考えると、奥が深いと思う。

【0-3】花束を販売する花屋の在庫管理は意外に複雑だ、と鳥谷部さんが話されていたことから以下を連想した。

花は品目であり、部品表に相当する。
部品表であるからには、花のデータには、原価があり、発注時の最小ロット数もあり、調達期間や配送期間というリードタイムも設定されている。
花の種類は、カーネーションやバラもあれば、サイズも色も違う。
すなわち、花の部品表から、花束の見込生産の発注計画を自動作成することは原理的に可能だ。
それがMRPになるのだろう。

花束は、レシピという花の組合せで作られる。
受注時に、顧客から注文された花束がどのレシピなのか、が特定され、必要な花が特定の期間に特定の数量だけ在庫引当される。

お花という在庫は結構厄介だ。
お花はなまものなので、大量にお花を発注して在庫に持ちすぎると、腐ってしまう。
つまり、必要なタイミングで、特定の種類の花と本数を発注して、すぐに販売しなければならない。
すなわち、発注日と入荷日、出荷日というタイミング、リードタイムの制約が強すぎる。

一方、在庫にあるお花が少ない場合、せっかく受注しても、お花をすぐに出荷できなければ売上機会を失う。
本来、在庫があれば売上を確保できたのに、みすみす売上を失ってしまったわけだ。

例えば、お花は、誕生日や母の日、送別会など、特定の日に届けなければ無意味だから。
ちなみに、日本でお花が一番売れる日は、5月の母の日だと聞いたことはある。
母の日だけで売上の大半を稼ぐわけだから、賞味期間が短いお花の在庫管理は、売上にまさに直結する。

【1】T字形ERのモデル

T字形ERの生のモデルを見れたのが一番の収穫だった。
鳥谷部さんから聞いた話から理解したことを書く。
以下、T字形ERの理解で間違っていたら、後で直す。

【1-1】リソース重視

T字形ERでは、コード体系からエンティティを洗い出す。
例えば、ABC123というコードがあれば、顧客からヒヤリングして、ABCは顧客コードで、123は店番コードと意味付けを聞き出す。
例えば、商品コード、製番コード、製品コード、顧客コード、会員番号などは、普通は意味有りコードだ。
つまり、ユーザキーは人間が判断しやすいコードにしている。

そこから、アイデンティファイアを洗い出し、事実をエンティティにマッピングする。
T字形ERで面白いのは、イベントよりもリソースを重視すること。
その理由は、コード体系に基づくユーザキーを洗い出すことはリソースの主キーを明確に定義することと同じだから。
リソースを整理する作業を「リソース叩き」と呼んでいるらしい。

逆に、イベントのキーはシーケンスが多い。
例えば、受注番号、発注番号、請求番号など。

リソースとイベントの違いは、業務に関する日付があるか否か。
テーブル名に「~する」を当てはめると、違和感がないテーブルがイベント。
但し、在庫だけは例外。

リソースを重視するもう一つの理由は、リソースの組合せから対照表というイベントを生成する手法を使うことで、新規ビジネスの可能性を探ることができる点。
リソースの数よりもイベントの数が少ない場合、リソースの組合せで発生する可能性のある対照表というイベントは、その会社の業務として存在していない事実がある。
すなわち、新しい業務を生成することで、新規ビジネスを作り出す根拠になりうる。

逆に言えば、会社がどれだけリソースというマスタないしコード体系を保持しているか、で、業務やビジネスのスコープが確定されてしまう。
新しい業務を生み出すには、新たなリソースを保守し育てていく必要があるわけだ。

【1-2】エンティティを分類

T字形ERがデータベース設計技法として優れている点は、データベース設計の手順が確立されていること。
リソースとイベントの組合せで、対照表や対応表が作られ、それらを要件に応じてそのエンティティが必要かどうか、精査していく。
手順に従うだけで、概念的なデータベース設計はできる。

T字形ERで設計すると、列数は10個以下のテーブルがたくさん生成される。
リソースの組合せからイベントが生成されるから、N個のリソースがあれば、理論的にはN(N-1)/2個のイベントを生成できる。
そんなにたくさんのテーブルをER図に書くのは大変だし、意味のないテーブルもあれば、業務や要件として存在しないテーブルもたくさんあるだろう。

実際、鳥谷部さんのER図を見たところ、花束の花屋モデルでは、100個くらいのテーブルが出てきたらしい。

但し、T字形ERは、リレーショナルデータベースへの実装は意識していない。
つまり、全てのエンティティ(特にたくさん生成される対照表や対応表)をリレーショナル・データベースへマッピングする必要はない。
不要なら削除してよい。

【1-2-1】僕がT字形ERをまだ理解できていない部分は、VEやERなどの概念。

EntityRole:状態遷移と繰返項目

VirtualEntity:VE の (R) 継承

VEは、あるエンティティの中に別のエンティティ候補のデータが含まれているので、別のエンティティ候補を排除した疑似エンティティ。
例えば、従業員テーブルから、入社日や退社日を分離した従業員属性テーブルみたいなもの。
僕の理解では、「従業員△--従業員属性」というテーブルの派生関係で関連付けるはず。
だから、従業員属性テーブルの主キーである「従業員No」はリユース(「R」)と書かれている。

EntityRoleは、繰返項目を排除したエンティティ。
鳥谷部さんは、製品に関する品質管理を事例として説明してくれた。
例えば、製品の品質管理は、品質評価の色々な基準、品質管理の担当者の観点など、いろんな観点で品質評価がされる。
製品の色、大きさ、サイズ、中身、耐障害性、安全性など、色んな観点でその製品の評価基準が必要になる。

僕の理解では、「製品△--製品属性、製品△--品質評価基準」などというテーブルの派生関係で関連付けるはず。

【1-2-2】その他に、ターボファイルはサマリテーブルと同じと言われて、ようやく納得した。
つまり、ターボファイルは、リソースやエンティティを元に、夜間バッチで生成されるサマリテーブルに過ぎない。
ターボファイルの呼称は、サマリテーブル無しでデータを集計表示すると時間がかかる場合に、画面でターボボタンを押すと、すぐに結果が出てきますよ、という経緯から発生したらしい。

【1-3】帳票というモノは重視しない

帳票に惑わされ過ぎないように、帳票の分析にこだわり過ぎないように、という鳥谷部さんの指摘が興味深かった。
事実をエンティティにするのがT字形ER。

【1-4】楽々フレームワーク

鳥谷部さんが作った花屋モデルのER図を元に、住友電工の楽々フレームワークで生成した画面のデモがあった。
楽々フレームワークはT字形ERと相性が良いらしい。
確かに、T字形ERでテーブル設計をきちんと確定できれば、そのテーブルからロジックや画面を生成すればいい。

【1-5】T字形ERのモデルで面白かったのは、在庫というテーブルが明示的になくて、仮想在庫というビューでしか表現されなかったこと。
渡辺さんのモデルでは、在庫を実現するテーブルとそのリレーションシップがデータベース設計の観点で重要であるから、ちょっと肩すかしみたいな気分だった。

【2】渡辺さんの三要素分析法のモデル

【2-1】ホワイトボードの前で、お客さんと話しながらモデルを描く

プレゼンターは関係なく、ホワイトボードの前で、DFDを書きながらプロセスやイベント、担当者を洗い出し、そこからER図を作っていく。
ER図は、渡辺さん流では、カラム名を横に並べていくので、データの例が書きやすい。
見ていて楽しそう。

渡辺さんのようなモデリング技法、そして要件定義は、正直真似できないけど、身に付けてみたいと思わせてしまうものがある。

【2-2】在庫管理推移方式は受払テーブルの派生関係で実現する

渡辺さんの在庫モデルでは、受払予定テーブルで在庫の過去から未来までを管理・監視するように実現しているのが肝だと思う。
僕の理解では、「受払予定△--発注」という派生関係で在庫の過去、「受払予定△--受注」という派生関係で在庫の未来を管理しようとしている。

実際、花束を見込み生産すると想定すれば、発注計画で在庫がいつ作られるか分かり、受注時に在庫引当することで、いつ在庫が予約されるか、が分かる。
つまり、在庫の生成と引当が過去から未来まで時系列に並んだグラフが作られるので、在庫の推移を画面からチェックすることができるようになる。

【2-2-1】しかし、発注テーブルの主キーは発注No、受注テーブルの主キーは受注Noなのに、どうやって受払予定テーブルと派生関係を関連づけるのか?
その仕組みは、受払予定テーブルの主キーである予定Noを、発注・受注テーブルの2次識別子として持たせて、一意制約を課すことで実現しているのがミソ。
ホワイトボードの絵では、「{予定No}」と表現されている箇所が、2次識別子を意味している。

20150220_

すなわち、発注計画を立てた時に発注Noが作られるのと同時に、予定Noも生成される。
同様に、受注Noの生成時に予定Noも生成される。
そして、発注テーブルと受注テーブルは、受払い予定テーブルのサブセット(サブクラスみたいなもの)であり、互いに排他関係(XOR)にある。

渡辺さんのデータモデリングでは、二次識別子による一意制約を上手く使うパターンや、動的参照(継承属性、または、暗黙的なリレーションシップ)など、データモデリング特有のテクニックが出てくるので、とても面白いと思う。

業務ロジックをデータモデリングはどこまで表現できるか?: プログラマの思索

候補キーと2次識別子に関する概念: プログラマの思索

2次識別子を使ったデータモデリング: プログラマの思索

「動的参照関係」を手なづける: 設計者の発言

更に面白い点は、「受払予定△--単品ロット」という派生関係も持たせている点。
渡辺さんのお話を僕なりに理解すると、お花の廃棄予定日も考慮するために、単品ロットも在庫管理推移方式の対象として入れた、という事だと思う。

【2-2-2】在庫管理推移方式を実現する「受払テーブル」は渡辺さんのモデリングではよく出てくるパターン。
おそらく、渡辺さんの過去の事例で、とてもうまく成功したモデリングパターンなのだろうと思う。
すなわち、在庫の過去や未来が分かるだけでなく、在庫を積極的にコントロールすることで、売上の見通しを立てやすくしたわけだ。

しかし、@sugimoto_keiさんの話を聞くと、こんな話があった。
発注テーブルの保守は、購買担当者。
受注テーブルの保守は、営業。
でも、受払テーブルの保守は、購買担当者や営業などの現場の組織の一つ上の組織の階層の在庫管理者になる。
それはズルいね笑、と。

つまり、「管理層-->業務層」で言えば、管理層に当たる人であり、レイヤが違う。
在庫管理推移方式を実現するには、組織構造を変革する必要があるし、それはレイヤが違うので、現場からそんな声は出てこないだろう笑、とのこと。

【3】感想

【3-1】渡辺さんのXEADといい、楽々フレームワークといい、超高速開発といい、DOAなどの手法で作ったモデルからロジックや画面を自動生成する手法は、日本の製造業に近い人達は本当に好きなんだな、と思う。
ソフトウェア工場、ソフトウェアクリーンルームという発想に近いからだろうと思う。

ソフトウェアファクトリー - Wikipedia

ソフトウェアクリーンルーム - Wikipedia

個人的には、モデルを作ったらソースが自動生成されておしまい、というやり方はあまり好きではない。

【3-2】しかし、上記の僕の理解は間違っている部分がある。
@sakaba37さんに教わったけれど、渡辺さんや他のDOAのモデラーは、モデルと実装が一致する前提で話をしている。
その実装の泥臭い部分を見せずにモデルの話をしているから、そう見えるのでは、と。

実際、渡辺さんがホワイトボードにDFDやER図を書いている時、画面ではこうなるでしょう、というフレーズが時々出てくる。
つまり、ER図から画面のレイアウトやUIはある程度決まっているという前提になっている。
すなわち、モデルと実装された画面は表裏一体として、彼らは既にイメージを持っている。
その意味では、ドメイン駆動設計と同じ発想。

少なくとも、関西IT勉強会に来ておられるモデラーの方は、モデリングもプログラミングも双方に詳しく、実装できないモデルは無意味だと主張されている。
それは同意見。

【3-3】僕の妄想としては、日本人が生み出したデータモデリングの技法と、Railsフレームワークを組合せて、アジャイルな開発ができないか、ということ。

業務要件を満たすテーブル設計さえできれば、Railsという優れたフレームワークのおかげで、画面やロジックはある程度自動生成される。
また、Railsで作られた画面やWebシステムは、ユーザインタフェースも現代風で使いやすい。
RailsはJQueryなど、各種のJavaScriptのフレームワークと相性が良いから。

さらに、Railsでは、テーブルのカラム追加や変更も、履歴を残すので、テーブル設計もアジャイルに設計しやすい。
つまり、プログラミングもテーブル設計もアジャイル開発の一プロセスに含んでしまえばいいのだ。

そのアイデアを試してみたいと思う。

| | コメント (0)

2015/02/20

Redmine 3.0.0 released!

Redmine 3.0がリリースされたのでメモ。

【参考】
Redmine 3.0.0 and 2.6.2 released - Redmine

Changelog - Redmine

Redmine.JPさんはTwitterを使っています: "Redmine 3.0.0 と 2.6.2 がリリースされました。 http://t.co/wUscX8NLWu"

MAEDA, GoさんはTwitterを使っています: "Redmine 3.0.0、まさかの前倒しリリース。 http://t.co/B5OeG6f65L"

Redmine 0.8.0 release candidate!: プログラマの思索

Redmine 1.0.0 released!: プログラマの思索

Redmine 1.2.0 released!: プログラマの思索

Redmine 1.4.0 released !: プログラマの思索

RedmineがVer2.0でRails3へ移行予定: プログラマの思索

Redmine 2.3の新機能: プログラマの思索

Redmine 2.6のCHANGELOGのメモ: プログラマの思索

RedmineクローンChiliProjectが終了されたらしい: プログラマの思索

Redmine3.0の目玉の機能改善は、Ruby2.2とRails4.2のサポートだろうと思う。
Ruby2.2の対応によって、Redmineの高速化がかなり期待される。
また、Rails4.2の対応によって、今後の機能拡張もやりやすくなる恩恵があるだろう。

過去のRedmineの記事を見返してみたが、RedmineはRubyやRailsのVerUpによく追随できたものだと思う。
市販のパッケージ製品でも、これだけ頻繁にVerUpされるミドルウェアに対応できたものは少ないのではないか?
昨今のWindowsXPやWindowsServer2003廃棄対応、Strutsのセキュリティホール問題などの話を聞くたびにそう思う。

個人的にRedmineのコミッタに聞いてみたいのは、Redmineをどの方向へ発展させようとしているか、という方針だ。
RubyやRailsの追随だけでなく、細かなUIや機能の改善や拡張に注力するのも大事だ。
しかし、Redmineをどんな場面でどんな人が使うツールとして提供しようとしているのか?

僕は、Redmineはアジャイル開発のプロジェクト管理ツールとして実験するツールとして使えると考えていたが、実際の日本の現場では、WF型開発にアジャイル開発の要素を取り入れたハイブリッド開発として使っているように思える。
また、Redmineをソフトウェア開発だけでなく、農業や営業のタスク管理、ヘルプデスク管理、顧客管理などにも適用している事例も見かける。

この辺りも探っていきたい。

| | コメント (0)

2015/02/10

RedmineクローンChiliProjectが終了されたらしい

RedmineクローンChiliProjectが終了されたらしいのでメモ。

【参考】
MAEDA, GoさんはTwitterを使っています: "ChiliProject終了のお知らせ。 http://t.co/eTquZFEChX"

さかばさんはTwitterを使っています: "Redmine へのマイグレーションスクリプトを提供するとは考えてくれている。使ってないけど、、 RT @g_maeda ChiliProject終了のお知らせ。 http://t.co/lUP3cDPglR"

chiliproject/chiliproject

Announcing the end of ChiliProject - ChiliProject Blog

asinteg/chiliproject-to-redmine

第8回勉強会の感想~RedmineはCRMや情報系システムにも適用できる #RxTStudy: プログラマの思索

第3回品川Redmine勉強会の感想 #47redmine: プログラマの思索

2010年頃にRedmineからフォークされたChiliProjectが終了されたWebページを見た。
RedmineのVer1.0のリリースに活躍されたコミッタEric Davisが、ChiliProjectを発足したが、最近は更新頻度が落ちていたみたいだ。

Redmine 1.0.0 released!: プログラマの思索

Ruby界やRails界は、バージョンアップがすごく激しい。
RubyもVer1.8が長かったけれど、今やVer2.2まで上がった。
RailsもVer2からVer4.2まで上がっている。

RubyやRailsのバージョンアップ内容は、フォルダ構成やAPIまで変わってしまうので、その速度に追随するのが難しいだろうと思う。
たぶん、ChiliProjectもその速度に耐えられなかったのだろう。
おそらく、似たようなソフトウェアの事例もたくさんあるだろうと推測する。

RedmineもVer1.xからVer2.xへバージョンアップした時に、追随できないプラグインが大量に発生した。
そんな状況で、RubyやRailsのバージョンアップに追随しようとするRedmineは素晴らしいと思う。

ソフトウェア開発者ならば、OSのバージョンアップや、RubyやJDK、OracleやMySQLなどのミドルウェアのバージョンアップに追随する作業がどれだけ大変か、知っているだろうと思う。
つい最近は、WindowsXP終了やWindowsServer2003終了の対応で、たくさんの業務システムに修正が発生して、スポット的な活況になったのを思い出す。

ユーザから見れば、OSやミドルウェアのバージョンアップは大したことがないように思えるけれど、ソフトウェアを違う環境へ移植して正常に動作することを保証するのは、かなり大変だ。
回帰テストのテストケース数が膨大になってしまうからだ。
回帰テストほど、開発者にとって単純で面白くない作業はないものだ。

Redmineは自動テストが徹底されていると聞いているので、RubyやRailsのバージョンアップに耐えられるのだろう。
実際、Redmine build statusを見ると、ミドルウェアの種類とバージョンごとに自動テスト結果が公開されており、とても参考になる。

そんなRedmineも、Ver3.0のリリース日が2015/2/22が設定された。
主な目玉は、Ruby2.2とRails4.2対応だろう。

3.0.0 - Redmine

Feature #18947: Ruby 2.2 support - Redmine

Feature #14534: Upgrade to Rails 4.2 - Redmine

RubyやRailsはバージョンアップするごとに、性能も改善されていると聞く。
Redmineもその恩恵を受けられるはずだから、機能改善だけでなく性能改善にもすごく期待している。


| | コメント (0)

2015/02/08

Redmineで課題管理をする時の注意点

Redmineで課題管理をする時の注意点について、下記の記事があったのでメモ。

【参考】
南旺理工: Redmineでトラッカーごとにデフォルトのステータスを指定できない

(引用開始)
もう、タイトルに尽きるですが…。Redmineで、トラッカーごとにデフォルトのステータスを指定できないのです。

新規チケット作成の際に、ワークフローにデフォルトのステータスからの遷移を入れてないトラッカーを選択すると、ステータスのドロップダウンリストの選択肢が、デフォルトステータスのみになってしまいます。
(中略)
このような、ものすごく多くのひとがぶつかるであろうものすごくFAQっぽい疑問点は、私が提起するまでもなく、公式フォーラムにも3つほど「できないんですけど…」というスレがありますね。

どうも、現状では、「新規」というユニバーサルなデフォルトステータスを作るしかないようです。ダサイけど…。
(引用終了)

Redmineの管理画面では、デフォルトのステータスを設定する画面があるが、その機能は全てのトラッカーに付与されてしまい、トラッカーごとにデフォルトのステータスを設定できない。

普通は「新規」ステータスに設定して、そんなに不便に感じる場面は少ないだろう。
しかし、ステータスの意味を考えた時、トラッカーごとにステータス名を微妙に変えて運用したいものだ。

例えば、QAや課題では「問合せ中 -> 回答済 -> 完了」というステータス遷移で十分だ。
「新規」ステータスはそもそも作る必要がないし、QAをチケットに書いた時点で問合せている状態になる。
しかし、Redmineでは、全トラッカーに対してデフォルトステータスが一律で決まってしまうために、「新規」ステータスを無くすことができない。
したがって、QAで起票して「新規」ステータスで作り、その後、「問合せ中」のステータスへ変更する操作が一手間増えてしまう。

Redmineは管理画面から、トラッカー・ステータス・ワークフロー・カスタムフィールド・プロジェクトなどを自由に修正できて便利だ。
しかも、トラッカーをプロジェクトごとにアサインできるので、各チームや各現場に応じたプロジェクト管理を適用しやすい利点もある。

しかしながら、上記のようなステータス管理や権限制御で微妙に使いづらい時がある。
この辺りのRedmineの課題もまとめてみたい。

【追記】
@g_maedaさんからご指摘がありました。
上記の問題はVer3.0で解決されるようです。

MAEDA, GoさんはTwitterを使っています: "@akipii Redmine 3.0ではトラッカーごとにデフォルトステータスが設定できるようになります。 http://t.co/osCywJF725"

Feature #5991: Tracker should have it's own default issue status - Redmine

| | コメント (0)

2015/02/01

ZabbixとRedmine連携の記事のリンク

ZabbixとRedmine連携の記事のリンクがあったのでメモ。

【参考】
障害発生時にも漏れなし! Zabbixの監視アラートでRedmine上にチケットを起票する仕組みをつくろう (1/4):CodeZine

障害発生時にも漏れなし! Zabbixの監視アラートでRedmine上にチケットを起票する仕組みをつくろう (2/4):CodeZine

障害発生時にも漏れなし! Zabbixの監視アラートでRedmine上にチケットを起票する仕組みをつくろう (3/4):CodeZine

障害発生時にも漏れなし! Zabbixの監視アラートでRedmine上にチケットを起票する仕組みをつくろう (4/4):CodeZine

Zabbixオフィシャル日本語サイト :: エンタープライズクラスの分散監視オープンソースソリューション

(引用開始)
障害発生時には、障害そのものの対応に追われるため、チケットを起票し、詳細情報を記載することを忘れる可能性も否定できません。次に挙げる2つの要件、

1)障害の速やかな解決に注力するため、チケット起票のような事務作業的な要素を極力、排除する
29障害アラートを見逃すようなことのないよう、確実に記録を残す

を満たすには、「ひたすら頑張る」以外に道はないのでしょうか?

 そこで、本記事では、オープンソースのインシデント監視アプリケーション「Zabbix」を例に、監視時のアラートに合わせてRedmine上にチケットを起票する仕組みを紹介します。インシデントの発生頻度や、解決までの履歴を見直し、分析することもできるため、筆者らも大変重宝しています。

(中略)
それでは障害状態をシミュレートして、動作確認を行ってみましょう。
今回は、空きメモリが1024MBを切ったらトリガが作動するようにしたので、適当なアプリケーションを起動し、メモリを圧迫してみてください。
もしくは、トリガの閾値を上げてみてもよいと思います。

 ここまでで設定したことで、以下のような手順で連携が実現されることになります。

1)Zabbixのトリガが、vm.memory.size[available] 値が規定値(1024MB)より小さくなったのを検知する
2)Zabbixのアクションが指定したトリガの値が PROBLEM になり、アクションが実行される
3)アクションに指定されている Commands (=作成したPythonスクリプト) が実行される
4)宛先RedmineのREST APIに起票内容が POST される
(引用終了)

Zabbixでサーバーのメモリ監視、ログ監視を行う手法は、Webシステムのインフラ保守では当たり前。
上記では、Zabbixで障害を検知した時、単にメールを流すだけでなく、Redmineチケットに起票する仕組みも整えている点が優れている。

ITILのようなフレムワークとRedmineのワークフロー管理を組合せると、より強力に運用できるだろう。

上記の手法では、Zabbixでエラー検知したタイミングで、Pythonスクリプトをキックし、Redmineチケットの起票処理を実行する。

上記では、RedmineのREST APIを使っているが、メールによるRedmineチケットの起票処理を使ってもいいかもしれない。
但し、RedmineのREST APIを使った方が、チケットの起票者をRedmineユーザで指定できる利点がある。
逆に、メールによるRedmineチケットの起票処理では、チケットの起票者が「匿名」になってしまうので、使い勝手があまり良くないかもしれない。

日経Systems2014年10月号の記事では、RedmineとHinemosを連携するアイデアを紹介したが、インフラ監視ツールやビルド管理ツールのように、他の社内の開発管理のためのWebシステムとRedmineを連携すると良いだろうと思う。

RedmineとWebサービス、外部のインフラ監視ツール・ビルド管理ツールを連携する仕組みや設定方法は一度整理してみたい。
そして、Redmineと連携すると、どんなメリットがあり、どんな可能性があるのか、今一度明確にしたい。

| | コメント (0)

« 2015年1月 | トップページ | 2015年3月 »