久しぶりのブログネタは、【増席しました!】Angular触ろうの会 in Fukuoka - connpassでもくもくやった成果物です。
Reactも中途半端な僕がAngularに手を出していいの?なんて話は置いといて、今日学んだ、そして気づいたことを徒然なるままに書き出しておきます。
スキルセット
フロントエンドは嫌いではないんですが、業務でバリバリ使ってやったぜ!てなわけもなく、基本はサーバーサイドエンジニアなので、フロントのスキルセットはほぼほぼゼロベースだと考えてもらって問題ないです・ω・
- サーバーサイドエンジニア(PHPer)
- JSド素人(jQuery少し触った程度)
- React頑張ろうとしたけど挫折気味
- もちろんAngularは初見
- TypeScriptも初見
成果物
成果物はこちらです。TheチュートリアルなToDoアプリ。
これはもうSTEP by STEPで写経すれば詰まることはほぼない(詰まってる人いたけど)ので、チュートリアル自体の説明は割愛します。
サーバーサイドエンジニアから見たAngularに入門した感想
生粋(?)のサーバーサイドエンジニア視点で感想を書いてみます。
とにかく楽!
とにかく楽、これに尽きる。
主にReactとの比較になりますが、Reactって、なんだかんだで初心者にとっては敷居が高いと思うんですよ。いざやってみればそうでもないのかもしれないけど、「大変そう」というイメージが先行して、どうも重い腰があがらない。特にwebpack周りだったり、PostCSSだったり、Reduxやらなんやかんや、Reactにまつわる技術で、その周辺環境を整えるのがとても大変。
その点AngularはAll-In-OneなMVCフレームワーク(?)なので、サーバーサイドな僕にも結構とっつきやすかったです。
それもこれも、cliが強力すぎってとこにあるんだと思います。上記に挙げた面倒くさい周辺技術周りをさくっと生成してくれる便利さは非常に強力。テスティングフレームワークもデフォで入ってるしね。
Angular「だけ」にフォーカスすればいい安心感
先ほどもいいましたが、Reactだと、やれRuduxだやれRouterだと、Reactそのものにフォーカスするのがなかなか難しい。でもAngularなら、Angular「だけ」をやればいいという安心感がある(違うのかもしれないけど、今のところはそう感じています)。
当然その分Angularは覚えることも多そうなんだけど、Angularのレールに乗ってるという安心感は確かにそこにある。Railsみたいな感覚かなぁ。PHPなら、Laravel。まぁその分フレームワークにロックインされるっていうデメリットはあるんだろうけど、僕らが普段やりたいことってそんなにイレギュラーなことはないから、これで十分だと思ってる。
サーバーサイドって何をすればいいんだろう
これはReactに限ったことではないんですが、基本的にこういうフロント側のチュートリアルって、フロント「のみ」で語られることが多いですよね。まぁフロントの技術のチュートリアルだから、それはまぁそうなんだろうけど。
そこで生まれる疑問として、じゃあWEBアプリ作る時にどういう構成でどういうコードになんのってのが、やっぱりどうしても上手く答えが出ない。ってのもフロントでできること(やるべきこと)が多くて、これまでサーバーサイドでやっていたことのかなりの部分をフロントエンドに移譲してる形になってるから。
極論、JSONで返すAPIだけ書いてくれりゃあいい(ネイティブのサーバーサイドな感覚)のかなって感じもするんだけど、でも実はそのへんってうまくすればサーバーレスでNodeで書けちゃったりもするわけで。サーバーレスじゃなくても、expressとか、Nodeのフレームワークもあるわけで。もはやPHPもRubyも要らないんじゃない?って思うわけです。JS書ければ、なんでもイケるみたいな。
だからもうサーバーサイドエンジニアなんて人種は息絶えて、以前僕らがやっていたように、サーバーサイドの片手間でフロントを書くっていうのの逆パターン、フロントの片手間でサーバーサイドを書くってのが主流になってるのかなって思ったりしています。AWSとか使えば別にLAMPの知識がそこまで求められるわけでもないし…つらいですね。
こりゃあフロントをバリバリ書けるぜ!ってエンジニアの方が重宝されるわ。
デファクトがないからこその挑戦
サーバーサイドの話をすると、PHPならLaravel、RubyならRails、Pythonなら、、Django?とWEBを構築する上で使われるフレームワークって、あらかた決まっています。まぁ細かく言えば、PHPならCakePHPもあるしCodeigniterもSymfonyもあるんだけど、基本は全てMVCフレームワークで、フレームワーク自体のお作法はあっても、概念は同じです。
でも、フロントってなんかちょっと違う。いや、実際は違わないんだろうけど、乱立しているが故に「違うように見える」ってのが正しい捉え方かもしれない。とにかく、あれやこれやうるせぇ!ってことです。
だからこそ、1つ何か自分が入門しやすそうなものを決めて、フロントの世界に飛び込むことから始めたほうがいいと思った次第です。1つ習得してしまえば、それを習得する過程でおそらく今フロントで使われている概念(簡単なのだとコンポーネント指向とか)に慣れて、他のライブラリだったりフレームワークだったりを習得するキッカケになるんじゃないかなーと。個人的にはVueとかもRiotあたりもいいのかなーなんて気もしています。
おわりに
とりあえず、今日はAngularでサクッとTodoアプリを作れてよかったです。んで、楽しかった。
週1くらいでこういうのやったほうがモチベーションの維持にも繋がるし、スキルも上がるし、給料、、、給料も、、、orz
とりあえず今回やったチュートリアルだけだとAngular全体を俯瞰できてはいないなーと感じたので、次は公式のチュートリアルでもこなそうかなと思います。個人的にはAngular、フロント初心者にはオススメです。ま、TypeScriptだけどね!でも逆にES6とか全然わかんないから、変な先入観なしで入門できそうです。
それでは良きAngularライフを!