プログラミングの始め方・オンラインスクールと作りたいサービス
コンテンツ
プログラミングの動機とモチベーション
「プログラミングを始めたい」という話は最近よく聞くし相談も受けたことがある。
しかしプログラミングを始めたい人の動機や目的は人それぞれだったりする。
良く言われるのが、「作りたいモノやサービスが最初にあって、その上でプログラミング技術を習得するのが早道」という考え方だ。
確かにその考えは一理あって、作りたいサービスが明確であれば習得すべきプログラミング言語も絞られてくるし、作りたい分野だけを学習すれば良いので学習も非常に効率的だ。
しかしプログラミングの知識が全く無い状態で作りたいサービスが明確な人は少ないと思う。
![プログラミング学習までの経過](https://i0.wp.com/www.souichi.club/wp-content/uploads/programing-15.png?resize=768%2C368&ssl=1)
目的がモヤっとしたままで
作りたいモノやサービスが明確で無いまま、まずはプログラミング技術を身に着けたいという人は意外に多い。
- 今後の役に立ちそうな技術を身に着けたい
- 在宅でプログラマーとして働きたい
- スキルを身につけて就職・転職したい
- プログラミングができたら楽しそう
などの理由でプログラミングを身に着けたいパターンだ。
その気持も分からなくも無い。
というか自分はどちらかと言うとそちらの人間に近くて、作りたいモノやサービスが最初にあった訳ではなくて「何となくプログラミング技術を身に着けた」方の人間だ。
あとから作りたいものがイメージできる
そして技術を身に着けた後で作りたいモノやサービスのイメージが湧いてきた。
恐らく、最初は分からない事が多すぎて、何が作れるかもイメージが沸かなかった所に、ある程度技術を身に着けたので、具体的に作れそうな(作りたい)ものがイメージできるようになったのだと思う。
またプログラミングはきちんと習得すれば、かなり役に立つスキルであることには間違いがないが、「どの程度本気で続けられるか?自分に対して不安」という人も多いと思う。
この記事ではプログラミングを始めたい動機やモチベーション別にどの様な技術の身に着け方が良いのかを考察してみる事にする。
タイプ別
最初に作りたいサービスやモノが明確で、自力で学習する事ができる強い意志を持っている人はWEB上の無料コンテンツを参照(こちらの章を参照)しながら学習を進めるのが良いと思う。
次に、自力で学習はできるけど WEB上の無料コンテンツでは無くて体系だって学びたい人は、書籍を購入して学習を進める(こちらの章を参照)方法もある。
有料のオンラインのプログラミングスクールで学ぶのは一つの方法だが、そもそも「どのスキルを習得すべきか、よく分からない」「Python、 Ruby on Railsって何?」という人は先に「どのスキルを身につけるか?」の章を読んでほしい。
プログラミングスクール
WEB上のプログラミング記事を読んだり YouTube を視聴しての学習は無料で始められるので金銭的コストは掛からないが時間的コストは結構かかったりする。
また明確に作りたいサービスが無く、それ程強いモチベーションも無い状態で WEB や YouTube を見ながら自力でプログラミング技術を身につける事ができるのは、かなり意思の強い人だと思う。
大抵の場合は「よく分からなくて挫折」したり「飽きて途中で止めて」しまうと思う。
オンラインのプログラミングスクール
自分は新たに Python を学んだ時は(他の言語はある程度習得していた状態)オンラインのプログラミングスクールに登録した。
お金を払った以上は元は取りたいので真剣に勉強するので、流石にすぐに飽きることは無いだろうとの計算からだ。
また無料のお試しコースで歯が立たないと思ったらやめるつもりだった。
以下にオンラインのプログラミングスクールの特徴を載せる。
尚、金額は2021年11月時点での金額なので変更されている可能性がある。
正確な数字はリンク先の各社のHPで確認してほしい。
テックキャンプ
未経験者向けのオンラインプログラミングスクール。
オンラインの他に全国4箇所の教室(渋谷フォンティス、東京大手町、名古屋栄、なんばスカイオ)が使える。
先日、モデル業の寺田有希さんが未経験から大喜利アプリを作れるまでになっていて話題になっていた。
対象者 |
|
学べるコース |
|
費用感 |
|
サポート |
|
オンライン説明会申込み | 無料のオンライン説明会への申し込みはこちら。 20分ほどの動画での説明会で申し込んでから24時間以内であれば見ることができる。 |
オンラインカウンセリング | 同じく無料のオンラインカウンセリングはこちら。 カレンダーから空いている日を選択してカウンセリングを行う。 いきなりコースを申し込むのでは無くまずはカウンセリングを受けたほうが良いと思う。 |
テックキャンプ | 上記のプログラミングスクールとは別にプロのプログラミングスキルが身につく学習プログラムとキャリア支援により未経験からのエンジニア転職を目指すコース。 無料カウンセリングのリンクはこちら。 |
Aidemy
自分が AI のプログラミングをやりたくて申し込んだのがこの Aidemy のオンラインスクールだ。
それまで C++ や Object Pascal を扱った事は多少あったが Python は全くの初心者だった。
最初はネットの記事を調べならが Python の勉強を始めたのだが、しばらくして、やはり挫折した。
挫折した理由は、
- 体系だって学べていないので知識がバラバラで習得している感が感じられなかった
- 飽きてモチベーションが続かなかった
書籍の購入も考えたのだが、やはり手を動かしながら学んだ方が身につくと思い Aidemy に申し込んだ。
ちなみに、ある程度の基礎知識が身についた後であればネットの記事や YouTube、書籍の購入は非常に有用だった。
自分は意思が弱かったので、お金を払って「せっかく払ったのだから勉強しないと勿体ない」という状況に自分を追い込んで勉強した。
対象者 |
|
学べるコース |
※選び放題システムでオーダメイドにカスタマイズすることも可能 |
費用感 |
|
サポート |
|
リンク | Aidemy へのリンクはこちら。 リンク先には無料のオンライン相談会もある。 |
TechAcademy(テックアカデミー)
現役エンジニアがメンターとなっているオンラインスクール。
コースと料金プランが豊富なので選択するのに迷ってしまうほどだ。
「オススメコース診断で診断をする」、「無料体験コースで試す」、「無料キャリアカウンセリングを受ける」などで試してから申し込むのが良いと思う。
対象者 |
|
コース | コースは種類が多いので色々な要望に答えられる。 自分の目指している方向性、身につけたいスキルをしっかり確認してから選択するのが良いと思う。
※複数コースの組み合わせや受け放題コースなどもある ※料金プランは |
サポート |
|
無料体験 | 無料体験のリンクはこちら |
はじめてのプログラミング | はじめてのプログラミングコースへのリンク プログラミング初心者であればここから始めるのも良いと思う。 |
その他 | オンラインスクール内でコンテストが開催されていて受賞作品が発表されていた |
テックジム
プログラミング初心者向けの自習型プログラミング塾、特徴は以下の通り。
対象者 |
|
学べるコース |
|
費用感 |
|
サポート | プロのエンジニアのサポート |
特徴 |
|
資料請求 | 資料請求は下記のバナーから可能。 |
一括購入コース | 通常だと月額の会費制になるが一括購入するコースも用意されている。 この場合も1年間のオンラインサポートが付いてくる。
|
無料 Python 入門講座 | またこちらの 無料のPython 入門講座でまずは試してみることもできる。 |
侍エンジニア塾
マンツーマンでのプログラミング指導のプログラミングスクール。
自分のペースでプログラミングの学習を進めたい人にとってはマンツーマンは逆にプレッシャーになるかも知れないが、その分成果が出る可能性は高まるはずだ。
自分のペースで進めると怠けてしまう心配がある人には良いかも。
対象者 |
|
デビューコース | まずはプログラミングを学んでアプリ開発までのコース。 週1回のマンツーマンレッスンと専属の講師のサポートあり。
※金額は税込み、分割支払、学割有り |
エキスパートコース | プログラミングの基礎学習からオリジナルアプリ開発までのコース。 週1回のマンツーマンレッスンと専属の講師のサポートあり。 講師にいつでもチャットで相談可能。
※金額は税込み、分割支払、学割有り |
AIコース | 人工知能の習得コース。 Pythonの基礎学習の後、AIを実装。 機械学習処理、画像解析、ブロックチェーン習得、データサイエンティストなど。
※金額は税込み、分割支払、学割有り |
転職保証コース | 未経験から最短でエンジニア転職を実現する転職特化型コース。 週1回のマンツーマンレッスンと専属の講師のサポートあり。 講師にいつでもチャットで相談可能。
※金額は税込み、分割支払有り |
WEBデザインコース | オリジナルWebサイトのWebデザイン基礎から制作までのコース。
※金額は税込み、分割支払、学割有り |
フリーランスコース | 案件獲得に特化した作品制作・ノウハウを習得する為のコース。 案件獲得の一連の流れの理解および案件獲得の準備(12週間)、5~10万/月程度の収入獲得を目標(24週間)。
※金額は税込み、分割支払、学割有り |
サポート | 専属のインストラクターとの対面か Zoom などでマンツーマンでサポート。 受講生に専属の講師が付くので、入学から卒業まで講師が変わらない。 |
無料体験レッスン | 無料体験レッスンの申込みはこちらから |
その他 | SAMURAI ENGINEER Plus+ という月額2,980円で28の教材を学べるコースも用意されている。 主な教材は以下の通り。
|
どのスキルを身につけるか?
どのプログラミングスキルを身に着けるべきかは重要だ。
なぜならプログラミング言語によって適しているサービスや職種が変わってくるからだ。
例えば AI の技術者を目指すのであれば Python がオススメになってくる。
ただ、どれか一つの言語を身につければそれで一生安泰という事はなく、時代の変遷に従って適切な言語を選択していく必要があるだろう。
案件の単価も「案件数に対して技術者が少ない」状態であれば高単価で受けられるが、当然ながらその様な言語は人気言語になるので時間が経過するにつれて「技術者が多く」なってくる。
そうなると「案件数に対して技術者が多い」状態になるので単価が下がってくるという事になる。
まず、「自分は何をやりたいか?」「最初は何の言語が良いか?(次の言語も学ぶ前提)」という視点で下記の言語毎の特徴と方向性を見てもらえればと思う。
Python
![Pythonロゴ](https://i0.wp.com/www.souichi.club/wp-content/uploads/programing-04.png?resize=113%2C45&ssl=1)
Python は簡単で初心者向きと言われており、実行環境がパソコン(Windows、mac、Linux)やRaspberryPiなどのシングルボードコンピュータや Google Colab などのクラウド上でも動作させる環境があるので人気の言語だ。
2021年11月時点で人気言語ランキングの1位になっている。
また機械学習に特化したライブラリーも揃っているので、AIの技術者を目指すのであれば Python がオススメだ。
ネット上の記事を定期的に自動で集めて(スクレイピング)データベース化したり IoT の開発や ロボット制御などでも使われている。
一方、コンパイル(機械言語に翻訳する事)をしない、インタープリターといって一行ずつ解析して実行するのでミリ秒単位での実行速度を求められる処理の場合、C言語などと比較すれば遅くなるので厳密なハードウェアの制御などにはあまり使われない。
また WEBサービスの開発もライブラリもあるのだが、現時点(2021年11月)では フロントエンドではJavaScript、バックエンドでは Java、Ruby などの方が多く使わているようだ。
ただ、 バックグエンドの処理でもデータ解析やAIの部分では Python が使われている事も多い。
- フロントエンド:ブラウザなどで直接ユーザの目に触れる部分
- バックエンド:サーバーやデータベースなど直接ユーザの目に触れない部分
単価が高めの案件がそこそこ多いのが人気の言語になっている理由なのだと思われる。
JavaScript
![JavaScriptロゴ](https://i0.wp.com/www.souichi.club/wp-content/uploads/programing-03.png?resize=113%2C85&ssl=1)
JavaScript はWEBサービスに使われる事の多い言語で 2021年11月の時点で人気言語ランキング2位の言語。
WEBサービスの中でもブラウザ上で動作してページにアニメーションで動きをつけたり、マウスの動きに応じてページに動きを持たせたい時に使用される言語だ。
いわゆるフロントエンドエンジニア(ユーザの目に触れる部分の開発技術者)の多くが習得している言語だ。
汎用性が高いのでこの言語を使えるとかなり重宝されるのと案件数も多いのだが、それ程高単価の仕事は少ないように思う(個人の感想)
今まで人気の期間が長かったので技術者の数が多いのかも知れない。
ただ JavaScript は事例も豊富なので参考記事も多く学習も容易だ。
見栄えの良いWEBサービスを作りたいのであれば身につけておきたい。
Node.js
![Node.jsロゴ](https://i0.wp.com/www.souichi.club/wp-content/uploads/programing-08.png?resize=113%2C69&ssl=1)
もし JavaScript を習得したのであれば Node.js も学びたい。
といっても新たな言語を学ぶ必要はない。
JavaScript はブラウザ上で動作するのだが、Node.js は JavaScript をパソコン上で動作させる実行環境だ。
ブラウザ上での動作の場合、パソコンのリソース(ハードディスク内のファイルやネットワークなど)には簡単にアクセス出来ないが Node.js の実行環境を使えば簡単にアクセスできる。
この為、バックエンド(サーバー側)でも JavaScript でシステムを構築する事が可能になる。
それまではフロントエンドは JavaScript でもバックエンドは違う言語で開発をしているケースが多かった。
JavaScript =フロントエンドだけ
とならない所が魅力的だ。
ちなみに Amazon アレクサのスキル開発(独自のアプリケーションの開発)でも Node.js と Python が選択出来るようになっていて、Python よりも Node.js の方が事例が多かった。
Ruby
![Rubyロゴ](https://i0.wp.com/www.souichi.club/wp-content/uploads/programing-05.png?resize=75%2C75&ssl=1)
Ruby は WEB アプリケーションの開発で使われる事が多い言語だ。
人気言語ランキングでは3位に入っている。
Ruby でWEBアプリケーションを開発する為のフレームワークである Ruby on Rails を学べば、Ruby だけで WEBアプリケーションを作成することができる。
自分でWEBアプリケーションを開発したい人は Ruby を学ぶのも良い選択だろう。
また有名所では Airbnb のサイトも Ruby で作成されている。
![Airbnb使用言語](https://i0.wp.com/www.souichi.club/wp-content/uploads/programing-06.png?resize=467%2C507&ssl=1)
上記画面ショットは Google Chrome の拡張機能の Wappalyzer だ。
気になるサイトを Wapplazer で表示すれば使用されている言語が分かるので自分が気になるサイトを表示してみて参考にすると良いだろう。
ちなみに Ruby と一緒に使用されている TypeScript はマイクロソフトによって開発された言語で JavaScript と互換性も高く、JavaScriptの弱点をカバーした言語と言われている。
案件も多くないが単価も高い(技術者が少ないので)状態で2017年に Google の社内開発言語に指定された事で注目され JavaScript から移行が進むとは言われているが、どの程度の速度で進むかは分からない。
TypeScript は人気言語ランキングで8位に入っている。
Java
![Javaロゴ](https://i0.wp.com/www.souichi.club/wp-content/uploads/programing-07.png?resize=75%2C75&ssl=1)
Java は JavaScript と名前は似ているが異なる言語で C++ に似た構文で、WEBサービスのバックエンド(サーバー側)やモバイル機器などで使用されている。
クライアント・サーバーモデルのWEBアプリケーションで使用される事が多く、人気順位は4位だが案件数は1位だ。
個人プログラマーによる趣味の開発というよりかは企業の開発案件によく使われるイメージでフリーランスではあればSIer企業から受ける案件が多くなると思う。
案件数は多いのだが技術者もそれなりに居るので単価はそれ程高くない。
大規模なシステムの開発案件に携わりたい、またはその様な企業に就職・転職したいのであれば「Javaを使えると重宝される」可能性は高い。
一方、個人で Java の案件を SIer から受注するスキルをゼロから身につけるのはかなり難易度が高い。
一旦、どこかの企業に就職してスキルや開発ノウハウを身につけてから独立というパターンが多いだろう。
また今後も Java での開発案件がどんどん増え続けるか?というと少々心もとない。(個人の感想)
Swift
![Swiftロゴ](https://i0.wp.com/www.souichi.club/wp-content/uploads/programing-09.png?resize=75%2C73&ssl=1)
Swift は iPhone アプリの開発言語で人気ランキングは5位。
iPhone アプリの開発は Objective-C でも可能だが Swift での開発事例の方が主流だと思う。
また Android も同じ言語で開発したいのであれば、React Nativeというフレームワークを使って JavaScript で制作。
または Flutter(Googleが採用)を使ってDart(JavaScript に似た言語)で制作という方法もあるが現時点では主流とは言えない。
Swift を学べるオンラインスクールはそれ程多くないが(前述のオンラインスクールではテックアカデミー)iPhoneアプリを開発したいのであれば Swift は良い選択だ。
Swift は案件数はそこそこあり、高単価の案件が多い印象なので、まずは自作アプリを開発してそのノウハウをベースに企業案件を受けるというやり方もあると思う。
PHP
![PHPロゴ](https://i0.wp.com/www.souichi.club/wp-content/uploads/programing-14.png?resize=75%2C40&ssl=1)
PHP は Webアプリに特化したプログラミング言語。
WordPress や EC-CUBE といったメジャーな CMS(Contents Management System:WEBサービス簡単に構築運用できる仕組み)に使われているので案件数は多いのだが人気はあまり高くない。
ただ後述する WordPress を使うのであれば学んでおいて損はない。
ネット上の記事も多く、PHPを使える人も多いのである意味、人気言語なのだが既に多くの技術者が居るので「新たに学びたいか?」と言われると上位には来ないのだと思う。
また単価も安くなりがちだ。
しかし、とあるフリーランス向けの案件サイトでは Java の次に案件数が多かったので需要は多い状態だ。
Google Apps Script
![Google Apps Scriptロゴ](https://i0.wp.com/www.souichi.club/wp-content/uploads/programing-13.png?resize=113%2C113&ssl=1)
Google によって開発されたGoogleのサービスを自動化するスクリプト言語。
Googleのサービス(Gmail、Google Spreadsheetなど)を使用している企業や個人であれば業務効率化の為に知っておくと役に立つと思う。
ただ、これで何らかのWEBサービスを立ち上げたり、案件を受けたりするのは厳しいのではないか。
何らかのプログラミング言語をメインで習得した上で Google Apps Script も使えて業務の効率化も提案できる、という様な使い方だと思う。
HTML/CSS
![HTMLロゴ](https://i0.wp.com/www.souichi.club/wp-content/uploads/programing-12.png?resize=90%2C90&ssl=1)
こちらはプログラミング言語というよりもブラウザに表示する為の様式を定義したものなので、JavaScript などの言語を学ぶ過程で一緒に身につける知識と思っていた方が良い。
この技術があれば案件を受注できたり就職・転職に有利という訳でもない。
ただ学ばなくても良いという訳では無く、WEBサービスを制作するのであれば「知っていて当然」とされる知識にあたる。
WordPress
![WordPressロゴ](https://i0.wp.com/www.souichi.club/wp-content/uploads/programing-11.png?resize=113%2C38&ssl=1)
番外編。
プログラミング言語では無くホームページを簡単に作成する事ができるオープンソースのプログラムソフトウェア。
現時点で世界中の40%以上のホームページが WordPress で作成されている。
なのでホームページを作成したい、またはホームページ作成の案件を受けたいというのであれば WordPress もひとつの選択肢だ。
またプラグインを使っての機能拡張や PHP が書ければプラグインで実現出来ない機能の拡張も可能だ。
ただプログラミング不要でホームページが作成できるので WordPress を扱える技術者も多く高単価の案件は少ないので「できるだけ早く、安い価格でホームページを作りたい」という案件が多い状態だ。
ホームページを制作したいという中小企業、店舗、個人の需要は多いので WordPress を習得して身の回りの知人から小さく受注を始めるというのは一つの方法だと思う。
WEB上の無料コンテンツ
今は WEB上でプログラミングを学習する無料コンテンツ(記事、YouTubeなど)は沢山出ているので自力で学習できる人にとっては良い環境だ。
しかし全くのプログラミング初心者がプログラミングスクールにも申し込まず、また書籍も購入せずに無料のコンテンツだけで学習を進めるのは、かなりの強い意志が必要だ。
また作りたいサービスが明確であれば ピンポイントでWEB記事を検索して学習ができるのだが、その辺がモヤッとしている状態だと尚更強い意思が必要になってくる。
一方、何らかのプログラミング言語を既に習得している人が新たな言語を学ぶ際にWEB上の無料記事や YouTube を活用するのは非常に有効だと思う。
下記に大学が提供する Pyhton(2021年10月の人気言語ランキングの1位)が学習できるコンテンツを載せておく。
東京大学 Pythonプログラミング入門
東京大学が公開している無料の Python 講座。
Google Colab という無料の環境で学習ができるのでネットに繋がるパソコンやタブレットがあれば学習できる。
Python 初心者向けになっているので東大生レベルの頭脳で無くても理解できる内容になっているのはありがたい。
学習内容は、Python の基本(数値演算、変数、関数、条件分岐、デバッグ、文字列、リスト・・・)から scikit-learn ライブラリを使った機械学習までと充実している。
京都大学 Pythonプログラミング演習
京都大学によるプログラミング演習用の教材。
こちらも無料公開されているので大変ありがたい。
PDFなので印刷して紙で学習したい人には向いていると思うが、ブラウザ上で手を動かしながら学習をしたい人は前述の東京大学のコンテンツの方が使いやすい。
書籍の購入
書籍の良いところは体系だって学習できる所だ。
WEB 記事は自分の知りたいことがピンポイントで書いてある反面、その知識の背景や前提知識などは説明が無いこともある。
基礎からきちんと学習したいのであれば書籍によるプログラミング学習も一つの選択肢だ。
一方、自分にとってその書籍が有益かどうかは現在の自分のレベルにもよるので選定は難しい。
自分は学習したい分野の書籍を複数購入して自分に合った書籍を見つけるようにしているが、正直「積ん読(つんどく)」だけになっている書籍も多い。
下記は自分が読み込んで、有用だと思った書籍だ。
Raspberry Piで学ぶ電子工作
Python について学びながらラズパイでの電子工作を学びたい人におすすめの書籍。
Python がちょっとだけ分かっている状態でこの書籍を買ったのだが、この書籍のおかげでかなり上達したと思う。
何かプログラムでモノを動かしたいのであれば電子工作はおすすめだ。
scikt-learn、Keras、TensorFlowによる実践機械学習
Python を学ぶ前にいきなりこの書籍は流石に無理があるので注意。
Python については一通りスキルを身に着けた上で更に機械学習、Deep Learning についてのスキルを身に着けたいのであればオススメだ。
Kaggle のタイタニック問題を Deep Neutral Networkやランダムフォレスト、XGBoost で解くのにとても役に立った。
最近のコメント