ここでは、プログラミング未経験の初心者からITエンジニア(プログラマーやシステムエンジニアの総称)へ転身した筆者がプログラミングを学びたい人向けに「身になる情報」をお伝えします。
現在、色々なプログラミングスクールや学習サービスではRuby(Ruby on Rails)を教えていますが、これを読めば「実はデメリットの方が大きい」という事もわかるでしょう。
目次
1.プログラミングってそもそも何?
「プログラミング」というのは、「機械(主にパソコン)」に対して「この時にこの仕事をしてね」という「命令」をさせることをいいます。
イメージは舞台のお芝居のようなものです。機械という「役者」がいて、プログラマーは「監督」として役者に指示を出します。
その命令をするためによく映画であるようなキーボードをかちゃかちゃ打ちまくって「命令するための文章(シナリオ)」を書いているのです。
その「命令するための文章」は「機械に理解できる言葉」で書く必要があります。
2.プログラミングで何ができるの?
ロボットを好きに動かせる
例えば、ロボットに「プログラミング(命令)」することで思い通りに動かすことができます。
スマートフォンのアプリが作れる
iPhoneやAndroidといったスマートフォンのアプリを作ることができます。
個人でアプリを作って毎月何十万も稼いでいる人たちはいっぱいいるのです。
今流行りのAI(人工知能)を作れる
人工知能も自分で作ろうと思えば作れてしまいます。
数ある画像の中から「人」だけを判別したりといったこともプログラミングで実現できます。
HPが作れる
これは、よく聞きますね。インターネット上にある、HP(ホームページ)が自分で作れてしまいます。
自分がお店をやっていれば、HPを作れば集客にお金をかけなくとも全国や世界中の人からお店の商品を買ってもらうことができます。
また、企業やお店のHPをあなたが作ってお金をもらうこともできます。
WEBサービスが作れる
HPの中でも、さらにシステムちっくなものが「WEBサービス」です。
TwitterやFacebookといった「SNS」や楽天やamazon、メルカリといった「ネットショップ」、ウェブカツ !!のような「オンライン学習サービス」などHPの中でも「インターネット上でサービスを提供してお金をもらう」ものが「WEBサービス」です。
詳しくはウェブカツ !!でもお伝えしていますが、お金を稼ぐには「仕組み」を作ることが大切です。そして、「WEBサービス」というのは色々なビジネスの中でも「最も簡単」に「最も初期費用がかからず」に仕組みが作れてしまいます。
3.プログラミングって稼げるの?
はっきりいって、めちゃくちゃ稼げます。
IT業界は「高収入」というのは聞いたことがあると思いますが、私自身も未経験から1年で現役ITエンジニア(プログラマー、SEの総称を「エンジニア」と業界では呼びます)として年収1千万以上をもらっていますし、周りの人も同じくです。
私は不動産業界や保険業界でも働いていて、アパレルショップやコールセンター、ガソリンスタンドなど色々なアルバイトもしてきましたが、
大袈裟でもなく、
どんな業界よりはるかに楽に稼げる
と断言します。
とは言っても、「稼ぎ方」を知らずに低収入なままのエンジニアもまた多くいます。
また、ウェブカツ でもお伝えしているどんなビジネスをやるにも要となってくる「仕組み作り」が簡単に行えるのが「プログラミングの力」です。
こちらの記事でもう少しだけ詳しく説明しています。
4.プログラミング言語って色々な種類があるの?
ウィキペディアを見るとわかりますが、とても色々な種類があります。
世界中に色々な「言葉(言語)」が存在するのと同じく、機械の世界にも色々なプログラミング言語が存在しています。
誰にもほとんど使われずに廃れていったものから、英語のように何十年前からずっと使われ続けているメジャーなものまで様々。
「そんな種類あったら何を勉強したらいいかわからないよ!」
と思うかもしれませんが、ご心配なく。
実際に今世の中で「仕事」として一般的に使われている言語は10個ほど。
しかも、全部学ぶ必要なんて全くないんです。
5.学ぶ必要のあるプログラミング言語ってどれ?
それは、「何をしたいか」によって違います。
iPhoneアプリを作りたいのなら「Swift(すうぃふと)」というプログラミング言語を学ぶ必要があります。
反対にAndroidのアプリなら「Android Java(あんどろいどじゃば)」というプログラミング言語(Java言語と呼ばれるものがベース)になります。
今流行りのAIといった「機械学習」のシステムを作りたいのであれば、「Python(ぱいそん)」というプログラミング言語を学ぶのが近道です。
「自分でHP(ホームページ)を作りたい」
「WEBサービスを作ってお金を稼ぎたい」
「フリーランスで仕事を獲れるようになりたい。」
「一般のIT企業に勤めて高収入を得たい」
という事だとウェブカツ!! でも教えている
1.HTML言語(えいちてぃーえむえる)
2.CSS言語(しーえすえす)
3.JavaScript言語(じゃばすくりぷと)
4.PHP言語(ぴーえいちぴー)
5.SQL言語(えすきゅーえる)
を学べば全てカバーできます。
6.プログラミングって英語力も必要なんでしょ?
全くいりません。なぜなら、私も英語ができませんし、稼いでいる周りの現役エンジニアもできません。
年収1千万稼ぐ程度であれば、英語力は全く必要がありません。
7.プログラミング言語の違いは何なの?
WEBサービスを作るために学ぶ必要のある言語は先ほど紹介した「5つ」だけです。
「いや、5つでも多くない!?」
「英語とフランス語とドイツ語と韓国語も覚えるようなもんでしょ!?」
「バイリンガル!?いや、トリンガル以上じゃん!!」
「やっぱエンジニアさんって高収入なだけあって頭いいよね!!」
と思ったあなた。
安心してください。
5つの言語は3ヶ月もあればマスターできます!
これが、私たちが会話している言語の「英語」だとしたら、マスターするだけでも何年も勉強する必要がありますよね?
それに加えて韓国語やフランス語も覚えるとなったら何年かかるんだ!
という話しです。
しかし、プログラミング言語というのは
実はとても簡単です。
「いや、大学だって4年は学ぶでしょ!?」
と思ったあなた。
世間に騙されています。
学者になりたいのなら別ですが、
年収1千万程度を実際の仕事で稼ぐために学ぶべき内容は実は「たった3ヶ月」で足ります。
これは、私が経験し、そして数多くの生徒を育ててきた経験から自信をもって断言します。
ちなみにIT業界のエンジニア達には「未経験」の「異業種」から転身してきた人が数多くいます。
それだけ「学びやすい」「学ぶことが実は少ない」という証拠。
エンジニアというのは、コストパフォーマンスがとても高い職業なのです。
同じく年収1千万など高収入といわれる「士業」を目指したとすると医師や弁護士になるには何千万も払って大学で4年間学んで卒業し、毎晩寝る間もなく「弁護士や医者のタマゴ」として何年も年収数百万円ていどで働いた後にやっと年収1千万以上になります。
HTML言語ってなに?
HTML(エイチティーエムエル)言語は色々なプログラミング言語の中でも「マークアップ言語」と呼ばれていて、機械に「これが文章」「これが画像」「これはタイトル」「これは小見出し」と伝えるための言語になります。
HTML言語をマスターするだけでも、よくある個人サイトのような簡単なHP(ホームページ)程度が作れてしまいます。
詳しくはコチラを参考にしてください。
CSS言語ってなに?
CSS(シーエスエス)言語はさっきのHTML言語で作ったHPに「デザイン」を加えられる言語です。
HTML言語だけだとHPは作れても「とても質素なもの」しか作れません。
文字とちょっとした画像と背景を変えたくらいですね。
でも、CSS言語を使うとそのHPにさらに「リッチなデザイン」を加えることができるので、こんなHPが作れてしまいます。
JavaScript言語ってなに?
「じゃばすく」とか今は「js」と書いて「じぇーえす」と読むことが多いですが、似た名前のプログラミング言語の「Java(じゃば)」とは全く違うので気をつけましょう。
JavaScriptはHPに「アニメーションなどのリッチな動き」をつけられるプログラミング言語です。
HPを見ているとよくキャラクターが動いていたり、画像がスライドして流れていたり、メニューボタンを押したらメニューが「びろ〜ん」と出てきたりしますよね?
ああいった「動き」はこのJavaScript言語でやっているんです。(最近では、CSS言語でもアニメーションなどの動きができるようになっていますが、詳しくはウェブカツ で)
PHP言語ってなに?
PHP(ピーエイチピー)言語は、「お問い合わせフォーム」や「ユーザー登録」「ログイン」といったHPの中の機能を作るための言語になります。
サーバーサイド言語というカテゴリーの言語で、同じサーバーサイド言語のメジャーなものとしては
「Java(ジャバ)」
「Ruby(ルビー)」
「Python(パイソン)」
があります。
詳しくはコチラをみてください。
http://webukatu.com/wordpress/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E%E3%81%AE%E9%81%95%E3%81%84/
サーバーサイド言語はみな共通して、「HPを動的に切り替える」ということができます。
例えば、楽天やアマゾンであなたが買った商品に似た商品がHP上に表示されますよね??
Twitterも毎回HP開いたら違う内容(コンテンツ)が表示されていますよね?
それができるのもこのPHP言語などのサーバーサイド言語を使っているからです。
PHP言語をマスターすることで、SNSやネットショップといったWEBサービスを作ることができます。
もちろん
「どうやってそれを作るのか?」
「どういう機能が必要で、どういう仕組みなのか?」
「その機能を作るのにどういう命令をすればいいのか?」
というのはネット上にはほとんど出ていません。(なぜなら、全部1から説明するのは面倒だからです)
細切れな情報はありますが、点と点の情報なので、初心者ではまずもってそこから学ぶことはできません。
さらにはプログラミングのオンライン学習サービスでも、実はウェブカツ 以外でそこまで教えているところは今の所「皆無」です。
「Prog○te」「ドット○ンストール」「Pai○a」といった有名サービスでもそこまで出来るようにならないのが現状なんですね。
SQL言語ってなに?
SQL(エスキューエル)言語は、一度は言葉を聞いたことがあると思いますが「データベース」とよばれる機械を操作する時に使う言語です。
データベースはその名の通り、「データ」を保存するための「ベース(基地)」の役割をする機械です。
よくニュースでも「ハッキングされて個人情報が流出した!」なんてのがありますが、そういった個人情報というのはこの「データベース」に保存しておくのです。
実際の使い方としては、
PHP言語を使ってユーザー登録などの機能を作り、名前や住所、emailなどのユーザー情報(個人情報)をSQL言語を使ってデータベースに保存する。
という流れになります。
8.Java言語やRuby言語ではいけないの?
PHP言語と同じサーバーサイド言語には、JavaやRubyもありますが、実際に学んできた経験としては初心者には全くおすすめできません。
まず、Java言語はサーバーサイド言語の中でも業務システムなど大規模な用途に使われる事が多いのですが、その分とても初心者には敷居の高い言語です。
プログラミングを始めるまでの準備(「環境構築」といいます)だけで初心者は挫折を強いられます。
また、「Pro○ate」などオンライン学習サービスでは「オンライン上でコードが書ける」ため、その環境構築をする必要がありませんが、実際の実務ではその環境構築が1人で出来、何か不具合があっても1人で解決できなければ「使い物にならない人材」になってしまいます。
Ruby言語の場合、Ruby言語単体では実務で使えないため、「Ruby on Rails(ルビーオンレイルズ)」という「フレームワーク」と呼ばれるものを使います。
(詳しくは次で)
そのため、Ruby言語単体での「言語としての仕組み」を理解することが出来ず、大事な「基礎」を初心者のうちから学ぶ事ができません。
また、PHP言語ではHPを制作する際に最も多く使われている「WordPress(ワードプレス)」というシステムがあるため、個人でHP制作を受注したり、個人で販売をしたりといった起業もしやすいのですが、Ruby言語にはそういったものが一切ありません。
9.RubyOnRailsを学んではいけないの?
プログラミングを実務として使って仕事をしたいのであれば、「やめた方がいい」と断言します。
なぜなら、プログラミングでお金を稼いでいくための「基礎」が身につかないからです。
RubyOnRailsは「フレームワーク」と呼ばれるもので、フレームワークとは「工作キット」のようなものです。
デアゴスティーニのようにロボットを簡単に作れるようすでにパーツが用意されているキットのイメージです。
PHP言語などサーバーサイド言語では、「ユーザー登録」「ログイン」「お問い合わせフォーム」といったWEBサービスに欠かせない様々なシステマチックな機能を作る言語ですが、「フレームワーク」を使うことでそういった機能(工作部品)があらかじめ用意されているため「1から作らずに済む」というメリットがあります。
Ruby言語だけでなく、PHP言語やJava言語といった各言語にもそれぞれ色々な「フレームワーク」があります。
実務で開発をする上では、開発スピードが早くなりメリットも大きいため、そういったフレームワークが使われますが、初心者のうちからいきなり学ぶのは「害」以外の何者でもありません。
数学で例えるなら、「公式」を丸暗記しているようなものです。公式に当てはめられる問題を解くことはできますが、ちょっと頭をひねる必要が出てくるともうお手上げです。
実際の実務ではそういった事が多々あり、そういった問題に対処できなければ、一生低収入なプログラマーとして仕事をしていく事になります。
とはいっても、そのまま40才にもなれば首を切られて路頭に迷うことになります。プログラマーには「35歳定年説」というものがありますが、これはそういった基礎ができないままきてしまった人達の事をいいます。
フレームワークの中でもRubyOnRailsは「gem(ジェム)」というもので色々な機能(部品)を簡単にくっつけることができてしまうので、初心者にはその部品一つ一つがどういった仕組みで作られているのか理解ができません。
さらには、普通なら数行のコードを書かなければいけないものがRubyOnRailsでは1行で済んでしまったり、「マイグレーション機能」というものを使って前述した「SQL言語」もほとんど使わずにデータベースを操作できてしまいます。
RubyOnRailsは開発速度がとても早くて便利ではあるのでよく実務でも使われてはいますが、実際の実務で使っているエンジニア達は「基礎ができている(仕組みがわかっている)」上で使っています。
しかし、初心者がいきなりRubyOnRailsを使って学んでいった場合、
「細かくはわからないけどなんか動いている」
「詳しいことはわからないけどWEBサービスは簡単に作れた」
こういう人がほとんどです。
スクールがRubyOnRailsを教えるのも「簡単に教えられる=低コストで金が取れる」という理由であって、初心者にとって有益なものではありません。
また、スクールや「仕事を紹介する目的で無料でプログラミングを教える」ような会社は、教えるコストをかけた分早く金を巻き取らなければビジネスとして成立しないため、その生徒の「将来」など気にする事なく「とりあえず作れる(基礎はできない上辺だけ。)」段階まで生徒のレベルをもっていき、仕事に就かせてお金を得ているのです。
もちろん、「ただ早く仕事に就きたい」のであればそれでも構わないでしょう。
しかし、これからあなたが
エンジニアとして効率的に成長したい。さらには、高収入を得たい。
と思っているのであれば、絶対にオススメできません。
ゴルフスクールで「簡単にボールを遠くに飛ばせるから」といって「野球スイング」を教わるようなものです。
ゴルフをやっている方はわかるかと思いますが、野球スイングとゴルフスイングは同じ「スイング」でも仕組みが全く異なり、初心者のうちからその「癖(くせ)」が一度ついてしまうとその後の上達を阻害してしまい、上達するまでとても苦労するのです。
rails経験者は仕事にはなるけどかずきちさんの言うように初学者が突っ込むものじゃないとは思う
仕事取ってくるの大変だったしWordpressとか出来てる方が仕事取りながらLaravelとかのフレームワークも勉強できるしいいかなって思う https://t.co/aR1IfPbZj9
— joe (@joe_yuzupi) February 9, 2019
プログラミング始める時相談したPGの方も「Ruby on Rails」じゃ関西ではほぼ案件無いからそこから始めるのはやめといた方が良いとアドバイスしてくれたなー。とりあえずアドバイスに従ってPHPから入ってよかった。東京でも仕事少ないのなら、地方じゃ全くなんだろうな。 https://t.co/qlRgZRBmsa
— wappy (@wappy726) February 9, 2019
草
railsは簡単だからなあ。あんま理解しなくてもとりあえず達成感だけ得られる。
最初に学ぶべき言語は別として、railsを最初に学んだ後にphpすらキャッチアップできない人はエンジニアなれない。
なれてもど底辺でおわる。オワコンだ、オワコン。 https://t.co/ZxaiSPqsp2— ぺんぎん@プロ兼業家 (@penpen_tech) February 9, 2019
10.DreamWeaverは使ってはいけない
PhotoshopやIllustratorなどデザイナーの多くが使うツールを作っているのがAdobe社ですが、そこから「DreamWeaver」というHTMLコーディングソフトが出ています。
ちなみにHTMLやCSSはプログラミングと言わず、「コーディング」といいます。またデザイナーに多いのですが、HTMLやCSS、jQuery(JavaScriptを簡単に書けるようにした言語だと思ってください)が出来るレベルの人のことを「コーダー」と呼び、業界では「プログラマー」や「エンジニア」よりも下位のレベルとして扱います。(HTML・CSS・jQueryが出来るレベルで「プログラミング出来ます!」と言うと初心者だと判断されます。)
最初に学ぶのはHTMLやCSSの場合がほとんどかと思いますが、HTMLでコーディングしてく際に使うのは「テキストエディタ」と呼ばれるものを最初に使います。「メモ帳」と呼ばれるデフォルトで入っているソフトがそれですが、デフォルトのソフトではコーディングの際の間違いなど分かりづらいためさらに高機能な「リッチテキストエディタ」と呼ばれるものを現場で使うことがほとんどです。
(ちなみにプログラマはさらに高機能な「IDE(統合開発環境)」と呼ばれるソフトを使ってプログラムを書きます。)
リッチテキストエディタには色々ありますが「DreamWeaver」はおすすめしません。なぜなら「私、初心者です」というのがモロバレするからです。DreamWeaverはデザインから自動でコードを吐き出してくれたりと便利ですが、実際の現場ではまず使われません。(個人でHP作ってますレベルの人や数人でHP制作をやっている会社では使っていますが、中規模以上の企業の現場=収入が高い現場では直接コードを一つ一つ書かないとメンテナンス性が悪いため、自動で吐き出されたコードというのは使い物にならないんですね。。)
「どんなツールを使っているか?」でその人のスキルがわかります。
実際の現場では「DreamWeaver」を使っている人はまずいません。使っているとしても、小さなHP制作会社だけです。そのため、低賃金で働くことは避けられません。
「DreamWeaver」を使っている人というのは100%「コーダー」と呼ばれる人たちで、「プログラマ」や「SE(システムエンジニア)」と呼ばれるいわゆる「エンジニア」の人たちとは業界では区別されています。(それぐらいスキルが違う。ということです)
「コーダー」とは「HTML・CSS・jQueryが出来る程度」もしくはさらに「PHP言語などサーバーサイド言語も触り程度できる」人のことをいい、実際の現場ではWEBデザイナーが片手間で「HTMLも書けますよ」というくらいのレベルになります。
エンジニアの人たちからするとWEBデザイナーが書くコードというのは「低品質」なものがほとんどで、趣味や小さな制作会社でやるレベルならいいのですが中規模以上の現場の仕事としては提供できるレベルではありません。
そうなってしまうと仕事の幅としてはとても狭く、安い賃金の仕事しかできません。
最低でも「Brackets」や「Atom」といったリッチテキストエディタを使うようにしましょう。(PHP言語を書くくらいからは、有料のPHPStormか無料のEclipseというIDEを使った方が将来の投資になります。)
もちろん、最初は未経験なので低賃金なのは仕方ないことですが、最初からそのレベルで入って仕事をしていくとそのままずるずるとそのレベルでいってしまって低賃金から抜け出せない人もこの業界には多い(低賃金な現場は激務で終電近いところが多いので、その中でスキルアップの勉強を出来るかどうかです)ので気をつけましょう。
おわりに
いかがだったでしょうか?スポーツでも同じですが、あなたがこれから「プログラミングを使って仕事にしていきたい!」と思っているのであれば、「基礎」はとても大事です。
昨今では、スクールのせいでRubyOnRailsのような工作キットを使って簡単にWEBサービスを作る教え方が横行していますが、デアゴスティーニのロボット工作のようにロボットは簡単に作れるようになっても、いつまでたってもロボットの部品一つ一つの仕組みまで理解はできません。
そして、実務として「仕事」として行なっていく以上、その部品一つ一つの仕組みがとても大切になります。
逆に「基礎」が出来てしまえば、高収入を得て仕事をすることはとても簡単です。
ちなみに今流行りのアプリを作りたい!と「Swift」や「Android Java」を学ぶのもやめた方がいいです。
なぜなら、最初からアプリ開発用の言語を学んでしまうと「その言語以外分からない」となってしまう人が多いからです。(実際のエンジニアもSwiftしか出来ない。という人も多くいます。アプリよりも一般のWEB系サービスの案件募集の方が多数なので、その分仕事の幅が狭まり、高収入のチャンスを自ら逃しています)
もちろんSwift一本で食っていけるほどスキルを伸ばせる自信があったり、日々仕事をしながらも余った時間で他の言語を勉強できる環境があったりモチベーションがある人は問題ありませんが、そうでないなら「セッション」「Cookie」「DB設計」「SQL」「HTTP通信」「フレームワーク」といった「WEBを取り巻く知識や仕組み」の基礎はアプリを作ったところで身につけることができません。
もちろん、突き詰めればそういった部分も習得する必要が出てきますが、ちょっとしたアプリ程度だとそういった知識は必要なく作れるため、学ぶことができないんですね。
プログラミングが気になっているけど何から手をつけたらいいかわからない!
何を学べばいいかわからない!
そういう人は、まず「HTML・CSS・JavaScript・PHP・SQL」の5つの言語を習得することを目標にしましょう。
そして、実際に手を動かして色々なサービスの「作り方」を教わることで、自分で好きなWEBサービスを作る力が必ず身についてゆきます。