umentuのブログ

趣味や自学でプログラミングをする上で思ったことを書いていきます。pythonのブログ: http://blog.umentu.work

「プログラムを作る」スタートラインに立つために

入門者にとってのプログラミング

プログラミングの入門者の方たちと話すと、

「プログラミングでifとかforとかやったけど、何が作れるのかのイメージがわかない」
「入門本をやってるけど、どうやってプログラムができるかわからない」

という声を聞きます。もう一歩進むことができた方でも

「入門本を通読したけど、そのあとどうしたらいいかわからない」
「なぜクラスを使う必要があるのかわからない」

という声も聞いたことがあります。それらの質問に対して一つの便利な言葉で回答することができます。

「自由にプログラムを作ればいいんだよ」

この言葉で突き放された気持ちになったことのある人は多いのではないのでしょうか。 自由というのは、なんとも途方のない言葉です。

なぜ「自由に」プログラムを作れないか

入門してしばらくしても、
「入門本をやったのに」
「これをやったらプログラムが作れると聞いたのに」
と、自由にプログラムが作れないもどかしさを感じている方がいるはずです。

なぜプログラムが自由に作れないか。 それはプログラミングプログラムを作ることにギャップがあるからであるように思います。

「プログラミング」と「プログラムを作ること」のギャップ

あなたが劇作家であることをイメージしてください。 プログラム というのは、とある劇のストーリーを意味します。 プログラミングというのは、その劇の台本を書く作業です。

物語の構成が決まっているのであれば、それに当てはまるセリフはある程度決まってきます。 「愛してる」というところを「このゴミが」ということは(ツンデレならありえますが)あまりないですね。

しかし、台本を書く作業から始めるとどうでしょう。 どのように物語が進行していくか「自由」に決められますが、物語の収集がつく気がしませんね。
(セリフ先行で考える作家さんも多くいらっしゃいますが)

ハッピーエンドにしろバッドエンドにしろ、プログラムを作る上では物語の結末ありきで考えたほうがよさそうです。

プログラムを作るイメージを脳内に作る

どういうプログラムが作れるのか、というイメージを考えるのはどういう物語を作るのか、という作業と似ているものだと思います。 なんとなく才能が必要そうな作業ですよね。でもプログラムは物語よりも目に見えるものなので、想像がつきやすいように思えます。

それでもはじめのうちは正直言って、難しいかと思います。

もし、やりたいことが決まっている場合は、*そのやりたいことを分解してみる ことをおすすめします。
ありきたりな答えですね。すみません。
twitterのツイートを集めて表示したい場合は、

twitterからツイートを取得する」
「取得したツイートを保存する」
「保存したツイートを表示する」

というような分解をします。その後に、例えばツイートがデータベースに保存されている場合で「保存したツイートを表示する」を、

「データベースにアクセスする」
「データを取得する」
「HTMLに出力する」

などに分解するとプログラミングが書きやすくなります。その上で試行錯誤してみるといいと思います。

もし、やりたいことが今のところない場合は、まず プログラミングでなにができるかを改めて調べてみるのをおすすめします。 その中で 何を作ってみたいか を見つけてみてください。

もしかしたら自分が勉強しているプログラミング言語だと、「作りたい」と感じたプログラムが作りづらい事があるかもしれません。
そんな時は、意地でも自分の勉強しているプログラミング言語でつくってみるか、あっさりと勉強するプログラミング言語を変えてみるかのどちらかしかありません。 個人的には、プログラミング言語を変えてみる ことで使えるプログラミング言語を増やすきっかけになったと感じていますが、好みやプログラミング言語の理解度にもよります。こればっかりはなかなか基準が設けづらいです。コメントなりに残してもらえればお答え出来る範囲でお応えします。

もし、それで作りたいものが定まったら、上の「やりたいことが決まっている場合は」をやってみてください。

それでも「どうしていいかよくわからないけど、プログラミングをしてみたい」という人は・・・身近にいるプログラミングが出来る人に聞くといいと思います。 少なくとも、何をすればいいかのヒントはもらえるかと思います。
周りにいない場合は、コメントなりtwitterskypeなりで自分に聞きに来てください。 できる限り力になります。
(即座に回答できないかもしれませんが、twitterskypeだとよりご相談に乗れると思います。(id: umekichinano) )

最後に

最終的には「人に聞け」というないようになってしまってしまいました。
しかし、ネット上の色々な有識者の人たちのqiitaなどを目にすると、「知っている人に聞くのが早い」と言っているのを目にしますし、これには大いに同意しています。

試行錯誤は絶対に必要です。ですが、「プログラミング習得はやっぱり目的であってはならない」でも書いたとおり、「プログラムを作る」最初の一歩は誰かの力を借りてもいいように思うのです。悩むのはその次からでも遅くはありません。

一筋縄にいかないこともでてきますが、「プログラムを作る」スタートラインに立つ上で大事だと思ったことを書いてみました。