node Express にまつわるあれやこれや

本番環境で使うなら

サーバサイド JavaScript が語られる時、大抵は node の話が出てきて

PC 上でも JavaScript が動く→サーバ開発用としても使える

みたいなストーリーになっているのだが、 現実的に言えば、そのままでは使えない

思い出して欲しいのだが、そもそも JavaScript は非同期のクセの強いスクリプト系言語だ。
これだけでも使い勝手が悪い上、エラーが出るとプログラム自体が停止してしまう、というおおよそサーバー開発用言語としては不向きな弱点を持っている。

この弱点を回避するためには、停止した際に復旧する仕組みなどが必要なのだが、最近では pm2 の評判がいいようだ。

ところで、pm2 をグローバルでインストールするとき、sudo つけないとできなくない?

実用的にも

sudo npm install -g pm2

でいいと思うんだが。(詳しい使い方はこの記事あたり参照)

ちなみに pm2 の p はプロセスの p でしょう。
(ここでいうことではないかもしれないが、特異な言葉の使い方は周囲から理解されにくくなるのでやめた方がいいと思う。何言ってるかわからん人はリンク記事読んでください。通常、「スレッド」というべきところを「プロセス」と言っちゃているので、内容にはそそられるところがあったが、結局、読むのをやめてしまったっていう話です)

SSL 化

本番で使うなら、SSL 化は必須。

これも(今となっては)使えない書き方している記事は多い。

Express 3 以降は以下のように書き方になるらしい。

var fs = require('fs');
var http = require('http');
var https = require('https');
var privateKey  = fs.readFileSync('sslcert/server.key', 'utf8');
var certificate = fs.readFileSync('sslcert/server.crt', 'utf8');

var credentials = {key: privateKey, cert: certificate};
var express = require('express');
var app = express();

// your express configuration here

var httpServer = http.createServer(app);
var httpsServer = https.createServer(credentials, app);

httpServer.listen(8080);
httpsServer.listen(8443);

StackOverFlow より。

秘密鍵 server.key とサーバー証明書 server.crt を sslcert というフォルダに配置して読み込むだけでいい。

こういうことができる node 環境は素晴らしいと思う。

しかし、こういう情報を海外筋から入手しないといけないというのは少々いただけない。

愚痴

少々、愚痴っぽいテイストが入っているので、この際だから言わせてもらうと、ある程度、この業界でちゃんと生きていきたければ

CUnix

に関しては、イロハ+α 程度のスキルは身につけておいてほしい。

なんで、突然、こんなことを言い出したかといえば、某会社経由で「C や Unix ? あー、彼なら、余裕っすよ。経験あります」という触れ込みで配属された人が、まるっきりできていなかったから(笑・・えない)。

 

 

(続く)

 

 

 

node.js に慣れてきた時に読む記事

node.js は JavaScript 実行環境と捉えた方がいい。

だから、(ブラウザではなく)コマンドラインから JavaScript コードを走らせるコマンドは

node XXX.js

になる。


npm は、Node Package Manager の略。

何かのパッケージをインストールするときは、グルーバルなのかローカルなのか意識しよう。

グローバルの場合(あるユーザーの node 環境すべてで使える)は、-g (–global) オプションを忘れずに。

 

 

node.js 習うより慣れろ

導入

プロジェクトを作成して雰囲気掴む。

webpack入門(Node.jsの導入からjsファイルのバンドルまで)
npm の導入と Hello World!

実用的には・・・

けっこう評判良かった投稿。

TypeScript で書いたコードを、 JavaScript にコンパイルして実行する場合のプロジェクト作成方法について説明します

みんな、思ってたんじゃん!

フロントエンド/バックエンド

ところで、駆け出しの初学者が区別つかないものの一つにフロントエンド/バックエンドという概念があると思う。

実務的なフロントエンドの記事に『イマドキのフロンエンド開発』という好記事があるが、この記事で述べられているのはあくまでもフロンエンドに関することがらだ。

「えー、でも testserver 立ててますよね」と言われそうだが、あれは本番環境の代用だ。

現実的に考えてもらえばわかると思うが、まだ機能が不十分な段階で VPS や各種クラウド上(の Apache や NginX)で開発するわけにはいかんでしょ。

testserver はあくまで開発用。

だから、デフォルトでは css すら読み込んでくれない。(『WebPack で css を読み込ませる方法』あたり参照。WebPack は本来 JavaScript, css, 各種画像の類をまとめ上げるためのものだから、css を読み込んでもらったら困るのだ)

実際、XXX.com のウェブサーバーが WebPack の testserver で運用されることはまずない。少なくともワイはそんなケースは見たことがない。

あとは、かなりの頻度でフロンエンド/バックエンドともに開発言語が JavaScript であったりするのも誤解を生む要因になっているでしょうか。

Express

で、 JavaScript でバックエンドと言ったら、Express の存在が欠かせない。

これは長くなりそうなので、稿を変えて。

これとかこれとか

 

(続く)