プログラミング未経験の方やこれから学習を始めるが何かしていいかわからないといった方におすすめの記事です。
結論から言うと、独学することは可能かと個人的には考えています。
ただし、最低以下に当てはまる必要はあります。
- プログラミングの基礎(変数、配列、条件分岐、繰り返し処理など)は理解している
- エラー内容を調べて自力で解決できる
私も未経験でエンジニアとして会社に入社したときは、研修(Java)についていくのが大変でした。ただ同僚や講師にも聞いて、基礎やデバッグの仕方を学ぶことはできました。
実際の業務では、もっと複雑でしたが、要所要所で基礎知識を補うことで、現場でもシステムの仕様や構造を把握することはできました。
そのため未経験でも学習計画を立てて、自分に必要なプログラミングの基礎知識を身に着けていくことで、プログラミング(コード)に慣れて、アプリ開発をすることができるようになります。
1.プログラミングを独学で学習する方法(3つの方法)
独学で勉強するには、無料学習サイト、テック系の記事や書籍、オンライン講座を利用して学習することができます。
1.1プログラミング無料学習サイト(1つ目)
無料学習サイトを利用してまず基礎を固めることができます。
有名な無料学習サイト:dotinstall、Progate
dotinstall(ドットインストール)は無料講座と有料講座があり、プレミアム会員登録をすることで月額1080円で学習できます。基礎だけであれば無料会員登録で十分です。
1コース内の1レッスン(1動画)は、3分程度と短く区切られているため、消化しやすいようになっています。
Progateもdotinstallと同様に無料、有料コースがあります。
有料の場合、月額1078円で利用することができます。
お金をかけたくないのであれば、youtubeでも様々な人がプログラミングの動画を投稿してますので、youtubeでも探してみるとよいでしょう。
1.2プログラミングを書籍で学習する(2つ目)
書籍を利用する場合、1冊約2000~3000円くらいで購入できる。
内容が沢山盛り込まれているものは、網羅的に学習できて参考書にもなる反面、量が多いため、途中で投げ出してしまう恐れがあります。
そのため書籍を購入する際は、実践的なアプリを作る形式も盛り込まれているか検討することをおすすめします。
1.3プログラミングをオンライン講座で学習する(3つ目)
単発型のオンライン講座は自分の好きな時間に勉強できるため、毎日一定の時間を確保するのが難しい人におすすめ。
その中でも一番学習におすすめなプラットフォームはUdemyです。
Udemyが個人的に優れていると思うことは、自分に足りていない知識を無駄なく補うことができるということです。
Udemyでアカウントを作り、気になる講座の概要とコースの目次から、どのような構成になっていて、どんなことが学べるのかを確認できます。
ここで自分が気になっていること、知りたいことがなさそうであれば、別のコース探してみるのが良いでしょう。
・30日以内であれば返金保証もついているため安心して購入できる。
私もUdemyで気になる講座を見つけたら、セールス時にまとめ買いしてます。
※買いすぎは消化不良になるので、注意が必要です。
サブスクリプション型の学習サイトについて
一定時間ちゃんと学習に時間費やすことができる人にはおすすめ。
忙しいと勉強できる日とできない日ができてしまう。
私も忙しいときは、1ヶ月まるっと学習サイトで勉強していたときと、全然できなかった月があったので、そういった人には買い切り型(単発)のサービスの方がおすすめです。
1.4プログラミングスクールを利用して学習する。(最終手段)
スクールを利用する場合、月額制や買い切りのものがあるが、どちらもコスト面では、書籍や学習サイトよりも高くなってしまいます。
本当に何からスタートしていいかわからない、つまづいたときに講師に質問できるようなサポート機能を利用したい方は、プログラミングスクールを検討してみるとよいかもしれません。
本当に何からしていいかわからないという方は、1から教えてもらうスクールを最終手段として考えればよいかと思います。
※TechAcademyには1週間の無料体験があるので、これを利用してWebアプリの基礎を学ぶのもありです。
テックアカデミーの無料体験
2.学習する3つの手順
学習するプラットフォームが決まったら、どのような手順で取り組むかを3つの手順に分けて紹介します。
2.1何のプログラミング言語から学習するか決める。
Webアプリ(ブラウザで動作する)を開発したい人を想定して記載しています。
決まっていない場合
HTML, CSS, JavaScript についての基礎理解を深めるとよいでしょう。
プログラミングには、大まかにフロントエンド側の言語とバックエンド側の言語があります。
フロントエンドの言語は、HTML、CSS、JavaScriptで基本的に構成されており、フロントエンドのフレームワーク(Vue.js, Angular, …)によりファイル構成や記述方法は変わるものの基礎部分は変わりません。
そのため、HTML、CSS、JavaScriptの基礎を勉強することは無駄になりません。
バックエンドの言語には、PHP、Ruby、Java、Pythonなど様々。
またバックエンドの言語にもフレームワークがあり、PHPでは人気のLaravel、RubyならRuby On Rails、JavaならSpring bootとそれぞれ言語ごとに存在します。
これらフレームワークを理解して、使いこなすに当然学習コストはかかります。
★SQLの学習もおすすめです。
SQLはRDBMSにおいて、データの操作や定義をするためのデータベース言語です。
私も実際の業務を携わるようになって最初に学びました。
DML(データ操作)には、select, insert, update, deleteがあり、DDL(データ定義)にはcreate, drop, alter, truncateがあります。
DBの種類にはOracle, MySQL, PostgreSQL, SQLite, DB2などがありますが、SQLの基本文法さえ抑えておけば、DBの種類が変わっても、学習したことは無駄になりません。
すでに決まっている場合
特定の言語(PHP, Ruby, Java, Python など)について深堀していく。
実際の業務で使っている言語について知識を深めていくのが、一番効率的かと思います。
私は研修のときに自分はできていないのに、同僚はサクサクできていて、なぜ自分はできないのだろうと感じました。
それは同僚が入社前から、専門学校/大学時代やそれよりもっと前からプログラミングを学んでいたためでした。言われるとそりゃそうだと思いますが、以下のようなことを当時まったく知りませんでした。
基本ルールや文法を抑えてしまえば、言語が変わっても、書き方が変わるだけで概念は通用します。(その言語独自の書き方には慣れる必要はあります)
これらの基礎知識を組み合わせて、処理を記載して、機能や画面を作りむことが初めてできるようになることが段々わかってきました。
どんなに巨大なシステムでも細分化していき、機能単位で見ていけば、理解することができます、またシステム全体はわからなくても、この機能なら理解することができれば勝ったも同然です。
2.2学習計画を立てる
初めてオンライン講座を利用する場合、1時間程度の短いものにして、慣らしていくとよいでしょう。やったことがないことや慣れないことをすると、苦痛を感じるはずです。
いきなり壮大で本格的なアプリ開発コースに挑戦すると途中で挫折しやすいです。
最初は気になった講座を1つ選んで、計画立てて学習を進めていくことをおすすめします。
例えば、4時間のコースであれば、実際は8時間(2倍)かそれ以上かかるはずです。
(人にもよります)
なぜかというと、講師の説明を聴いて、それを見て模写するのに時間がかかるためです。
また模写していたとしても、自分の環境ではエラーが発生する場合、解決するのにもっと時間がかかります。
そのため目安として、4時間のコースであれば、最速で約8時間、1日2時間学習できるなら、約4日くらいかかる。さらにエラー等を解消する時間も考慮すると1週間くらい。
20時間の学習コースを終わらすのに約1ヶ月かかりました。(約50時間)
1週間で5時間分消化、10~12時間使用。
これは個人差がでるため、まず1時間分の講座を消化したときに、実際にどれくらい時間がかかったのかを測っておきます。そこから残りの講座を消化するのに必要な時間の目安を計算しておくと、いつまでに達成できるか計画を立てやすいです。
2.3簡単なアプリを作成してみる
電卓アプリ、ToDoアプリ、お問い合わせフォーム、チャットアプリなどを作成してみる。
ゼロから始める場合は、簡単に作れるものから着手すると躓きにくく、プログラミングを継続できます。
チャットアプリは本ブログでも紹介しています。
LaravelとVue.jsを使ってリアルタイムChatアプリを作ってみた。
また自分で自装できなくても、参考になりそうな記事を自分で調べて、取り込むことができれば、それは自力でコーディングできると言っても過言ではありません。
最初からまっさらな状態でコーディングを始めることは、現実的ではありません。(時間的な意味合いで)
例えばフレームワークを利用すれば、ログインなどの必要そうな機能はデフォルトで用意されているため、ちょっとアレンジするだけで済みます。
また外部APIを利用する場合でも、その公式サイトにて基本的にはテンプレートが用意されているため、テンプレートをベースにアレンジしていく方が効率的です。
アプリが完成したら、Githubに公開してみるとよいでしょう。
Githubの使い方については以下の記事でも紹介しています。
3.わからない場合やエラー時の対処
・エラー文でググる / 関連する記事を探す
・デバッグする
エラーやバグについてですが、これはバージョンのちょっとした違いや、記述を見落とすことなどにより起こり得ます。
そのときは、
・プラットフォーム上で講師に質問する。(または知人/同僚などに相談する)
・自身で調べて解決する。
という選択肢がありますが、なるべく自力で解決できることをおすすめします。
自分で調べる力があり、課題解決する力が身に付き、自信にもつながります。
※初学者であれば、環境構築でつまずくことがあるため、周りに聴ける環境であることが望ましいです。
3.1エラー文でググる / 関連する記事を探す
エラーやバグに自力で対処できるかどうかで、独学できるかどうか1つの分かれ目かと個人的に考えています。
それはプログラミングが常にエラーやバグとの戦いだからです。
例えば、chromeやfirefoxのインスペクター(inspector)を開いて、エラーが出ていないか確認する。(chromeなら右クリック⇒「検証」で開きます)
ローカル環境で動かしている場合、cmdやterminal上でエラーが出ているか確認する。
エラー内容でググり、関連する記事を探す。
見つかりそうにない場合は、ググり方(キーワード)を変える。
stackoverflowやQiitaの記事などを見てみる。
stackoverflow(日本語版)
個人的にstackoverflowは英語版の方がおすすめです。
なぜならエラー(英語)でググったときに検索ヒットするのが、英語版のstackoverflowで、解決できる可能性が高いためです。(100%ではないです)
3.2デバッグする
どこでおかしいのか、当たりをつけるには、デバッグをする必要があります。
1行単位でprintやechoでその行まで処理が到達しているのかどうかを確認していきます。
(またはEclipseなどのツールでデバッグしたい箇所に印をつけて、実行する)
またVSCode(無料の開発エディター)とプラグインを入れることで、VSCodeが自動的に、記述がおかしいところを検知してくれます。そのため開発効率を向上させることもできます。
Visual Studio Code(VS Code)の使い方とおすすめ拡張機能