YEOMANを使ってgenerator-angular-fullstackでMEANスタックをセットアップして作りました。
機能としては、登録したサイトをスクレイピングして返ってきたデータを成形してDBに保存しつつ、ブログサイトに自動的に投稿するbotアプリです。ビルドしてHerokuで稼働しております。(余談ですが、Heroku素晴らしいです。)
工数3日ぐらいで作ったのですが、これは恐ろしいですね。まずはjavascriptでなんでもできてしまう。
10年前はこんな時代がくるなんて思いもしませんでした。
昔話をすると「やっぱDB扱えないとね!」って思い、その当時、LAMPスタックを勉強してみたんですが、javascript⇔PHP⇔MySQLでの言語の違いに数日で頓挫しました。
それがですよ、今となってはjavascriptの作法さえ知っていれば、一人で全部できてしまうんです。便利な時代になったものです。個人的に技術力で生きたいなら、フルスタックエンジニアが一番近道な気がします。
総制作時間を100%として、かかった時間の割合は以下の様な感じでした。
セットアップ(YEOMAN)5%
フロントエンド(HTML+AngularJS)35%
バックエンド(Nodejs+MongoDB)55%
ビルド(Heroku)5%
MEANスタック
LAMPスタックのjavascript版。
MongoDB・・・DB(LAMPでいうところの「MySQL」にあたる)
Express・・・Webサーバー的な役割?(LAMPでいうところの「Apache」に近い?)
AngularJS・・・フロントエンド担当
Node.js・・・バックエンド担当(LAMPでいうところの「PHP」と「Linux」に近い?)
の頭文字をとっている。以下は感想です。(順不同)
Node.js
- バックエンドで使えるjavascript。
- javascript知ってればサクサク使える。やってて楽しい。
- いわゆる「黒い画面」を多用する。が、それも同時に覚えられる。黒い画面スゴイ。
- モジュールが充実してるので、なんでも作れちゃう(ラズパイにインストールして流行りの「Iot」もすぐに実現できた)。
AngularJS
- フロントエンドで使えるMVCフレームワーク
- MVCの概念はなんとなくわかっていたが、実践してみて「MVC素敵…」と思えた。
- モデルとビューをバインディングしてくれるディレクティブがデフォルトで備わっている。モデルの更新が即時反映される!これが噂のAngularJSか…(ごくり)
MongoDB
- 「NoSQL」DB。
- 「ドキュメント」と呼ばれる構造的データをJSONライクな形式で表現し、そのドキュメントの集合を「コレクション」として管理する。(Wiki引用)
- 保存していたデータ量がでかかったこともあったんだけど、基本的に容量がでかくなりがちなのかも。1件保存して100Kとかいってた。
Express
- アプリを作ってて特に関与はしなかった。裏でなんかしてくれてる?ぐらいの印象。