読者です 読者をやめる 読者になる 読者になる

Unityでインディゲーム道!

プログラム、Unity初心者がインディゲーム制作を目指して日々思うことなどを書き綴ります。

Unityのための打倒C# [0](その2)コードを書き始める前に全ては決まる!?

“プログラミングする”ということは“コードを書く”ということだけではなく、実際に書き始める前に、いくつものプロセスがあるということについて。
キーワード: 要件定義

  

↓前回の記事の補完になります。 

この記事で、コードを書くに当たっての基本的な事柄について考えてみましたが、大事なことを書き忘れていたので追加記事で補完します。

 

コードを書くだけがプログラミングじゃない、ということ  

上記事にも書きましたが、要はコンピュータに何か仕事をしてもらうわけです。

まずはこういうことができたらいいな、という欲求がまず先にあって、それを実現するためには機械にどう動いてもらうか?

そして具体的にはどういう順序どう動作させるか?ということを論理的に組み立てるというプロセスがまずあるわけです。 

 

どうしたいのか?具体的にどういう機能が欲しいのかをあらかじめまとめることを

最近知った言葉で、『要件定義』というらしいです。

  

思考を辿る。ロジックの組み立て。

他人の書いたコードを読むのは勉強になる、とよく言われます。

コードを読むという事は単に文面を読むのではなく、そのコードの背後にあるプログラマの思考を読み取るということなのだと思います。

なぜこの手段を取ったのか、と書いた人のその思考プロセスを追うことで、自分で考える上でのヒントにする、ということな訳です。

 

しかしそれは、むしろ初心者には難しい部分でもあると思います。 

 

なんでとりあえず簡単なものでいいから自分で考えて自分でコードを書いてみる、ということを優先したほうがいいのではないでしょうか。

自分の場合、その結果が↓これなわけですが。 

 

本質的には実際のコードというのはあくまで思考の結果の産物でしかない、ということが解って来ました。

ブログ等と違って、ただなんとなく書くものではないということです。 

  

コードを書くに至るまでのプロセス。

 プログラミングを書くという事は、次のように順序立てられます。 

 

・まずはその解決すべき問題を正しく理解する。
 どういった点を解決すべきなのか?何かルールや制約はあるのか?
 
・その問題を解決にはどういう道具が必要なのか?を考える。
 プログラミングで言えば、変数がどれくらい必要なのか、または配列なのか?
 for文が必要なのか?ライブラリやAPIの関数で使えるものがあるか?等ということを考える。 
 
・じゃあコンピュータに具体的にどう動いてもらうか?を論理的に組み立てる。
 (擬似コードや図を書き出すのも一つの手) 
 
・出来上がったロジックを、その言語のコードに落とし込むにはどうするか考える。

 

 

この4つの工程を経て初めて、実際にコードを書き始めるに至るわけです。  

ある意味ではコードを書く前に勝負がついていると言っても良いのかもしれません。

もちろん事前の想定通りに動くことは稀でしょうし、試行錯誤しながらコードを直していくのは当然ですが、出発点としてはこのくらい準備しなければならないと。。

大変ですなー・・・。

 

問題はこのようなことを多くのプログラミング本や、ブログでは教えてくれないんですね。読み方あるいはこういう道具があるよーという単なる説明書でしかない。もちろんちゃんとしたところもあるんですが。

ここら辺はクソブログ問題ですね。 (これについては後日。)

 

書き始めるに前に、実は最も重要な作業は終わっており、後はそれに基づいてコードを書いて、試行錯誤すると。準備の仕方もわからずに直ぐに書こうとしても、書けるわけがないなと思います。

 

まず考えてから書き始めるべし。

実際のコードを書くのはプログラミングにおいての最終工程、ぐらいの気持ちでいようと思います。  

 

 

参考文献: プログラマの考え方がおもしろいほど身につく本

     (原題: Think like a programmer)

      著 V. Anton Spraul      訳 角 征典、高木正弘

     アスキー・メディアワークス