Node.js関連のことを調べてみた2019年11月25日

Node.js関連のことを調べてみた2019年11月25日

google-home-notifierを使ってGoogleHomeに喋らせる

※こちらの記事は株式会社ギフトパッド「システム開発部技術委員会」の11月発表内容です

GoogleHomeは基本的にこちらから「OK!Google」と話しかけることをトリガーに何かしらの処理を行ってくれますが、こちらからの指示がなければただの置物です。
今回は「google-home-notifier」というnpmパッケージを使って、Slackで投稿した内容をGoogleHomeが発言してくれるようにします。

#### google-home-notifier
https://github.com/noelportugal/google-home-notifier

#### インストール
“`
npm install google-home-notifier
“`

#### 実装
「google-home-notifier」READMEのサンプルを参考に、通知用のjsを作成
とりあえず喋る言葉を固定にする

“` js
const googlehome = require(‘google-home-notifier’);
const language = ‘ja’;

g

元記事を表示

初めてのAuth0ハンズオン

# はじめに
この記事は、初めてAuth0を触る方がAuth0を利用した認証・認可の基本的な実装方法を短時間でご習得頂くことを目的とした簡易チュートリアルです。

# 事前準備
事前に下記をご準備お願いします。

– MacまたはWindows PC
– Chrome
– GitHubのアカウント、Git CLI
– Node.js, Node Package Manager
– SMSが使える携帯電話
– 通信制限がかかっていないインターネット環境

# ハンズオン
## Auth0無料アカウントの取得〜テナントの作成
Chromeで`https://auth0.com`にアクセスして画面右上の”SIGN UP”を押します。任意のEmailアドレスでアカウントを作成します。アカウントが作成されると開発テナントが作成され、このアカウントがテナントの管理者となります。

右上の顔写真の右下矢印をクリックして”Create tenant”を選択します。

WebSocket についてまとめてみる

# WebSocket とは?

Web 上でクライアント(Web ブラウザ)・サーバー間を`常時接続にしておいて、双方向通信を低コストで`実現するための技術規格。プロトコル。

# WebSocket の何がありがたいのか?

近年 SNS アプリなどではインタラクティブで `リアルタイム` なやりとりが求められるようになってきました。

例えば、チャットアプリでは、複数のユーザーが同じページを見ているような状況で、誰かの発言が他のユーザーのページにも`ページのリロードなしでリアルタイムに更新`されるようにしたい、ということがあると思います。
この `リアルタイムに更新` という機能を実現するためには、誰かが発言したということを `サーバーからクライアントに伝える必要があります。` このような機能を WebSocket は実現します。

`クライアントからのリクエストがなくても、常時接続しているのでサーバーからクライアントに好きなタイミングで通信ができる` ということを実現できるところが WebSocket の魅力です。

# HTTP ではダメなの?

Web サイトを閲覧するする

元記事を表示

nodebrewコマンドのメモ

# nodebrewめも
「なにインストールしたんやったっけ?」
「切替ってどうやるんやったっけ?」
勉強のときこういうこと多いので備忘録用のめもです。
なのでインストールは終わってる前提です。ご了承ください。。。

### インストールできるバージョンを確認したい
“`
$ nodebrew ls-remote
“`

### インストールしたい
* バージョンを指定する方法
* エイリアスで指定する方法

があるようです。

#### バージョンを指定する方法
“`
$ nodebrew install [version] # 例えば [version] -> v12.0.0
“`

#### エイリアスで指定する方法
安定版が欲しい場合

“`
$ nodebrew install stable
“`

最新版が欲しい場合

“`
$ nodebrew install latest
“`

※安定版と最新版の違い
安定版: 安全。
最新版: 新しい機能が盛り込まれている。バグが残ってることもある。
のような感じ

### バージョンを指定してNodeを使いたい
`

元記事を表示

【自分用】Node.jsアプリの設計の手順

Twitterのようなアプリを設計する際

###①要件定義
<機能要件>
投稿を作る。
投稿を編集する。
投稿を削除する。
投稿をお気に入りとする。
投稿に対してコメントをする。

などの基本的な機能を定義することを言います。

<非機能要件>
機能に付随する要件やセキュリティ要件

などを定義する。

###②用語定義
上記の要件定義であがった用語を定義する。

|用語 |英語表記 |意味    |
|:——–:|:———-:|:———|
|ユーザー | user | 投稿の利用者 |
|投稿 | tweet | 投稿をすること |
|お気に入り | favorite | 投稿をお気に入りに登録すること |
|コメント| comment |投稿に対してコメントをすること|

用語の表す対象の意味付けをしっかりすることで、思わぬ実装ミスを防ぐことができます。

###③データモデリング
ER図などを使い用語の関係性などを定義する。
用語設計をすることによって、要件に漏れがない

元記事を表示

nvmでdefaultバージョンを設定してもsystemのnodeが使用されてしまう

nvmでnodeのバージョン管理をしたいのだが、`nvm alias default v*.*.*`でデフォルトのバージョンを設定しても、新しいターミナルを開くとsystemのnode(brewでインストールしたnode)が使用されてしまう問題が起こった。
`nvm ls`を実行するとdefaultではなく、systemを指してしまうのだ。

“`
$ nvm ls
v12.13.1
-> system
default -> lts/* (-> v12.13.1)
node -> stable (-> v12.13.1) (default)
stable -> 12.13 (-> v12.13.1) (default)
“`

## 実行環境
macOS 10.14.6
nvm 0.35.1(node v12.13.1をインストール済み)
brewでインストールしたnode v13.1.0

## 原因
もともと、yarnをbrewでインストールした時にnodeが一緒にインストールされてしまい、それがターミナルを開くとnvmでインストールしたnodeより優

元記事を表示

とりあえずnode.jsでES6記法(importなど)を使ってみたい時

## 概要
とりあえずnode.jsを勉強してみようと思いコードを書き始めました。
その中で“`import“`を使おうと思ったのですがエラーとなってしまいました。

babelなどを使わないといけないのかと思い、いろいろ調べていたのですが実際には簡単にできます。
試しにnode.jsを書いてみたいという場合に便利です。

## どうやるのか
### 方法1
1. jsファイルの拡張子を、`.js`から`.mjs`に変更
2. `–experimental-modules`オプションを付けて実行する

“`
node –experimental-modules index.mjs
“`

これだけでES6記法でnode.jsで書いたjsファイルを実行することができます。

https://nodejs.org/api/cli.html#cli_experimental_modules

### 方法2
1. `esm`というモジュールをインストールします

“`
yarn add esm
“`

2. 次のように実行します

“`
node -r esm index.

元記事を表示

ESLint v6.7.0

前 [v6.6.0](https://qiita.com/mysticatea/items/0a77713cff42d84d85c7) | 次 (2019/12/21 JST)

ESLint `6.7.0` がリリー

元記事を表示

喉頭がんの治療プロトコルをNode.jsでVueに表示しHerokuにデプロイ

##概要
プログラムの勉強を始めて4か月ほどの開業医です。

病気のおすすめの診断法や、治療法などを記載した診療ガイドランというものがあります。その中に治療の進め方(治療計画)を示す、**治療プロトコル**というものがあります。病気の程度や治療の効果によって、治療の進め方が枝分かれしていくものなので、ifとelseさえ知っていればプログラム初心者でも治療プロトコルが簡単に作成できます。

昔私が書いた喉頭がんの診療プロトコルの医学書の内容を基に勉強したばかりのVueを少し使ってNode.jsでプログラミングしHerokuにデプロイしました。

##実装
質問に答えていくと喉頭がんの治療の進め方が分かるWEBアプリ。

##動作

元記事を表示

Greengrass(v1.9.4)上でNode.js(v8.10)のLambdaのデプロイができない問題の解決法

※追記
Greengrass Nodejs SDKのGitHubに書いてますね。。
https://github.com/aws/aws-greengrass-core-sdk-js

> Rename the file to nodejs8.10
> Make sure the file is not a symlink.

シンボリックリンクもだめらしいです。

GreengrassにNode.js(v8.10)のLambdaをデプロイすると、エラーになります。

“`
Deployment xxxxx of type NewDeployment for group xxxxx failed error: worker with xxxxx failed to initialize
“`

ログを確認すると、`nodejs8.10`というバイナリがないよと言っているようです。

“`console:/greengrass/ggc/var/log/system/runtime.log
[ERROR]-runtime execution error: unable to

元記事を表示

sequelizeパッケージを初心者が使ってみる。

###sequelizeとは
Node.jsにはデータベースを利用するためのパッケージがたくさん存在します。
しかし、データベースを扱うにはSQLというデータベースを操作する言語が必要になります。
sequelizeというパッケージを使えば、SQLを知らなくても、Node.jsでデータベースを利用することができます。

#####さらに詳しく
sequlizeは公式によるとORM(Object-relational mapping, オブジェクト関係マッピング)と呼ばれるものらしいです。
以下は引用です。

>オブジェクト指向の概念とリレーショナルデータベースの概念を橋渡しする役割がORMです。オブジェクト指向とリレーショナルデータベースの相性はそれぞれの概念が異なるため、相性が良くありません。なぜなら、オブジェクト指向では、データをオブジェクトとして扱うのですが、リレーショナルデータベースではデータを2次元の表として扱うためギャップが生じてしまいます。ORMを利用することによって、オブジェクトとデータベース問い合わせの相互変換を行います。
**引用:[ORMとは?](https:/

元記事を表示

Mocha, Chaiを使ったテストの表記パターン

# TypeScriptでMocha, Chaiを使ったテスト駆動開発
## インストール
“`bash:TDDをサポートしてくれるパッケージのインストール。
$ npm install chai mocha ts-node @types/chai @types/mocha –save-dev
“`
参考: [Testing TypeScript with Mocha and Chai](https://42coders.com/testing-typescript-with-mocha-and-chai/)

しかし、私の場合なぜかTypeScriptをグローバルインストールしているにも関わらず、テスト実行時に「typescriptモジュールが見つからない」とエラーが出てしまうので、ローカルに開発インストールを行いました。よってコマンドは以下になります。

“`bash:テスト実行時のエラー例
✖ ERROR: Cannot find module ‘typescript’

# typescriptが見つからない、とエラーが出る場合のインストール。
$ npm insta

元記事を表示

puppeteerを用いた要素の取得(page.$())

nokogiriの場合はとりあえず取ってくるため、取ること自体に難しさは無いが、puppeteerの場合はメインはサイト上の処理を自動化するのが目的であるため、データを取り出す場合は取り出す処理を書く必要がある。

とりあえずこんな感じでやればできる

“`js

const selector = ‘ul > li > a’;
const elementHandle = await page.$(selector);
const value = await (await elementHandle.getProperty(‘textContent’)).jsonValue();
“`
# `page.$(selector)` とは
puppeteerのgithub(pageselectorの説明部分)
https://github.com/GoogleChrome/puppeteer/blob/v2.0.0/docs/api.md#pageselector

elementHandle.$(selector)
– `selector` \ A selector

元記事を表示

WSLのUbuntu環境でyoutube音楽をWeb操作する(おまけでradikoとサイマルラジオ)

#はじめに
●youtube音楽をWEBで操作し、PCスピーカで再生できるようにする。
(Googlehomeで声で操作するのWeb操作版です)
【操作例】WEBから「クリスマスイブ」と入力する
![WEB.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222582/25dc5da5-6b02-b62c-0a1f-81b6b5894f25.png)

#環境
●Windows10 HOMEのPCにWSLのubuntuをインストールする。
●ubuntuでapache2,npm,node.js,youtube-dl,mplayer,mpvをインストールする
●WSLのubuntuでpulseaudioでPCのスピーカを使うようにする
●Windows側でpulseaudioサーバのインストールが必要です
 https://www.cendio.com/thinlinc/download の 「Client Bundle」のリンクからダウンロードできます
●radikoを再生するには、その環境構築(radi

元記事を表示

Node.jsで簡易的なHTTPサーバーを起動 / sleepと組み合わせ

Node.jsのバージョンは`v12.13.1`です。

“`js:server.js
const http = require(‘http’)
server = http.createServer((req, res) => {
res.writeHead(200, {‘Content-Type’ : ‘text/plain’})
res.end(‘Hello World’)
})
server.listen(8080)
“`

起動。

“`bash
node server.js
“`

sleepと組み合わせる。(デバッグ用)

“`js
const http = require(‘http’)

SLEEP_MSEC = 3000

server = http.createServer((req, res) => {
setTimeout(() => {
res.writeHead(200, { ‘Content-Type’: ‘text/plain’ })
res.end(‘Hello World’)

元記事を表示

OpenShiftによるJava EEアプリケーションのモダナイゼーションをやってみた(2)

# この投稿の前提
この投稿はQiitaの別投稿「[OpenShiftによるJava EEアプリケーションのモダナイゼーションをやってみた。](https://qiita.com/daihiraoka/items/23cfaed7662d36ccc7ab) 」で作成した、ビジネスロジック用のOpen Libertyで実行されているJava EEアプリケーションに加えて、今回で患者向けUIのNode.jsアプリケーションをMiniShiftに作成して、結合するのが今回の範囲になります。
![minishift-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/209170/75943dc0-f532-8040-984c-cf60ea4d0089.png)

今回作成する患者向けUIのNode.jsアプリケーションはモックモードで動作するので、この記事だけで試せますが、ユースケースは別記事に書いてあるので、[OpenShiftによるJava EEアプリケーションのモダナイゼーションをやってみた](https

元記事を表示

Puppeteerで作ったスクリプトを実行可能ファイル化する

# TL; DR
– Node.jsを実行可能ファイルに変換するのに[Pkg](https://github.com/zeit/pkg)を使用した。
– `puppeteer.launch()`のオプションに`executablePath: /Applications/Google Chrome.app/Contents/MacOS/Google Chrome`を指定する。要は普段使っているであろうGoogle Chromeのパスに変更してあげる必要がある。
– 共有先のPCによっては実行権限が無かったりするので、`chmod`で付与してあげる。

## 課題
– ブラウザ上で行っていた管理者限定の単純作業を自動化したい。

## やったこと
– ブラウザ操作はPuppetterでやる。ログイン情報とかはscriptの実行時に尋ねるようにする。今回は[enquirer](https://github.com/enquirer/enquirer)を使った。
– 自分の権限的に見れない画面だったので、保存したHTMLファイルを貰って、それをローカルサーバーで開き、Puppetterの自

元記事を表示

IBM Cloud FunctionsでAPIを作成する

# はじめに
IBM Cloud Functions上に作成したActionを、APIとして呼び出す方法にはいくつかあります。
WEBアクションを有効にするのが一番お手軽ですが、指定出来ることが少なく、
APIゲートウェイを使用するの若干手間がかかりますが、より複雑な指定が可能になります。

以下では、それぞれの方法での作り方について、覚書としてまとめます。

# サンプルのアクション
APIとして呼び出して実行するサンプルのアクションは次の通りです。
パラーメータとして渡された`name`に対して、`Hello name!`を返します。
`name`の指定がなかった場合は、`Hello Someone!`を返します。

“`javascript
function main(params) {
let name = (params.name) ? params.name : ‘Someone’;
return {message : ‘hello ‘+name+’!’ };
}
“`

# 方法1.Webアクション
一番簡単な方法は、Webアクションを有効にすることです。

元記事を表示

Create React Appで作成したReactアプリをGoogle App Engineにデプロイする際の設定

Create React Appで作成したReactアプリをGAEにデプロイする際に、少し設定ファイルの工夫が必要だったので共有します。

## ざっくりした手順

1. `yarn run build`や`npm run build`でリリースビルドを作成
2. `app.yaml`でデプロイ時の設定を指定
3. `gcloud app deploy`でGAEにデプロイ

通常これらはCI上で行われるべきものですが、手元の開発環境でも実行できます。
(今回、手順3.の詳細は説明しません)

## `yarn build`でリリースビルドを作成

Create React Appで作成したReactアプリでは、`build`コマンドを実行することで、簡単にリリースビルドを作成することができます。
リリースビルドの成果物はだいたい以下のような構造になっています。

“`
build
├ static
└ js
├ ~~~~.js
├ …
└ ~~~~.js
├ asset-manifest.json
├ favicon.ico
├ manifest.js

元記事を表示

シンプルなサーバーをDocker/Node.jsで構築してみた

# はじめに
業務でログ監視システムの構築を行い、その際にログを出力するだけのシンプルなサーバーをDocker/Node.jsで作りました。
スタブ用途等ですぐに建てれる、サーバーの雛形としてお使い頂ければと思い、記事投稿に至りました。

# 前提
`Docker` / `docker-compose`を用いているので、インストールをお願いします。
インストール手順は、他の方がいっぱい書いておりますのでそちらをご参考に。

# リポジトリ
下記のリポジトリになります。
[simple_server](https://github.com/inagacky/simple_server)

# 使い方
`docker-compose build` や `docker-compose up` 等々は、
当リポジトリでは シェルスクリプトでラップしています。

## ビルド手順
下記のシェルを実行し、イメージのビルドを行います。

“`
/bin/sh build.sh
“`

上記のシェルを実行すると、イメージの構築が出来ます。

“`
% docker images
REPOSITO

元記事を表示

OTHERカテゴリの最新記事