- プログラミングは本当に独学で学べるのか?
- プログラミングスクールに行った方が効果的なのか?
- 何のプログラミング言語を学べばよいのか?
- プログラミングで独立するにはどうすればよいのか?
という疑問をお持ちではないですか?
大手企業や大学で、15年以上、プログラミング含めITに関する教育に携わってた経験を踏まえて、プログラミングの学習方法について以下の観点でまとめてみました。
あなたに合ったプログラミング学習方法
最近、レバレッジという言葉をよく聞きます。
レバレッジとはテコの力。
つまり、小さい力で大きな成果を出すということ。
他人の力を借りることで、最小の自力で大きな成果をあげるのもレバレッジです。
例えば、銀行からお金を借りることで、小さな自己資本で、大きな事業を行うことができます。
借り入れの利息はかかりますが、それ以上の利益をあげればよいわけです。
自己資本をコツコツためて事業するより、他人の資本をうまく使うことで早く目的地にたどり着くことができます。
プログラミングスクールを活用するのも、他人の力を借りることで、最小の自力で大きな成果をあげるレバレッジと考えることができます。
プログラミングスクールに支払う資金は必要ですが、卒業後、プログラミングでそれ以上の収益をあげることができればよいわけです。
独学でコツコツと時間をかけて学ぶより、プログラミングスクールで早く、多くのことを学ぶことができれば、プログラミングで稼げるトータル利益はスクールのほうが高くなる可能性があります。
しかし、ここに落とし穴があります。
それは、
- プログラミングスクールで、稼げるだけのプログラミング能力を身につけることができる
- プログラミングで、プログラミングスクールに支払った資金以上の収益をあげることができる
ことが前提になっていることです。
昨今、初学者でもプログラミングスクールに行けば誰でもプログラミングで稼ぐことができるようになるという風潮がありますが、途中で挫折した、という話もよく聞きます。
何でもそうですが、一つの技術を身につけることは、そう簡単ではありません。
特に、プログラミングは、実践を通して技を身につける類(たぐい)の技術なので、まず、わからなくても実際に手を動かして試してみるという姿勢を維持できないと厳しいと思います。
もし、これから初めてプログラミングを学ぼうと考えている方で、本当に、プログラミングで稼げるまでモチベーションを維持できるか不安がある、という方は、最初、次の「プログラミングを独学する方法」を試してみて、できそうだ!という感触がつかめた段階で、プログラミングスクールを考えてみてはいかがでしょうか。
もちろん、最初からプログラミングスクールで学び、レバレッジを効かせて稼ぐ自信があるという方は、すぐに、プログラミングスクールを考えればよいと思います。
ここでは、以下のステップで解説しています。
自分に合ったところからチェックしてみていただければと思います。
プログラミングを独学する方法
これから初めてプログラミングを学ぼうと考えている方は、以下の手順で学ぶとよいと思います。
- プログラミング言語を選択する
- プログラミング言語を学ぶための書籍やサイトを決める
- プログラミング言語の文法を学ぶ
- 簡単なアプリを作る
プログラミング言語を選択する
を参考にしてください。
プログラミング言語を学ぶための書籍やサイトを決める
主に以下の3種類があります。
- 書籍
- プログラミング学習サイト
- エンジニア向けサイト
それぞれ、著名なもの、お勧めできるものを紹介します。
自分に合った方法を選択すればよいかと思います。
書籍
JavaScriptを学ぶとき参考になる書籍です。
基礎からしっかり学ぶことができるのでお勧めします。
JavaScript Primer 迷わないための入門書
プログラミング学習サイト
プログラミングを専門的に学習できるサイトです。
著名なサイトを紹介します。
エンジニア向けサイト
既にプログラミング経験のあるエンジニア向けのサイトで、少し難易度が高いですが、詳しい内容を知ることができます。
書籍やプログラミング学習サイトで学んだ後に参照するとよいと思います。
いつくか紹介します。
プログラミング言語の文法を学ぶ
以下の観点で、選択したプログラミング言語の考え方、作成・実行方法、文法について数週間程度で学びます。
- プログラムとは何か?
- インタープリタ方式とは何か?
- コンパイル方式とは何か?
- 選択したプログラミング言語はどちらの方式か?
- プログラムはどう作るか?
- プログラムはどう動かすか?
- 式とは何か?
- 文とは何か?
- 変数とは何か?
- データ型とは何か?
- 変数はどう定義するか?
- 静的型付けとは何か?
- 動的型付けとは何か?
- 選択したプログラミング言語は静的型付けか動的型付けか?
- 演算子とは何か?
- 式はどう記述するか?
- 式の評価とは何か?
- 制御文とは何か?
- 制御文はどう記述するか?
- 関数とは何か?
- 関数型とは何か?
- 関数はどう定義するか?
- クロージャとは何か?
- クロージャはどう定義するか?
- オブジェクトとは何か?
- クラスとは何か?
- クラスはどう定義するか?
- オブジェクトはどう作るか?
- 値型とは何か?
- 値型の種類には何があるか?
- 参照型とは何か?
- 参照型の種類には何があるか?
プログラミングは「習うより慣れろ」ということで、文法を学ぶより、すぐにアプリ開発を勧める意見もあると思います。
しかし、最初にプログラミングの文法など基礎をしっかり学んでおくと、それがベースになり、他のプログラミング言語も楽に学ぶことができます。
最初は苦労するけど、これから多くのプログラミング言語を学ぶという全体を考えると、結果的に効率がよいと思います。
「急がば回れ」ですね。
なお、上のポイントですが、プログラミング言語によっては、対応していないものもあります。
参考にしてください。
簡単なアプリを作る
上記、書籍やサイトで簡単なアプリの開発題材があると思いますので、それを作ってみましょう。
簡単なアプリが作れたら、いよいよ独り立ちです。
プログラミングスクールの選び方
プログラミングスクールを選ぶときに考えるべき観点を、優先順位が高い順にあげると以下のようになります。
- 学びたいプログラミング言語があるか
- 教育カリキュラム、教材、講師の質
- 受講のしやすさ
- 受講後のキャリアサポート
- 費用
学びたいプログラミング言語があるか
これは、言うまでもないと思いますが、自分が選択したプログラミング言語を教えている学校を選択しましょう。
教育カリキュラム、教材、講師の質
次に、教育カリキュラム、教材、講師の質を考えます。
教育カリキュラムや教材の一部に関しては学校のサイトで確認できるところもあると思いますが、講師に関しては、実際に接してみないとわかりません。
そこで、無料オンライン受講や無料カウンセリングなどを受けて、講師について質問するなど、自分に合っているかどうか確認することをお勧めします。
受講のしやすさ
受講のしやすさについては以下の観点があります。
- オンラインコースと通学コース
オンラインコースと通学コース、自分の生活スタイルに合わせて選択できるかどうか。 - Q&A
質問対応方法はどうか。チャットだけか対面や音声もあるか。
質問対応時間はどうか。
受講後のキャリアサポート
最近は、転職保証(転職できなければ全額返金)という制度を設けている学校が多いようです。
それだけではなく、プログラマーとしてスタートした後のキャリアパスを一緒に考えてくれるかどうか、なども重要なポイントです。
費用
最後に費用ですが、各学校とも、あまり差がないようです。
なので、費用は最後の判断基準にしましょう。
以上、プログラミングスクールを選ぶとき考えるべき観点について見てきました。
まず、無料オンライン受講や無料カウンセリングなどを受けて、上のすべての項目を、自分で確認してみることをお勧めします。
ここでは、最近、人気のある代表的なプログラミングスクールの無料オンライン受講や無料カウンセリングがあるサイトを紹介します。
- DMM WEBCAMP
転職保証付きプログラミングスクール DMM WEBCAMP COMMIT -
Code Camp
CodeCampGATEカスターマーサクセスコース - 侍エンジニア塾
無料体験レッスン - TECH CAMP
無料カウンセリング - TECH ACADEMY
無料キャリアカウンセリング - CODEGYM ISA
プログラミングで稼ぐには
プログラミングで稼ぐために重要なことは、まず、独力で問題を解決する力をつけることです。
実践でプログラミングする場合、エラーなど問題に直面します。
そのとき、すぐに他人に頼るのではなく、ネットを使って自分で解決方法を調べるスキルが必要になります。
その上で、自分のキャリアパス(経歴の経路:進む道筋)を設計することです。
最初はプログラミングスキルから始まって、その後、どういうスキルを、どの段階で身につけるべきか道筋を考えます。
キャリアパスに従って自分のキャリアを上げていくことで、責任範囲も広がり、収入も上がっていきます。
IPA(独立行政法人 情報処理推進機構)ではITエンジニアのスキルの標準であるITSS(ITスキル標準)
を定めています。
ITSSの職種とレベルを参考にして、自分のキャリアパスを設計することができます。
ここでは、プログラミングに関係する職種と、基本的なレベルを紹介します。
職種の例
- アプリケーションスペシャリスト
アプリケーションの開発に関する技術を用いて、アプリケーションの設計、開発、導入、テストや保守に至るまでのプロセスを実施する職種。 - ITスペシャリスト
ソフトウェア・ハードウェアの両面における専門技術を集結させ、顧客にとってベストなシステム基盤の構築を実施する職種。 - プロジェクトマネジメント
プロジェクトの提案、立ち上げ、計画、実行、監視コントロール、解散までの実施、納入物、サービス、要求された品質・コスト・納期などプロジェクトマネジメントに関する責任を担う職種。 - ITアーキテクト
顧客のビジネス戦略を現実化するため、アプリケーション関連技術を有効活用してITアーキテクチャの設計を行う職種。 - コンサルタント
顧客のビジネス戦略やビジョンの実現に対し、知的資産やコンサルティングメソッドを用いながら提言やアドバイスを実施する職種。
レベルの例
- レベル1
最低限度の知識や技能があるレベル。 - レベル2
上位レベルからの指導があれば仕事のすべてもしくは一部において、課題発見や課題解決ができるレベル。 - レベル3
ITプロフェッショナルとしての専門分野を確立した状態を意味し、自らの能力を駆使して、独力で課題の発見や解決をすることができるレベル。 - レベル4
経験の知識化や後進の育成において貢献できるレベル。
最初にプログラミングを学ぶ段階は、アプリケーションスペシャリストのレベル1です。
実践を通して独力で問題が解決できるようになれば、アプリケーションスペシャリストのレベル2です。
プログラミングだけでなく、独力でアプリの設計から導入、保守までできるようになれば、アプリケーションスペシャリストのレベル3です。
アプリケーションスペシャリストのレベル3まで行ったら、次は、例えば、ITアーキテクトのレベル2を目指すなど、職種×レベルで自分の進む道筋を考えます。
【参考】プログラミング言語の選び方
プログラミング言語を選ぶときに考えるべき観点を、優先順位が高い順にあげると以下のようになります。
- アプリの種類
- 案件の多さ
- 情報の多さ
アプリの種類
まず、開発するアプリの種類によって適したプログラミング言語が変わってくることを押さえておきましょう。
例えば、ビジネス系アプリとゲームアプリでは使うプログラミング言語が違ってきます。
ここでは、ビジネス系アプリを対象に考えます。
ビジネス系アプリは大きく、
- ECサイトなどの業務管理アプリ
- ロボットや家電など機械を動かす組込系アプリ
- AIなどを使ったデータ分析系アプリ
に分けることができます。
データ分析系アプリだとPythonが有利です。
なぜなら、データ分析系アプリを作るために必要なプログラムの部品(ライブラリといいます)が多く、実績も豊富だからです。
次に組込系アプリですが、IoT(Internet of Things)の必要性が上がる中、今後、開発需要が伸びる分野です。
組込系アプリだとCやC++になります。
なぜなら、CやC++は、少ないメモリを効率的に制御できる言語だからです。
また、最近では、JavaScriptで組込系アプリを開発する事例も多くなってきました。
最後に、業務管理アプリですが、これは、
- ユーザー画面などデザインを含んだ見た目の部分の処理が中心のフロントエンドアプリと
- サーバー側で動き、データベースへのアクセスを含む業務処理が中心のバックエンドアプリ
に分けることができます。
まず、フロントエンドアプリですが、これは、さらに、
- ブラウザ上で動くWebアプリと
- iPhoneなどのモバイルデバイスで動くモバイルアプリ
に分けることができます。
Webアプリだと画面の構造や表現(デザイン)を表すHTML、CSSは必須で、画面の処理を行うJavaScriptなどの言語を学ぶとよいと思います。
モバイルアプリだと、iPhoneであればSwift、アンドロイドであればJavaを学ぶ必要があります。
なお、React Nativeという開発基盤(フレームワークといいます)を使うとJavaScriptでiPhone、アンドロイド両方のモバイルアプリを開発することができます。
バックエンドアプリだとJava、Ruby、PHPが人気です。
また、JavaScriptでバックエンドアプリを開発することもできます。
なので、フロントエンドアプリでもバックエンドアプリでも対応できるJavaScriptを学ぶと多くの案件に対応できると思います。
まず、自分がどの分野のアプリを開発したいのか選ぶのが肝要です。
「好きこそ物の上手なれ」という言葉があります。
学習のモチベーションを維持するためにも、最初に好きな分野を選びましょう。
ビジネス系アプリかゲームアプリか。
ビジネス系アプリであれば、
- 業務管理アプリ
- 組込系アプリ
- データ分析アプリ
のどれか。
なお、データ分析アプリは、キャリアパスとして、システムエンジニアというよりデータサイエンティストになりたい方に向いています。
システムエンジニアとデータサイエンティストは、両者ともプログラミングが必要という点では似ていますが、求められる知識やスキルセットが異なるので別物と考えておいた方がよいでしょう。
また、機械(メカ)を分解したり組み立てるのが好きな方は、組込系アプリの分野が向いているかもしれません。
もし、特段、これっていう分野がないという方は、業務管理アプリをお勧めします。
なんといってもニーズがありますし、プログラミングからシステムエンジニア、ITアーキテクト、コンサルタントとキャリアパスも広がっていきます。
参考にしてください。
案件の多さ
これは、人気のあるプログラミング言語を選択した方がよいということです。
その方が需要があるので、すぐにプログラミングを実践の場(プログラミング案件)で使うことができます。
プログラミングは実践を通して技を磨くという側面が強いので、できるだけ案件がある言語を選んだ方がよいと思います。
「プログラミング言語 案件」などのキーワードで検索すると人気のある言語を調べることができます。
ここにあげた、Java、JavaScript、Ruby、Python、Swift、C++などの言語は人気が高く、案件も多いと思います。
情報の多さ
これは、案件の多さと相関するかもしれませんが、プログラミング言語に関する情報が多いものを選んだ方がよいということです。
実践でプログラミングする場合、エラーなど問題に直面します。
その場合、多くはネット上の解決事例を参考にするのですが、事例が多いほど学びを多くすることができます。
ここにあげた、Java、JavaScript、Ruby、Python、Swift、C++などの言語は情報も多く、多くのことを学ぶことができると思います。
以上、アプリの種類、案件の多さ、情報の多さという観点で考えた場合、個人的には、最初にJavaScriptから始めるのがよいかと思います。
HTMLとCSSは、JavaScriptを学ぶために下準備として学習しておいてください。
プログラミングを独学する方法へ戻る
以上、今回は、プログラミングを独学やプログラミングスクールで学ぶ方法について解説しました。