スクラッチ開発とは

単にスクラッチ開発というと意味の範囲が広いようなので、ここで説明する話題はソフトウェアを開発するときの方法に限定した話題となっている事を最初に書いておきます。

まずソフトウェアの開発とはどのような作業になるのかを、ざっくりと説明します。

開発手順1)

コンピューターやインターネットを活用して処理したい事を決めます。例えば、経理処理を効率化するとか、収集したデータを解析するとか、人がやるよりもコンピューターにやらせた方が良い事を決めます。やりたい事がだいたいみえてきたら、開発費用と効果(効率化等)の兼ね合いも考えて無駄が出ないようにすることも大切です。

開発手順2)

処理したい事を具体的にどのように実現するかを検討して仕様としてまとめます。どのようなコンピューターやネットワーク場合によってはデータベース等を使い、どのような処理手順で、どのようなプログラミング言語を使って開発するかなどを考えて決める段階です。

開発手順3)

実装と呼ばれる段階で、プログラマーなどの技術者が仕様に沿ってプログラムを作ります。プログラムを作るという作業は様々な手順や方法がありますが、基本的には文字(テキスト)でコンピューターに実行させたい命令を書いていくことになります。

たとえば、下のような感じのテキストになり、このテキストの書き方のルールがプログラミング言語と呼ばれています。

if( a == 10 ) {
printf( “10です” );
}

これはあくまで例ですが、C言語というプログラミング言語にはそれようの書き方があり、PHP という言語には別の書き方のルールがあります。様々なプログラミング言語が存在しますが、処理したい内容や実行する環境(PCなのか、機器に組み込むかか等)によって向き不向きがあるので適材適所で言語は選択されます。

処理したい内容によって、書き上げるテキストの量は大きく異なりますが、数千、数万行といった非常に多くのテキストを書き上げる事も珍しくありません。

開発手順4)

作ったプログラムが正しく動作するかテストを行います。作ったプログラムは莫大な行数になる事も多いのですが、非常に小さなミス、例えば1文字書き間違えるだけで正しく動かなくなります。そのため、普通は作り上げたプログラムを実用する前に入念に正しく動作するか確認を行います。テストを通過すると実運用に入りますが、実運用開始後も不具合の修正や機能の修正、追加などのために継続してプログラムを改善する事も多く行われています。

scratch開発

以上がソフトウェアを開発するときのざっくりしたイメージになります。大変な作業っぽいなとイメージしていただければ私の作文は成功です。つまり、ソフトウェア開発は大変な作業で、特殊な技術を持った技術者が長時間かけて作りますし、それを利用する人も仕様作成やテストなどで時間を使う事になります。言い換えれば、ソフトウェア開発はそれなりの費用がかか仕事です。コンピューターに何をさせるかを検討するときに、効率化によるプラスよりも開発コストが上回る事のないようにしっかりと検討する必要があります。

このように、何もない白紙の状態からプログラムを開発する進め方をスクラッチ開発と言います。上で説明したように、何をどのように処理するかといった事から事細かに設計していくので、思うようなシステムを作る事ができます。反面、費用や時間が沢山必要になりますから、それなりのお金が動かせる企業などが開発会社に依頼して開発を行う事が多いようです。あるいは大きな企業では自社内にシステム開発専門の部署を作って日々開発や改善に取り組んでいます。

コンピューターで処理したい事の中には多くの人が共通でもつ課題もあります。ワープロのようにきれいに文章を書いて印刷したいとか、メールを送信したいといった要望を実現するために、スクラッチ開発を実行する人は居ません。既製品のソフトを購入するなどで開発作業をすっ飛ばして、いきなり運用に入るわけです。プログラム開発を行う会社は一つのプログラムを多数に販売する事で単価を下げる事ができますし、プログラムのユーザーは安価ですぐにソフトを運用できます。このようなプログラムは、パッケージソフト等とよばれており、Microsofit のオフィスなどは非常に多く人に利用されています。

パッケージ開発

パッケージと言われるのは、実際に店頭に箱に入ったCD等として販売されているという意味もあると思いますが、最近は箱入りのソフトを購入せずインターネット上にあるソフトを利用するといった SaaS型クラウドサービスでのソフトウェアの利用も広がってきています。SaaS型クラウドサービスでは、いちいちソフトを購入してパソコンにセットアップしてなどなどの手間は不要で使いたい時にインターネット経由で利用するだけなので、より簡単に使い始める事ができます。

スクラッチ開発とパッケージソフトの間をとったような製品もあります。基本的な処理は多くの人に共通しているけど、細かい部分はユーザーによって異なるといった課題を解決する場合に丁度良く、費用や開発時間を抑えながら自分の要求もある程度取り込んだシステムが実現できます。このようなソフトはパッケージのカスタマイズなどと呼ばれており、ソフトの基本部分は既製品を購入して自社に合わせて調整が必要な部分だけを開発する事になります。紳士服のセミオーダーのような感じですね。