LINEで現役エンジニアに直接質問してみよう!登録無料

プログラミング初心者は学習は何から始めるべき?現役エンジニアが流れを解説

この記事のまとめ

「プログラミングの勉強を早速始めよう!」と思った時、「何から始めればいいの?」と悩んでいるかと思います。

全くのゼロの状態からプログラミングを学習しようとしても、何を準備してなにから始めればいいのかわかりませんよね。

ここでは、そのような人向けに、プログラミングの学習を始める人が必要なモノとなにから始めればいいのかを解説します。

プログラミング学習の前に押させておきたい事4つ!

プログラミング学習を始める前に、今後の学習で時間を無駄にしたり失敗しないためのポイントを4つ紹介します。

プログラムは1分野の知識では作れない

例えばあなたが「Webアプリケーションを作りたい!」としましょう。Webアプリケーションを作り、公開するには少なくとも下記の知識が必要です。

  • HTML
  • CSS
  • JavaScript
  • Linux
  • Ruby
  • Ruby on Rails

場合によっては「jQuery」や「Bootstrap」などの知識も必要になるでしょう。このように、1つのサービスを作ろうとしても複数の知識が必要なのです。

これでは、「Webアプリケーションを作るにはRuby on Rails」を学べばいいんだろ!と思っても、内容が難しすぎて途中で挫折してしまいます。

プログラミングは1つの知識では作れず、複数のスキルが必要とおぼえておきましょう。

プログラマにも種類がある

「プログラマにはいくつか種類がある」というお話をします。

あなたはプログラミングに興味があるので、このような職種を聞いたことがあると思います。

  • Webエンジニア
  • インフラエンジニア
  • DBエンジニア
  • フロントエンドエンジニア
  • フルスタックエンジニア

あなたは、なぜエンジニアにこのような職種が分けられていると思いますか?それは、職種によって学習するプログラムの種類が違うからです。

例えば、「Webエンジニア」だと、

  • HTML
  • CSS
  • JavaScript
  • Linux
  • Ruby
  • Ruby on Rails

が主に必要なスキルでした。

それに比べて、「フロントエンドエンジニア」の場合

  • HTML
  • CSS
  • JavaScript
  • Photoshop
  • Illustrator

が主に必要なスキルです。

このように、職種よって必要なスキルが変わっていて、使うことのない知識や不足している知識があると、無駄な時間や労力を割いてしまいます。

まずはあなたが何になりたいのか?何をしたいのか?を決めてから、学ぶ内容決めると良いでしょう。

あなたは何を目指していますか?

あなたはどんなエンジニアを目指していますか?

  • Webサービスを作れるエンジニアになりたい
  • フリーランスエンジニアで案件をたくさん獲得して稼ぎたい
  • 自分でWebサービスを売りたい
  • プログラミングスキルを身につけて副業で稼ぎたい

など、色々あると思います。

なんでこんな質問をするかと言うと、これらを考える段階で一番効率的な学習内容や順番が変わってくるからです。

例えば、Webサービスを作れるエンジニアになりたいのに、javaやpythonの事を勉強してもなかなかスキルアップを目指せません。もちろん、どのプログラミング言語でもできることは基本的に同じなので、絶対に不可能ではありません。

しかし、世の中で使われている言語がそのサービスをつくるのにメジャーで、作りやすいのかどうかは別問題です。

Webサービスだと「Ruby」や「PHP」がよく使われ、Web検索をするとそれらの情報がよく引っかかります。一方で、「Python」を使った例は少なめです。

非効率な勉強方法でプログラミング学習を行ってしまうと、遠回りしてモチベーションが下がり辛かったりします。特に、学習初期の頃は色々な分からない事がたくさん出て来るので、辛くてやめてしまわないように、まずは何を目指しているのかから考えるようにしてください。

ちなみに、プログラミングスキルを身に着けて副業で稼ぎたかったり、転職できるならどんな言語でも構わない人は「Webサービスを作れるWebエンジニア」になることを目指しましょう!

プログラミング言語は1つ学習すれば他は理解可能

目指すプログラマが決まったら、どの言語を勉強するのかを決めます。

先程も少し話しましたが、プログラミング言語でできることは殆ど同じです。ブラウザなど動く言語が決まっている場合もありますが、基本的にどの言語を選んでも同じ機能を作ることはできます。

ですので、どれか1種類の言語が理解できれば、他の言語を習得するのは簡単です。「複数の言語を学ばないといけないなんて、そんな時間ない!」「英語と中国語を覚えるようなもの?無理!」なんて思わないでください。

本当に、1つの言語ができれば他の言語も読むことができます。

ここでは「JavaScript」と「Ruby」という言語を使って、全く同じ機能を持った2つを比較します。

var price = 100;
var tax_rate = 1.1;
console.log(price * tax_rate);
price = 100
tax_rate = 1.1
puts price * tax_rate

このように、2者は殆ど同じです。

他の言語も多少の違いはあれど、このようにさほど違いはありません。

まずは1種類の言語の使い方を習得することを目指しましょう!

プログラミング学習に必要なモノ

プログラミングを学ぶにあたって必要なものが3つあります。

  • パソコン
  • ネット環境
  • テキストエディタ

どれも必須のモノなので、プログラマを目指すのなら揃えておきましょう!

パソコン

パソコンは必ず必要です。今既に持っているのがあり、スペック的に問題がなければそれを使えばOKです。

ただし、Windowsの場合にはプログラミングを始めるにあたって少し苦慮する事になります。プログラミングに関する情報の殆どは「Mac」か「Linux」を使ったものだからです。

それらの情報を1つ1つWindowsの場合に当てはめて使うのは少し大変だと思っておきましょう。

パソコンを持っていない人は、この機会に買い揃えましょう!どこでもプログラミングができ、持ち運びができる「MacBookPro」が一番オススメです。

また、MacBookProであれば、後からWindowsをそれにインストールして、デュアルブートとして使うこともできるので、両方使いたい人にも安心出来ます。(但し、Macを起動している時はWindowsを起動出来ない。逆も然り。)

デスクトップPCは性能が高く、高負荷のソフトウェアやプログラムも安心して動かせるのですが、スライドを使った解説や提案があった時は不便です。

ノートPCであれば、このような時にも対応出来ますし、ちょっとしたスキマ時間にサッと開いてプログラミングできるので、非常に便利ですよ!

ネット環境

プログラミングをするには必ずネット環境が必要です。プログラミング環境を整えたり、ソフトウェアをダウンロードしたり、サーバー設定をしたり、どんなことをするにもネット環境が欠かせません。

プログラミングを行うソフトウェアの中には数GBものサイズを持つものもあり、容量制限のあるモバイルWi-fiでは、すぐに使い切ってしまいます。

そこでオススメなのが「光回線」です。

都会に住んでいる場合は、通信容量が無制限で速度がとても早い「NURO 光
」が一番いいです。

テキストエディタ

これもプログラミングをするときには必ず必要です。

プログラミングに使う予定のパソコンにインストールして使います。

なぜこれをわざわざ紹介しているかと言うと、それだけ基本的で重要だからです。

Windowsにはデフォルトで「メモ帳」というテキストエディタが入っていますが、あれはプログラミングでは使い物になりません

オススメなテキストエディタが2つあるので、紹介します。

オススメ

豊富なショートカットと機能を備え、「本当に無料なのか?」と思って思ってしまうほど優秀なテキストエディタです。

オススメ

Microsoftが作ったプログラミング専用のテキストエディタです。プラグインを入れて使いやすいように自分専用にカスタマイズ出来ます。

プログラマに必要最低限な基礎知識(初級者編)

プログラマは色々な分野の知識が必要ですが、求められるスキルはある程度決まっています。

Linuxコマンド

LinuxというOSで使うコマンドです。

通常、「パソコン」といったら「WindowsかMac」のOSを連想しますよね?「WindowsかMac」はマウスカーソルを使ってポチポチ選択すればそれで操作ができます。

一方、「Linux」というOSではマウスカーソルがありません。全ての設定をキーボードだけで行わなくてはいけないのです。

「なんで、そんな面倒なことになっているの?カーソルからでも使えたほうがいいじゃん!」と疑問に思う人もいるかも知れません。もちろんそのようなシステムもあります。しかし少数派なんです。

理由は、動作が極端に重くなるからです。キーボードを使った設定をしたほうが動作が軽快になります。

画面の情報を出力するのは、結構処理能力を使います。この処理の能力をサービスの提供とかに使えばもっと効率よくサーバーを使えます。

更に、サーバーは通常データセンターに置いてあるので、そこまで足を運んで開発をするもの効率が悪すぎます。ネットワーク越しにサーバーの構成が変更できれば寄り便利だと思いませんか?

そのような複数の理由から、キーボードを使う方法が主流なんですね。

データベース

データベースとは、決まった形式のデータを効率よく格納するシステムです。全てキーボードから使えるExcelみたいなイメージです。

データの追加・削除・検索・計算などを効率よくこなす為に作られました。これらを操作するためにはSQLと呼ばれる言語を扱う必要があります。

SQLとは、下記のようなものです。

SELECT * FROM users;

この例では「usersというテーブル(Excelでいうシート)から全てのデータをもってこい!」という命令を表しています。

通常のプログラミング言語とは毛色が違うので注意が必要です。

バージョン管理

プログラムのバージョン管理をするソフトウェアです。書いたプログラムはどんどんと新しい機能を追加し、バグがあれば修正し、どんどん更新されていきます。
この更新の中で、プログラムが動かなくなってしまう場合もあります。

もし、バージョン管理をしていなければ、いままで書いた内容を元の形に戻す作業も必要でしょう。しかし、当然全ての内容を内容を暗記しているわけではないので、不可能でしょう。

こんな時、「前回のソースコードまで戻ってくれたり」「〇〇日に行った変更はどんなもの?」などさかのぼって調べることができれば便利ですよね?

そのようなシステムやソフトウェアがあって、名前を「Git」と言います。

Gitは、今のソースコード管理の殆どで使われており、Gitのインストールが前提になっているソフトウェアもあるくらいです。

プログラミング言語

PCに実際に処理をさせる内容を書くためのプログラミング言語を1つ覚えましょう!

ちょっとした処理を書きたい時にササッとかける手頃でわかりやすいプログラミング言語を選ぶといいでしょう。特に学びたい言語が決まっていない場合「Ruby」を選ぶのがオススメです。

プログラミング言語を1つ覚えれば、他の言語の殆どは理解可能なので、大変なのは最初だけです。

フレームワーク

プログラミング言語を覚えたら、その言語で作ったフレームワークの使い方を覚えましょう!フレームワークとは、簡単に言うとテンプレートの事です。

アプリなどのプログラムを1から作っていたのでは時間がかかりすぎます。

  • ユーザー入力値の検証(バリデーション)
  • データの流れの整理
  • URLからどのプログラムを使うのかを決定する仕組み
  • HTMLにユーザー情報を入れ込む仕組み
  • Webサーバーの設定

など、どのアプリにも必ず必要な処理というのがあります。それらをまとめて使いやすくしたのが「フレームワーク」です。

フレームワークを使えば、一部分を省略して書くことができるので、時間の短縮になりますし、世界中のみんながそれに間違いが無いか検証をしてくれているのでセキュリティ面からの信頼性も高くすることが出来ます。

サーバー

実際にプログラムを動かすパソコンを用意します。

今あなたが使っているパソコンはずっと起動しておくわけじゃありませんよね?サービス提供のためにずっと起動して置かなければ行けないパソコンもあります。それを「サーバー」と言います。

サーバーは個人でもデータセンターのしっかりとした企業が使っているのと同等のものを借りることが出来ます。

有名な所だと

  • AWS
  • Sakura
  • XServer
  • ConoHa

などがあります。これらのうち今は一番安いので大丈夫ですので、1つ借りるようにしてください。それがスキルアップのために絶対必用です。

この記事を書いた人

自身がプログラミングを独学で勉強し始めて躓いた経験を元に、これから勉強をする人に向けに「イラスト多めでわかりやすい記事」にこだわって情報を発信しています。

現在はフルスタックエンジニアとしてサービス開発などのお仕事をしています。