2014年11月3日月曜日

インターネット以降のシステム開発が変わったこと

パソコンが、一人一台になる前は、「ウォーターフォールモデル」がシステム開発の主流だった。
それ以降はさまざまな方法が模索され、現在は、「アジャイル型」と呼ばれる短期開発が増えてきました。

インターネットの普及により、ブラウザで様々な情報を検索し、表示することができるようになりました。

現在は、ブラウザ上で動作するソフトがWebサービスと連携して、専用ソフトをパソコンにインストールしなくても動作する環境が整って来ています。


ネットワークサービスがなかった時代は、すべてを開発しなければユーザーの要求仕様を実現できないために、1から作る必要がありました。

しかし、地図サービスなどのような有益なWebサービスの出現により、有益なサービスと連携した高度なシステムについて、その開発期間を短縮して提供可能な時代になりました。


ブラウザが扱う情報は世界標準化されてますので、ブラウザが解析できるものは実現できる時代になりました。


クライアント側で動作するブラウザは、エンジンの役割です。

その上にのるボディーは、コンテンツということになります。


最初は、HTML形式のテキストファイルしかエンジンは解析できませんでしたが、現在は、ハードウェアのスペックが良くなったことでビデオ再生まで可能になりました。

また、GoogleがJavascriptをコンパイルして動作する仕組みをChromeに搭載してからは、より高度なことを高速に処理できるようになりました。このJavascriptコンパイラは、エンジンにターボが搭載されたようなものです。

これによりゲーム機並みのクオリティの高いゲームが、ブラウザ上で実行できます。


まとめると

  1. システム開発は、エンジンとコンテンツに分けて開発する時代になった。
  2. エンジンは拡張可能に作り、ターボ機能に相当するコンパイル機能を付加することもできることが求められる。
  3. コンテンツは世界標準規格を活用すると短期開発が可能である。

以上

2014年10月27日月曜日

Excelの動作が遅くなる

Excelを使っていて、何故か遅くなったということはないでか?


Excelの仕様上からくる3つ要因があります。

1.Excelファイルの破損

使用中にExcelに関連するファイルが破損している場合に遅くなることがあります。
例、
 1.ツールバーファイルの破損
 2.クイック アクセス ツール バー ファイルの破損

この場合は上記以外のファイルが破損している可能性があり、破損状況の把握は不可能です。
よって、Excelを再インストールすることをお薦めします。

何故なら、リスクを最小値にすることを前提にするからです。
大丈夫と確証できない状態でそのまま使用するということは、いつ問題が発生しても不思議ではない状況です。ウィルス対策をしていないでPCを使用していると同じくらいのリスクがあると考えられます。


2.メモリー不足による原因

PCに8GBなどたくさん積んできるのにメモリー不足になることがあります。
Windowsはメモリを色々と割り当てています。その中で、Excelが実行時に使用できるメモリが少なくなるとメモリ不足のメッセージが表示されます。

例えば、各営業所から上がってきた報告書を1つのブックにまとめるために、各営業所のブックを開いて対象範囲の大きいセルのコピペを何度も行うとメモリ不足になる場合があります。

この場合は、編集しているブックを保存すると、メモリーが解放されます。

マイクロソフトのソフトはメモリ管理が弱いと以前から言われています。
メモリーなどのPC上の資源をリソースといいますが、その解放は保存時でないとおこなわれないために、このような状況になります。


3.メモリリークによる原因

マクロで、ブックなどのオブジェクト定義をしていて、実行終了時に開放しないと、Excelを閉じるまでは、そのオブジェクトはメモリーを使用したままになります。

始めは快適にマクロが動作していても、解放していないためにリソースが消費されメモリー不足と同じ状況になります。

マクロ終了時に必ず、オブジェクトなどのメモリーを解放しましょう!
また、エラー終了時に解放漏れをしていることがよくありますので、マクロの開発時に注意してください。

2014年10月18日土曜日

Excelブックはコンテンツだ!



Excelを含むオフィスソフトは、日々の業務遂行のためには切っても切れない存在です。



各種届出用フォーム、勤怠管理、各種計画管理など、あらゆる業務で使用されています。


中には、見積書、注文書、納品書、請求書といった、基幹業務にExcelを活用している企業もあります。


これは、中小企業だけではなく、大企業でも利用されています。



Excelは、表形式のフォームを簡単に作成し、共有することができます。

さらに、マクロを作成して特定の処理を自動実行させることも可能です。



マクロの達人の中には、ゲームを作る方がいて、なかなかの力作です。


猫とエクセル


エクセルゲーム Excel VBA Game Gallery


ビリヤードX (猫とエクセル)は、以前よく遊びました。また、ソースが公開されていますので、マクロの勉強にもなります。



さて、そのExcelで作成したドキュメントですが、実は文書ファイルであり、コンテンツだということをお気づきでしょうか?


Excelブックには、ISO/IEC 29500として標準化されたOffice Open XMLファイルフォーマットによる文書ファイルです。


Excel本体がそのフォーマットやコンテンツを翻訳して、表形式に表示、マクロを実行しているのです。



乱暴な表現ですが、Excelブックの標準化されたフォーマットを翻訳して、Excelと同じ表現ができれば、Excel本体が必要がないのです。


現在はファイルフォーマットが標準規格として公開されたことにより、Excelファイルを直接操作できるソフトウェアやサービスが増えてきました。


まだ完全な互換性のあるソフトウェアは存在しませんが、企業活動などで作成された情報は、企業資産です。その資産を特定の企業のソフトウェア以外で扱えない、独占された状態は競争原理が働かないのでよくありません。

また、そのソフトがないと企業活動ができなくなっているとするならば、その企業に独占されているともいえます。


競争原理について別途書きたいと思いますが、誰かを蹴落とすような活動でありません。

Win-Win-Win-Win

の関係です。


Excelブックなどの文書ファイルは企業資産で、その企業に帰属していますが、

その資産を企業内に埋没させるのではなく、社会貢献のために活用できれば、その資産価値は高くなると思います。

2014年10月16日木曜日

舞台スタッフとシステム開発

先日友達からの依頼で舞台スタッフのリーダーを務め、滞りなく終わることができました。


市民会館大ホールのグランドピアノ(ヤマハ)


市民会館の大ホールで行われたある団体イベントの舞台セッティングなんですが、舞台セッティングを経験するのは初めてのことでした。

市民会館側で専門の方に指導していただきながら行いましたので、失敗する確率は低いです。

舞台公演などを観たことがある人はわかると思いますが、「間」が大切です。

観ている人が白けないように、司会進行状況に合わせて、舞台の雰囲気を壊さないようにすることに神経を使いました。



さて、今回リーダーを務めてシステム開発の経験が役立ったことが沢山あります。



舞台運営で大切なことに、シナリオとタイムテーブルがあります。


シナリオやタイムテーブルは、業務分析や運用シミュレーションが役立ちました。


システム開発の上流行程で効率的に業務を遂行できるように、業務分析を行います。
また、新システム稼働後の運用シミュレーションを行えるように、業務フローを作成します。

・何が必要なのか(不足しているのか)
・誰が(何人で)行うのか
・いつまでに行うのか

などを頂いた舞台スケジュールに追記して、舞台の業務フローを作成しました。


だが、舞台を進行するよ予定外のことが起きます。
そしてそのようなことは、システムの例外処理に該当しますので、例外処理のシナリオをそこで組立てます。

マネジメントになりますが、リソース(人員)の空き状況を業務フロー側で把握できるようにしておいて、どのくらいの負荷なのか把握でいれば、問題ありません。

一緒に行ったスタッフの人と作業内容を共有でき、みんなで協力して無事に舞台スタッフとしての仕事を遂行できてよかったです。

依頼した友達から、流れるようにイベントが進行していたと大変喜んでもらえました。

貴重な体験ができ、ありがとうございました。

2014年9月27日土曜日

コンピュータシステム開発の昔と今、そして…

私がコンピュータを初めて見たのは、30年以上前の高校1年の時だったと思います。

だいぶ前のことなので、おそらくの話になりますが、工業高校の電機科でしたので、コンピュータについて学ぶことが専門科目の必須授業になっていたと思います。

コンピュータは、NEC製だったので「ACOS」だったと思います。
また、ハードディスクは「磁気ディスク装置」と言われ、専用の大きなカートリッジに収めされていて、非常に重かった記憶があります。また、カートリッジ1基だけで車が買える程の高価なものでした(^^;)


今のパソコンのような環境ではなく、入力装置といえば、タイプライター、紙テープ、カードであり、出力装置は、タイプライターについている印刷装置やラインプリンターと言われるプリンター類しかありませんでした。


紙テープといえば、昔のアニメやウルトラマンなどで、紙テープに空いた穴の位置を見て、そこにある情報を読み取るシーンがありました。
専門的なことですが、紙テープには16進数で表現された穴が開いていてます。その体系は「ASCIIコード」と呼ばれるものがほとんどです。

つまり、彼らは「ASCIIコード」との照らし合せを頭の中で行って、情報を読み取っていたということです。


現在のコンピュータが搭載されたシステムで、紙テープのような入出力装置は使われないと思いますが、あるとすれば、工業機器に組込まれたコンピュータの入出力用や点字などではないかと思います。


最近までは画面モニターとキーボート/マウスとプリンターが定番の入出力装置でしたが、
現在は、画面に触って入力するタッチパネルやデジタイザー、地図や翻訳などで使われる音声入力などがあります。

また、スマートフォンや携帯ゲーム機などの小型コンピュータの性能は、30年以上前のコンピュータと比較してはるかに凌駕しています。


結論は、現在のコンピュータが相互協力していくことができれば、スーパーコンピュータ数台分以上の性能がありますので、もっと人類文明は発達できると思います。

そのためには、肯定することが大切です。

自分を肯定し、相手も肯定する社会になれば、国同士、民族同士、宗教同士で争うことがなくなると思います。

肯定し、相互信頼できれば、相手を滅ぼす武器など必要なくなります。

そのために使われる国家予算規模のお金が軍事行動以外に使われるようになれば、食糧問題や災害の防止・対策や社会福祉、そして先進国の支援が必要な国や地域の発展に貢献できます。


コンピュータシステムが世界平和や人々の幸福のために生まれてきたと信じています。



2014年9月21日日曜日

ウォーターフォールモデルとアジャイル開発のソフトウェア開発の共存

ソフトウェア開発30年以上の経験・実績から伝えること


ウォーターフォールモデル VS アジャイル開発?!



「ウォーターフォールモデル」の場合、お客様(エンドユーザーではなく、組織の情報システム部になることがほとんど)の要望を聴き、それをシステム化し、コンピュータを使用して効率的に業務を進めるようにするまでの一連の開発行程に多くの時間と人員を必要になります。

お客様の要望を聞いた後に行われる開発作業行程の例
  1. 要件定義
  2. 基本設計書
  3. 概要設計書
  4. 詳細設計書
  5. 試験手順書
  6. プログラム開発
  7. 単体・結合試験
  8. 総合・運用試験
  9. マニュアル作成(導入、操作/運用、例外対応)

開発の進め方は、各作業行程途中や終了後に開発組織内のレビューやユーザーレビューを行い、ユーザーが承認してから次の行程に移行するような流れです。

そのため、開発期間が長くなり、開発に必要な人員が必要になるため、開発費用が高くなります。
よって、開発したシステムをリリースしても、業務が変わっていたりするなどシステムの変更が必要になることが多いです。

いわゆる、バックログ(改善。追加要望の積み残し)が多くなり、エンドユーザーコンピューティング(EUC)としてExcelやAccessなどのオフィスソフトや業務支援のためのツールが現場では使用しなくては、業務そのものが成り立たないのではないでしょうか?


「アジャイル開発」の場合は、上記行程を1~3、4~7、8~9のように分割し、1~3と8~9はユーザーに近い組織が担当し、4~7を専門的に行う社内組織か外部委託する様にしてシステム開発を進めます。このような方法で実際の開発期間を短縮する様にしています。

また、3~4の行程は、全機能が確定してから開発をするのではなく、優先度の高い機能から確定して、機能ごとに実装と試験を行いリリースしますので、短期開発とバックログを少なくすることができます。

ただし、コンピュータシステム開発は1~9の行程が必須です。

アジャイル開発は、3~4についての記事が多いですが、その他の行程もアジャイル開発に向けて変化しなくては、本来のアジャイル開発は成功しません。


ウォーターフォール・モデルのみでシステム開発していく場合の短所には、
上記の通り、開発期間の長期化と開発費用の増大にバックログが減らない可能性があります。

また、アジャイル開発のみでシステム構築をしていく場合の短所には、
全体のことが見えなくなり、バランス悪いシステムに変化していく可能性があります。


これからは


ウォーターフォールモデル と アジャイル開発 の共存

です。



ビジネスの骨格・エンジン開発は「ウォーターフォールモデル」で開発せよ!!

ビジネスの骨格・エンジンとは、ビル建築くする場合の基礎部分です。
基礎がしっかりできてなければ、ビルは長期間立つことができません。また、長期視点に立ってシステム開発をするには、じっくり練った設計をする必要性がありますます。

ただし、重装備にする必要はありません。
シンプルで、操作性とスケーラビティのあるシステムにします。



機能拡張はアジャイル開発で開発せよ!!

現場業務や経営分析は日々変化します。それにシステムが合わなくなると、業務効率が低下します。何故ならば、システム化していないところは、必ず人が1から作らないとならなくなるからです。
それによって、内部統制ができなくなり、情報漏えいにつながるリスクが増大します。

そのため、変化への許容範囲が広い拡張システム(周辺システム)を作る必要性がありますが、この場合は、短期開発する必要があります。つまり、アジャイル開発が向いています。

この時注意することは、現場を混乱させないことです。
新しいソフトを導入し、今までの操作方法が全く異なるようなシステムは混乱するため、現場では使わなくなります。


現場のニーズのポイントは、改善です。

業務を効率的に行うことと、上司の要望・要求に応えられるようにするんことです。

組織としては、内部統制や情報漏えい防止は不可欠です。

使い慣れた操作性を更に良くし、さらに内部統制や情報漏えいの防止になるシステム開発が望まれています。


組織においても、個人や家庭においても必要不可欠なソフトはオフィスソフトです。
その中で、Excelを必ず使用する人が多いと思いますし、Excelなしでは業務ができない組織は多いと思います。

内部統制、情報漏えい対策のポイントは性善説に立った運用はしないことです。
①情報管理を個人に任せない
②正しい権限と操作ログをとることで、必要な場合はトレースなどの監査が行えることです。
③②のために情報トレーサビリティーが行えることです。


それらの組織と現場の要望に応え、社内のデータベースと連携でき、さらに普段使っているExcelブックを有効活用できるツールとしてdbSheetClientを使用した社内システムを開発・構築しています。

dbSheetClientは150社以上の企業などで導入されています。

2014年9月18日木曜日

コンピュータは頭がいい?!

私は、30年以上システム開発に携わっています。

今回は少し持論を書かせていただきます。


未だに「コンピュータは頭がいい!」と思っている方がいると思います。


コンピュータシステムは、単純なことを超高速に行うためのシステムですので、確かに短時間で、答えを出すことができますので、優秀と思います。



現在のソフトウェアで処理する方式のコンピュータが商用として開発されたのは、

1951年にレミントンランド社(現Unisys)の「UNIVAC I」

からです。(※Wikipedia 「UNIVAC I」参照)

この世に誕生してから60年しかたっていません。


コンピュータのハードウェアは急速に発達し、名刺サイズのコンピュータシステムでも、「UNIVAC Ⅰ」の性能をはるかに上回る性能を持っています。


現在のコンピュータは処理命令を順次実行して一連の処理を実行する方式です。(逐次実行型)
コンピュータの頭脳であるCPUは、1つのCPUに複数のコア(頭脳)を搭載するなどして、並列処理することも可能になりつつありますが、CPU(コア)の基本的な作りは逐次実行型と言えます。


コンピュータシステムは、作り手、使い手の通りに動作します。その作り手、使い手が正しければ正しい答えを出しますが、間違っていれば、間違った答えを出すか、止まったり(フリーズ)、異常終了(Windowsのブルースクリーン)します。

企業内のコンピュータシステムがそのパフォーマンスを発揮するには、企業の仕組みが単純化していることが重要です。


  • 職務・権限の明確化
  • 特例が少ない
  • 仕事人が着く

職務・権限の明確化は、データベースの階層構造と正規化に係わってきます。
あいまいになっていることは、システム作りに向きません。


特例が少ないではなく多い場合は、判断することが増えますので、業務する手間がかかります。

実は、コンピュータも判断が苦手なんです。

判断するということは、分岐することが多くなりますので、処理が複雑になってしまいます。


仕事に人が着くではなく、人に仕事が着くとは、本題と少し違うかもしれませんが、その人でないと仕事ができないことになりますので、チェック体制がないことになります。よって不正の温床になりかねます。誰でも仕事ができる体制にすることは事業の継続に不可欠な要素であり、コンピュータシステムを長期に使用するためにも重要なことです。


これからの企業は、コンピュータとコンピュータシステムに投資しますので、その投資が回収できるような組織とシステムが作られることを願っています。