プログラミング講座

プログラミング超初心者がゼロから丁寧に学ぶ最適ルートを徹底解説!

最近、義務教育に導入されるなどなにかと世間から注目を集めているプログラミングについて書いていきたいとおもいます。

「小学生のうちから勉強する時代に大人が今からはじめてなんとかなるの?」
「本当に未経験でもプログラムさえできれば転職できるの?」

などなど、よく耳にする話題にもしっかり触れながら効率よくプログラム技術を身につけるすべを完結にまとめたいとおもいます。

 

プログラムは子供のうちから勉強する必要はありません

実はプログラムは子供のうちから勉強する必要はないというのが実際にプログラムを生業にしている方々のおおよその意見です。

最初は覚えることが多く頭が混乱することもありますが毎日やっているうちに少しずつ身についていきます。

プログラムは言語といわれますが外国語などに比べれば構文も単語も圧倒的に少ないので安心してください。

プログラミング超初心者はどうやって勉強すればいいの?

まず一つ言語を選びます。特にこれといって最初にやるべき言語というのはありません。
なんとなくで決めてもかまわないとおもいます。

ただ、プログラムを学ぶ目的が明確(たとえばwebサービスを作りたいとか)であれば
自分の目的に合った言語を選びましょう。

webサービスをつくるという目的であれば、Rubyという言語が日本ではもっともメジャーです。

ついでPHPという言語が昔から根強い人気です。

もしスマホのアプリを作りたいということであれば、まずはJAVAからはじめることをオススメします。

難易度は少し高いですがJAVAは学習者も多いのでわからないことや、つまずいたことをgoogleで調べるとたくさんヒットします。

すべての言語について言えることですが、基本的に常にエラーの原因や書き方を調べ続けなければならないということです。

本に書いてある通りではサンプルしか作れません。

ですがあせる心配はありません。

まずはサンプルコードを模写するところから入って少しずつオリジナリティのあるコードを書いて実践レベルに近づけていくのがプログラム学習の王道です。

プログラム言語って途中で違う言語に変えようとおもったらまた0からなの?

プログラム言語は英語と日本語のような関係性のものはありません。

大きな流れとしては同じです。

たとえばruby(WEB)とjava(システム)はまるっきり系統が違う言語だとよく言われますが
本当にまったくなにもかも違うというわけではなく、しいて言うならイギリス英語とアメリカ英語のような関係性が近いかもしれません。

違いのわかる人からすればそれはとても大きな差なのかもしれませんが、初心者に人間からしたら、逆に違いがわからないとおもいます。

基本的な構文はだいたい同じなので、言語を一つマスターして二つめの言語をはじめるときにまた0から構文をやらなければいけないとおもう方も多いです。

どの言語も少なめに言っても半分は同じような構文なので言語をたくさん勉強すれば勉強するほど新しい言語の習得が楽になります。

なのでいいところまでいっていたけどやりたいことが見つかったからやっぱり違う言語を覚えようというのもぜんぜんありです。

いろんな言語に触れたほうがよりプログラムに対しての理解も深まります。

プログラマって未経験でも本当になれるの?

これはよく言われることですが未経験でもなれます。

ただ、当然ですが実務経験がないのとまったく勉強もしていないというのは違います。

実務経験不問だったので応募してしてみました的なノリで面接にいくとかなりの確率で門前払いを受けてしまいますので応募の際はプログラム学習をある程度つんだという部分をアピールしてください。

成果物がなにかあると面接官の印象もグンとあがります。

入門書を10冊読みましたという志願者と成果物を1つ作って持ってきましたとういう志願者がいたなら採用されるのは当然ながら後者です。

プログラムってどこまで一人でできるの?一人で全部作れる?

昔ならある程度のレベルのものを作るのに一人ですべてをやるのは物理的に無理がありましたが近年ではサーバーサイドの技術革新のおかげでWEBサービスは驚くほど短期間に作れるようになりました。

これまでWEBサービスを作ろうとおもえばサーバーの管理やデータベースの設計など、やることが多すぎて初学者がWEBサービスをいきなり立ち上げるのはハードルがものすごく高かったのですが、サーバーの管理やデータベースの設計などを代わりにやってくれるアマゾンのAWSなどのサービスの登場で革命が起こりました。

サーバーサイドだけではなくフロントエンドの開発にも変化がおこっています。

たとえば、フロントエンドでよく使われている技術にReactというプログラム言語があるのですが、これはスマホアプリの開発にも利用できます(ReactNative)。

しかもソースコードをかなりの部分共有でき、かつアンドロイド用もios用も開発できます。

webサービスを一人で作ってそれを自分でアプリ化なんてこともできてしまいます。