プログラミング学習を始める前に
前回「私は独学で学習した」とかいったが、重大なことを忘れていた。プログラミングの基礎は専門学校いったり、それ以前に自分でパソコン使って手打ちでHTML書いたり^1とかして身につけていた。そもそもパソコンの基礎知識はあったのである。そのうえで、Androidについては独学でやったよっという話だ。
それを思い出したので、プログラミングやってみたいと思っている人に対して、どの言語をやるか以前の話を少ししようと思う。といっても、めちゃくちゃ基礎の基礎というか、パソコン使うならすでに当たり前に知ってることかもしれないが。
プログラミング言語以前の問題
意外とこれが無視できないのだが、プログラミングしたいけどブラウザってなんですかっていう人がいる。これは返答に困る。あなたがインターネット見るのに使っているものですよって答えるしかないだろうか。
クリックってなんですかってのもあったって聞いたことがある。パソコンを使ったことがない人だと当たり前の疑問かもしれない。
このあたりは私たちにとっては当たり前のこと過ぎて、逆に説明が難しい。専門用語過ぎて難しいですとか言われても「いや、クリックはクリックやし・・・」となってしまうのである。マウスを持って左のボタンを押すんですよとかの説明から始まるわけだ。
あなたがもしこういう状態なのであれば、先にパソコン教室などに通ったほうがいいかもしれない。プログラミングスクールではない、パソコン教室。
よくあるでしょう、パソコンの使い方教えてくれるところ。地元でもしかしたらパソコンの使い方講座(無料)みたいなのがあれば、ぜひいってみるべき。プログラミングとは関係ないけど、まずはパソコンの使い方慣れましょうよってことね。
スモールスタートの理念とは反するが、基礎がわからないレベルだとプログラミング言語学習のスタートラインにすら立てない。私にメンタで相談してくれればある程度は丁寧に説明したいと思うが、果たしてオンライン上のやりとりだけで伝わるかはわからない。
正直このレベルでよくわからないという状態の場合、フェイス・トゥ・フェイス、つまり直接対面しながら教えないと効率が悪いのだ。ビデオチャット使う^2にもやはり限界があるので、直接会って教えてくれる人を探すべきだろう。あくまで地元とかの教室を探せとか、知り合いに教えてもらえということである。
ネットで直接会って教えてくれる人を探すというのは、トラブルの元となりそうなので私はあまりおすすめしない。ちゃんと実績のある人に頼むなら大丈夫かもしれないけれど。
私は怖くてネットで「直接会って教えます」なんていう人とは関わり合いにはなりたくない。出会い系の代わりに使ってるような人かもしれないし、特に女性にはおすすめしない。男性だって、会ったらいきなり金銭を要求されたとかトラブルになる可能性はある。変なところに連れて行かれて、妙な宗教に入会させられるかもしれない。ネットで探すなら気をつけろ、これもリテラシーの1つだと思う。
ただ間違えてほしくないのだが、こういった基礎的なことを知らない自分を恥ずかしいとは思わないで欲しい。誰だって最初は何も知らなかったのだから。ただプログラミングに興味を持ったのであれば、言語や成果物だけでなく、パソコン自体にまずは興味を持ってもらいたいなという話なのだ。
本当はIPアドレスとはとか、プログラミング以前に大事な知識はいっぱいあるので、そういった言語以外についても興味を持って学んでいってもらいたい。言語ができればプログラムができあがるわけではない。動かすのはパソコンなのだから、パソコンの知識も必要になるのだ。
わからない単語が出てきたときはググる
独学でやっていたり、本を使ってやっていたりして、わからない単語が出てきたとしよう。前の例で言えばIPアドレスとか。利用している教材によっては簡単な説明があるはずだ。ネットワークに繋がったパソコン1つ1つにつけられた番地のようなものだ、みたいな説明。
それをみたら更にググって見て欲しい。まずはググる力をけてほしい。
ググるというのはインターネット使って検索エンジン使って検索することをいう。主にGoogleを使って検索することが多いだろうから、ググるという。英語でもgooglingというらしい、たしか。
教材の情報を鵜呑みにせず、自分で調べて納得いくまで調べるのも大事である。私が教えたことでも、頭で思っているものと書いているものが違っている場合があったり、勘違いがあったりするので、そういう意味でも、鵜呑みにせずに自分でも調べるのは大事である。
ただし、完璧な理解を目的にしてはならない。まあこういうものか程度の理解ができたらそこで先へ進もう。何事もやりすぎはよくないし、ものによってはググったことによって余計に混乱する可能性もあるのでね・・・。
そもそもググった結果が正しい情報を書いているとは限らないというのも忘れないで欲しい。ネットの情報は玉石混交である。まずググるというのは、それらを取捨選択する練習でもある。
まあググり方の勉強もしていこうよという趣旨と思っていただきたい。
教師がいるならその人に説明を乞うといい。その分本来の学習予定が遅れていくかもしれないけれど、わからないものをわからないまま放っておくのはよくない。わからないところはわからないと素直に質問すべきだ。もし理解できたかを確認せずに先々進もうとする講師に当たったのであれば、ストレス溜まるだろうから変更してもらったほうがいいと思う。
また、わからないと質問するのが恥ずかしいというのであれば、それは学ぶ姿勢として良くない。わからないことをわからないまま進めるのは教えてくれる人にも失礼だ。なんでもかんでも聞きすぎて悪いかなと思うなら、自分で調べてから聞くといい。「私が調べたらこういう感じで書いてあったんですが、その認識であってますかね」って。でも、やはりその場その場で聞くべきだと思う。
それを嫌がる講師もいるかもしれないが、それは相性が悪かったのだと諦めて、自分に合う講師を探し直せば良い。ストレス溜めながら学習するのは良くないぞ、少年。そもそも学習自体ストレスがたまるからな。
ただ自分で調べろと言っても完全な理解までは不要である。なんとなく「こういうものだ」と自分の言葉で説明できるレベルまででよろしい。そもそも私だってIPアドレスとはなんぞやなんて、細かく説明できるほどわかっているとは言えないのでね・・・。
ともかく、プログラムをやっていくにはググり力が必要である。その訓練と思ってやってみて欲しい。
変数やメモリの概念
どんなプログラミング言語を学ぼうと出てくるのが、変数やメモリの概念だろう。これもまた説明がややこしい。私などはかなり感覚で理解しているので、余計に言葉で説明するのが難しい。
英語なんだが、このコースを見てみると割とわかりやすいのではないかと思う。コンピューターサイエンス入門みたいな無料で受けれるコースだ。言語としてはPythonを利用しているが、変数がどうなるかとかの学習にいい気がする。英語だけど。
日本語でも変数とはなんぞやみたいな話は、教材によっては説明が出てくると思う。だいたいデータを入れる箱であるみたいな説明だと思うが。実際にはその箱はメモリ上にあって、その位置に変数という名前をつけてアクセスできるようにしているのだけれど。まあ細かく説明するとボロが出るのでこのあたりにしておく。
そういった変数って何? とかそもそもプログラムがなにやってるかわからないという場合、よい書籍がある。
スラスラ読めるふりがなシリーズである。学習する言語に合わせてこういった書籍を利用すると、書かれたプログラムの意味がわかりやすくなるのではないだろうか。私はちらっと立ち読みした程度なのだが、たしかに初学者にはいいかもなと思ったのは覚えている。
最後に
プログラミングとは、人間が解決したい問題をコンピュータに解決させる橋渡しをするものである。要するに、コンピュータについて知らないとプログラミングもできないということである。
基礎過ぎてつまらないかもしれないが、パソコンの使い方もよくわからない状態で、いきなりプログラミングの学習をするのは大変な困難が待ち受けている。特にブラウザってなんですかとかいうレベルだと。
あなたが使っているOSが何か伝えられるだろうか。OSのバージョンがいくつか伝えられるだろうか。パソコンのスペック、メモリがいくらあるかを伝えられるだろうか。
こういったプログラミング言語とは直接は関係しないけれど、基礎的な知識として必要なものはたくさんあるのだ。
ハードル上げるようなことを書いたが、実際には難しいことを考えずにとりあえずはやってみるといいと私は思う。プログラミングやりたいと思うのなら、きっと自然にパソコンにも興味が湧くはずだ。
もしあなたが、フリーランス、つまり会社で勤めるのが嫌だと思ってプログラミングがやりたいと言っているなら、相応の覚悟を持って臨むべきである。フリーランスについてはそれはそれで別に語らなければならないが、ここで言いたいのは会社勤めがいやだという理由でプログラミングを学習するのは単なる逃げではないかということ。そのようなモチベーションでは、パソコンよく分からんで止まってしまう気がしてならない。
もっとも「まったく別の業種からプログラマになりました!」なんて記事をQiitaで見たりもするので、人によるのかもしれない。ただきっと、その人はプログラムがやりたかったからこそ転職できたんだと思う。
覚悟を完了している人なら別に何も言うまい。仕事を止めてプログラムで食っていくんだと腹を括って退路を絶っているのであれば、もはや四の五の言わずに突き進むしかない。きっとこの記事で書いたことも、やるしかないからすでにやっていることだろう。
このモチベーションの違いは大きいので、ゆめゆめお忘れなきように。軽い気持ちで「会社に就職とか嫌だから家から出ずにお金稼げるプログラミングやる」なんて気持ちで始めないでいただきたい。実はそれが自分に合ってて天職だった、なんてこともあるかもしれないので一概には言えないけれど。
ともかく、プログラミングの前にパソコンにも興味を持って欲しい、というのが本稿の趣旨である。本当はサーバ^3とかも興味持って知ってほしいところだが、まずはパソコンに興味を持つところから始めていただきたい。