近年、未経験者を対象にしたプログラミングスクールが増えている。現に私も通っていた。
学び始めたのは30代前半。これはかなり遅いらしいが、人生100年と考えるとあと70年近くは付き合える。いいじゃないか。ちなみに職場でプログラミングを使う機会は一切ないので、いい加減フラストレーションが溜まっている。
ちなみにプログラミングスクールをネット検索すると、中には非エンジニアがフリーランスエンジニアを推奨してスクールの紹介をして(結果広告収入を得て)いるサイトもあるので、用心を。
Twitter見ていると結構リアルな情報がリアルタイムで手に入るのでオススメです。
しかし、今回語りたいのはスクールの是非ではない。自分自身プログラミングの入り口がスクールだったため、それなりに内部(?)事情云々は絡めていくが。
今回は、自分が学んできた言語の印象やフレームワークについて、思うがままに書き綴ってみた。玄人プログラマーからみれば知識が怪しい部分も多いと思うが、そこは先達者の余裕と寛大な心をもってお読みいただければ嬉しく思う。
Ruby
スクールが大好きなRuby。しかし、スクールで学ぶのはRuby on Rails。Rubyのフレームワークである。
rails new
だけで何だかよくわからないファイルがたくさんできる。そして使用するのは一部分だけ。
「何だかよくわからないものを、言われるがままに作り変えたらそれらしいものができた。」スクールに通った率直な感想はそれです。
自分にも受け身な部分が多かったと反省しているが、如何せんプログラムの内部事情がわかりづらい。それでも形としては成果物ができるので、初心者が誤った達成感で「できたふり」をしてしまう。初心者がフレームワークから学ぶ一番の弊害は、それだ。
実際の現場では効率化・合理化が重視され、プログラムを全て根幹から作る必要はないだろう。そのためのフレームワークなのだから。しかし、これは経験者だからこそ許されること。フレームワークだけに甘えてしまうと、初心者では予想外の事態に対応できないだろう。
私はRuby on Railsを学んで、「どこで何が影響しあって、何がプログラムを動かしているのか」を知りたくなった。それが後の勉強のきっかけになっている。
それにしてもRubyを使用している企業は少ないな。その割にスクールにおける採用率が高い言語である。これについては、いつか別記事にしたい。
PHP
PHPについては100%独学だ。本とGoogle先生ありがとう。ネットでは「PHPはプログラミング言語なのか?」という論議がなされている・・・今回それは置いておく。
私は最初MAMPを使って環境構築し、簡単なお問い合わせフォームを作った。当時は良い本に出会えず、教えてくれる人もいなかったため随分苦労した。しかし、そこで使用したMySQLのおかげで、SQL文やデータベースとの連携について少しは理解することができた。
Ruby on Railsを学んだ後のハナシなので、基礎部分についてはあまり苦労したかったな。
最近はHomebrewを使ってCakePHPの環境構築をしてみたり。これは別記事をお読みいただければ幸いである。
LaravelはRuby on Railsと似ているらしい・・・こちらも使ってみたい。
Java
「Javaから始めた方がいいよよ!」
「JavaからPHPは簡単だけど、その逆は大変だよ!」
よく言われますが、Javaから始めて挫折した人は何人いるのでしょうか?何も知らない初心者が、Javaから始めたばっかりにプログラミングそのものを嫌いになってしまった・・・そんな悲劇もあったりなかったり。
こう言われる理由には「オブジェクト志向の仕組み」があるそうだ。オブジェクト志向については自分も理解が半端であるため、その言葉の重みがそれ程わからない・・・
私がJaveの基礎本を読んだのは最近だ。(一回通読しただけ;)さわりの部分しか学んでいないが、例の「オブジェクト志向」についてJavaがどういう仕組みで動いているのか気になったから。
私の場合、選んだ本が良かった。(下記で紹介している。)しかし読んでみると、「これって初心者でもいけるんじゃね?」という印象だった。ただ、読んだタイミングはRuby on Railsを触りPHPで基礎を学んでから。この感覚、全くの初心者には当てはまるか、それはわからない。
良い本や指導者がいれば、もしくはハードルが高いほど燃える方がいれば、初心者がチャレンジするのも良いと思う。
JavaScript
決してJavaの類似品などではない。全くの別物です。
個人的に、初心者に一番オススメできる言語だ。理由は、環境構築の必要がないから。Google ChromeやSafariなど、普段ネットの閲覧で使用してるブラウザ上で簡単に動作確認ができるから、とにかく手軽だ。
そして、どこで何が動いているかわかりやすいから。超ざっくり説明すると、各ファイル・言語の連携はこんな感じ。
HTML
表示の骨組み(テキスト入力欄、ボタンなど)
<script src="JavaScriptのファイル名"></script>
の一文でJavaScriptを呼び出せる
CSS
表示のデザイン部分(文字色や背景色など)
JavaScript
条件やユーザーの動作によってHTMLやCSSのデザインを変更する。(クリックしたらテキスト入力欄を表示させるなど)
フォルダの階層も必要ファイルも少ないため、全体像が見やすい。さらに手軽に動かせるため、小さいけれど確実な達成感が味わいやすい。
プログラミングに限らず、初心者にとってこれがどれほど重要なことか。それを味あわせてくれる言語だ。
オススメ本
オマケで私が特にお世話になった本を紹介しておく。インプレス率高し。
- いちばんやさしいPHPの教本
- 基礎からのMySQL
- スッキリわかるJava入門
- いちばんやさしいJavaScriptの教本
ちなみにRubyの基礎については、プログラミング学習サイト「Progate」で補完していた。ある程度の範囲なら無料で使用可能だ。同様に「ドッドインストール」もオススメできる。
さらにスクールに通っていれば、カリキュラムも利用できるだろう。真っ当なスクールであれば、かなりの頻度でカリキュラムの更新がされている&卒業生にも無料公開している。逆に、それらを行なっていないスクールは避けた方が良い。
私の通っていたスクールも、アルゴリズムやRubyの基礎部分が充実しカリキュラムのボリュームが通学開始当時の倍になっていた。卒業生として、こちらも利用させてもらおう。
まとめ
スクール語りをするつもりはあまりなかったが、意外と多くなってしまった・・・
最後に初心者向けの言語について個人的な基準をまとめてみる。
- 自分が楽しめるか(これ最重要!)
- 転職を考えている場合は、進みたい業界で需要のある言語かどうか
- 作りたいアプリがある場合、それに適した言語かどうか
- 自分は言語が難しいほど燃えるのか、初めはラクに始めたいのか
- 動くものを早く作りたいのか、その根幹部分を探りたいのか
まあ、結局は継続しなければ成果は出ない。
どの言語を選んだとしても、日々精進である。