Node.js関連のことを調べてみた2020年12月31日

Node.js関連のことを調べてみた2020年12月31日

【冬休みオトナの自由研究】「2700円でスマートハウス化してみた」の巻

# きっかけ
年末年始だ〜。まとまった時間がとれる〜なんて思っていたら、ムクムクと制作意欲が湧いてきました。
そんな折に、家の洗面台の電球が切れ、Amazonで買おうなんて検索していたら見つけたのがこれ!!


【Amazon Alexa認定 LED電球】OHLUXスマート電球

え、スマートLED **2個で2700円!?**
アレクサとかにも繋がるし、ちょっと調べてみたらIFTTTとか、Tuya API(?)など利用して自動化もできそう。
**「これは安いぞ」**と思い大人の自由研究ということで、スマートホーム化で遊んでみることにしました。

元記事を表示

create-react-appで躓いたこと

`create-react-app` で Reactアプリを作成したときに、うまくアプリの起動ができなかったため、その経緯と対応を記載します。
##1. create-react-app の実行手順
初めに、`npm` と `node` の version確認を行います。

“`ruby:cmd
C:\Users\ユーザー名>npm -v
6.12.1
C:\Users\ユーザー名>node -v
v13.1.0
“`
`npm` と `node` がインストールされていることを確認したので、
`create-react-app` を実行します。

“`ruby:cmd
C:\Users\ユーザー名>npx create-react-app my-app

途中の表示は省略

We suggest that you begin by typing:

cd my-app
npm start

Happy hacking!
“`
`create-react-app` にて、Reactアプリが作成できました。

##2. エラーの検出と対応

`create-react-

元記事を表示

Sequelize-cli-esmでSequelize をESモジュールにする


## 目的
* nodeがESモジュールに対応したので、SequelizeをESモジュールで使用したい。
* フロントエンド、バックエンドともにimportで統一した方が理解しやすい。
* 初めて開発する人にfrontendはimport、backendはrequire()を使用する理由を説明しづらい。

—-
## 前提
サンプルでは下記を使用。sequelizeについて基礎的な知識があること。

* Node.js v14以降 (ESモジュール対応済み)
* sequelize:6.3.5
* sequelize-cli-esm:5.0.6 (ESモジュール版cli)
* sqlite3:5.0.0 (データベース)

* package.jsonに「”type”:”module”」を追加しnodeのデフォルトをESモジュールにする。


## 概要
1. sequelize-cli-esm (ESモジュール対応版Sequelize CLI)を利用して、ESモジュールでひな形を生成する
2. package.jsonに「”type”:”modul

元記事を表示

【アプリ開発 1】【Node.js express Docker】 Dockerを用いてNode.js Express MongoDB(mongoose)の環境を構築する【2020年12月】

※当方駆け出しエンジニアのため、間違っていることも多々あると思いますので、ご了承ください。また、間違いに気付いた方はご一報いただけると幸いです。

##Node.js Express MongoDBを用いたアプリ開発
受託開発でNode.js Express MongoDBを用いたアプリ開発を行うことになりました。
開発の中で得られた知見を、支障のない範囲で記録していきたいと思います。
アプリの内容はさておき、チームで開発するため、まずはDockerを用いて開発環境を構築を行います。

###構築する環境

– docker-composeを用いて、アプリコンテナ、mongodbコンテナを作成する。
– アプリコンテナとmongodbコンテナの接続テスト(mongoose)を用いて、テストモデルにデータ保存。
– mongo compassからデータの挿入を確認
– mongodbに認証を設ける。作成するユーザーの権限は”root”,”read”,”owner”
– データベースのパスワード等は環境変数で管理(gitignoreにてgitの管理から外す。)

※注意点
<アプリ名> <

元記事を表示

APIGWとlambdaでGoogleスマートホームアプリを作成してみた[前編]

#初めに
業務で初めてスマートホームスピーカーの開発を行うことになった
今回はその中でもGoogleHomeの開発について備忘録的に、実施事項を記載していく

##注意事項
本投稿記事は2020年12月時点の仕様に基づいた実装となります

##参考記事
[Google Assistant 公式ドキュメント](https://developers.google.com/assistant/smarthome/overview)

##この記事で書いていくこと
– cognitoを利用したアカウントリンクの実装 <- ★本記事ではこちらを実施 - APIGateway+lambdaを利用して、Googleスマートホームアプリのコード実装と各種設定 ##この記事で書かないこと - 基本的なGoogleスマートホームアプリの作成手順について ## 事前に用意しておくもの - Googleアカウント - Googleアカウントに紐づく(Cloud IAM)GCPアカウント #1. 事前設定 プロジェクトやアプリの初期セットアップについては、以下の記事を参考に実施しました [Googleス

元記事を表示

Node.js: Redis のデータを削除 (Delete)

“`js:redis_delete.js
#! /usr/bin/node
// —————————————————————
// redis_delete.js
//
// Dec/30/2020
//
// —————————————————————
‘use strict’

const util = require(‘util’)
const redis = require(‘redis’)

process.on(‘unhandledRejection’, console.dir)
// —————————————————————
async function main (options)
{
var argv = options.argv
const key_in=argv[2]
console.log (ke

元記事を表示

Node.js: Redis のデータを更新 (Update)

“`js:redis_update.js
#! /usr/bin/node
// —————————————————————
// redis_update.js
//
// Dec/30/2020
//
// —————————————————————
‘use strict’

const util = require(‘util’)
const redis = require(‘redis’)

process.on(‘unhandledRejection’, console.dir)

// —————————————————————
function get_current_date_proc()
{
const today = new Date ()
var ddx = (1900 + today.getYe

元記事を表示

Node.js: Redis のデータを作成 (Create)

“`js:redis_create.js
#! /usr/bin/node
// —————————————————————
// redis_create.js
//
// Dec/30/2020
//
// —————————————————————
‘use strict’

const util = require(‘util’)
const redis = require(‘redis’)

process.on(‘unhandledRejection’, console.dir)

// —————————————————————
function dict_append_proc(dict_aa,id_in,name_in,population_in,date_mod_in)
{
var unit_aa = {}

元記事を表示

nodejsでtail

electron(nodejs)上で特定のファイルをtailする

tailライブラリを使用する。
https://github.com/lucagrulla/node-tail

“`
$ yarn add tail
“`

“`App.tsx
import React, { useEffect, useState } from ‘react’
import { render } from ‘react-dom’
import { Tail } from ‘tail’

const tail = new Tail(‘file-path’)

const App = () => {
let [texts, setTexts] = useState([])

useEffect(() => {
tail.on(‘line’, (data : string) => {
texts = […texts, data]
setTexts(texts)
})

return () => {
tai

元記事を表示

Node.js: bluebird を使って Redis のデータを読む

次のプログラムを bluebird を使って書き換えました。
[Node.js: Async/Await を使って Redis のデータを読む](https://qiita.com/ekzemplaro/items/277fce6168dab745264f)

ライブラリーのインストール

“`bash
sudo npm install -g bluebird
“`

“`js:bluebird_read.js
#! /usr/bin/node
// —————————————————————
//
// bluebird_read.js
//
// Dec/30/2020
// —————————————————————
‘use strict’

const bluebird = require(“bluebird”)
const redis = require(‘redis’)
bluebird.pr

元記事を表示

JWTを用いた認証方法(JWT発行と検証方法)

# 概要

Webアプリにおいて、クライアント側のSPA(=Single Page Application)からのAPIの認証に、JWTを利用する場合を考える。サーバー側でのJWT発行と、APIに含めれて送られてきたJWTを検証する方法を説明する。

言語はNode.jsとする。

クライアント側でJWTの有効性を検証する、つまりクライアント側で復号用の公開鍵を保持することを想定し、JWTはRSAで署名するものとする(クライアント側での検証をしない場合は共通鍵で署名してもよいが、割愛する)。

JWTの発行と検証そのものは、OSSライブラリ「jsonwebtoken」を用いて簡単にできる。

ref. https://github.com/auth0/node-jsonwebtoken#readme

本記事では、JWT発行の際に必要となる秘密鍵の準備方法をメインに、作成した鍵ペアで実際にJWTを生成し、検証する様を説明する。

鍵ペアの生成はWindows10上で実施するものとする。一部WSL(=
Windows Subsystem for Linux)を利用する。※WSLのWind

元記事を表示

Google Calenadr APIをnode.jsで使ってみる

#google calendar APIからスケジュール取得
普段からgoogle calendarをよく利用しています。
google calendarにプライベートと仕事のスケジュールを全て管理しておき、お客様はスケジュールの空いている所にピンポイントで予約を入れられるので、スケジュール調整が自動化出来てとても便利です。

そこで、node.jsでgoogle calendar情報を取得させるコードを見つけたので実装してみる事にしました。
node.jsでgoogle calendarを扱う前に、Google APIsで認証キーの発行が必要です。

#Google APIsでAPIキー発行
公式ドキュメントのEnable the Google Calendar APIボタンをクリックしてキーを発行します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/820683/bb0b27ea-e8c5-e928-15d5-7c196b1a511d.png)

#Google API でプロ

元記事を表示

LINE公式でオンラインサロン作ってみたい

#LINEでオンラインサロン
先日、LINE Payの決済について学びました。
ネット検索をしていると、LINEpayのサブクス決済をLINE公式アカウントで実装するコードを公開しているサイトを見つけました。

最近、wordpressでオンラインサロン、会員サイトを作りたいという要望がとても多いので
LINE公式アカウント上でサブスク管理が出来、限られた会員だけが使えるLINE公式アカウントがあっても面白いのかなと思い実装してみる事にしました。

#動作の説明
まず、お友達登録をしてメッセージを送信
(LIFFで会員になるなどボタンを設置して、テキストを送るのも良いですね)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/820683/ab11e853-1ffd-3d83-32f2-fb82919b1bb7.png)

YESを選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/8206

元記事を表示

プログラミング超初心者がNode.jsについて理解しようとした

JavaScript関連の分野について学習をしていると Node.jsというものがどうしても目に入ってくるのですが、プログラミング初学者の私にとっては、わかりやすく解説しようとしてくれている記事を10本調べてみても結局Node.jsがなんなのかわかりませんでした。

もしかして同じような初心者の人いるのでは?と思い、理解が進んだ説明を書き留めておきます。
Node.js ってなんなん?ていつまで経っても解決しない方はぜひご覧ください。

### クライアントサイド JavaScript

Webクライアント(Webブラウザ)で動作するJavaScript。
ユーザーの目に見える場所(フロントエンド)の挙動にあれこれ指示を出す言語。
マウスオーバーするとポップアップが出る、webサイト上に画像のスライダーの挙動を実現させる、など。

Webサーバーとの情報のやり取りをしてくれる、言語のような使い方ができるというもの。

本来webページには、登録された情報を引っ張ってくる指示が出されてからサーバーに情報を取りに行って表示されるというプロセスがある。

### サーバサイド JavaSc

元記事を表示

TestCafe入門 覚えておいたほうがよさそうなこと

# TestCafeとは?
end-to-end testをnode.jsで自動化させたフレームワークです。

##記事内容
今回、キャプチャ、cvポイントのテストにあたって、
これ多分次も使うかも?というやつを紹介していきます。

## case.1 Basic認証のサイトのテスト
テスト対象サイトがBasic認証がかかっているサイトだと、
認証が通らなかった時の画面をスクリーンショットをとった結果が返ってくる。

こちらは[ドキュメント](https://devexpress.github.io/testcafe/documentation/guides/advanced-guides/authentication.html)に全てが載っていました。

“`js:screenshotExample.js
fixture(‘スクリーンショット’)
.page(‘https://example.com’)
// 追加
.httpAuth({
username: ‘example’, //ユーザー名を設定
password: ‘password’ //パス

元記事を表示

Node.js: Async/Await を使って Redis のデータを読む

“`js:redis_read.js
#! /usr/bin/node
// —————————————————————
//
// redis_read.js
//
// Dec/30/2020
// —————————————————————
‘use strict’

const util = require(‘util’)
const redis = require(‘redis’)

process.on(‘unhandledRejection’, console.dir)

// —————————————————————
async function main (options)
{
const redisUrl = ‘redis://127.0.0.1:6379’
const client = redis.c

元記事を表示

WebsocketとRedis Pub/Sub

Redisの[Pub/Sub機能](https://redis.io/topics/pubsub)を使うとWebsocketの通信情報を複数のサーバー間で同期させることができます。
スケールのためにWebsocketのサーバーを複数立てた場合、サーバー間で通信情報を同期する仕組みがないと、例えばチャットアプリケーションの場合、サーバーAに接続されたクライアントはサーバーBに接続されたクライアントとは正常にメッセージのやりとりができないことになってしまいます。
RedisのPub/Sub機能はそれを解消することができます。

![スクリーンショット 2020-12-28 20.44.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260824/6ae93db6-c8db-40b4-2373-e1682083728b.png)

## Redis Pub/Subとは

Pus/Subにでてくる主な概念です。

| 用語 | 説明 |
| — | —- |
| Publish | 発行すること

元記事を表示

【Node.js express Docker】 Docker環境変数を定義してnode.jsで読み込む方法

※当方駆け出しエンジニアのため、間違っていることも多々あると思いますので、ご了承ください。また、間違いに気付いた方はご一報いただけると幸いです。

何パターンかあるみたいなんですが、とりあえずシンプルに。

###app.env というファイルに環境変数を定義する。(名前は任意)

“`app.env
SECRET_KEY=himitu
“`
###docker-compose.ymlで上記ファイルを環境変数ファイルに指定

“`docker-compose.yml
env_file: ./app.env
“`
###node.js側で環境変数ファイルを読み込む

“`js
const env = process.env //envという名前でオブジェクトを格納。
“`

###取り出し方法
“`js
env.SECRET_KEY
“`

以上です。

元記事を表示

mongooseの使い方(webアプリ)

 mongoose(Node.js上でMongoDBを扱うためのライブラリ)を使うときに少し困ったので、二つのサイトを参考にして良いとこ取りをしてみました。すべてのコードを書くと、ちょっとしたwebアプリが出来上がります。ご指摘があればコメント欄にお願いします。

# 1.準備
VScodeを使いました。軽くて機能も豊富なのでお勧めです。
準備は以下の通りです。無い場合も簡単に入れられます。

* mongoose
* MongoDB
* node.js

VScodeを使う場合、拡張機能は以下のものを入れておきます。

* EJS language support
* ESLint
* MongoDB for VS Code

# 2.構成
VScodeのexpress-generatorというツールを使うと、Expressのアプリケーションの構造の原型が自動生成されるのでそこにフォルダ、ファイルを追加していきます。次のようなコードで生成します。

“`terminal
>npm install -g express-generator
>express –view=”ejs”

元記事を表示

PlayCanvas EditorのコードをGitで管理をするために使えるライブラリ「playcanvas-sync」

PlayCanvas Editorで開発をしていると、ソースコードの管理をPlayCanvas Editorのバージョン管理機能を使用しないで、Gitで管理をしたい場合があります。その際に使える便利なライブラリがplaycanvas/playcanvas-syncです。

ライブラリ(GitHub)
https://github.com/playcanvas/playcanvas-sync

このライブラリは、`PlayCanvas Editor`の`API Token`を使い、ローカルマシーンのアセットをPlayCanvas Editorへ`REST API`経由で同期できるライブラリです。

## 使い方
### PlayCanvas Editorのアセットをローカルマシンに同期する

#### インストール
`pc-sync`は`node.js`の環境で動くライブラリですが、`npm`では公開されていないのでGitHubのリポジトリからインストールする必要があります。

##### 1. リポジトリをクローンします。

“`zsh
git clone git@github.c

元記事を表示

OTHERカテゴリの最新記事