Contents
伝えたいこと
ちょっとした思いつきからプログラミングを始めてから、何だかんかコードを書いていたら1年ぐらいになるので、これからプログラミングを始めようとする人のためのマニュアルを書いてみたいと思います。
独学でプログラミングをやってきて躓いたことも多いので、何かしら参考になれば幸いです。
なお、注意ですが、以下の内容はHTML/CSSの基礎学習は終えている人に向けて書いています。
HTMLに触れたこともない全くの初学者は、この記事を読んでも参考にならないと思います。
プログラミング学習で一番大切なこと
まず、プログラミング学習で一番大切なことから言います。
プログラミングを学ぶ上で一番大切なのは、プログラミングすることです。
ところが、初心者にはこれが一番ハードルが高いのです。
・たくさん言語があってどれを学べばいいかわからない
・環境構築の方法がわからない
・コマンドプロンプトとかシェルって何?
・IP? ポート番号?
・サーバを立ち上げる?
・パスの通し方がわからない
・「hello world」したらエラーが出る
・レファレンスが英語ばかりで読めない
・レファレンス(あるいは解説)の指示通りに書いているのにうまくいかない
・ファイル? フォルダ? ディレクトリ?
・コンパイラ?
・OS? 仮想環境?
・ライブラリ? モジュール?
・オブジェクト指向のイメージがつかめない
・フレームワークの意義がわからない
これらは全て実際に私が出くわした問題です笑
今となっては簡単に答えられるのですが、当時はかなり悩みました。
このようにプログラミングの学習では、1つ進むたびにわからないことが10個ぐらい出て来るため、それらを調べているうちに疲れ果てて、「今日は1行もコードを書けなかった」なんてことも。
ですから、どうすれば「コードを書く」というコアの部分に集中できるのか考えなければなりません。
パソコン・ネットワークの学習
実のところ、初学者の悩む原因の大半は、プログラミング以外の部分です。
多くの場合、プログラミング初学者の問題点は、パソコンやネットワークの知識が足りていない点にあります。
ですから、彼らが最初に行うべきは、プログラミングのやり方の学習ではなく、パソコンやネットワークの学習です。
例えば、2進法の計算、サーバ、プロキシ、ドメイン、GUIとCUIなど、パソコンの知識を増やしていく方が長い目で見たとき絶対に効率的です。
またターミナルやコマンドプロンプトの使い方を覚えておくと、プログラミングの学習が円滑になります。
ここを勘違いして、「もっとコードをたくさん書かないとだめだ」「プログラミングの知識を増やさなければ」という方向に行くと、余計にプログラミングがわからなくなります。
具体的な学習方法ですが、ITパスポートの過去問を解いて知らない用語をググりまくってください。
ハードウェア
MacかWindowsか
プログラミングをするには、PCも重要です。
できたら、WindowsとMac両方を用意しましょう。
大体この手の話になると「Windowsはソフトウェアが充実しているからいい」「Macの方がUnixベースなのでいい」と論争が起きるのですが、どちらもあった方がいいです。
特にプログラミングの場合、指導者(教材)と同じ環境でなければ、「書いたコードが動かない」「コマンドを実行したものの何も起きない」など余計なトラブルが増えます。
確かに、仮想環境を作ったりすれば、こうした問題はある程度まで解消できます。
しかし、仮想環境の構築は初学者にとって大変な作業です。
ですから、おとなしくPCを2台用意した方が早いです。
WindowsとMac2つ用意することで、用途ごとに使い分けることもできます。
一方がメインのときは、他方を検索や動画視聴専用のPCにすることもできます。
デスクトップかノートパソコンか
特別な事情がない限りは、PCは絶対にノートパソコンをおすすめします。
デスクトップだと、ずっと座っていなければならないので疲れが溜まりやすく、長時間の作業が困難です。
場所も変えられないので、集中力も維持できません。
ですから、カフェやベッドの上など、どこでもコーディングできるノートがおすすめです。
そもそも「パソコン1台あれば、どこででも仕事ができる」という点に魅力を感じて「プログラミングを学ぼう」と考えている人も多いはずです。
それなのに、わざわざデスクトップを選ぶのはマゾとしか言いようがありません。
3DCGを作るなら一考の余地あり
普通の学習者はノートパソコンでOKです。
しかし、3DCGやゲームを作るのに関心のある人やIllustratorやPhotoshopを利用する方は、QuadroやGeforceのグラフィックボードつきデスクトップを購入することになるでしょう。
筆者も3DCGに興味があったため、デスクトップを購入しました。
ただ、今思えば、グラボつきのゲーミングノートでも良かったと思っています。
ですから、購入前には、「本当にそこまでハイスペックなものが必要なのか」と自問してみる必要があります。
言語選択
さて、パソコンやネットワークについて学び、PC環境も整えたら、次は、「どの言語でプログラミングを学ぶべきか」を考えましょう。
結論から言えば、学ぶべき言語はRubyかPythonかJavaScriptです。
PHPやC言語、JAVAはおすすめしません。
なぜこれら3つの言語がおすすめなのでしょうか?
箇条書きにしてみます。
Ruby
・国産の言語なので、レファレンスが豊富
・記述が簡単
・irbがある
・需要がある(給与の高い求人が多い)
・Ruby on Railsの存在
・Sonic Piでイケイケのミュージシャンになれる
Python
・記述が簡潔。まるで禅
・需要がある
・人口知能やブロックチェーンなど、今勢いのある分野で広く使われている
・インタラクティブシェル
・ライブラリのおかげで視覚的に理解しやすい
JavaScript
・HTMLやCSSを操作するので直感的に理解できる
・jQueryで自分のサイトをカッコよくできる
・環境構築をする必要がなく、プログラミング部分に集中できる
・アプリも作れる
・node.jsでサーバサイドもカバーできる
細かい内容は書きませんが、上に挙げた3つの言語に共通するのは、簡潔で理解しやすいことです。
また、3つの中でも特にPythonとRubyがオススメです。
PHPのように無駄にカッコを多用したり、JavaScriptのようにコードの区切りにセミコロン(;)をつけたりする必要がないので、肉体的にも精神的にもストレスが少ないと思います。
その他の言語
もちろん、興味があるなら、どの言語を触ってみてもOKです。
DotinstallやProgateなどで1ヶ月ほどかけて、各言語の初歩を「広く浅く」理解するのも「あり」でしょう。
しかし、ある程度まで情報を仕入れたら、一定期間は1つの言語に絞って学習することを強くおすすめします。
確かにどの言語も魅力的なのですが、1つの言語を深く理解した方が、他の言語を学ぶときにも応用が効きます。
また、「自分の強みを作る」という意味でも、まずは1つの言語に絞りましょう。
1つの言語に絞るのには、決断疲れを防ぐという意味合いもあります。
ちなみに、私の場合、言語を1つに決めたら、他の言語を全てアンインストールしています。
なぜかこれだけでイライラが減るので、おすすめです。
プログラミング以外の雑音
繰り返しになりますが、プログラミングを学ぶ上で大事なことは「プログラミングをすること」です。
そのためには、プログラミング以外の雑音をシャットアウトしなければなりません。
・気がついたらYouTubeを見ていた
・気がついたらネットサーフィンをしていた
・エディターのカスタマイズに夢中になっていた
・Googleの拡張機能を増やすことに夢中になっていた
・休憩にスマホをいじり始めたら止まらない
・PCゲームに夢中になっていた
・便利なソフトウェアをダウンロードすることに夢中になっていた
コードを書くときに調べ物をすることは多いのですが、必要のない情報は無視する、あるいはメモに残しておいて後で調べるようにしましょう。
パソコンは魅力的なツールですが、その分誘惑も多いので気をつけて使うようにしなければなりません。
エディタやIDEについて
上述の内容と関連して、初学者はエディタやIDE(統合開発環境)については極力思考を割かないようにしましょう。
エディタは、プラグインなどの拡張機能がないシンプルなもの・動作が軽いものを選び、IDEに関しては、必要でないならば、しばらく無視しましょう。
具体的なエディタとしては、サクラエディタやNotePad・miなどがおすすめです。
Atomやvimも確かに素晴らしいエディタですが、カスタマイズに多くの時間をとられるので初学者は手を出さないでください。
学習記録
やりっぱなしにしないため、コードを書いたら簡単に学習記録をつけておきましょう。
特に「何がわかっていないのか」について言語化しておくと、後々ググるときに役に立ちます。
メモを書くことは、知識の整理にもなります。
動くものを「小さく」作れ
ネットでプログラミング初学者向けのアドバイス記事を見ると、どの記事でも「とにかく動くものを作れ」「アウトプットが大事」と書かれています。
これには大いに賛成なのですが、いきなり大きな目標を立てるのはおすすめしません。
むしろ、「10分後の時間を教えてくれるアプリ」「足し算しかできない電卓」「名前を入れると、名前を逆さま表示してくれるだけのアプリ」のような機能が少ないクソアプリを量産した方が上達は早いと思います。
そして、できるだけ、1日で完成するものを作るようにしましょう。
毎日「モノを作った」という達成感が得られるし、PDCAを高速で回せるのでおすすめです。
まとめ
いかがだったでしょうか?
本記事が、何らかの形でプログラミング学習の参考になれば幸いです。
プログラミングの世界は広いので、「何をやるか」よりも「何をやらないか」の方が重要です。
今やりたいことに集中して、プログラミングを楽しみましょう!