プログラミング初心者の方はそもそもプログラムってどう書くのと
思う方が多いと思います。
私も文系卒だったので、新人研修で書き方が分からずボコボコに言われたことは今となっては笑い話です。
また、開発案件になると設計書はあるけど、詳細がなくハショられていることも多いです。
そんな時に使える考え方を紹介します。
これはプログラミング言語を問わず、どこでも使える考え方なので、ご参考下さい。
・プログラミング初心者でどう書いていくか分からない
・そこそこ書けるけど、設計書にない部分をコードに書き起こすのが苦手
・読めはするけど、書こうとすると上手くできない
コードが書けない原因
書けないパターンは大きく分けると二つあると思います。
①プログラミング経験が浅く(3カ月未満)、書き方が分かっていない
②書き方はそこそこ分かっているが、コードに落とし込めない
プログラミング経験が浅い(3カ月未満)時の原因
①の原因は知識量が足りていないことです。
なので、①に該当する人はまずは勉強していくことがまず最初のステップです。
参考書や、ウェブサイトでこんな書き方をすればいいのだと言うレベルで良いので知っていきましょう。
コードの書き方をすべて暗記する必要はありません。
書き方を何となく覚えておいて、次に書くときに分からなければ調べればOKです。
コードに落とし込めない時の原因
②のパターンに対しての原因は何でしょうか。
それは、ずばり、実現したい処理をプロセス立てて分解できていないからです。
実現したいことを一気にやろうとしてしまうことです。
大切なのは、実現したいことを一気に書こうとするのではなく、分解していくことです。
次の章で、具体例とともにもう少し深く対策を紹介します。
コードに落とし込めない時は「分解する」
先ほど書いたように、考え方としては「実現したい処理をプロセス立てて分解する」ことです。
例えば、C#で以下の処理を作る必要があったとします。
エクセルを取込んで、データベースを更新させる
当たり前ですが、C#やSQLの処理でこれを1コードで書く処理は用意されていません。
小さい単位の部品しか用意されていません。
なので、部品(メソッド、クラス)を使って汎用性を持たせたプログラムを組んでいく必要があります。
これが我々プログラマーの仕事です。
設計書の内容をさらに分解した例
設計書には少しはプロセスが書いてあるはずです。
それを更に分解していくことがカギになります。
仮に以下のように書いてあったとします。
1.エクセル取込ボタンをクリック
2.エクセルを開く
3.エクセルをdatatableに取込む
4.データの行数分ループ
4-1.1行ずつデータベースを更新
例えば、ここでは2~3までをコードに落としこむ時に、手が止まるかもしれません。
ここを分解してみます。
2.エクセルを開く
2-1.ファイルダイアログを開く
2-2.ダイアログでエクセルを選択する
2-3.選択したエクセルのパスを変数に格納する
2-4.エクセルパスからエクセルを開く
3.ダイアログで選択したエクセルをdatatableに取込む
赤字で書いたように分解しました。
これで書き方のプロセスはだいぶ明確になりました。
プログラミングのエディタにコメントなどで書いておくと良いでしょう。
分解しても書き方が分からない場合はググレ!
ここまで分解しても分からない場合、単に書き方の知識がないだけです。
でもここまで分解できていれば、大抵の場合、実現する処理は用意されています。
なので、分解して書いた言葉をGoogleで検索してみれば、結構書き方は出てきます。
このプロセスを繰り返していけば、知識は少しずつ増え、そのうち少し分解しただけで書き方が分かるようになってきます。
ググっても分からなければ、実現プロセスを変える
それでも難しい場合は、実現プロセスを変えて、別のアイディアで処理を実現させましょう。
例えば、以下の2-4をしようとして見たが、エクセルがインストールされていないなんてこともあります。
2.エクセルを開く
2-1.ファイルダイアログを開く
2-2.ダイアログでエクセルを選択する
2-3.選択したエクセルのパスを変数に格納する
2-4.エクセルパスからエクセルを開く
⇒エクセルはインストールされていないからそもそも開けない
3.ダイアログで選択したエクセルをdatatableに取込む
なので、エクセルを開くというアプローチを止めて、エクセルを開かずに読取るようにすればどうかを考えます。
こんな風に、実現プロセスを変更して、ネットで調べれば答えは見つかるはずです。
見つからなければ、別の実現プロセスはどうかとアプローチを変えてみるを繰り返すのです。
これをやれば、大抵のことはほぼ確実に解決できます。
そもそも、プログラミングの本質は何かというと…
そもそも、プログラミングの考え方の本質は何かというと、問題解決能力です。
良い記事があったので引用です。
プログラミング的思考とは広義の意味では「問題解決能力」のことだと言ってもあながち間違いではない
問題解決をするときって、ものごとを分解して一つずつ対策を打つものですよね。
それと同じです。
プログラミングも問題解決と同様に、分解して進めることが大切ということです。
プログラミングで知っておけば十分な基本文法
ググっても全く理解できないということはあり得ますが、最低限の文法をを知っておけば知れべ手理解することはできます。
大抵のことは以下が分かっていれば何とか出来ると思います。
※これができれば、プログラミングが絶対できるというわけではありませんが…
■変数、データの型
■IF文の使い方が分かる
■ループ(for文、foreach文)の使い方が分かる
■データの使い方が分かる
(複数データを処理する配列やテーブルのことです)
■SQLで基本的なデータの検索・登録・更新が使える
なぜ基本の文法で十分だと思うか
なぜこれくらいで十分だと思うかと言うと、実際にアプリケーションで扱うのは「大量のデータ」です。
その大量データを効率的に検索、登録、更新、削除するめに、アプリケーションがあります。
となると、データの扱い方が分かっていて、大量に登録・更新するときはループ処理をするだけです。
後は、条件によってIF文で分岐させれば大抵の大量データを扱うことができるのです。
なので、基本的な文法をしれば、次は自分で手を動かして処理を作る(試行錯誤)あるのみです。
モチベーションを保つために
プログラミングと向かい合っていくためにはモチベーションが必要です。
特に、始めたてのころは大切になります。
モチベーションを保つためにはこんなことをプログラミングでやってみたいと思う自己実現欲・好奇心が重要です。
なので、これを作ってみたいと思うこと、興味の湧くことをまずは探してみるのも大切です。
私も興味から本気でC#のデスクトップアプリを作ってみたりしてました。
イベントが近づくとメールが来るアプリです。
作って1年ですが、今でも使っています。自分のためだけですが(笑)
自分の熱い思いや、興味に勝るものはありません。
プログラミングが向いていない諦めるのはまだ早い!
プログラミングが向いていないと悩むのはOKです。
でも、諦めるにはまだ早いです。
やることは分解、ググる、コードを書いていくの3つくらいです。
私も新卒の時はかなり打ちのめされて、ビビッて、思考が止まっている時期もありました。
仕事なので、難しいのは当たり前のことです。
慣れていなければ時間は確かにかかりますが、できないと決めつけるのはもったいないです。
ちょっと意識を変えて試してみよう
プロセス立てて、分解するなんて当たり前かもしれません。
でも、プログラミングを始めたばかりだったり、忙しいとどうしてもそこをやらないことが多いです。
分かっている方も再認識して意識しながらプログラミングに向き合ってみて下さい。
また、分解すれば、コードの書き方はweb上のそこら中に散らばっています。
なので、あとは自力で調べていくだけです。
この記事がプログラミングでお困りの方に参考になれば幸いです。
色々試してみよう
ここで紹介したことは私の一意件です。
他にもいろんなことがネットにはあります。
そこから得た情報をちょっとずつ試して、できるようになることを信じましょう!