広瀬すずさん、可愛いですよね。
最近、広瀬すずさんのことを考えていたら午前が終わっている、という日が続いてしまい困っています。なにも自分のせいではなく、広瀬すずさんが悪いのですが。
でもそんな自分でも午後はまじめにプログラムを書いています。まだまだ素人ですが、こんなに趣味が長続きしたのは麻雀以来です。なのでその遍歴を振り返って、挫折せずにプログラミングを楽しむにはどうすればいいのかを改めて考えてみました。
まずは先に要点を。
- ただの勉強は長続きしないのでやめる
- キーボードを叩く前に目的を考える
- 自分が本当に使いたいと思うものを作る
- 勉強するのは必要が生じてから
- アガる音楽を聴く
本当に大切なことは、プログラミング学習に目的を持つということです。プログラミングに何度も挫折して悲しんでいる人に見ていただけたら嬉しいです。
1.ただの勉強は長続きしないのでやめる
これ、大事です。一番ダメなのがとりあえずC言語からやってみようというアレです。わからなくて、つまらなくて飽きてしまう人が大半かと思います。なかには環境設定で辛くなってやめてしまう人もいると思います。
これは別にC言語が悪いというわけではなく、なんとなくC言語を始めちゃう風潮が悪いんだと思います。僕自身、御多分にもれずC言語から始めて何回も挫折しました。
「はじめてのC言語」みたいな本で勉強
↓
なにこれつまらん、Hello, World!
↓
2年ぐらいプログラミングから離れる
↓
久々にやってみるか・・・、なんとなくできた?
↓
ポインタって難しい、重点的に勉強しよう
↓
なんとなくわかった?、で、何するの?
↓
Win32 API?他の言語の勉強?なにすればいいかわからん!
こんな感じで勉強目的のプログラミングは行き詰まることが多いと思います。僕もC言語の勉強をしながら、for文をまわしながら、家計簿のプログラムをコマンドラインで実行しながら、こんなのExcelでやったほうがわかりやすいし早いじゃんって心の中で思っていました。
一番大事なことは、ただ勉強をするのではなく目的を持つことです。
2.キーボードを叩く前に目的を考える
ただC言語の勉強をしても、プログラムがイマイチなんの役に立つかわかりません。Hello, World!を100回まわしたところで誰も幸せにはなりません。
そこで、プログラミングの目的を考えることをおすすめします。
じゃあプログラミングで何をするの?これがすぐに思い浮かぶ人はそもそも行き詰まらないと思いますが、一般人にはこれが難しい。
Yahoo!知恵袋で「プログラミング 目的」と検索すると、
・Webサイトを作る (Javascript, PHP, Ruby, Perl)
あたりの回答が見受けられます。
が、C言語を勉強していた当時の僕には全部ピンときませんでした。ゲームはあまりやらないし、もしやったとしても自分で作ったゲームよりPS3の方がきっと面白い。Webサイトなんか作ってもなにが面白いかわからないし(今は作っていますが)、Excelを不便に感じたことがない。
そんなこんなで、C言語の基礎を勉強した後の僕は、やりたいことが見つからずに、2年ぐらいプログラミングから離れて、FXと先物にハマっていました。
上の一文だけ見たらカイジに出てきそうな典型的ダメ人間みたいですね。
※FXと先物を批判したわけではありません。継続的に勝てている人は本気で尊敬しています。
でも人生って不思議なもので、このFXをきっかけに再びC言語にふれる機会が訪れました。FXをやるときに為替の値動きを見るんですが、その際に一般的にはチャートというものを確認します。
このチャートのソフトにMetaTrader4というものがありまして、そのソフトにはC言語ライクなMQL4という言語を使って自動売買をできる機能があったのです。自動売買というのは、自分で売買の条件を設定すると、コンピュータが自動的に売買を執行してくれるシステムのことです。
if ( 今のドル円が過去の価格より高めのところにある ) {
ドル円をたくさん買う;
}
if ( 利益が出る方に動かなかったら ) {
ドル円から撤退する;
}
こんな感じで自分がプログラムしたとおりに24時間、自動的に売買され続けて自分のお金が上下していきます。ここで、生まれて初めてC言語すげー!って思いました。それで結構いろいろなプログラムを考えてテストして運用する、っていうのを繰り返していました。当時は、コンピュータで売買している俺ってハイテクですげー!的な状態でしたが、今はもうFXと先物から足を洗っていることから、売買の結果はお察しください。
かなり本題から離れてしまいましたが、大事なことはプログラミングに目的を持つことです。それがお金であれなんであれ、自分が本気で興味を持てる目的を。
3.自分が本当に使いたいと思うものを作る
上とほぼ同じですが大事なことなので表現を変えて繰り返します。
目的を考えて、たとえばTwitterみたいなWebサービスを作ってみたいと思ったとしましょう。そこで必要なものを調べてみて、どうやらHTML、CSS、PHP、MySQLあたりを学べば最低限のものが作れそうだとわかります。
※PHPを例に挙げましたが、PerlでもRubyでもPythonでもなんでもいいと思います。初めてであれば選んでいる時間がもったいないので、あみだクジで決めましょう。
それからは必要なことを猛烈に勉強します。ドットインストールさんや書籍や入門サイトなど勉強方法はたくさんあります。もし壁にぶち当たってもわかるまで頑張って勉強するか、サンプルコードをコピペするか、無理をせずにスルーしてしまえばTwitterっぽいサイトはなんとか作れると思います。
そして作り終えて気がつくのです。
これ、ただの劣化版Twitterじゃないか。
こんなエンディングは悲しすぎますね。
なので、ここで僕が言いたいのは少なくとも自分が喜べる、使いたいと思えるものを作りましょうということです。
たとえば、自分は口数が少なくて文章も下手だけどWeb上に日記を残したい。ブログを書くほどではないけどTwitterに呟くのも恥ずかしい。Evernoteを使ってもいいけど、自分が作ったサイトに、自分の好きな形で記録したい。
じゃあ自分のために、1日に感じたことを四字熟語で記録できるWebサイトを作ろう。
これもありがちな日記サービスかもしれませんが、それでも自分のために、少なくとも自分が喜べるものを作るということが重要だと思います。そしたらどこかの誰かも使ってくれるかも。
4.勉強するのは必要が生じてから
これは方向性の問題です。
C言語の勉強をする → 何に使うかを考える
ではなく
Webサイトを作りたい → PHPが必要だから勉強する
のほうが遥かに学習効率がいいということです。いつか必要になるかもしれないから学んでおこうと思って学ぶのと、いま必要だから学ぶのとでは危機感も吸収力も違います。
正しい方向で莫大な努力をすればきっと報われます。
効率的に学ぶには手段と目的を間違えないようにしましょう。
【おすすめの学習サイト】
5.アガる音楽を聴く
これはおまけです。
見出しが4つじゃ縁起が悪いと思い、3つに削るのも嫌だったので無理やり5つにしました。
作業中に聴く音楽の話です。
人それぞれ、本当に集中したい時は無音だったり、クラシックやジャズだったり、ロックやポップやアニソンやBABYMETALだったり色々あると思いますが、僕はアゲアゲなクラブ・ミュージックを聴いています。
最初は、暗くなった気分をパーティーピーポーが聴いているらしい音楽でアゲてみようという冷やかしで聴いていたのですが、気がついたら不覚にもハマっていました。
もしコードを書いていて、最近少しテンションが足りないなとお悩みの方がいましたら、毛嫌いせずに聴いてみることをおすすめします。
こういう音楽が好きだからといって、実際はパーティーピーポーではなく、ただの根暗野郎です。「ウエ~イ」みたいなノリは苦手です。
まとめ
結局どういう流れでやればプログラミングの勉強で挫折しにくいか。
自分が使いたいものを思い描く(アプリでもサイトでも)
↓
その目的のために何を勉強すればいいかを調べる
↓
猛烈に勉強してそれっぽいものを作る
↓
作ったものを自分の好みに改善していく
という方法で行けば、少なくとも何をすればいいかわからなくなる、という状況には陥らないかと思います。
何を勉強すればいいかが調べてもわからない人は、人力検索はてなやYahoo!知恵袋にでも質問してみてください。きっと親切な答えが返ってくるはずです。
最後に宣伝
最後に、自分で作ったサイトを宣伝させてください。
せっかく作ったからには多くの人に使って欲しいという純粋な思いです。
もしサイトを使って頂いてご意見がありましたら、ここのコメントでもツイッターでもいいのでお寄せください。つまらない、おもしろい、どこが悪い、どこが良い、こんな機能が欲しい、などなんでも結構ですので一言いただけたら跳ねて喜びます。嘘はつきません、本当に跳ねます。
合言葉だけで使えるTodoリスト「やること」
会員登録のいらないTodoリストです。合言葉だけで使えます。
ただ合言葉が誰かとかぶったら、自分のTodoが見られてしまいます。
邦画の予告を、朝まで「ひたすら」
邦画の予告をただひたすら観れるサイトです。
たまには邦画も悪くないですよ。
以上、宣伝でした。ありがとうございます。
※タイトルに「唯一の処方箋」とか偉そうなことを書いていますが、方法は他にも多分ありますよね。そもそも挫折しなかった人には縁がない話です。インパクト重視でタイトルを考えたらこうなりました。ご理解ください。