はかせだけど博士じゃない

無職が就活しないでプログラミングとかする

N予備校プログラミング入門メモ13

はじめに

この前テンション低すぎてしんどかったので昨日はちょっと休憩した。

4章 実践サーバーサイドプログラミング

01.Webフレームワーク

express generatorをインストールして実行するとプロジェクトに必要なファイル群が用意される。

npm install -g express-generator@4.13.0
express express-study

以下で実行。

DEBUG=express-study:* PORT=8000 npm start

DEBUG=express-study:*express-studyのログを表示するという意味のようだ。

npm startはpackage.jsonにあらかじめ設定されたコマンドが実行されるとのことなので中身を見てみる。

  "scripts": {
    "start": "node ./bin/www"
  },

これっぽいのでnpm startnode ./bin/wwwに置き換えてみると実行できた。

Expressのdebugモジュールを使ってみる。 debugモジュールをrequireで例えばdebugという変数に読み込むと、そのまま関数として使えるのでdebug('module:info')``debug('module:error')のように呼び出す。それぞれの戻り値がログを吐く関数になる。debug('module:info')はInfoレベル、debug('module:error')はErrorレベルのログを吐くという意味だろう。これら二つの関数を1秒ごとに呼びだすようにサーバーを書き換えて起動すると以下のようにログが表示された。

  module:info some information. +28ms
  module:error some errors. +5ms
  module:info some information. +1s
  module:error some errors. +1ms
  module:info some information. +1s
  module:error some errors. +0ms

debug('express-study:info')のように書き換えたらそのように表示された。なるほど。+28ms等は前回のログからどれくらい経って表示されたかを表す。処理にどれだけ時間がかかったかをはかることもできる。

02.Express の API

X-Powered-Byというヘッダから何というフレームワークを使って作られているかが分かってしまう(危ない)。 helmetを使うとデフォルトで危ない動きを変更してくれる。

helmetモジュールをインストールしてapp.jsで読み込み、以下のようにすると有効になる。

var app = express();
app.use(helmet());

サーバを再起動して開発者ツールを確認するとX-Powered-Byの表示が消え……てないな! なんだろう……前のプロジェクト(express-study)のapp.jsを編集してた。そりゃうまくいかんわ。ちゃんとexpress-apiapp.jsを編集したら表示が消えていました。

app.jsをざっと解説しているけど、404のハンドラやエラーを表示するハンドラの登録はどれもapp.useに関数を渡しているだけに見えるが、どうやって判定しているのかわからない。例えばこれは404の関数、ってどうやって分かるのか、これは〇〇のときの関数にしたいっていう意思表示をどうやってするのか?

03.GitHub を使った外部認証

  • OAuth2.0
    • Twitterアカウントとかでログインするあれだったはず
  • passportモジュールを使ってGitHubでの認証を実装する
  • GitHubにアプリを登録する
  • Node.js のイベントループの仕組みについて

使用するモジュールをインストール。

npm install passport@0.3.2 --save
npm install passport-github2@0.1.9 --save
npm install express-session@1.13.0 --save

PCのバッテリーがなくなってきたのでそろそろ帰る。