「プログラミング学習に挫折して後悔したくない。」
「早く効率的にスキルをつける方法は?」
「言語ごとの勉強方法も知りたい。」
このような気持ちを抱えていないでしょうか?
私はプログラミングの勉強方法に悩んだうちの1人なので、気持ちは良く分かります。
最初は本当に勉強が上手く行かずに、2週間ぐらいで辞めそうになりました。しかし、アドバイスをもらいながら前向きに取組み、実業務で通用するプログラミングスキルを身に付けるまでに成功しました。
本記事を読めば暗記に頼らない実践を意識した勉強方法を身に付けることができます。
私の経験をもとに、全般的なプログラミングの勉強法や言語ごとの学習ポイントをどうすれば挫折せずに効率よく学習できるかに焦点をあて具体的に説明していきます。
ぜひ、最後まで読んでいただき、プログラミングの勉強を迷うことなくスタートできれば幸いです。
全般的なプログラミングの勉強方法
プログラミングの勉強をこれから始める方は、どのように勉強すれば良いか迷うでしょう。
右も左も分からない状態で、どこから手をつけて良いか分からない気持ちは理解できます。
全般的なプログラミングの勉強方法は以下の通りです。
- 書籍
- Webサービス
- スクール
結論を言えば、勉強方法に正解はありません。現時点でのスキルや学び方の向き不向きには個人差があるからです。ここでは、各勉強方法のメリット・デメリットを中心に説明しますので、現状に合った方法を検討してみてください。
書籍で勉強する
プログラミングを書籍で勉強するメリットは、低価格でプログラミングの基礎から網羅的に学習することが可能です。
技術書は一般の本に比べれば高いのですが、平均して2,000円~3,000円程度なので学習をスタートするリスクが低いです。
amazonやメルカリであれば、中古でそれ以上に安く手に入ります。
Kindle版(電子書籍)を購入すれば持ち運びも便利で、スキマ時間を見つけて勉強できます。
書籍は一冊で技術を理解させる目的で書いているので、基礎から網羅的に解説しています。プログラミング初心者には非常に始めやすいでしょう。
ここまでメリットを説明しましたが、書籍はあくまでも分からない箇所を調べる辞書がわりに使うことをおすすめします。最初に取り組んでも良いのでが、本の分厚さと活字を読む労力で精神的に学習が継続できない可能性があります。
また、実際の開発現場のコードよりもレベル的にかなり劣るでしょう。書籍のプログラミングコードはかなり基礎的で実践のレベルからかけ離れている場合が多いので注意してください。
Webサービスで勉強する【おすすめのサービス5つを紹介】
書籍と同様、プログラミングの基礎を勉強するのにWebサービスは適しています。とくに質問が可能なところが、Webサービスの良い所です。料金は一括支払いや月額制の両方がありますが、内容の充実度からすると非常にコスパが優れているサービスが多いです。
Webサービスは非常に多いのでどれを選ぶべきか迷うでしょう。そこで、多くの中から特におすすめのWebサービスを5つに厳選して紹介します。あくまでも、私のおすすめなのでご自身でも検索して本当に納得するものを選んでください。
それぞれのWebサービスの概要を表にまとめたので、比較検討してみましょう。
サービス名 | 主な特徴とメリット | スマホアプリ対応 | 料金 |
1.Progate | ・環境構築なしで複数の言語が学べる・スライド式・基本レベルの18講座が無料・プログラミング入門者向け | 有 | 無料有料(月額980円) |
2.ドットインストール | ・動画形式(6,500本以上)・アプリを作りながら学べる・質問可能(有料のみ)・プログラミング入門者向け | 無 | 無料有料(月額1,080円) |
3.paizaラーニング | ・就職に直結するスキルが身に付く・動画形式・環境構築不要・エンジニアに質問ができる・情報処理入門でIT基礎も学べる | 無 | 有料1,078円~7,200円 完全無料のコースも有り |
4.Udemy | ・システム開発、AI、データベースなど幅広いコースがある動画コンテンツ・質問が無制限・コスパが良い(1回支払えば見放題) | 有 | セール期間に購入すれば1講座1,000円代 |
5.Railsチュートリアル | ・アプリを作りながら学べる・Webアプリの基本的な実装を学べる | 無 | 有料(32,780円~59,000円) |
スクールで学習する
就職活動や案件獲得を第一優先にする方は、スクールをおすすめします。主要なスクールの就職率は、90%を超えており高い就職実績を誇ります。就職・案件獲得という観点で考えれば、独学で勉強するよりはるかに効率が良いです。
- 自分に武器がなく就職活動で苦戦中
- お金と時間に余裕がある
- スクールのカリキュラムについて行く意思がある
- 就職後も支援して欲しい
カリキュラムは内容が充実して実践的です。以上に該当する方は、ぜひスクールを検討してみましょう。
しかし、スクールに入ったからと言って安心ではありません。
内容が充実している分、非常に難しく挫折する人も多いです。優秀なメンターはいますが、最後までやり遂げられるかは自分次第の所もあります。
20代後半~30代前半までが条件ですが、リスクが少ないので無料のスクールもあります。ただし、完全無料と実質無料(就職が失敗した場合に無料となる)のスクールに分かれるのに注意が必要です。
有料にせよ無料にせよ、まとまった時間がとれて講座に集中できる方にはおすすめします。
写経はするべき?写経で得られる効果とは
教材のサンプルコードを読みながら、テキストエディターに入力して理解できない部分を調べるのがプログラミングの写経です。結論を言えば、写経は行うべきです。得られる効果が高く、効率よくプログラミングの実力が身に付きます。
英文をノートに書き辞書で調べながら覚えると頭に残りやすいのと同じで、写経は非常に効果があります。写経するコードは質の高いものを使ってください。現役の第一線で活躍しているエンジニアが講師を勤めるWebサービスで使われているコードはおすすめです。
Webサービスを購入すれば手軽に質の高いコードを入手できます。写経中に自分で調べてもコードを理解できれなければ、最悪の場合は質問できるメリットもあります。
写経で得られる効果は以下の通りです。
- プログラミング言語の基礎文法が身に付く
- 各プログラミングコードの型を学べる
- 機能ごとのプログラミング方法が分かる
- 良いコードの書き方が学べるので実業務にいかせる
写経を行うタイミングは、何か1つプログラミング言語を学び終わった後が良いでしょう。
プログラミングを全く知らない状態だと、ただ訳の分からない英文を書き写しているのと同じです。
「写経は意味がないのでは?」そのような評判も聞きますが、正しい方法で行えば十分に効果が実感できます。
ただテキストエディターに書き写して終わりではなく、目的をもって取り組むことがポイントです。
- サンプルコードは自作したいアプリに関係するものを選ぶ
- 各機能ごとにコーティングの方法を理解する
- 書き写して理解したコードに新規機能を自分で追加してアップデート
- 最終的にオリジナルアプリを作ることを目標に丸写しできるところはする
以上を意識して取り組みましょう。
写経は計3回行うと理解が深まります。1度目は写経を最後まで終わらせ動作確認を目的に行います。2度目は分からない所は調べて7~8割程の理解を目指して進めてください。
3度目はプログラム構造を意識しましょう。
例えば、
「なぜ、ここにこの処理があるのか?」
「順番を入れ替えたらどう動くのか?」
「仮の値を変数に入れてみて、値はどのように変化するか?」
などを意識すればソースコードの構造を理解できます。
質の良いコードを調べて理解して、動かしながら覚えるからこそ写経の意味があります。
言語ごとのプログラミング勉強方法
ここでは、PHP、JavaScript、HTML&CSS、Pythonの勉強法をご紹介します。どれも代表的な言語なので、学習するポイントをしっかりと理解しましょう。
PHPの勉強法
PHPは動的にWebページを生成する、サーバーサイドのプログラミング言語です。
MySQLなどのデータベースと簡単に連携でき、WordPressを始めさまざまなWebアプリケーションで使われている非常に需要が高い言語です。
PHPの勉強方法を5つのステップで紹介します。
【STEP1】環境構築を覚える
開発現場に入ると初日はほぼ環境構築です。その練習を意味も込めて適切に行えるようにしましょう。
PHPの環境構築をする時は、「Apache」というWebサーバーも合わせてインストールします。インストールの方法は2通りあり、PHPとApacheをそれぞれインストールする場合とXAMPPでまとめてインストールする方法です。
後者のまとめてインストールする方法は、比較的簡単なので初心者におすすめです。
環境構築はプログラミング初心者がつまずくポイント。
インターネットで手順を調べながら正確に行いましょう。
【STEP2】PHPを学ぶ前に、HTML&CSSとJavaScriptを勉強する
Webシステムの表示部分はHTMLとCSSでコーディングしています。HTMLとCSSが理解できていないと、PHPで処理を追加する時にどこに何を追加すれば良いか分かりません。
また、PHPの学習をスタートさせる前にJavaScriptを理解しておきましょう。PHPがサーバー側(バックエンド)の動きをプログラミングするのに対して、JavaScriptはブラウザ(フロントエンド)に処理を追加します。
HTMLとCSS同様に、理解していないとPHPを使って適切にプログラミングができません。
【STEP3】記述方法や基礎文法を学習
PHPを学ぶための準備はできたので、いよいよ学習に入ります。
最初に勉強するのは記述方法と基礎文法です。
文末には「;」をつけるなどの記述方法。
条件分岐「if」、繰り返し処理、関数、ファイル処理などの基礎文法を勉強しましょう。
プログラミング全般の学習方法でも説明しましたが、Webサービスの講座を中心に学習して書籍はあくまでも辞書代わりにした方が効率が良いです。
基礎でつまづくと以降全ての学習が進みません。講座は何週もする必要はないので不明点は残さないようにしましょう。
【STEP4】HTTPプロトコルを学習
Webシステムはクライアントとサーバーで成り立っています。
クライアントはブラウザでサイトにアクセスするユーザ。
クライアントはサーバーに「このようなページが欲しい」とリクエストします。これをHTTPリクエストと言います。HTTPリクエストに対してサーバーは処理をして、アクセスしてきたユーザーに適切なページを返します。(レスポンス)
HTTPリクエストには、サーバーからデータを取り込む目的の「GET」とデータ送信を目的とした「POST」がありますので覚えておきましょう。
このように、WebシステムはHTTPという約束事(プロトコル)で通信しています。PHPのようなWeb開発言語を学ぶには必須の知識です。勉強法としてはHTTPを学ぶだけならば詳しく解説しているサイトを参考にすれば十分でしょう。
【STEP5】MySQL(データベース)とSQL文法を学ぶ
Webシステムの構築にデータベースの知識は必須です。
PHPとMySQLはよくセットで使われるので、使用方法を確実に覚えましょう。
1つ例を挙げて説明します。
例 : ショッピングサイト
ユーザーが商品を選択して購入ボタンを押すと、そのデータがサーバーに届きます。
サーバー内のPHPで書かれたプログラムが実行され、データベースにアクセスして購入した商品の在庫数を注文分だけ減らします。
サーバ内のプログラムでは、データベースに対するアクセス処理を書きます。そのアクセス処理を記述する言語をSQLといいます。データベース内のデータに対して、削除・更新・追加などを行います。
以上のような流れで、一般的なWebシステムは内部処理を行っています。Webシステムとデータベースが連携しているケースはほとんどなので学習は必須です
JavaScriptの勉強法
JavaScriptはブラウザに動的な機能を追加するための言語です。フォームに不正な値を入力して送信しようとすると警告(アラート)を出す機能や文章や写真の拡大・縮小を行うなどさまざまな機能をブラウザに実装可能です。
JavaScriptは基礎を学習し終えたら、アプリを作りながらの学習が効果的です。
実用的(作るのが簡単すぎない)で不具合がないものをイメージしながら作ると、スキルは上がっていきます。
とは言っても、最初は難しいと思います。アプリを完成ながら講義を進めていく、Web講座もあるので参考にしてみてください。実践的でありながらサイト構築までの流れを学べる講座はおすすめです。
参考サイト :
【JavaScript&CSS】ガチで学びたい人のためのWEB開発徹底実践(フロントエンド編) | Udemy
完成させたシステムに新規機能を追加できれば、さらにスキルアップできます。
HTML&CSSの勉強法
HTML&CSSは静的なWebページを構築するために必要な言語です。
HTMLはWebページ全体の構造を決めます。
商品などを選択するためのチェックボックスやラジオボタン。
テキストボックスやフォーム。
など、何をページ内に設置してどの位置に表示するかをコーディングします。
対して、CSSはWebページ全体のデザイン部分を定義する言語です。
HTMLだけでも可能ですが、CSSはより細かいデザインを指定できます。
勉強のポイントは丸暗記しないことです。
分からない所は調べながら、何度も実行確認をして失敗しながら動きを覚えましょう。
調べる際には、公式のリファレンスサイト「MDM」を使ってみてください。
参考サイト :
HTML リファレンス – HTML: HyperText Markup Language | MDN (mozilla.org)
答えを最初から聞くよりも、サイトを使って調べた方が理解が深まりますよ。
Pythonの勉強法
人工知能や機械学習の分野で、使用されることが多いプログラミング言語です。
非常に人気があり、これからも需要が見込めるでしょう。文法も非常にシンプルなので、どのようなスキルの人でもある程度同じように書けます。
ただし、全く前提知識がない初心者が独学するには少々ハードルが高い言語です。理系出身である程度機械学者や人工知能の知識があり、数学に対しても抵抗がない方でないと難しく感じるでしょう。
文系出身で前提知識に不安がある場合は、Webサービスで入門的な講座から受講するかスクールに通う方法をおすすめします。
Pythonは豊富なライブラリーがあります。ライブラリーは簡単に言うと、システム開発をするためのプログラムを集めたものです。オープンソースなので自由にカスタマイズできます。
Pythonのスキルが上がってきたと思ったら、ライブラリーをカスタマイズしてオリジナルアプリを作りスキルアップに役立てましょう。
代表的なライブラリーをまとめましたので、ご参照ください。
参考サイト :
Pythonとは?Pythonを使ってできること・特徴を詳し…|Udemy メディア (benesse.co.jp)
プログラミング学習のロードマップ
プログラミングの学習で大切なのは、アウトプットをすることです。Webサービスや書籍の通りに、コードを打って丸暗記してもほとんど意味がありません。現役のエンジニアでも、必要な技術を全て覚えている人はまずいないでしょう。
不明点を自分で調べて解決する力があるからこそ活躍できています。基礎学習はなるべく早く終わらせてオリジナルアプリ開発に進みましょう。
学習を行っている段階で、順調に進まなかったり、未知のエラーに遭遇したりすることは確実にあります。それを自分の力で解決する努力して、始めて実践力(真の実力)が身に付きます。
ここでは、プログラミング学習のロードマップを説明します。個人のスキルや状況に合った効率の良い有効な方法を紹介しますので、ぜひ参考にしてください。
【STEP1】Webサービス・書籍で基礎を学習する
オリジナルサービスを開発するために、まずはWebサービスか書籍で基礎をインプットしましょう。技術はアウトプットしてはじめて身に付きます。インプットが完了したら、すぐに手を動かして実行確認することを意識しましょう。
現状のスキルやタイプ別に、Webサービス・書籍を使った学習のフローを以下にまとめましたのでご参照ください。
(プログラミングの経験がある方向き)コスパとスピードを重視する方
コスパとスピードを重視する場合に、もっともおすすめなのは「Udemy」です。現役のエンジニアが講師を勤め、質問も無制限に行えます。月に2回~3回あるセール期間に購入すれば、低価格で半永久的に使用できるので非常にコスパが良いです。
「Progate」や「ドットインストール」で基礎を覚えた後に、使用するのが良いと一般的に言われています。しかし、Udemyの中には基礎の基礎から説明している講座もあります。これから学習をスタートさせるプログラミング初心者でも十分に学習できます。
したがって、遠回りするよりも最初からUdemyを使った方が早いでしょう。分からなければ講師に質問できますし、かなり丁寧な回答をくれますよ。
Udemyのカリキュラムに沿って学習を進めれば動くアプリをそのまま作れるので、
オリジナルアプリ作成の基礎固めは十分です。
(プログラミング経験ゼロ)じっくりと時間をかけて学びたい方
「Progate」か「ドットインストール」で基礎の基礎を固めましょう。プログラミングのイメージすら全く掴めていない方は、最初に取り組んだ方が良いでしょう。分からなければ、調べながら粘り強く進めてください。
ちなみに、Progateの上級編(道場コース)は難しいと評判です。基礎を身に付ける目的であれば、中級編までを理解すれば良いでしょう。
その後に、自作したいシステムに使用する、具体的なプログラミング言語や開発ツールの使用方法を学んでいきましょう。
以上が現状のスキルに合った勉強法です。システム開発は言語だけを学べば良いわけではありません。「データベースやネットワーク、周辺機器の知識」「設計書の読み方」なども仕事では同じくらい大切ですので合わせて学びましょう。
総合的なIT知識が欲しければ、基本情報技術者試験のテキストを一読しても良いです。
【STEP2】既存サービスを再現する
次は既存サービスを再現してみましょう。クローンアプリという言葉は聞いたことはないでしょうか?クローンとは日本語に訳すと複製するという意味です。要するに、既存のサービスをマネして模倣品を作るということです。
基礎学習を終えたばかりのプログラミング初心者が、いきなりオリジナルアプリを作れと言われてもアイディアやスキルがありません。
似た機能を持ったアプリは非常に多いです。掲示板やSNSなどの機能は多くのサービスで見ますよね。しかし模倣品を作ると言っても最初は非常に苦労するでしょう。
その時の対処法は以下の通りです。
- Web講座のソースコードをヒントにしてみる
- 分からなければ、プログラミング質問サイト(テラテイル)を使う
Web講座は大きく2種類あり、単純に文法を身に付ける目的のものと講座を進めながらアプリを完成させるものです。
前者のソースコードは本当に基本的ですが、後者は有名な機能やアルゴリズムを模倣している実践的なものが多く、講師から詳しい解説を受けているので参考にしやすいでしょう。
自分で調べて分からなければ、エンジニアの利用数が多いテラテイルを徹底活用して可能な限り疑問点を残さないようにしてください。
【STEP3】とりあえずオリジナルサービスを開発してみる
最初から完璧なもので無くても良いので、基礎学習や既存サービスの再現で得たスキルをいかして、とりあえず動くオリジナルサービスを作りましょう。まずは、自分だけの力でシステム開発をした経験と自信をつけましょう。
クォリティーにこだわるのは後でもできます。複数のアプリを作って開発経験を積みことが最優先です。
【STEP4】完成したアプリは公開してフィードバックをもらう
オリジナルアプリを作成しただけでは、単なる自己満足になる可能性もあります。完成したアプリは公開してフィードバックをもらいましょう。
お金はかかりますが、ココナラなどのサービスで低単価でも現役のエンジニアがフィードバックを担当してくれる場合があります。
挫折しないために意識すべきこと
プログラミングの学習は難しく挫折する人も多いです。
主な原因は以下の通りです。
- 目標に具体性がない
- 目標がハードすぎる
- モチベーションが上がらない
- 質問できる環境がない
私も経験がありますが、プログラミング学習は始めたばかりが最も辛いです。そこを乗り越えるかが、学習を継続して目標を達成できるポイントでしょう。
誰かに依存するのは基本NGですが支えになってくれる人や環境は必要です。
成功する人は、他人を巻き込むのが上手い人だと聞いたことはありませんか?
実際の開発現場では聞きすぎると評価を落とします。しかし、プログラミング学習では質問や相談はむしろ積極的にすべきでしょう。なぜなら、その方が継続できるからです。
繰り返しますが、プログラミング学習は継続が最重要。辞めてしまったらそれまでの過程が水の泡です。学習の段階では何としてでも継続する強い意思を持ちましょう。
目標を設定する
挫折せずにプログラミング学習を行いたければ、具体的で明確な目標を設定しましょう。
あなたが、プログラミングを仕事にしたいと考えているなら尚更です。
「何となく就職のために勉強している。」
「別に作りたいアプリなんてない。」
こんな想いで漠然と勉強していると、確実にどこかで挫折します。目標設定のコツは、最終的なゴールから小さな目標を立てることです。例えば、最終的なゴールを「Webシステム開発の会社に入社して最終的にPMまで昇進」と定めたとします。
次に、達成が簡単な小さな目標をゴールから逆算して作ります。
以下のようなイメージです。
- 関連書籍を今月中に分からない所に印をつけながら通読する
- 分からない部分を質問して8割ぐらい理解(2カ月ぐらい)
- Webサービスを使って学習し、とりあえず動くシステムを作ってみる(3カ月)
- 1つだけ既存システムに新規機能を追加する(2週間)
- PMの仕事やスキルを紹介したサイトを1週間で5つ読む
など細かく目標を定めていきます。
大切なのは、「いつまでに」「どの程度達成するか」を数字で具体的に示すことです。
終わりがはっきりしない目標は挫折や先延ばしの原因になります。
達成しやすい目標で少しずつ成長しましょう。
誰かと一緒に勉強する
結論を言えば、プログラミングは仲間と勉強した方が挫折しません。プログラミングで挫折する大きな原因は、モチベーションの低下と勉強が難しくてついていけないからです。誰かと一緒に勉強すればこの挫折する原因は大きく改善します。
1人で勉強していると、やる気が出ない時はありますよね。同じ目標を持った仲間を見つけて近況報告をすればサボりぎみな自分に気合い入れることができます。お互いの存在が刺激になりモチベーションが継続するでしょう。
とくに、分からない所を教え合えるのは独学にはないメリットです。エラーへの対処や難しい技術の理解がスムーズになり、負担が少なく学習が進みます。情報を共有できる仲間ほどあなたにとって心強いものはないでしょう。
また、実際の開発現場では1人で黙々作業することは少ないので対人スキルが重要です。
誰かと一緒に勉強すれば、仕事でのコミュニケーションの練習ができます。
プログラミングのイベントやセミナーに参加すると、仲間を見つけるチャンスは大きく広がります。
イベント情報は以下のサイトを参考にしてみてくさださい。
参考サイト :
プログラミングのIT勉強会・セミナー・イベント情報 – TECH PLAY[テックプレイ]
オンラインでも行われているので、ネット環境さえあれば全国どこからでも参加できます。他人がいると気を使って集中できないタイプの方は独学をおすすめしますが、メリットが大きいので同じ目標を持った仲間を見つけてみてはいかがでしょうか?
質問できる環境に飛び込む
プログラミング初心者であれば質問できる環境は必須です。勉強中、確実に1度は壁にぶつかります。最後までスムーズに学習が進めば良いのですが可能性はゼロに等しいです。
理解が難しいスキルやエラーに頭を悩まされる時はあるでしょう。プログラミングに不具合は付き物です。経験豊富なプログラマーでも、日々エラーの解決に追われています。
だからこそ、プログラミング初心者に質問できる環境は必須です。
学習を辞めなければスキルは身に付いて行きます。質問ができる環境に飛び込めば、疑問を解消できるだけではありません。質問のスキルも合わせて身に付きます。
質問ができる環境は、スクールか質問対応をしているWebサービスがメインでしょう。自分の状況に合った環境を選びどんどんスキルを身に付けましょう。
まとめ
プログラミングの学習は暗記ではなく、実践力をつける意識をすると上手く行きます。
システム開発の現場で要求されるのは、問題を解決してプロジェクトを完結させる力です。
学校のテストではありませんので、知識を忘れた場合は堂々と調べて解決しましょう。
具体的にプログラミング学習で以下の点を意識してみてください。
- 低クオリティでもオリジナルアプリを作成する
- 自分で調べて解決するクセをつける
- 質問(フィードバック)やコミュニケーションがとれる環境を見つける
- 小さな目標をつくり1つずつ着実に達成する
プログラミング学習に限らず、初めて取り組むものは難しく感じて当然です。そのことを前提にコツコツと継続すれば成長を実感できるタイミングは確実に訪れます。本記事をきっかに前向きにプログラミング学習に取り組んでいただければ幸いです。