最近、「ソフトウェア開発を勉強しています」という方が多くなっていると感じます。
長年、ソフトウェア開発の現場にいるはずですが、ソフトウェア開発というのが何かと聞かれても、うまく答えられない気がします。
私は、ここ十数年、自分でコードを書いた記憶がありません。
それでも私はソフトウェア開発をしているつもりです。
「ソフトウェア開発」ってなんでしょう?
ソフトウェア開発 ≠ コーディング。
ソフトウェア開発というものが何かを理解して、設計して、コーディングをしてもらうことは、ソフトウェアを開発していると言えると思います。
だから、持論で語らせていただきます。
ソフトウェア開発とは
ソフトウェアというものは、どうやって作るのでしょうか?
いろいろな開発言語があります。
BASICFO、RTRAN、COBOL、PASCAL、C、C++、C#、Java、JavaScript、Ruby、Python、PHP、Perl、Assembler、HTML5、swift、・・・・。
これらもソフトウェアが開発できますので、開発言語というのでしょうか。
- Excelマクロ
- Shell Script
- BATファイル
そして様々なOSがあります。
- Windows
- MAC OS
- iOS
- Android
- ITRON
- VX Works
様々なOSの上で動作するアプリケーションを作ることをソフトウェア開発と呼びます。
ブラウザ上で動作するもの、Excel上で動作するものを作成すること、OSそのものを作ることも、ソフトウェアを開発と呼びます。
OSも必要としないソフトウェアもあります。
SDカード上のファームウェア、DVDドライブを制御するソフトウェア、などなど。
世の中にはありとあらゆるところにソフトウェアが存在しています。
数字だけでもロジックを作成する開発もあります。
CPUに直接指示を与えるための言語は、数字です。
CPUがもっている機能を実現するための制御スイッチ(レジスタ)に数字を書き込むと、結果が得られます。その結果を使って、別のレジスタに別の数字の組み合わせをかくことで、別の動作や結果が得られます。
文字や数字さえ使わない場合もありますね。
例えば、黒いマジックの上を辿って動作する車があったとして、白い紙の上にマジックで線を引くこと。線を組み合わせて、一定の規定した動作を与えること。
右に進んで、左に進み、一回転して、直進し、戻ってくる。そんな線を書いたとしたら、その線を引く行為はソフトウェア開発と呼んで間違いないと思います。
結局、ソフトウェア開発とは、
何かの上で、規定の動作ロジックを作成する行為
そんなことを言ったら、江戸時代からある日本のからくり人形の機械仕掛けの歯車を複雑に組み合わせて規定の動作を与える仕事は、ソフトウェア?
つまり、ソフトウェアが何という定義は明確にはありません。
なんか、もやっとしたものがソフトウェア。
反対に、しっかりと形のあるものがハードウェアですね。
ソフトウェア開発とは、もやっとしたものを作ること
もやっとしたものを作るには、たくさんの手法をしらなければいけないです。
たくさんの言語の中から、最適なものを選択し、たくさんのロジック、開発手法を駆使して、なにかつくれる知識が必要です。
OSを必要としないソフトウェアや、OSの作成においては、ハードウェアの豊富な知識も必要となります。
サーバーのソフトウェアを作るなら、ネットワークの知識、様々なネットワークサービスの知識、ミドルウェアの使い方などの知識が必要です。
本当に、様々な知識を駆使しなければ、もやっとしたものは良くならないのです。
作りたい、もやっとしたものは何でしょう?
そのイメージがある程度無いと、必要な知識の範囲が果てしなく広がってしまいます。
必要な言語はなんでしょうか?C言語の知識無くても、JavaだけでもPythonだけでもソフトウェア開発ができます。
ゲームソフトウェアを作りたいなら、必要なロジックを沢山学びましょう。
とにかく、何かつくりたいものを考えて、つくってみることを繰り返すのが、ソフトウェア開発の学習の近道です。
これからソフトウェア開発を勉強しようと頑張っている方、学生さん、若手社員の皆さん。もやっとしたものが、思ったとおりに作れるようになるように頑張ってください。