パソコン・インターネット

哀しいかなカウボーイコーディング・・・

カウボーイコーディングと聞いて、どのようなイメージを浮かべるだろうか?

私がカウボーイコーディングという言葉を最初に知ったとき、こんなイメージが浮かんだ。

・集団の中でひときわ際立つプログラミングのセンスを持った人の我流のコーディング手法
・型にとらわれず、湧き出る発想を自由に組み立て、属人的ではあるが生産性の高い開発手法
・難解でトリッキーなそのプログラムは当人しか理解できない芸術の域に達している。

そんな、すこし皮肉めいたニュアンスだけど、ポジティブで少し格好いい言葉だと感じた。
しかし、調べてみたらぜんぜん違っていた。
もっとマイナスイメージな言葉のようだ。

カウボーイコーディングとは明確な手法が欠如している無統制で雑なプログラミングのことを言うという。自然発生的にこの言葉を生んだ集団では、「チームのメンバのそれぞれが一番良いという方法で実装すること」と定義している。

その意味を知って、なぜか少しガッカリしてしまった。

私の経験上、実際の開発現場ではウォーターフォールモデルでの開発が多かった。
要件定義、基本設計、詳細設計、製造、テスト・・・・
企業によっては、外部設計、内部設計などといっているみたいだが、外部設計までにエンドユーザとの仕様を固めておくなど、とにかく上流工程から下流工程への流れに手戻りがないようにきっちり仕様を固めていく、、、、それを由とする開発手法である。
私はシステム開発において何でもかんでもこの開発手法をあてはめるのは間違っていると思っている。
方法論というものも適材適所で適用する必要があるはずである。

システムが大きければ大きいほど計画性重視のこのプロセスは効果的だと思うが、たとえば、以下の場合は逆に向いていないのではないかと思っている。

・システムの規模が小さい場合
・技術検証が付きまとう研究開発の場合
・汎用性を求めるパッケージ開発の場合
・プログラマが企画から開発まですべてのプロセスを行う場合

システム規模が小さい場合は、設計書を書いても設計書を見るのは設計書を書いた本人だけであったり、コーディングのための設計書ではなく単なるお作法で書いているだけということになってしまう。実際、設計書などを書いている時間でプログラムが出来てしまったり、プログラムで初めて気がついたことを設計書に反映させるなど本末転倒であり、規模の小さいシステムの設計書などはシステムが完成したとはまず見ることがなかったり、仮に見たとしてもプログラムと整合性が取れてなく、結局プログラムを見ないと不安であったり、メンテなどは始めからプログラムを見たほうが早かったりする。
この場合、スパイラルモデルでの開発のほうが向いているのである。

研究開発などは、技術実装が可能か不可能かによって、システム仕様やビジネスプランさえ変わることがある。
ボトムアップのアプローチである。

汎用性を求めるパッケージの場合は、設計でその仕組みを厳密に定義するのは非常に難しい。ユーザカスタマイズがUIによる設定で行えるように、あらゆるフラグを設ける必要があり、実際のコーディングで初めてデータベースのあるべき構造が明らかになってくる。

詳細設計の通りにしか作りません!という仕事割り切りのワーカープログラマは話が別だが、創作意欲とノウハウのあるプログラマはある意味職人であり、こんなものをどんな方法でどのように作りますといちいち日本語に書いたりするよりは、頭のイメージをいきなりプログラミング言語で表現するほうが適している。プログラム自体がドキュメントであり成果物でもあるのだ。

このようなケースでは私が最初にイメージしたカウボーイコーディングの手法が最も効果的なのではないかと思うのである。
アジャイル開発やエクストリーム・プログラミングなどという方法論もあり、いわゆるドキュメントよりもソースコードに重きを置いたものであるという。

言われたとおりに動くのは日本人の国民性だからやっぱりウォーターフォールが向いているのだよ、と言ってしまっては、ワーカープログラマしか育たない土壌にしかならないのではないかと思うのである。

| | コメント (4) | トラックバック (0)

業務システム低価格競争

ビジネスアプリケーションをWebサービスとして提供するスタイルが増えてきている。
オーダーメイドによる業務システムの構築は、システム的なユーザのニーズを満たせる反面、納期に時間が掛かる、構築費用が高いなどの特徴があげられる。
特異な業務にはこれしか方法がないと言わざるを得ないが、財務、会計、生産、営業などの一般的な業務システムであったり、メールやグループウェアなどのインフラ基盤、機能は妥協してでもすぐに業務を回したい場合などは、商用パッケージ製品や、ASPやSaaSなどといったプロバイダ提供のWebアプリケーションサービスを利用するのが効果的である。

特に最近はグループウェアなどのインフラ基盤以外にもCRMや会計業務など業務システム自体をWebサービスによって実現しているケースもある。
背景としては、インターネット回線の高速化、リッチクライアントやAjaxなどによるWebアプリケーションの軽快な動作、プロバイダの万全なセキュリティ対策などが挙げられる。
オーダーメイドのシステム開発は、システム提供者側もサービスを受ける側もコスト高く付く。したがって、汎用的なシステムは、ある程度のカスタマイズ機能を持たせてパッケージ製品化したり、Webのインフラを利用したASPサービスとして提供し、コストを抑えた薄利多売のビジネスモデルを選択するケースが多い。

今日面白い記事を見つけた。

http://itpro.nikkeibp.co.jp/article/NEWS/20080428/300330/

あるシステムインテグレータが1業務あたり9万8000円でオーダーメイドによるシステム開発を請け負うサービスを開始したというもの。

IT業界には、ソフトウェアの品質面、管理面、生産効率面などの向上や開発標準を目的とした様々なシステム開発フレームワークが存在する。
最近では従来からあるオブジェクト指向のコンポーネント概念と似た、SOAといわれるビジネスロジックをサービスとして提供するサービス指向のシステム開発概念が生まれ、システムの開発と改良をすばやく、低コストで行うという技術手法が生まれてきている。

9万8000円でオーダーメイドの例もそうだが、システム開発の低価格を実現できるインフラが整ってきている。
システム導入は高くつくという常識を破ったサービスが今度ますます出てくるのではないだろうか。

| | コメント (1) | トラックバック (0)

グリーンITの波に乗って

コンピュータの省電力化によって電力コストを削減しようという動きが高まっている。
当然のことながら、省電力化によって直接的に経費(電力コスト)の削減が図れるのだが、昨今、電力の消費を抑えることでCO2の排出を削減する環境対策を主軸とた「グリーンIT」が話題を呼んでいる。
グリーンITとは「環境にやさしいコンピュータ」または「エコ環境を意識したコンピュータの使い方」のことを指す。
環境対策の流れはIT業界にも押し寄せてきた。

これは一つの大きなビジネスチャンスである。

この動向に前後して脚光を浴びている技術がある。
「仮想化技術」と「シンクライアント」である。
グリーンITはこれらの技術のビジネス化への追い風の一つになっている。
サーバ仮想化によって物理的なサーバの台数を減らすことができ、シンクライアントではクライアントの電力消費を抑えることが出来るからだ。
しかし、グリーンITによって促される現象はコレだけではない。
コンピュータを構成するハードウェアの部品一つ一つを省電力化し、トータルで電力消費を抑えようとする製造メーカの動きも活発のようだ。

大手企業は業界の流行を敏感にキャッチし、じっと様子を伺いながら、時期を見計らって一気にソリューションを展開する。
シンクライアントと仮想化技術を融合したソリューションがいい例かもしれない。
我が社のような小さな会社には難しいアプローチである。
しかし、このようなビジネスチャンスを確実にモノにしていくシナリオはいくらでもあると思っている。
サーバの設置場所や仮想化製品の適用、クライアントパソコンの比較的簡単なソフトウェア制御でもグリーンITは実現できる。

業界の流れは確実に省エネに向かっている。
細々としたサービスでこのチャンスをモノにしない手はないだろうと思う今日この頃である。

| | コメント (0) | トラックバック (0)

その他のカテゴリー

パソコン・インターネット | ビジネス | 音楽