データ解析・分析でもなんでも、プログラミングをするときに、肝に銘じておかなければならないことは、ちょっとでもコードを書いたらすぐ実行して確認する、ということです。気持ち的には、一行ずつ確認したいくらいです。
プログラミング初心者は何をすべき?
プログラミングについては、言語ごとにとても分かりやすい入門サイトがたくさんあります。わたしが最初にプログラミングを始めたころと比べて、とても入門サイトが充実していて、だいぶプログラミングの垣根が下がりました。プログラミングの初心者は、そのようなサイトを見て、まずは自分でコードを書いて実行してみましょう。さらには、一つ自分で機械学習・データマイニングの手法の関数・クラスや、何らかのアプリでも作れたら、もう一人前と胸を張ってよいです。
どうしてプログラミング初心者が挫折してしまうのか?
しかし、ここまでたどりつけるプログラミング初心者は少ない。途中で挫折してしまう人がとても多い。わたしも残念でなりません。では、どうして途中でプログラミングをやめてしまうのでしょうか?
それは、エラーがでてプログラムがうまく動かなく、そのエラーの原因・対処法がわからないためです。これでプログラミングがつまらなくなってしまい、プログラミングのための時間をつくろうとしなくなり、やめてしまうのです。実にもったいない。
初心者はコードを一度に書きすぎる
では、どうしてエラーの原因・対処法がわからないのでしょうか?
みなさん、コードを一度に書きすぎなのです。そりゃ10行とか100行とか、たくさん書いてから実行したら、優秀な開発環境を使っていても、その中から原因を特定することは難しいです。
料理も同じですよね。途中に何も確認しないで最後まで作って、できたあとに美味しくなかったとき、
- まぜるのが足りなかったのか?
- 水が足りなかったのか?
- 砂糖を入れすぎたのか?
- 塩を入れすぎたのか?
など、原因はわかりませんよね。なので、料理も途中でうまく作れているか確認しながらすすめます。料理本にも、まぜたあとに だまがなくなったのを確認してから次に進みます、とか、水をいれて食材が隠れることを確認します、とか確認すべきことが書いてありますよね。砂糖や塩を入れた後は味見もします。このように、その都度確認しながら進めることで、最終的に美味しい料理を作りこむことができるわけです。
1行~数行ごとに確認!
プログラミングも料理もやることは同じです。
1行~数行書いたら実行して確認します。場合によっては、とりあえず変数に適当な値を入れておいて実行します。ここで注意してほしいのは、エラーが出なかったからといって満足してはいけません。具体的に変数の中身を表示させたり、txtファイルやcsvファイルに出力させたりして、自分が期待したとおりに動作しているかも確認しましょう。
この、1行~数行書いたら実行して確認、を繰り返しましょう。この繰り返しにより、最終的に100行とかのコードにすればよいのです。そうすれば、エラーがでたり、期待どおりに動作していなかったときに、直前に書いた1行~数行の中に原因があることが一目瞭然です。そこにしぼって原因を究明しましょう。また、変数の中身を表示させたり、txtファイルやcsvファイルに出力させたりしていますので、その内容を見ることで対処法も検討しやすいのです。
関数にしたり、クラスにしたり
場合によっては、一連の処理を関数にまとめたり、クラスを作りながらプログラミングをすることもあるでしょう。むしろ実際はこの方が多いです。この場合でも、1行~数行書いたら実行・確認の繰り返し、はまったく同じです。さらには、関数やクラスができたら、それらの関数・クラスごとに、エラーがでないか、期待通りに動作するか実行して確認しましょう。いわゆるユニットテストです。こうすることで、関数群・クラス群を作りこんでいきます。
でも、めんどくさい
正直、1行~数行ごとに確認するのは、特に慣れてきたときにめんどくさく感じます。でも、必ずやりましょう。長いコードを書いてからエラーになったり、最終的に期待どおりの動作をしなくなったりしたときに、困るのは自分自身です。製品として自分の手を離れたときに、エラーが見つかったら、その人の信頼も失ってしまいます。
急がば回れ、プログラミングをするときはこの精神でいきましょう。
もちろん、1行~数行ごとに実行して、全く問題なく動作するのを見るのは気持ちがいいものです。一歩一歩ですが、着実に進んでいることを実感できます。
まとめ
ちゃんとしたプログラムを作るときに、1行~数行ごとに実行して確認することは必要不可欠です。ときにめんどうに感じることもありますが、自分の子どものようなコードが一歩ずつ着実に成長する姿を見るのを楽しみながら、しっかりと実行・確認しながらプログラミングを進めましょう。
ご案内。
- 実践的なデータ解析の手順
- データ解析の手順の各段階における手法
- 公開中のプログラム・コード一覧(実用的かつ実践的なデータ解析・機械学習・データマイニング)
- 主成分分析(PCA)の進化する入門書・実践書~数式なしの導入から実践的応用・結果の解釈まで~(随時更新)
- 20人の学生に対する研究テーマの決め方
オススメ記事セレクション。
- 大学教員の5つのメリット (とデメリット?)
- 現役データサイエンティストへの『人工知能って怖いの?』に対する回答
- 人工知能との未来における人の役割~現役のデータサイエンティストのメッセージ~
- 集中する時間を確保するために大学教授が行っている8つのこと
- 風邪を引かないために大学教授が毎日行っている7つの方法
twitterでも発信中。
フォローしていただけると嬉しいです。
Follow @univprofblog1Tweets by univprofblog1
無料メルマガでブログにない情報を配信中。
無料メルマガの登録はこちら