Node.js

はじめてのSocket.io #1 「リアルタイムなチャットを作る」

Node.jsのキラーソフトの一つとも言われて久しいSocket.ioを使ってリアルタイム通信を行います。コツさえ分かれば非常に簡単に開発できてしまうのでプロトタイプや小規模なプロジェクトにオススメ。

今回は以下の動画のように複数のクライアント間でリアルタイムに通信が行える簡易チャットをHTML+JavaScriptで作成してみます。

続きを読む

[Node.js] HTTP通信を行い外部サーバのファイルを取得する – request

Node.jsで外部とHTTPで通信を行います。
標準モジュールでも頑張ればもちろん可能ですが、ちょっと大変なので今回はrequestモジュールを利用してサクッと作ります。もちろん外部サーバからファイルを取得する以外にも、RESTful APIを利用するなどHTTPの上で行われる様々なことに利用できます。

続きを読む

GoogleのCloud Translation API v3を触ってみる

自然言語の翻訳APIに興味が出てきたのでちょっと触ってみることにします。ここではすでにテキスト情報になっており、日本語から英語など別の言語に自動的に変換してくれる物を想定しています。

Google Cloud Translate

Google Cloud Translateサイトより

すでに様々なサービスが世に出ていますが、今回はGoogleの翻訳APIを試してみます。新しいバージョン3(以降v3)ではJava、Python、Node.jsから利用できますが、今回はNode.jsで利用します。

続きを読む

[AWS] Node.js版 aws-sdkを設定する

Node.jsからAWSの様々なサービスを利用できるaws-sdkを使ってみます。
今回はインストールから利用開始できるまでの設定を行います。

AWS上の操作は大丈夫という方は、「Nodeから利用する」の項目からご覧ください。

続きを読む

[Node.js] Math.random()よりセキュアな乱数を生成する

JavaScriptで乱数を利用したい場合はMath.random()を使うことがほとんどだと思いますが、内部のロジック的に暗号などセキュアな用途には向いていないとされています。Node.jsでは標準モジュールであるcryptoを利用することでこの問題を解決することができます。

サンプルコード

結論から言うと具体的なコードは以下になります。getSecureRandom()関数を実行する度にランダムな整数を取得できます。

const Crypto = require("crypto");

function getSecureRandom(){
  const buff = Crypto.randomBytes(8);  // バイナリで8byteのランダムな値を生成
  const hex  = buff.toString("hex");   // 16進数の文字列に変換

  return ( parseInt(hex,16) );         // integerに変換して返却
}

続きを読む

[Node.js] 依存パッケージをアップデートする

最近のGitHubでは、リポジトリ上で依存している外部のライブラリやモジュールが古いままだと警告を出してくれる機能が追加されました。Webページ上でも表示されますし、git pushなどremoteと通信した際などにも確認できます。

$ git push
Total 0 (delta 0), reused 0 (delta 0)
remote: 
remote: GitHub found 6 vulnerabilities on katsube/gpwd's default branch (2 high, 4 moderate). To find out more, visit:
remote:      https://github.com/katsube/gpwd/network/alerts
remote: 
To github.com:katsube/gpwd.git
   35f20ab..5b85229  master -> master

これらを放置しておくとセキュリティホールの原因にもなりかねないので、定期的にpackage.jsonで指定しているバージョンを更新し、動作確認をする必要が出てきます。しかし1つつずつ最新のバージョンを手作業で確認するのは地獄ですよね。

そんなわけで今回はNode.jsで動作するプロジェクトで利用しているライブラリを簡単にアップデートする方法についてまとめたいと思います。
続きを読む

[Node.js] おみくじQRコードを作成する

前回はアニメーションするQRコードを作成しましたが、今回はその応用です。時間とともにQRコードの情報が変化する「おみくじ」を作ってみたいと思います。

雑にいうと「ルーレット」ですね。すごい勢いでQRコードの内容が切り替わっていく中、その一瞬をQRコードリーダー読み取ることで、利用者から見るとランダムな結果が得られるというヤツです。

続きを読む

[Node.js] デザインQRコードをアニメーションさせる

前回はQRコードの中央にちょっとした画像を貼り付ける「デザインQR」を作成しましたが、今回はその画像をアニメーションさせてみたいと思います。

続きを読む

[Node.js] デザインQRコードを作成する

今回はQRコードの真ん中あたりに画像を埋め込む「デザインQR」をNodeで作成してみます。

通常のQRでも機能自体に問題ありませんが、以下のような欲求が出てきます。

  • どんなデータが埋め込まれているか想像しづらい、
  • デザイン的に無粋(無機質)

今回はこれらを解消しようというお話です。

続きを読む

[Node.js] QRコードを生成する

今回はNode.js上で簡単にQRコードが生成できるnode-qrcodeを利用し、動的にQRコードを生成してみたいと思います。

QRコード自体は非常に便利ですよね。2次元バーコードよりも情報量が増やせるため様々な用途に利用できます。
しばらく前から日本はQRコード決済が世を賑わせていますが、個人的には早く滅んでくれないかなと思っていますがそれはまた別の話しw なんでFeliCaから退化しとんねんw

続きを読む

npmのパッケージ公開入門

Node.jsを使うメリットは膨大なモジュールを備えるnpmの存在が大きいところです。既存の物を利用するだけでも良いのですが、npmには誰でも簡単にモジュールを公開することができる仕組みが備わっています。

続きを読む