こんにちは、たけっちょです!

 

今回は、最初に就職したソフトウェア開発の会社で培った、

プロから見たら、あまりにも幼稚なプログラミングの考え方、

 

初心者にとっては、えっ?そんなことだけでいいの?

と思えるようなプログラミングの構造、考え方について

少しだけ書いていきたいと思います。

 

これをきっかけに、プログラムに対する考え方が、

少しでも良い方向に変わってくれたらうれしいです!

 

でも、説明が下手なので、

分かりにくかったらごめんなさい…。

 

補足として、

もう30年近く前にちょろっと覚えたCobol言語と、

ここ数年の間に、HPなどを作ろうと思って、

いろんな本などをかじって得た、

PHPやRuby On Railsなどの生半可な知識で、

 

ごくごく初心者向けに、

プログラミングの始め方、考え方として語っていきます。

 

ですので、現役でプログラミングをされている方、

システム開発の熟練者など、

現在、その道で充分飯を食えている方はスルーして頂くか、

手厳しい意見などは遠慮して頂くと有難いです。

 

 

【本編】構造化というかたち

 

新旧のプログラミング言語で多少の違いはあるものの、

どのプログラムでも、基本的にとる形は一つだと思います(多分)。

 

それは、

 

1、初期処理

2、メイン処理

3、終了処理

 

以上の形です。

 

このうち、1と3はほぼ自動というか、言語ごとに、

処理内容とか、コーディング(プログラム記述)内容は、

ほぼ決まっていますので、

自分で考えることはほぼありません(多分)。

 

せいぜい、何の処理がされているかくらいは理解しておく必要はありますが…。

 

 

で、問題は2の『メイン処理』ですね。

 

昔も今も、CobolやNet関連プログラム(PHP、Rubyなど)は、

PC画面を開いた時に、まず何をどう表示させるかで始まります。

(今ドキの各種アプリなども多分そうなっていると思いますが…多分;)

 

 

【メイン処理】の内容は、簡単に言ってしまえば、

 

1、A処理を行う。

2、B処理を行う。

3、C処理を行う。

26、Z処理を行う

27、終了処理へ向かう。

 

といった具合に、必要な処理を大まかに分類して、

その分類した種類の数(ここではA~Z)だけの、

小さなプログラムを作ればいいだけです。

実際、ほんとにこれだけです。

 

 

単純にA~Zの処理を行って、最後に終了するプログラムなら、

この【構造】だけを頭に入れてプログラムすればいいだけです。

 

前述の内容を踏襲すれば、A処理とは、

『最初に画面全体に表示させたい内容を表示する』

処理ということになります。

 

B処理以下は、例えば、会員登録処理だとか、

投稿(入力)してもらうとか、評価してもらうとか…、

自分が組み込みたい処理を、

いくらでも増やしていけばいいだけです。

 

それらの各処理は、それぞれの言語を説明する専門書などで、

詳しく解説されていたり、時には、

サンプルとしてプログラム内容がCD-ROMなどで提供されていたりしますので、

自分のコーディング労力はさぼど大きくないです。

 

ただ、実際には、

順番に処理して終わりというプログラムはほとんど存在しません。

 

通常は、

 

ある一定の条件になるまで、プログラムは停止(待機)し、

ある一定の条件になったら次の処理へむかう、

 

という状態になっています。

 

 

分かりにくいかも知れませんので、例を挙げてみましょう!

 

テレビのリモコンを考えてみて下さい。

 

主にテレビチャンネルのボタンは、

1~12番まであると思います。

 

その番号のボタンを押した時、リモコン内部では、

 

1、1が押されたら、1の信号を出す。

2、2が押されたら、2の信号を出す。

12、12が押されたら、12の信号を出す。

 

というプログラムが入っていると思って下さい、

 

 

普段はじっとしていますが、

 

ボタンが押された瞬間に、

上記の1から12までのプログラムを実行し、

例えば、5が押されたと判断した瞬間に5の信号を出して、

チャンネルが5に切り換わる…パターン①

 

という仕組みになっています。

 

 

分かっていただけますでしょうか?

 

分からない?

 

もし、そう思われた方が居たら少しだけ残念です…(汗)。

 

 

(気を取り直して…)

ですが、安心してください!

 

むしろ、ここからが本番です!

 

 

少し前に戻って、改めて説明させてください…。

 

【メイン処理】の内容は、簡単に言ってしまえば、(…2度目)

 

…超絶簡単に記述すると、

以下のように処理(記述)されているだけです。

 

【実際のメインプログラム】

 

1、 0→sw(スイッチを0にする)

 

2、 スイッチが1になるまでメイン処理を作業する。

 

3、 終了処理へ向かう。

 

【メイン処理の中身】

 

1、A処理を行う(通常は、初期表示)。

もし~なら、〇処理へ向かう(B~Zの任意の処理へ)。

もし~なら、〇処理へ向かう(B~Zの任意の処理へ)。

もし~なら、〇処理へ向かう(B~Zの任意の処理へ)。

もし~なら1→sw(スイッチを1に)する。

 

2、B処理を行う。

もし~なら、〇処理へ向かう(B~Zの任意の処理へ)。

もし~なら、〇処理へ向かう(B~Zの任意の処理へ)。

もし~なら、〇処理へ向かう(B~Zの任意の処理へ)。

もし~なら1→sw(スイッチを1に)する。

 

 

26、Z処理を行う。

もし~なら、〇処理へ向かう(B~Zの任意の処理へ)。

もし~なら、〇処理へ向かう(B~Zの任意の処理へ)。

もし~なら、〇処理へ向かう(B~Zの任意の処理へ)。

もし~なら1→sw(スイッチを1に)する。

もし~なら1→sw(スイッチを1に)する

 

 

---------------------------------------------------

以上です。

 

ちょっと勘のいい方ならお分かりかと思いますが、

メイン処理の考え方の心臓部は一つ、それは…

 

 

ある一定条件を満たしたら、その作業を終了させて次に進む、

 

 

という定義づけをすることだけです。

 

 

で、上記【メイン処理の中身】で記述した部分(前述A~Z)は、

それが一つであろうが、何百であろうが全くかまいません。

 

分かりやすく言うとすると、A~Zそれぞれのプログラムは、

2~3行位のごくシンプルなプログラムの羅列で構わないんです。

 

どうなったら、何をきっかけにして、

その処理から次の処理へ進むようにするか、

それを常に意識してプログラムを組めばいいだけなんです。

 

 

え?やっぱり、まだ分からない…

 

多分…、自分でもそう思います。

 

なんかこう、うまく伝えられない…

 

 

じゃあ、これはどうでしょう?(…最後です…。)

 

(例え1)

あなたが今、このブログを見たのは、どこからか、

この記事へのリンクをクリックしたからだと思いますが、

 

その瞬間、このページが表示されました…初期処理

 

今、あなたが見ているこの瞬間も、裏では、

 

・プロフィールが押されたら、プロフィール表示画面表示処理をする。

・スクロールボタン(右サイドバーなど)を押したら、画面をスクロールさせる。

・いいねを押したら、そのボタンの色を変更してカウントを+1する。

・ペタを押したら、そのボタンの色を変更してカウントを+1する。

・コメントするボタンを押したら、コメント欄表示画面を表示して、

コメント欄に入力を促す。…(以上がメイン処理

 

こういう事になります。

 

ちなみに、このプログラムには終了処理はありません。

 

 

あるとすれば、ブラウザの戻るボタンや、他のURLが選ばれたら、

その時に例えば、いいねやペタしたこと、コメントしたことなどを記憶する、

ということくらいですね。(多分、ブラウザとの連携になってると思います…多分(汗)。

 

 

ここまで読んで頂き、まだほとんど理解できていないとしたら、ごめんなさい…。

私の力不足でした…。

今すぐ、他のページへ飛んで下さい…;。

 

【勝手に無理やり総括…】

昔と違って、今はネット関係のプログラミングが多いでしょう。

 

その場合なら、昔よりも尚一層、上記に挙げてきた通り、

最初の表示の内容と、表示中のアクション(ボタンや入力欄)に対して、

どういう作業(処理)をして、次のどうするか(進むか)を決めるだけです。

 

例えば…

どっかのサイトなら、星を5個満点中、3個で評価したら、

プログラムは、それまでの総点数に3を足し、総人数に1を足し、

前者を後者で割り算した結果を、評価点数として表示しているだけです。

そして、その後、『別の店を探す』とかなんとかのボタンを設けるなどして、

次に意図する画面へ導いていきます。

 

で、こういった細々としたプログラムは、どの言語でも、

概ねフォーマットが決まってますので、

ほぼその通りに記述するだけです。

 

ただし、機能が多くなるほど、気が遠くなるくらい、

時間と手間がかかりますが、難易度で言えば、

難しい漢字に出くわしたら、部首や読みを基に辞書でしらべて、

それを読んで理解するだけのようなものです。

専門書や、ネットで調べれば、たいていはどうとでもなります。

 

難しいのは、個別のプログラミング技術よりは、

まず最初に、

頭の中で迷子にならない構造作りが必要です。

これがいわゆる、『設計』ということになります。

 

 

優秀なエンジニアほど、プログラミング自体よりも、

設計に時間をかけているはずです。

 

 

プログラム初心者の方は…、

ベテランの方も恐らく皆やっていると思われますが、

 

まずは紙に書いて、自分の作りたいプログラムを、

抜け穴の無いように作ってみて下さい。

 

・画面を表示する。

・会員登録をするかしないか?を聞く。

→する時は、会員登録画面へ。しないときは、通常表示へ戻す。

・通常表示画面で、〇〇のボタンが押されたら…

→会員だったら、IDとPWを入力する画面へ、非会員なら、

『会員以外はご覧になりません』を表示し、…

 

プログラムは延々と続いていきます…。

 

 

さあ、紙を鉛筆を!(ちょっと古いな…)

 

 

最後までご覧頂きありがとうございました。

乱筆乱文をご容赦下さい。

 

 

かしこ。