Node.jsがやっとわかった……
最初はSPA的なものを作りたいと思ったんだった。そこから、Firebase使えばAPIとか作らなくて良さそうと思って、じゃあFirebaseの勉強を本格的にやろうと思った所、Node.jsについて知る必要があって、Web上のいろんなリソースを漁ることになった(ガイドに「Node.jsのアプリが必要」って書いてあったから)。いろいろ漁った結果、そもそもFirebaseをWebアプリに組み込んで使いたいと思っていたので、結局のところ、Node.jsについて詳しく知る必要はなかった。
でもいろいろ調べたので、わかったことをメモしておく。
- Node.jsは、一言で言えばJavaScriptが動く実行環境
* 本家サイトでは「Chrome の V8 JavaScript エンジン で動作する JavaScript 環境」とのこと
* Javaで言うJVMみたいなものなのかな
* むしろJava 8ではJavaScriptを実行できるらしい
- 非同期イベント駆動型、シングルスレッド
- ApacheやNginxみたいなミドルウェアなのかと思ったらそうではなかった(サーバとして実装すればサーバとして実行されるので、やっぱり実行環境)
- Webサーバとしてのサンプルが多いので、サーバサイド専用っぽく見えるけどそうではない
- Electronとかも結局はNode.jsで動いているみたいだし
- npmがパッケージマネージャ
- 非同期イベント駆動型、シングルスレッド
とにかく、調べれば調べるほど、なんか面白そうな感じはわかった。
Web系の技術があれば、デスクトップやスマホ向けのアプリケーションが手軽に作れるようになった。
自分が学生の頃を振り返ると、そのころはまだWebで作ったアプリの品質が高くなかったように思う。周りには、iPhoneのアプリ開発にPhoneGap(いまはCordova)を使っている人がいたが、いまいち出来上がりの品質が良くなかった気がする。同じ頃Firefox OSも出てきて、アプリ作ってみたりもしたけどネイティブのようなサクサク感がなかった気がする(Firefox OSはだいぶ前に終わったけど、今のPWAを見ると、そこがベースになっている気がする)。そういう経験から「やっぱりネイティブじゃなきゃだめなんだ」って思うようになっていた。
今は、ElectronやReactNativeで高品質なアプリケーションが作れる。むしろ、ネイティブで開発するよりも、手軽に実装できているようにみえる。ネイティブでの開発も好きだけど、Webの技術も身につけたいと思った。