IT勉強方法

プログラミングを独学で身につける方法とは|効率的な勉強方法を解説

2021.09.01

「プログラミングを始めたいけど何からはじめたらいいかわからない」「独学でプログラミングを勉強できるか不安」など、プログラミングのスキルを身につけたいけど、どんなことをしたらいいかわからないという方も多いのではないでしょうか。 特に学校の授業でプログラミングを習わなかった方にとっては、ハードルが高いスキルのように思う方もいるでしょう。しかし、学校でプログラミングを習わなかった方でも、独学でプログラミングを習得して、エンジニアとして活躍されている方はたくさんいます。 この記事では、未経験からプログラミングを学習していくために何を理解して、どんなことをしたらいいか解説していきます。

プログラミングでできることや目的を理解しておこう

プログラミングの目的はさまざまですが、大きく分けると「コンピューターを動かすため」「誰かの役にたつモノを作るため」「誰かを楽しませるため」「誰かの作業を助けるため」の4つに分類されます。まずはどんなことができて、どんな目的で使われているか簡単に理解しておきましょう。
 
プログラミングは「テキストファイルで行うモノ作り」です。プログラミングで実際に行うことは「テキストファイルに文字、数字、記号を書いていく作業」ということも、まずは覚えておきましょう。
 

コンピューターを動かせる

コンピューターのCPUやメモリを含め、すべての部品はプログラムによってコントロールされて動いています。マウスの移動やクリック、ファイルの保存、削除など、ユーザーがコンピューター上で行うすべての作業もコンピューター内部でプログラムが動くことで実行されます。まさに、コンピューターはプログラムを動かすためのモノといえます。
 
コンピューターをコントロールしているプログラムは、「OS(オペレーティングシステム)」と呼ばれます。プログラミングができれば、自分だけのOSを作ってコンピューターを動かすこともできます。OSについて詳しく知りたい方は下記も参考にしてみてください。
 
関連記事:Linux(リナックス)って何|意味や用途を完全解説
 

アプリケーションを開発できる

アプリケーションにはインターネット上で動くWebアプリケーションから、特定のパソコン上だけで動くネイティブアプリケーションなどさまざまあります。また、ワードやエクセルなどもアプリケーションの一つで、それらはすべて何かのプログラミング言語で作られています。
 
プログラミングができれば、「こんなアプリケーションがあったら便利になるのに」という要望に対して、ユーザーの利便性やニーズを満たすためのアプリケーションを開発することができます。

ゲームで誰かを楽しませる

プログラミングには誰かを楽しませるという目的もあります。その代表例がゲームです。「こんなゲームがあったらおもしろいだろな」という遊び心もプログラミングで実現することができます。
 
ゲーム以外にも、画面上に絵を描いたり、映像や音楽などの芸術作品を表現するための手段としてもプログラミングは使われます。たとえば、クリエイターやデザイナーなどが業務で使うような動画編集ソフトや音楽制作ソフトも、何かのプログラミング言語で作られています。
 
何か芸術作品を表現するための手段や、芸術作品を作るためのソフトとして、エンターテインメントを実現するためにもプログラミングは使われています。
 

作業効率をアップできる

プログラミングはパソコンで行う作業を手助けしてくれます。同じことを何度も繰り返すような単純作業は、プログラムを作っておけば自動化ができます。また、複数の人が行う作業をプログラムにすることができれば、人手の必要もなくなります。
 
プログラムで自動化ができれば、作業時間の短縮にもなり仕事も楽になります。そして、コンピューターの作業は人間が行う作業よりも正確です。プログラミングは、正確な作業と有効な時間の活用が実現できる、作業の頼もしいパートナーのような存在であり、優秀な武器とも言えます。

あなたにはどのエンジニアが向いてる?
今すぐエンジニア診断してみよう


「エンジニアになってIT業界で働きたい」
「エンジニアに興味はあるけど、種類が多すぎて自分に向いてる職種がわからない」

そんな悩みを解決するのが、「エンジニア診断ツール」です。


・診断できるのは8種類のエンジニア。

・たった30秒で完了


「エンジニア診断」はたった12の質問に答えるだけで、あなたに向いているエンジニアを診断。


診断結果には仕事内容の概要も掲載しているので、自分に合ったエンジニアについて詳しく知って、エンジニア就職に一歩近づきましょう。

エンジニア診断CTAボタン

目的や用途に合わせて勉強するプログラミング言語を選択しよう

まずは目的や用途を把握して、どのプログラミング言語を勉強したらいいか決めましょう。プログラミング言語はたくさんありますが、言語ごとに流行りや言語の持つ特性が異なるので、環境に応じて使われるものはさまざまです。
 
自分の選んだプログラミング言語が、その用途であまり使われていない場合は、インターネットで調べても情報があまり拾えず、問題解決ができないということになってしまいます。インターネットでたくさん情報を拾うためにも、最初は人気のあるプログラミング言語から始めるのがいいでしょう。
 

Webサイトを作りたい人は「HTML」と「PHP」

Webサイトを作るためには複数のプログラミング言語を習得する必要があります。プログラミング言語は、ブラウザで動くプログラミング言語とサーバーで動くプログラミング言語の2つに分かれます。
 
Webサイトを作るためには

ブラウザで動く言語は、HTML、CSS、Javascriptの3つです。ブラウザ側の言語の勉強は最初はHTMLから始めましょう。サーバーで動くプログラミング言語には、PHP、Ruby、Java、C#、Node.jsなど多数あります。そして、これらの言語に加えてデータベースの勉強も必要になります。
 
サーバー側の最初の言語は、他のプログラミング言語と比較してシンプルなPHPがおススメです。ただし、PHPはHTMLとセットで使用するので、HTMLの基本的なことを理解してから始めるのがいいいでしょう。また、Webサイトの開発は「Webフレームワーク」というツールを使って作るのが一般的です。プログラミング言語とWebフレームワークの2つの習得が必要になります。
 

ゲーム開発をしたい人は「C#」

ゲームといってもCUI(キャラクター・ユーザー・インターフェース)で数値や文字だけで行うシンプルなゲームから、2Dや3Dのグラフィカルな画面のゲームなどさまざまです。
 
CUIで何か文字や数値を入力をさせて、その結果によって勝敗を決めるような簡単ゲームであれば、どのプラグラミング言語でもできます。

ゲームを作るためには
 
一般によく見られる、2Dや3Dのようなグラフィカルな処理を必要とするゲーム開発では、Unityというソフトがよく使われ、使用する言語はC#が一般的です。
 
また、C#以外にもシェーディング言語の習得も必要になります。シェーディング言語は、2Dや3Dの描画をコントロールするためのプログラミング言語です。そのほかにもベクトル、行列など数学的な知識と、3DCGなどのデザイン技術など、プログラミング言語以外のスキルも必要になります。
  

スマホアプリを作りたい人は「Swift」か「Java」

スマホアプリには、iPhoneまたはAndoroidなどの特定のスマホだけで動作する「ネイティブアプリ」と、どちらのスマホでも動く「ハイブリッドアプリ」の2種類あります。
 
スマホアプリを作るためには

iPhoneでスマホアプリを作る場合は、専用の開発ツールであるXcode(エックスコード)を使って「Swift」というプログラミング言語で作ります。Andoroidでスマホアプリを作る場合の開発ツールは、Android Studio(アンドロイド・スタジオ)で、プログラミング言語は「Java」になります。また、ハイブリッドアプリを作る場合は、ゲーム開発でもよく使われるUnityなどを使います。
 
スマホアプリの開発は、場合によってはデータベースの知識も必要になってきます。まずは、どのスマホのアプリをつくるか考えて、勉強するプログラミング言語を選びましょう。
  

分析や機械学習をしたい人は「Python」

分析や機械学習で使われるプログラミング言語には、Python、R、C++などがあります。PythonやRはC++に比べて処理速度が遅いという弱点がありますが、C++よりコードがシンプルで使いやすいという利点があります。

分析や機械学習するためには
 
近年ではCPUやGPUの高速化などコンピューターの処理速度の向上によって、分析や機械学習ではPythonが広く使われ業界標準になっています。Rは統計解析でよく使われます。また、C++は、C言語の発展版で、分析や機械学習だけでなくIoTやそのほかの組み込みなど、汎用性が高く分野問わず幅広く使われています。
 
分析や機械学習を始めたいという方はPython、統計解析をしたい方はRの勉強を始めるのが良いでしょう。また、分析や機械学習に加えて、IoTを含めて将来は幅広く開発したいという方は、少し難易度が上がりますがC++を始めるのも良いでしょう。
 
また、どの言語の勉強をはじめても分析には統計の知識は必須です。
  

ITインフラの構築や運用を効率よく行いたい人は「TTL」

ITインフラの構築や運用でよく使われるのは「TeraTerm」などのターミナルソフトと呼ばれるものです。TeraTermで行う作業は、「TTL」というプログラミング言語で自動化ができます。たとえば、IPアドレスやパスワードを入力してログインするなどの決まった作業もプログラミングで自動化ができます。TTLによって作られたプログラムのことを「TeraTermマクロ」と呼びます。
 
ITインフラの構築や運用を効率化するためには

そのほかにも、サーバーのOSでよく使われる「Linux」もシェルスクリプトで自動化ができます。ディレクトリやファイルの移動など、決まって行う作業を自動化しておけば作業効率が上がります。
  

パソコンの単純作業を自動化したい人は「VBA」:初心者にはおすすめ

毎日、決まって行うようなパソコン上の単純作業をプログラミングで自動化しておけば、作業効率もアップできます。Windowsであればwindowsバッチ、MACであればUNIXのシェルスクリプトで自動化できます。
 
パソコンの単純作業を自動化するためには

たとえば、いつも同じブラウザを開き、同じフォルダにアクセスして、同じファイルにアクセスするといった決まった作業もプログラミングで自動化しておけば作業効率を上げられます。そのほかにも、何千行もあるテキストファイルから、特定の文字列だけを抽出して新しくファイルを作成したいなど、人間が目で確認すると何時間もかかるような単純作業もプログラミングができれば短時間で解決できます。
 
また、普段使っているエクセルも「VBA」というプログラミング言語で自動化が可能です。自動化されたエクセルファイルをエクセルマクロと呼びます。
  

あなたにはどのエンジニアが向いてる?
今すぐエンジニア診断してみよう

「エンジニアになってIT業界で働きたい」
「エンジニアに興味はあるけど、種類が多すぎて自分に向いてる職種がわからない」


そんな悩みを解決するのが、「エンジニア診断ツール」です。


・診断できるのは8種類のエンジニア。

・たった30秒で完了


「エンジニア診断」はたった12の質問に答えるだけで、あなたに向いているエンジニアを診断。


診断結果には仕事内容の概要も掲載しているので、自分に合ったエンジニアについて詳しく知って、エンジニア就職に一歩近づきましょう。

エンジニア診断CTAボタン

最近注目されているプログラミング言語Pythonとは?

Pythonはプログラミングがシンプルでわかりやすく、豊富なライブラリも準備されているので、複雑なことも簡単なコードでできるという特徴があります。
 
特に大量のデータを扱うような分析業務はコンピューターの処理能力が必要なので、C++などの軽量で高速なプログラミング言語を使って複雑なプログラミングをしなければなりませんでしたが、CPUやGPUの処理速度の向上のおかげでシンプルなプログラミングで実行できるPythonが注目されています。
 
Pythonの5つの特徴

また、日経XTECHが2021年に行った調査によると、人気のプログラミング言語の1位がPythonとなっており使用割合も伸びていることがわかります。この章では、最近、注目されているPythonがどんな用途で使用されているか紹介します。

プログラミング言語人気ランキング2021

参考サイト:日経XTECH「開発言語の人気トップが交代、JavaやC/C++を抜き去ったのは」
 

データ分析ができる

Pythonの用途で一番の人気は機械学習、AIなどのためのデータ分析です。Pythonには「scikit-learn(サイキット・ラーン)」や、「TensorFlow(テンソルフウロー)」などをはじめデータ分析用にたくさんのライブラリが準備されています。そのほかにも統計解析用の「statsmodels(スタッツモデル)」、画像処理用の「opencv(オープン・シーブイ)」などがあります。
 
それぞれのライブラリを使って分析モデルを作成することで、データの識別、予測などができます。たとえば、花びらのデータを使って特徴を学習させることで、新しく入力されたデータが何かを識別させたり、過去の売り上げデータの特徴を学習させることで、未来の売上や商品の需要予測などもできます。
 

Webサイトの構築ができる

Webサイト構築用のライブラリには「Django(ジャンゴ)」、「Flask(フラスク)」などがあります。Webサイト構築用のライブラリは一般に「Webフレームワーク」と呼ばれます。
 
Webサイトをデフォルトのプログラムのままで作ろうとすると、データベース連携や画面表示など非常に複雑なプログラミングをする必要があるため、シンプルに構築できるようにWebフレームワークを使うのが普通です。
 
DjangoやFlaskはPythonで記述するため、Python特有のシンプルなコードでWebサイトが作れるという特徴があります。Djangoで作られたサイトとしてはYoutubeやインスタグラムなどがあります。
 

ITインフラの構築の自動化ができる

同じサーバーを何台も構築する場合は、同じようなインストール作業や設定作業を繰り返す必要があり、単純作業で時間がかかってしまいます。その場合もPythonでは「Ansible(アンシブル)」というライブラリを使うことで自動化ができます。
 
たとえば、Pythonがインストールされたコンピューターが10台あって、すべてにSSHで通信ができる状態であれば、1台のコンピューターからAnsibleを使って同じWebサーバーを自動で構築するということが可能です。
 
また、AnsibleはライブラリがPythonでできているだけで、実際に使うためにはPythonの知識は必要ないという特徴もあります。YAMLと呼ばれる形式のファイルに、どの機器にログインしてどのモジュールを使うかを指定するだけで簡単に使えます。
 

事務作業の効率化ができる

Winodwsバッチやエクセルマクロを使うことで事務作業の効率化ができますが、Pythonでも同様のことができます。エクセルをPythonで操作するためには「openpyxl(オープンパイエックスエル)」というライブラリでできます。通常のテキストファイルの読み書きには、ライブラリは必要ありません。
 
たとえば、複数あるエクセルファイルのセルの値を取得して、1つのエクセルファイルにまとめたり、エクセルファイルの値をテキストファイルに書き出したりと、毎日行う同じ事務作業を効率化することができます。そのほかにも「requests」というライブラリを使えば、毎日同じ場所からファイルをダウンロードするような作業も自動化できます。
 
Pythonには便利なライブラリがたくさんありますので、積極的に使って日々の作業効率アップを目指してみましょう。
 

Cisco認定資格の出題範囲に入っている

PythonはCCNP試験の「ENCOR」や「CCNP Enterprise」、CCIEのラボ試験の出題範囲になっています。ネットワークエンジニアとしてスキルアップするために、CCNPの取得を目指す場合はPythonのスキルは必須です。実務においてもITインフラの自動化を始め、インフラエンジニアでもPythonを使うケースが今後は増えてくる可能性があります。
 
また、Pythonは便利なライブラリがたくさんありシンプルなプログラミングで実行できるという手軽さもあり、エンジニアでなくとも職種問わず、業務効率のための一つの手段として使うケースも増えています。
 
関連記事:CCNPとは|年収・難易度から勉強方法までを実例付きで解説
 

プログラミングの勉強のためには実行環境を作ろう

プログラミングを勉強していくためには、実際に手を動かして勉強できる環境を手にいれる必要があります。まずは、自分の勉強したいプログラミング言語の環境構築を行いましょう。
 
はじめてプログラミングを勉強する方は、環境構築を聞くと難しい作業のように思えるかもしれませんが、基本的にはプログラミング言語をインストールして動くための設定をするだけで、そんなに難しい作業ではありません。
 

やりたいこととPCのスペックを意識しよう

プログラミング言語をインストールする前に、自分のやりたいことはどのくらいのPCスペックがあれば良いか検討してみましょう。プログラミング言語そのものを実行させるだけであればどのPCでも問題ありませが、将来的に大量のデータ処理をするとか、画像や映像を使うようなアプリケーションを作りたいと考えている場合は、それなりのスペックが必要になってきます。
 
特に、大量の画像処理を行うデータ分析や、3次元のゲーム開発を考えている方は、快適なプログラミングをするためにもGPU(グラフィックス プロセッシング ユニット)を実装した方がいいでしょう。
 
そのほかにも、記述したプログラミングの全体の流れが確認できるように、モニターは大きいほどいいです。
 

動かしたいプログラミング言語をインストールしよう

PCの準備ができたらプログラミング言語をインストールしましょう。インストールは公式サイトからインストーラーをダウンロードして実行します。ダウンロードするときはOSとプログラミング言語のバージョンを確認しましょう。Windowsでダウンロードする場合に、Linux用のインストーラーを実行してもインストールできません。
 
また、バージョンが違うと書籍やネットで記載されているお手本のコード通り書いても動かないということもあります。最新バージョンを使うと、まだ使っている人が少ないため誰も知らない最新の不具合があったり、古いバージョンを使うと、関連する機能がサポートしてなくて動かなくなったりします。
 
バージョンの選定については何が良いという明確な基準はありませんが、一つの目安としてはそのプログラミング言語がどのくらいの期間サポートがあるか、推奨バージョンが存在するか、LTS(ロングタームサポート)があるかを確認することです。LTSは「安定版で長く使える」ということを、プログラミング言語の開発元が推奨しているバージョンのことです。
 
プログラミング言語のインストールで注意すること

下記の例は2021年8月時点でのNodejsのダウンロードサイトです。最新版は16.8.0ですが、推奨は14.17.5で古いバージョンになっています。こういう場合は最初は14.17.5をダウンロードして、アプリケーションが完成した後に、必要な機能に応じて最新版を検討するのがベストです。

Nodejsのダウンロード
  
主要なプログラミング言語のダウンロードサイトを下記になります。そのほかの言語についても、Googleでプログラミング言語名で検索すると簡単に引っ掛かりますので、必要なプログラミング言語のインストーラーをダウンロードしてインストールしてみましょう。
 
参考サイト:PHPダウンロードサイト
      Windows版Javaのダウンロードサイト
      Pythonダウンロードサイト
      Node.jsダウンロードサイト

Windowsバッチやエクセルマクロならインストールしなくていい

インストール作業をしなくても、パソコンを買った時点ですでに動かせるプログラミング言語もあります。Windowsであれば、Windowsバッチ、MACであればUNIXのシェルスクリプトなどです。また、Office製品でエクセルがインストールされていれば、エクセルマクロも動かせます。
 
インストールや設定が必要なプログラミング言語は、パソコン環境を考えて実行環境を作る必要がありますが、デフォルトで動くプログラミング言語はバージョンやOSの環境を意識することなく使えます。環境構築が少し難しいそうと思う方は、WindowsバッチやUNIXのシェルスクリプトから始めてみるのもいいでしょう。
 
他にも、LinuxでUbuntuであればPythonの実行環境はデフォルトで準備されています。Linuxの勉強をしていてUbuntuの環境があるという方であれば、Pythonを使って勉強を始めるのもいいいでしょう。
 
関連記事:Linux(リナックス)って何|意味や用途を完全解説
     LPICとは|身につくスキルとメリットから勉強方法まで解説
 

環境変数について理解しよう

プログラミング言語のインストールが完了したら環境変数の設定が必要になります。環境変数とは「プログラミング言語を実行してくれる実行ファイルのパス(場所)」です。
 
Windowsの左下の検索窓に「環境変数を編集」と入力すると下記の画面が立ち上がります。そして、「Path」をダブルクリックします。

環境変数を編集
 
新規のボタンをクリックして、インストールしたプログラミング言語の実行ファイルのパスをフルパスで指定します。実行ファイルの場所は、プログラミング言語の種類やインストールしたPCの環境によりますが、「C:\Users\(ユーザー名)\AppData\Local\Programs」に入っている場合が多いです。インストール後は設定のために、実行ファイルの場所についても調べておきましょう。

環境変数を編集
  

プログラミング言語を記述するテキストエディターを準備しよう

設定が終わったら、テキストファイルにプログラミングのコードを書いていく作業になります。コードを書く際には、使いやすいテキストエディターを使うのも重要です。行番号がついてないものや、コードの記述ミスを確認しづらいエディターは避けるべきです。

テキストエディターを選ぶポイント

使い慣れたエディターがあればそれを使うのもいいですが、新しく選ぶ場合は、コードを書いたときに文字の色がついてプログラミング全体の構造が理解しやすかったり、記述ミスなど間違いがあるとチェックが入ったり、エディターからそのまま実行ができるなど、機能が豊富で動作が軽いエディターがベストです。
 
2019年に転職DRAFTが行った人気のエディタランキングでは、マイクロソフトが社が無料で提供しているVisual Studio Code(ビジュアル・スタート・コード)の利用者が最も多く一番人気です。

2019年の人気エディタランキング

参考サイト:転職ドラフト「【令和元年の注目エディタは!?】決定版!2019年の人気エディタランキング 」
 
また、テキストエディターはプログラミングを行わない場合でも、通常のパソコン業務でも使いこなせるとタイピングの作業効率がアップしますので、何か1つテキストエディターを使いこなせるように目指しましょう。
  

実行方法について理解しよう

プログラミング言語の設定とテキストエディターの準備が終わったら何か記述して実行していきます。実行方法については「プログラミングを記述したファイルを直接実行できるもの」と「プログラミングを記述したファイルを一度プログラミング言語専用の形式に変換して実行できるもの」の2種類あります。
 
前者はスクリプト言語と呼ばれ、Python、Nodejs、PHP、Windowsバッチなどがあり、後者はコンパイラ言語と呼ばれ、Java、C++などがあります。また、後者のようにプログラミングを記述したファイルを一度プログラミング言語専用の形式に変換する作業を「コンパイル」と呼びます。
 
特徴としては、スクリプト言語は実行方法がシンプル、コンパイラ言語は実行方法が少し手間がかかりますが処理速度が早いという利点があります。
 

プログラミング言語の6つの基本的な機能を理解しよう

プログラミング言語はたくさんありますが、どの言語も基本的な機能は同じです。この章では、プログラミング言語の持つ6つの基本的な機能を紹介します。一見複雑そうに書かれているプログラムのソースコードも、実は基本的な機能の組みあわせて書かれています。
 
基本的な機能を理解して使いこなせることができれば、それらを組み合わせていろんな機能を実装できるようになり、プログラミングによるモノ作りの楽しさをさらに感じられるようになります。最初はここで紹介する、6つの基本的な機能をマスターすることを目標に勉強してみましょう。
 

出力と入力

画面に文字などを出力させるというのは、すべてのプログラミング言語で最初に学ぶ機能です。ほぼすべてのプログラミング言語の入門書でも「Hello! World」という文章を表示させるところから解説が始まります。
 
表示ができるようになると、次は何か入力して表示させてみましょう。プログラミングの一連の動作は入力に始まり出力に終わります。どんなに複雑そうに見えるプログラムでも、何か入力して最後に出力させるという流れはどのプログラムも同じです。
 

条件によって処理を変える

出力と入力が理解できたら、条件によって処理を変えるということをやってみましょう。たとえば、「10以上ならOKと表示、それ以外はNGと表示」というように、条件によって処理結果を変えることができます。
 
機能を理解するだけでなく、「入力される内容によって処理を変更すれば、簡単なゲームが作れそう」などと思いつくことができれば、プログラミングの楽しさや理解の幅もさらに広がるでしょう。
 
条件分岐だけも簡単なゲームやアプリを作ることは可能なので、まずは何か作ってみましょう。
 

同じ処理を繰り返す

同じ事を何回も繰り返すのは、コンピューターの得意分野です。たとえば「OKと100回表示したい」場合は、手動で行うと時間がかかりますがプログラミングなら一瞬で終わります。
 
繰り返しのプログラミングは、処理が終わる条件の記述がないと処理が永久に続いてしまい、無限ループという現象が起こります。もし、誤ったプログラミングを書いて、無限ループが発生した場合は大抵の場合は「Ctrl + C」で処理を中止できます。
 
繰り返し処理の実用例としては、ゲーム開発の場合はシューティングゲームで倒した敵によって点数を加算し続けたり、Web開発だとデータベースから商品や名簿など、何か一覧を繰り返し取得する場合に使われます。
 

大量のデータ取得と処理

繰り返しや条件分岐が使えるようになると、たくさんの文字列や数値が並んだ集合体から、繰り返しと条件分岐を組み合わせて、特定のデータを取得できるようになります。
 
データの集合体の形式の名称はプログラミング言語によってさまざまですが、文字列や数値がカンマ区切り並んだ「リスト」や「配列」、キーと値がセットになって並んだ「連想配列」、縦と横で表形式になった「データフレーム」などがあります。そのほかにもタグを使う「xml」や、Javascriptのオブジェクトの形式で表示する「JSON」などがあります。
 
また、大量のデータ取得や処理は、あらかじめデータの形式が決まっている場合は、データベースを構築して繰り返しや条件分岐と合わせて処理されるケースが普通ですが、データ分析などで形式が綺麗に整っていないデータの集合体は、プログラミング言語を使って綺麗な形式に整形をします。
 
まずは、プログラミング言語を使って、配列や連想配列からデータを取得したり変更したりしてみましょう。
 

処理をまとまった形にして使えるようにする

たくさんプログラミングを行うと、記述量が増えて見づらくなります。そういった場合は、同じ機能を何度も記述するのではなく、一連の処理をまとめておいて必要なときに呼び出して使うようにしましょう。処理をまとめる方法として「関数」と「クラス」という2つの方法があります。
 
関数は、条件分岐、繰り返しなど、特定の処理をまとめたものです。処理をまとめておいて必要なときに呼び出して使えば、同じプログラムを何度も書かなくて済みます。
 
それに対して、クラスは「オブジェクト指向」と呼ばれるもので、簡単に言うと関数、配列、変数などを部品としてまとめたものです。
 
関数は特定の処理を呼び出して使うのに対して、クラスは、ある配列の一部だけを使うとか、複数ある関数から選んで使うとか、特定の変数だけ使うなど細かく部品単位で使うことできる記述方法です。
 
オブジェクト指向の記述方法は慣れないと難しいですが、プログラミングの上級者になるためには、クラスをいかに使いこなせるかがポイントになります。クラスを使うことで、複雑な機能をシンプルに書けるようになります。
 

必要に応じてライブラリやモジュールを読み込む

プログラミング言語は、デフォルトで使える機能と、ライブラリやモジュールを読み込まないと使えない機能に分かれます。自分の使いたい機能に応じて必要なライブラリやモジュールを読み込んで使いこなせるようになりましょう。
 
また、プログラミング言語によっては、新しく読み込む機能のことを「パッケージ」とか「コンポーネント」とかいろんな呼び方をします。同じ言葉であってもプログラミング言語が違えば意味や用途も異なるので注意が必要です。
 
プログラミング初心者の方はこういう言葉の使い分けや定義で迷わずに、まずは「デフォルトで使えない機能は、外部から新しく何かを読み込んでおかないと使えない」ということを覚えましょう。
 

プログラミングの効率的な勉強法と上達のコツ

プログラミングの習得には根気強さが必要です。短期間の知識だけで習得できるものではないので、毎日コツコツと勉強を続けることが大事です。
 
勉強をしているとプログラムがうまく動かなかったり、どんな書き方をしたらいいか忘れてしまったりと、勉強を続けてもなかなか上達できずに不安になることもあります。そんな不安を解消するためにプログラミング上達のコツについて紹介します。
 

覚えるよりも手を動かして体系的に理解しよう

とにかくたくさん手を動かして「プログラムの記述」「実行」「トレース」を何度も繰り返して体系的に理解するのが大事です。トレースとはプログラムの動作の流れを理解することを言います。
 
最初は、シンプルなプログラムをたくさん書くのがおススメです。シンプルなプログラムの記述とトレースを繰り返していき、少しずつ複雑なプログラムにグレードアップしていきましょう。
 
どんなに複雑なプログラムでも、シンプルなプログラムの組み合わせでできています。簡単なところから少しずつ難易度を上げていく勉強方法で、確実にプログラミングスキルがアップします。
 

最初は1つの言語を習得することを目標にしよう

1つのプログラミング言語を確実に習得しておけば、新しい言語を習得するときに、できそうなことやどんな書き方をしたらいいかなど、ある程度の予想がつきます。
 
下記は、Python、Nodejs、Javaの同じ内容の条件分岐のサンプルコードです。プログラミング言語の種類は違っても、どことなく似ているのが実感できるかと思います。

Python Node.js Java
a = 5
if a >= 10:
 print("OK")
else:
 print("NG")
const a = 5;
if (a >= 10) {
 console.log("OK");
} else {
 console.log("NG");
}
public class Test{
 public static void main(String[] args) {
  int x = 5;
  if (x >= 10) {
   System.out.println("OK");
  } else {
   System.out.println("NG");
  }
 }
}

上記のように1つのプログラミング言語を確実にやっておけば、2つめの言語を習得するときには以前に習得したプログラミング言語の経験が役に立ち、新しい言語を学ぶときもスキルアップが早くなります。
 
最初は1つの言語を確実に習得することを目指しましょう。
 

簡単なゲームを作って遊んでみよう

プログラミングでは、数値や文字列の内容によって処理が変わる機能が頻繁に使われます。最初はCUIの画面で数値や文字列を入力させて、勝ち負け判定などができる簡単なゲームを作ってみましょう。
 
数値や文字列によって処理をコントロールするのは、プログラミングでは定番の手法です。この定番の手法を身につけるためにはゲームを作るのが最適です。
 
プログラミングの文法だけをひたすら練習するよりも、ゲームを作ってモノ作りの楽しさを実感しながら学んだ方が勉強も苦にならずに楽しく続けられるでしょう。
 

毎日の単純作業を自動化してみよう

プログラミングが何かの役に立ったというのを実感するためには、毎日やってる単純な作業を自動化してみましょう。たとえば、出社して同じフォルダ、同じファイルを開く作業や、テキストファイルやエクセルファイルの定番の作業などを、プログラムを作って自動化させてみましょう。
 
一度、自動化が成功するとプログラミングの便利さを実感できます。自動化して自分の作業が便利になっていくのを楽しく感じて、さらに便利にするためにプログラミングをもっと習得したいと思うようになれば確実にプログラミングが上達になります。
 
まずは身の回りの単純作業を振り返ってみて、プログラムに実行させたら何か便利になりそうなものを見つけて自動化をしてみましょう。
 

プログラミングを学べるサイト6選

プログラミングを勉強するために、インターネットを利用するのも1つの方法です。インターネット上には有料、無料問わずプログラミングの勉強を助けてくれるサイトがたくさんあります。初心者の方は、最初はインターネットを上手く使えば、無料でも充分プログラミングのスキルアップができます。
 
ここで紹介する学習サイトは、自分の空いた時間を使って好きなときに学習できますので、自分のスケジュールに合わせてうまく活用してみましょう。
 

ブロックリー・ゲーム:Google推奨の初心者向け学習教材

Google推奨の初学者を対象とした入門用のプログラミング学習教材です。プログラミングそのもののスキルよりも、プログラムを組み立てるための考え方を養うための無料教材です。
 
プログラミングはテキストファイルに文字を書いていく「テキストプログラミング言語」がほとんどですが、ブロックリー・ゲームはGUI(グラフィカル・ユーザー・インターフェース)で行う「ビジュアルプログラミング言語」と呼ばれます。
 
マウスでドラッグアンドドロップしてプログラミングを行い、ゲーム感覚で楽しく学べます。タイピングが苦手な方や、文法よりもプログラムを組み立てるための考え方を先に学びたいという方にはすすすめです。
 
参考サイト:ブロックリーゲーム
 

ドットインストール:動画解説でわかりやすい

プログラミングを独学で始めた方であれば、一度はアクセスしたことがある定番サイトです。有料コンテンツと無料コンテンツの両方ありますが、初心者の方がプログラミングを勉強するためには無料コンテンツでも十分なボリュームがあります。
 
動画は1つ3分程度で、講師の方がコードを記述しながら解説する丁寧な講義内容になっています。Web開発のプログラミング言語の内容がほとんどですが、本格的なゲーム開発向けのUnityの講義も無料で学べます。
 
有料版になるとAWSの講義や、実際にアプリケーションを開発する講義も観れます。無料版を習得した方は有料版を検討してみるもいいでしょう。
 
参考サイト:ドットインストール
 

Progate:基礎だけなら無料で学べる

世界100か国以上で提供されている、登録者200万人以上のプログラミングの独学サイトです。無料会員でも18レッスンを学べます。基礎だけなら十分なボリュームです。ドットインストールは解説用の動画で学習する形式ですが、こちらの講義はスライド形式ですすすめていく形になります。
 
また、Web上でプログラミングをできますので、実行環境を作る必要がなく初心者の方でも、無料で会員登録をすればすぐにプログラミングの練習ができます。サンプルコードを見てその場で実際にプログラミングをして答え合わせまでできますので、独学でも問題点をすぐに解消できます。
 
有料会員になると84レッスンすべてを見ることができます。より実践的な内容を学びたい方は、有料会員を検討してみるのもいいでしょう。
 
参考サイト:Progate
 

Python入門:Pythonを無料で学べる

Pythonの環境構築から基礎文法まですべて無料で学べるサイトです。Pythonの基本的なプログラミングについてはこのサイトで完全に網羅されています。
 
動画やスライドで学習する形式でなく、各セクションごとに豊富なサンプルコードが載っていますので、サイトのコードを見ながら自分でプログラミングを行ってみましょう。また、Web開発をしたい方向けに、WebフレームワークのDjangoについても解説されており、こちらも無料で学べます。
 
PythonはCCNPから試験の出題範囲になっていますので、ネットワークエンジニアとしてスキルアップを考えている方にもおすすめのサイトです。
 
参考サイト:Python入門
関連記事:CCNPとは|年収・難易度から勉強方法までを実例付きで解説
 

Udemy:有料だが世界中のエンジニアから支持されている

世界中の企業やエンジニアたちから高く評価されている完全有料の学習サイトです。動画形式で自分の空いた時間に講義を受けることができます。ほぼすべてのIT技術の講義が準備されており、プログラミングだけなくITインフラ関連の講義もあります。
 
初心者から上級者までさまざまな難易度の講義が準備されており、勉強でわからないところあるとメールで講師に質問もできます。独学で進めたいけど講師のサポートも欲しいと考えている方にはおすすめです。
 
講師は世界中の現役エンジニアなので、外国語がわかる方であれば、海外のエンジニアの講義を受けることで日本にはないIT技術を習得することも可能です。
 
参考サイト:Udemy
 

Qiita:プログラミングの技術情報サイトコミュニティ

エンジニアが自分の好きな技術を投稿して情報交換をするためのコニュニティーサイトです。閲覧するだけであれば誰でも見れます。無料で会員登録をすると自分で技術ネタを投稿できるようになります。
 
プログラミングだけに限らず、ITインフラのネタを投稿している人もいますので、ITエンジニアの種類問わずさまざまな情報を拾うことができます。自分がわからなかったことについて検索すると、Qiitaで誰かが投稿してくれているということもあります。
 
また、自分が投稿した記事を限定記事にして、自分用に技術のまとめサイトみたいにして使うエンジニアもいます。
 
参考サイト:Qiita

プログラミング学習の目的別最初のおススメの1冊

プログラミング初心者で学習のために書籍を購入するのであれば、最初は読みやすく優しいもの選びましょう。未経験者の方向けには、プログラミングの実行環境を作る手順の記載があって、シンプルなソースコードがたくさん載っているのがベストです。
 
クオリティの高い書籍は有益なソースコードがたくさん載っていたとしても、ベースとなる知識がないために学習を進めていけなくなる可能性があります。最初は理解しやすい書籍で勉強して、1冊を完全に習得した後に自分のレベルに合わせて次の書籍を検討するのがいいでしょう。
 

プログラミング独学の初心者向け

プログラムはなぜ動くのか
プログラムはなぜ動くのか 第3版 知っておきたいプログラミングの基礎知識
 
プログラミングの実践よりも、コンピューターの基礎理論をベースにプログラミングの動作原理についての知識を深めるための書籍です。コンピューター全般について解説されていますので、IT未経験者の方にも役立つ内容です。
 
基本情報技術者試験のコンピューターシステムの範囲に近い内容です。プログラミングの前にコンピューターとプログラミングの動作原理ついての基礎的な知識を固めたいたいという方は、まずこちらで読むと良いでしょう。
 
コンピューターの操作を含めて未経験者のための知識重視の書籍ですが、経験者の方でもコンピューターの基礎理論を復習したいという方にもおすすめです。
 
関連記事:基本情報技術者試験の攻略ガイド|日程から勉強方法まで完全網羅
 

Webサイトを作りたい人向け

Webエンジニアの教科書
Webエンジニアの教科書
 
プログラミング言語はRuby on Rails、PHPを中心に解説されています。また、Web開発には欠かせないデータベースについてや、ログの見方、データの可視化方法まで詳しく解説されています。
 
3年目のエンジニアが対象とされていますが、プログラミングの実行環境の構築の手順も載っていますので、未経験の方でも本の通り読みすすめていけばプログラミングを独学で習得できます。
 
Webエンジニアの業務内容についても記載されていますので、Webエンジニアを目指す方だけでなく、Webに興味があるという方や、趣味でWebサイトを作ってみたい方にも楽しめる内容になっています。
 

ゲーム開発をしたい人向け

Unityの教科書
Unityの教科書

ゲーム開発で使われるUnityについての書籍です。開発環境の構築から説明されているので未経験者の方でも学習をすすめていくことが可能です。
 
2Dや3Dのデザインまで幅広く解説されていますので、ゲーム開発を行うためのノウハウがたくさん手に入ります。また、ゲーム開発でよく使われるプログラミング言語である「C#」についても解説されていますので、ゲーム開発のためのプログラミングスキルも身に着けることができます。
 

スマホアプリを作りたい人向け

絶対に挫折しない iPhoneアプリ開発「超」入門
絶対に挫折しない iPhoneアプリ開発「超」入門 第8版 【Xcode 11 & iOS 13】 完全対応

iPhoneアプリ開発向けの書籍です。開発環境であるXcodeのインストール方法とSwiftについて優しく解説されています。また、本書は作って終わりの技術解説だけなく、スマホアプリの収益の流れやリリース手順まで解説されています。
 
この書籍だけで、スマホアプリの開発方法とApple Storeでリリースを行う方法の両方が手に入るお得な内容になっています。
 

インフラエンジニア向け

最短3時間で覚えるLinuxシェルスクリプト
最短3時間で覚えるLinuxシェルスクリプト

Linuxのシェルスクリプトについて解説された書籍です。インフラエンジニアにとって、Linuxの効率の良いオペレーションをするためにはシェルスクリプトを身につけるのは大事です。制御構文やよく使われる正規表現などについても記載されていますので、実務でも非常に役に立ちます。

Linuxをまったく触ったことがない方には少し難しい内容になりますので、まずはLinuxについて下記のサイトもチェックしてみてください。
 
関連記事:Linux(リナックス)って何|意味や用途を完全解説
     LPICとは|身につくスキルとメリットから勉強方法まで解説 
 

自分の目的にあったプログラミング言語を学習しよう

プログラミング言語はたくさん種類があります。未経験から独学で習得する場合は、自分の目的を明確にして、その目的に合わせてプログラミング言語を選びましょう。勉強で行き詰ったときにはインターネットから情報をたくさん拾って調べられるように、人気のある言語を選ぶのがベストです。
 
プログラミングはモノ作りです。ゲームを作ったり、身の回りの作業を自動化するなど、積極的に手を動かしてモノ作りの楽しさを感じることで習得も早くなるので、ぜひ色々なプログラムを作ってみましょう。

転職に迷ったらやってみよう!【エンジニア診断】

記事の監修責任者

飯塚 寛也
エンジニアとして移行調整・NW更改作業・クラウドシステムの設計・構築等を手掛ける。 入社2年目でネットワーク最高資格であるCCIEの筆記試験に合格。 人材開発室にてCCNA/CCNPの勉強会を50回以上開催、100名以上の合格者を輩出し、スクール事業の礎となる。
▶監修責任者からのメッセージを読む

無料カウンセリング、参加受付中!

IT業界やネットワークエンジニアのこと、
当校や入校に関する疑問、ご相談などお気軽におたずねください。