プログラミング学習方法をよく聞かれるので現役エンジニアの僕がまとめてみた

アイキャッチ画像

この記事で解決できる疑問や悩み

  • プログラミング学習は何から手をつけたらいいの?
  • プログラミングってどんなことをするの?
  • プログラミング学習の情報がたくさんあり過ぎて結局何をしたらいいかわからない・・・
  • 他のプログラミング学習の記事を見ても言っていることがフワッとしている・・・

プログラミング初心者であるあなたは上記の疑問や悩みを持っていると思います。


それもそのはず、初心者にとってはプログラミングがどんなものなのか得体の知れないものです。

また、あなたのイメージ通りプログラミング学習は簡単なものではありません。

その道のプロも多くの挫折や苦悩に立ち向かってきました。


でも安心してください、
プログラミングスキルは正しい方法で適切な努力をすれば誰でも身に付けられます。


そこで今回は数々のトライ&エラーを経験しながら未経験からフリーランスのエンジニアになった筆者がプログラミング学習の具体的な方法やアドバイスを包み隠さず正直にお伝えします。

そもそもプログラミング学習とは何を学ぶの?

プログラミング(観葉植物)

プログラミング学習どうこうの前に、なぜプログラミングを行うのでしょうか?

それはコンピュータに指示を与えて意図した処理を行わせるためです。

意図した処理とは例えば、
このURLにアクセスが来たらこのページを表示させる、
毎朝社内の人にメールを自動送信させる、といったものです。
※ごく一部の例に過ぎません。

このような意図した処理をコンピュータに行わせるためには、
コンピュータに具体的で明確な指示を与える必要があります。

ただ、人間が使っている言葉でコンピュータに指示を与えてもコンピュータは自然言語を理解できません。

そこで登場するのがプログラミング言語です。

プログラミング言語はコンピュータも理解できる言語であるため、
習得することでコンピュータへ指示を出すことができるようになります。

※厳密にいうと、プログラミング言語はさらに機械語に翻訳されてコンピュータが実行します。


前置きが長くなりましたが、
プログラミング学習とはコンピュータに指示を出せるようになるためにプログラミング言語の文法やルールを学ぶことです。


一方、プログラミング言語を習得していく上ではプログラミング周りの基礎知識を身につけることで学習効率が大幅に向上します。

そのプログラミング周りの基礎知識として学ぶべきことは後ほど説明します。

プログラミング学習の大きな流れ

コンピューターモニター(3画面)

ここではプログラミング学習を進めていくための大まかな流れを示します。
「こんな流れで進めてみて」といったものをまとめました。

①作りたいものを決める

プログラミング学習を始める前に決めておかないといけないのが作りたいものです。

そもそもプログラミングをする目的はプログラムを作ることです。

プログラミングはあくまでもプログラムを作るための手段に過ぎません。

そのため作りたいものを決めないと、
何のためにプログラミングの学習をしているのか?
どの知識を学べばいいのか?
ということが具体的にならず、
途中で学習をやめてしまう危険があります。

私もそうだったのですが、
なんとなくプログラミングを学びたいという気持ちで作りたいものを決めずに文法などを学び始めると、目的を見失って結局グダグダになってしまいます。

また、作りたいものを決めておけば、
必要になる機能を実装するために嫌でも学んで身につけようとするので効果的です。

したがって、まずは作りたいものを決めて、そのゴールに向かって学習を始めま・・・


とは言っても、
作りたいものなんかない・・・
そもそも何が作れるのかわからない・・・

というのがほとんどの人の本音です。

よって、作るものの具体例を以下にリストアップしたのでこの中から選びましょう。

・タスク管理アプリ
ユーザーがタスクを作成し、優先順位や進捗状況を管理するアプリ。
ユーザー認証やデータベースの操作など、基本的な機能を学びながら実装できる。

・ブログアプリ
ユーザーが記事を投稿し、閲覧・コメントすることができる記事投稿アプリ。
ユーザー認証やデータベースの操作、画像のアップロードなど、実践的な機能を学ぶことができる。

・掲示板アプリ
ユーザーがトピックやスレッドを作成し、他のユーザーとのコミュニケーションを行うアプリ。
ユーザー認証やリアルタイム更新、データの永続化など、実際のWebアプリの構築に近い機能を経験できる。

・ECサイト
商品の一覧表示や詳細表示、カート機能、決済処理などを備えたオンラインストア。
ユーザー・商品管理やカート機能、決済機能など、実践的なスキルを磨くことができる。

ちなみに、難易度は一番上(タスク管理アプリ)の方が簡単で、下にいくほど難しくなっていきます。

個人的にはブログアプリを選ぶのが1番スタンダードだと思います。

②作りたいものに必要な知識をある程度学ぶ

作りたいものを決めたら、作るのに必要なプログラミング知識をある程度学びます。

この”ある程度”とは、調べながらコードを書いていくことができる最低限の知識状態です。

例えばRubyやPythonでWebアプリを作りたい場合は、
言語の基礎文法を身に付けて、Webフレームワークの簡単なチュートリアルをやり切った状態を指します。

つまり、目的のものを作るために必要なツールの使い方を知って、最低限戦える状態にしておこうということ。

例えばカリキュラムやチュートリアルを2〜3周ほど回せばOKです。

なお、根本的な理解を求めて何回も何回も基礎を回すことはしなくて大丈夫です。

基礎については開発を始めたら、開発をしながら復習をしていく方が脳みそに定着します。

③実際に開発する

作りたいものに必要な知識をある程度学んだら、実際に開発をしていきましょう。

ここからは身につけた最低限の知識をもとに、都度調べながらコードを書いていくようなイメージです。

開発していく際にはGoogle先生を鬼のように使うことになります。

また、今であればChatGPTのようなチャットAIに聞きながら開発を進めるのも効率的です。

最初のうちはコピペで開発を進めていくことになるのではないでしょうか。

ただ、何も理解せずに思考停止でコピペするのはNGです。

プログラミングではお手本のコードがあればむしろコピペをするべきですが、
自分が何も理解していないコードをコピペするのはスキル習得の面でも開発の面でも害悪です。

コピペしたコードはどんな書き方をしているか?どんな戻り値を返すのか?など常に意識して理解しましょう。

④調べて開発をひたすら繰り返す

開発に入ったら、「コードを書く→必要な知識を身につける」という行為を何度も繰り返します。

資格試験や仕事においても、物事の習得方法で1番効率が良いのは必要になった都度身に付けるというやり方です。

今すぐ必要でもない知識を身に付ける気になれませんよね。

今すぐ必要だから身に付ける、これが確実な学習や開発のやり方です。

つまり、アウトプット→インプット→アウトプットが1番効率的な習得方法の順序です。

さらに、今まではコピペにずっと頼っていたなら、
なるべく0から自分でコードを書くことにもチャレンジしましょう。

実装したい処理を1行ずつコメントで書き、
その日本語をコードへ1行ずつ翻訳する作業と考えるとやりやすいです。

初心者がやってしまう間違ったやり方

向こう側の光を眺める男性

頑張って暗記しようとする

先に結論をいうと、プログラミングに暗記は必要ありません。

なぜかというと、プログラミングは勉強というよりも、スポーツに近いからです。

バッティング練習やシュート練習は本や動画を見て覚えたところで、一向に上手くなりません。

しっかり体を動かして体得する必要があります。

プログラミングも実際に手を動かしていかないとスキルが身に付きません。

もちろんある程度覚えることはありますが、
暗記しただけの知識では実際にコードを書くことは無理に近いです。

知識を学んで手を動かしてエラーやバグにぶつかる経験からまた学び、
自分なりのアプローチや解決策を見つけることでスキルは身についていきます。

完全に理解してから次に進む

初心者によくありがちなのが、1つのことを完全に理解しないと次に進まないというやり方です。

そもそもプログラミングは広くて複雑な領域であり、
すべての概念やテクニックを完全に理解することはほとんど不可能です。

というかその必要はまったくない。

過度な完璧主義に陥り、完全に理解しないと次に進まないという姿勢は学習を停滞させる諸悪の根源です。

何度も言っていますが、
プログラミングは実践的なスキルであり、実際にコードを書いて動かすことで理解が深まります。

また、進んでいくうちに理解が深まり、新たな知識やテクニックを吸収することができます。

そのため、感覚的に50〜60%理解できたと思ったらすぐ次に進みましょう。

具体的なプログラミング学習手順

夕日をバックに手と手を合わせる

①プログラミング周りの基礎知識を学ぶ

プログラミング言語を習得する前に学んで欲しいことがあります。

それがプログラミング周りの基礎知識です。

具体的なことはこちらの記事を参考にしてください。

あわせて読みたい

プログラミング言語に触れる前に学ぶべきことは?プログラミングをするのに必要な知識は? 本記事ではこのような疑問を解決します。プログラミング初心者がおろそかにしがちなのが、プログラミング言語に触れる前に学ぶべき基礎概念です。プログラミ[…]

アイキャッチ画像

プログラミング言語の先にあるアプリケーション開発においては必須の知識になります。

なお、「今すぐプログラミング言語を触りたい!」という方は上記を飛ばしてもらって構いませんが、
プログラミング言語の基礎を一通り習得したら必ず戻ってきてください。

②プログラミング言語を習得する

プログラミング初心者が最初に習得するべきものは下記の通りです。

・HTMLとCSS

・プログラミング言語の基礎文法

HTMLとCSSはWebサイトの構成をなすもので、
プログラミング初心者が最初に習得すべき言語になります。
※HTML・CSSは厳密にいうとプログラムを作る言語ではないのでプログラミング言語ではない(念の為言っておく)

HTML・CSSについてはプログラミングの学習サービスやスクールなどでカリキュラムの最初の方で絶対に出てくる分野です。

内容を簡単に説明すると、
HTMLはWebサイトの構成要素そのもので、CSSはHTMLに装飾をするものになります。

例えるとHTMLが木材、CSSがペンキといったイメージでしょうか。

なお、HTML・CSSについては、今後Webサイトの画面を開発していく人(主にフロントエンドエンジニア)以外は触れる機会はめったにないですが、
どの方向に進むにせよ基礎中の基礎なので押さえておきましょう。


次に習得すべきなのが何と言ってもプログラミング言語の基礎文法です。

プログラムのコードを書くために不可欠な道具ですね。

まずはプログラミング言語の基本的な文法を習得してコードを書くことに慣れましょう。


ではどのプログラミング言語を選べばいいのか?

初心者にはPHP・Ruby・Pythonの3つがおすすめで、その中から1つ選びましょう。

おすすめの理由はコードが書きやすくて実行もしやすいからです。

言語によってはコードが少し複雑だったり、実行するには変換処理が必要だったりするものがあります。
※プログラムの処理速度的には複雑で変換処理が必要な方が良い(今は気にしなくてOK)


なお、3つの中から選び方は以下の通り。

・PHP
→学習難易度が低く、Web開発に特化したい人向け

・Ruby
→人気WebフレームワークRuby on Railsを使ってWeb開発をしたい人向け

・Python
→Web開発だけでなくAI分野もカバーしたい人向け

そして、具体的な学習手順をツール別にご紹介します。

学習サービスの場合:

プログラミングの学習サービスはたくさんありますが、
最もおすすめなのがProgateです。

プログラミング初心者向けの学習サービスの中で1番有名と言って良いでしょう。

Progateの学習スタイルはスライドを見ながらコードを書いて学んでいく形です。

実際にコードを書くので知識の定着が図れます。

なお、もちろんHTML・CSS・PHP・Ruby・Pythonをすべてカバーしています。

また、カリキュラムをまわす回数としては2〜3周やりましょう。

ぶっちゃけプログラミング基礎の習得にはProgateがダントツでおすすめです。

動画の場合:

動画でプログラミングを学びたい場合はドットインストールがおすすめです。

先ほどご紹介したProgateと並んで有名な学習サービスですが、
ドットインストールは動画を視聴しながら学習するスタイルになります。

こちらも同様にカリキュラムを2〜3周まわしましょう。

なお、当然HTML・CSS・PHP・Ruby・Pythonをすべてカバーしています。

書籍の場合:

書籍については言語別におすすめをご紹介します。

選んだ基準は「0からプログラミングを学ぶのに専門用語や堅苦しい文章では頭に入ってこないため、初心者用に特化した優しい良書」です。

・HTML & CSS

・PHP

ぶっちゃけ、ない

・Ruby

・Python

表紙のイラスト見てちょっとナメましたよね?笑

でもナメない方がいい、わかりやすくて頭に入ってくるんだから。



なお、書籍でプログラミングを学ぶ場合は基本的に環境構築を行う必要があります。
※環境構築については下で説明

環境構築の方法については書籍の冒頭で説明されていることが多いので、それを見ながら行いましょう。

※環境構築について

環境構築とはプログラミング言語で書いたコードを動かすための環境を用意することです。みなさんのパソコンでは基本的に環境構築を行っていなければ、例えばRubyで書いたコードやPythonで書いたコードを動かすことはできません。書いたコードを動かすためには必要となるソフトウェアをインストールします。初心者の方はこのプログラミングの環境構築の段階でけっこうの人が挫折していきます。そのため、最初の頃は環境構築をなるべく行わない方法(Progateやドットインストールなど)でプログラミングをするのがおすすめです。そして、あとから慣れてきたら環境構築にもチャレンジしてみましょう。
※環境構築はエンジニアになる上では避けては通れない

③簡単なプログラムを作成する

プログラミングの基礎を習得できたら、簡単なプログラムを作成してみましょう。

簡単なプログラムとはWebフレームワークやデータベースが絡まないプログラムのことです。

なお、具体例は以下の通り。

・電卓プログラム
コマンドライン上で数式を入力し、計算結果を表示するシンプルな電卓プログラム

・ログインシステム
ユーザーの登録、ログイン、ログアウトなどの機能を持つシンプルなログインシステム

・ファイルアップロードツール
ユーザーがファイルをアップロードし、ファイルの受け取りや保存を行うシステム

・テキストエディタ
コマンドライン上でテキストファイルを作成・編集できるシンプルなテキストエディタ

・メモアプリ
コマンドライン上でメモの追加、表示、編集、削除などの機能を持つシンプルなメモアプリ

・スクレイピングツール
ウェブサイトからデータを取得し、必要な情報を抽出して表示する簡易なスクレイピングツール

・テキストベースのゲーム
コンソール上で遊べる簡単なテキストベースのゲーム(クイズ、数当てゲームなど)

・ファイル整理ツール
特定のディレクトリ内のファイルを整理・分類するツール

※具体例はChatGPTに聞きました。

上記の中からいくつかチョイスして作成してみましょう。

複数作成することでプログラムを作成する感覚をつかめます。

なお、簡単なプログラムを作成するためにはそれぞれの言語で用意されているライブラリの使用が必要になってくるはずです。

ライブラリとはある機能を実現するためのパーツです。

ライブラリはコードを書いているファイルにインポートして使います。

1から機能を作るよりも用意されているものを使うことで効率的で確実に欲しい機能を実装できます。

④Webフレームワークを学習する

③で簡単なプログラムを複数作れるようになっていれば、
考えてコードを書く力は身についているはずです。

その次に学ぶべきなのがWebフレームワークです。

WebフレームワークとはWebアプリを開発するのに必要な機能をひとまとめにして提供してあるパッケージのことです。

例えるとディアゴスティーニにおいて、パーツを1つずつ揃えていくと時間がかかりますが、
1回でドーンとすべてのパーツが揃ったキットが手に入るようなイメージです。笑


世の中の有名なWebサービス(YouTubeやTwitter、食べログなど)は基本的に言語は違えど、
Webフレームワークを利用して開発されています。

そして、Webフレームワークを学ぶツールとしては学習サービスやチュートリアルがおすすめです。


下記にWebフレームワーク別に具体的な学習ツールをご紹介します。

PHPの場合:
・CakePHP
公式チュートリアル
・Laravel
Laravel学習帳、ドットインストール

Rubyの場合:
・Ruby on Rails
公式チュートリアル、Progate、ドットインストール

Pythonの場合:
・Flask
公式チュートリアル(日本語版)
・Django
Django Girlsチュートリアル公式チュートリアル

⑤Webアプリを開発する

Webフレームワークを学習したら、実際にWebアプリを開発していきましょう。

作りたいものがあればそれを作るのがベストですが、
一般的にTwitterやブログなどのクローンアプリを作るのがおすすめです。
※いわゆる記事を投稿するブログアプリ

なぜなら実際のWebアプリ開発ではデータベースを扱うことが必須で、
データの登録・読込・更新・削除の処理(CRUD処理と呼ぶ)が組み込まれているからです。

そのため、CRUD処理を組み込んだ開発をすることがWebアプリ開発を体験する目的でもあります。

また、会員登録やログインのようなWebアプリにおける基本的な機能を実装することもとても重要です。

⑥学習した内容をアウトプットする

上記①〜⑤の具体的な学習手順をご紹介してきましたが、
それぞれの手順の中で随時やってほしいことがあります。

それが学習した内容をアウトプットすることです。

ここでいうアウトプットとは、後から見直した時にすぐ確認できるように文章でまとめることです。

少し面倒くさいかもしれませんが、
知識の定着には効果抜群で一度まとめたものを後から何度も確認することができます。

また、自分で書いた文章であるため、確認する時もスッと思い出せます。

なお、アウトプット方法については以下の通り。

・ブログを書く
→体系的な知識をブログの記事にまとめる

・Twitterでつぶやく
→メモ程度の断片的な知識を発信する

・ZennやQiitaで記事を書く
ZennQiitaといったエンジニア御用達の技術情報共有サービスで断片的・体系的な知識を記事にまとめる

・Wordやメモ帳にまとめる
→「出会ったエラー集」や「苦手技術まとめ」といった自分だけの学習ノートを作る

よくある質問:プログラミングスクールってどうなの?

ノートパソコンで仕事をするキャリアウーマン

絶えない「プログラミングスクールってどうなの?」論争。

プログラミングスクールについては行くべき派・行く必要ない派で様々な意見があります。

結論としては、「自己で情報を収集して、モチベーションを維持しながらプログラミング学習をできるなら行かなくて良い」です。

結局のところ、
プログラミングスクールはモチベーションが維持できない、学習を自走できない、という人が行くべき場所です。

先ほどご紹介した「具体的なプログラミング学習手順」をすべて自力でなおかつエラーが起きても調べたり、人に聞いたりして解決できそうであればプログラミングスクールに行く必要はありません。

いわば、プログラミングスクールは最適な学習環境をバンっと用意してくれるので、時間や手間などを含む効率性をお金で買えるのが醍醐味です。

おすすめとしては、とりあえずは本記事の「具体的なプログラミング学習手順」に沿って学習を進めて、必要性を感じたらスクールを使うというスタンスが良いと思います。

なお、プログラミングスクールについては下記の記事でまとめているので、
不安な方は無料相談や無料カウンセリングを受けてみると良いでしょう。

あわせて読みたい

プログラミングスクールの数が多くてどれを選んだらいいのかわからない・・・プログラミングスクールってどんな感じで選んだらいいんだろう・・・IT化が当たり前の世界で渇望されているスキルがプログラミングスキルです。また、IT業界だけでなく、様々[…]

アイキャッチ画像

まとめ:アウトプットしろ

ジャンプ(2人)

以上、プログラミングの学習方法を解説してきましたが、
すべてにおける共通点は「アウトプットしろ」ということです。

学んだ知識や技術を自分自身で実践し、プロジェクトや課題に取り組むことで、スキルはぐんぐん伸びていきます。

エンジニアとして一人前になったとしてもこの基本は変わりません。

アウトプットの数だけ強くなれる。

本記事があなたのプログラミング学習に少しでもお役に立てたら幸いです。

最後までお読みいただきありがとうございました。

あわせて読みたい

WordPressブログの始め方とは?ハズレなし!絶対おすすめなWordPressテーマとは?ブログを始めるのにかかる費用とは? 本記事ではこのような疑問を解決します。前回こちらの記事で、ブログを始めるならWordPressブログが[…]

アイキャッチ画像