ソフト作り=プログラミングではない!
あなたは、ソフト作りに必要な要素は何だと思いますか?
「プログラミング」――と答えるでしょうか。
もしそうなら「プログラミング」をどんどん勉強して極めれば、多くの人に使われるすごいソフトが作れそうな気がします。
……が、現実はそうではありません。それ以外にもたくさんの要素があるのです。
はぁ!?プログラミング出来れば、すごいソフト作れるんじゃないの?!――と思った方こそ、この記事をご覧ください。
プログラミングってそもそも何だ?
話を進める前に一つ解決しておかなくてはいけない疑問があります。
「プログラミングが出来る」というのは、いったいどういう状態を指すのでしょう?
人によって意見が分かれるところだとは思いますが、ここでは次のように定義します。
具体的にコンピュータにやらせたいこと(仕様)が決まっていて、それをプログラミング言語にして、実際にコンピュータ上で動くプログラムを作れる状態。
例えば、次のような仕様があったとします。
- 「二つ数字を入力して、二つの数字を足した数字を表示しなさい」
上の定義で言う「プログラミングが出来る」というのは、上の仕様から
#include<iostream> int main(void){ int a,b; std::cin >> a >> b; std::cout << a + b; return 0; }
上のようなプログラムを作れる状態を指しています。
プログラミングで出来ること
先ほど挙げた例を見れば分かる通り、「プログラミングが出来る」状態で何かしらのプログラムを作るためには、具体的な指示が必要になります。
ソフトというのは、上で見た小さなプログラムが集まって作られます。
ですから、この状態でソフトを作るには、ソフトに関するありとあらゆることについて具体的な指示が必要になります。
ですが、普通「どんなソフトを作りたい?」と聞かれて思い浮かぶのは、
- この作業を自動化してくるソフトを作りたい
- 爽快感のあるゲームを作りたい
- 面白いゲームを作りたい
という曖昧な指示でしょう。
ソフトを作るためには、曖昧な指示を具体的な指示に変換しなくてはなりません。
箇条書きの1であれば、自動化したい具体的な作業が分かれば何とかなるかもしれません。
しかし、2や3はどうでしょうか。爽快感・面白いというのは人によって違います。
これを具体的な指示に変換するのは、非常に難しいことです。
ソフトはプログラムだけで作れるのか?
素材の問題
曖昧な指示を具体的な指示に変換できたとしても、さらなる問題が立ちはだかります。
それはイラストや音楽などの素材が必要だ、ということです。
ツール系であれば、そこまで必要にはならないかもしれませんが、ゲームであれば数多くの素材が必要になります。
自分で作るのであれば、イラストや音楽を作れるような勉強をしなくてはいけませんし、そうでなければ、人に頼むかどこかの無料素材集から持ってこなくてはなりません。
プロジェクトを管理する
趣味で作っているソフトであれば、いつソフトが完成しようと構わないかもしれませんが、人に頼まれて作っているソフトであれば、期限内に完成させなければなりません。
どのようにソフトを期限内に完成させなければいけないか、というのも考えなくてはいけません。
宣伝
自分だけが使うソフトであれば、宣伝なんてしなくてもいいでしょうが、多くの人に使ってもらいたいなら、宣伝の方法を考える必要があります。
結局……
これ以外にも、ソフト作りに必要な要素はたくさんあります。
……もうお分かりでしょうか。
プログラミングはソフト作りの一部分でしかないということです。
書籍にあるようなプログラミングの問題を解いていけば、確かにプログラミングの能力を高めるのには役立つでしょう。ですが、プログラミングの能力が高まったからといって、ソフト作りの能力が高まるわけではないのです。悲しいことに。
ではどうすればいい?
プログラミングを勉強してもだめなのなら、いったいどうすればいいのでしょう?
ソフトを作ればいいのです。
作りたいと思うソフトを作ればいいのです。
ソフト作りの能力を高めたいのなら、ソフトを作ればいいのです。
とは言っても最初は、作るのに何か月もかかるソフトではなく、数日や1~2週間くらいで作り終わるソフトから作っていくのがいいでしょう。
いや、でも……
ソフト作りにはたくさんの要素が必要なんでしょう?じゃあ、プログラミング以外に必要な要素教えて!全部勉強するから!――説明を聞いて、こう思う人もいるかもしれません。
気持ちは分かります。中途半端に勉強してソフトを作るより、全部きっちり勉強してからソフトを作った方が、良いものが出来上がる気がします。
ですが、そもそもソフト作りに必要な要素を全て挙げることは不可能ですし、仮に出来たとしても全てを極めることなど不可能です。一生かかっても終わりません。
全てをきっちり勉強してからやるより、最低限ソフトを作るのに必要なことだけ勉強してからソフトを作る方が、勉強したこともよく身につきます。
さらに、ソフトを作る前は「これだけ勉強したんだから大丈夫!」と思っていても、ソフトを作っていくと「あ、これ勉強しなきゃだめだな」とか「ここ、あんまり理解出来ていなかった。もう少し詳しく勉強しよう」と勉強したいところが沢山出てくるものです。
もし、勉強したいところが後から出てきても何の問題もありません。勉強したいところを勉強すればいいだけです。
最後に
ソフトを作る、Webサービスを作ると聞くと、どうしても「プログラミングが出来なきゃ作れない」と思いがちです。確かにソフトを作るのに、プログラミングは必要ですが、プログラミングはあくまでソフト・サービスを作るための一つの手段にすぎません。
それを、忘れないようにしておきましょう。
注意!!
この記事は「ソフト作りには、プログラミングは全く必要ない」と言っているわけではありません。タイトルにもある通り「プログラミングがソフト作りの全てではない」と言っているだけです。
決して「プログラミングを勉強しなくていい」ということではありません。
う-ん、よく分からん!
この記事を読んで、疑問や意見があったときは、気軽にコメント欄や私のTwitterから質問してください。