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

Node.js関連のことを調べてみた2020年08月16日
目次

javascriptの標準入力

##javascriptで標準入力からデータを受け取る

・標準入力からデータを受け取る

例)「hello」というデータが渡される

“`javascript
process.stdin.resume();
process.stdin.setEncoding(‘utf8’);

var lines = []; ; //標準入力から受け取ったデータを格納する配列
var reader = require(‘readline’).createInterface({ //readlineという機能を用いて標準入力からデータを受け取る
input: process.stdin,
output: process.stdout
});
reader.on(‘line’, (lines) => { //line変数には標準入力から渡された一行のデータが格納されている
lines.push(lines); //ここで、lines配列に、標準入力から渡されたデータが入る
});
reader.on(‘close’, () => { //受け取ったデータを用いて処理を行う
conso

元記事を表示

【第1回】「みんなのポートフォリオまとめサイト」を作ります~プロトタイプ作成編~ 【Cover】

ワイ 「この記事のカバーです」
https://qiita.com/kiwatchi1991/items/58b53c5b4ddf8d6a7053

ワイ 「暇やし久々Webアプリつくるか」
ワイ 「ニートでカネないから**0円で運用できる構成**にするで」

ワイ 「**AWS**とか**GCP**とかは**クラウド破産**が怖いから手ださない」
ワイ 「なんでAWSとかは**課金に上限設定**できないんやろか」

## 成果物
https://minna.itsumen.com

ワイ 「3日でつくった」

## リポジトリ

### フロントエンド
https://github.com/yuzuru2/minna_frontend

###バックエンド
https://github.com/yuzuru2/minna_backend

## 構成

フロントエンド: **Netlify**(月間100GBまで転送量無料)
バックエンド: **Netlify Functions**(月間125000回まで無料 いわゆる**FaaS**)
データベース: **MongoDB Atla

元記事を表示

Node.js で Google Cloud Storage に署名付きURLを使ってファイルアップロードする方法

# GCSにクライアントからアップロードする
画像、ドキュメント、映像、音声など様々な種類のファイルをクラウドストレージにアップロードするシーンは多々あります。そんなとき クライアント => バックエンド => クラウド の順番にアップロードしていると通信に時間がかかります。そこで、署名付きURLを使って クライアント => クラウド で直接アップロードするといい感じです。

AWSのS3は結構ドキュメントなり記事なりが充実していますが、GCS x Node.js のものがほとんどなく苦労したので残しておきます。

## 1.署名付きURLを発行(バックエンド)
署名付きURLはGCSのサービスクレデンシャルが必要なのでバックエンドで行います。フレームワークにexpressを使っています。

“`ts:signed_url.ts
import express from “express”;

export const post_signed_url = async (req: express.Request, res: express.Response) => {
const {

元記事を表示

【Node.js】APIサーバでマイクラ鯖をコントロールしよう #2

# はじめに

前回の記事は[こちら](https://qiita.com/smpny7/items/55e69d330198433ea82e)から

`Node.js`+`TypeScript`+`Express`を使って、Minecraftサーバをコントロールしていきます!
今回は基本的な部分である 起動・停止・再起動の機能を追加したのと、問題があった際にプレイメンバー(友人たち)と一緒に入っているDiscordのグループにアラートを送る機能、またログをDBに保存させる機能の3点を追加しました。

このソースコードはGitHubに公開しているので、修正点やアドバイス等があれば是非プルリクをお願いします。またMITライセンスにしておりますので、どうぞご自由にお使いください!

[GitHub ー smpny7] (https://github.com/smpny7/minecraft-api)

# 仕様
基本的には以下のことができるAPIサーバを作成する。(予定)

– サーバ稼働状況やバージョンの取得
– オンラインメンバーの一覧取得
– Discordへのエラー通知 **←

元記事を表示

【Node.js】package.jsonのscriptsをnpsとnps-utilsを利用して、綺麗に整理してマルチプラットフォーム対応

## はじめに
– npmやyarnを利用した開発の際に、以下の点が気になったため、良い方法があるか調査。
– package.jsonへ定義するscriptsの量や内容が多くなってしまい、管理が大変
– 柔軟性や拡張性が欲しいため、json以外のファイルで記述したい。
– マルチプラットフォームで利用できる環境にしたい。
– 調査の結果、[nps](https://github.com/sezna/nps)と[nps-utils](https://github.com/kentcdodds/nps-utils)の2つのライブラリを発見。
– 今回は、上記2つのライブラリの概要や手順、設定テンプレートを記述する。

## 手順

### プロジェクト準備
– npmやyarnを利用している既存Node.jsプロジェクトを利用する。
– **※新規の場合、package.jsonでscriptsを管理するものを各自作成**
– 今回は、下記の`package.json`の例を置き換える。

“`json:置き換え対象のpackage.json
{
“scripts”

元記事を表示

Terraformを使ってAPI Gatewayとlambda(aws-serverless-express)でAPIを構築する

## はじめに
最近サーバーサイドやインフラを勉強中の新米エンジニアです。
勉強のためにnodejsとexpressでWebAPIを構築してローカルでモックとして利用することが結構あるのですが、お盆休みを使ってデプロイ方法を勉強しました。
AWSのAPI GatewayとLambdaを利用します。業務でALBとLambdaの組み合わせは使っているのですが、個人でやるならコスト的にAPI Gatewayかなと思い選定しました。

## 前提
– terraform&aws cliの環境構築済み
– nodejsの環境構築済み

## API Gateway
https://aws.amazon.com/jp/api-gateway/
>フルマネージド型サービスの Amazon API Gateway を利用すれば、開発者は規模にかかわらず簡単に API の作成、公開、保守、モニタリング、保護を行えます。API は、アプリケーションがバックエンドサービスからのデータ、ビジネスロジック、機能にアクセスするための「フロントドア」として機能します。API Gateway を使用すれば、リアルタ

元記事を表示

ツンデレのGoogleアシスタントをLINEボットにする

何か「OK、Google」したいときに、Googleアシスタントを立ち上げるのも寂しいし、ロボットから味気ない応答をもらっても寂しい。。。

Googleアシスタントは、テキスト入力してテキストで応答をもらえるのでその機能を使うこととし、さらに応答をツンデレっぽく語尾変換してみました。
LINEアプリのフレンドから応答が来れば、より本物感が出てきます。

構成はこんな感じです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261826/63ea1c69-e695-a6cc-b70d-42518ffbbb5c.png)

毎度の通り、GitHubに上げておきます。

poruruba/Chatbot_Tsundere
 https://github.com/poruruba/Chatbot_Tsundere

#GoogleアシスタントAPIを有効にする

こちらを参考に進めます。

googlesamples/assistant-sdk-nodejs
 https://gith

元記事を表示

【今日から始めるAWS】Serverless Frameworkを使ってLINEのbotをつくる

#はじめに
30代未経験からエンジニア転職をめざすコーディング初学者のYNと申します。お読みいただきありがとうございます。
[前に作ったLINEのオウム返しbot](https://qiita.com/theFirstPenguin/items/8168e8ba3d65e34c24e0)を少しだけ発展させた内容でbotを作りましたので学習ログとして投稿させていただきました。

#Bot内容
下記のように、ユーザーが送ったタンパク質摂取量を記録できるbotをつくりました。
↓一応友達登録もできます。(思いついたタイミングで勝手に消去する可能性があります。)
![スクリーンショット 2020-08-14 20.27.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572098/852d404a-644b-254c-f1e3-24b1181bc842.png)

![スクリーンショット 2020-08-14 19.17.13.png](https://qiita-image-store.s3.ap-n

元記事を表示

【Alexa】新機能 hostedスキルのコードを理解する

#はじめに
これまでβ版だったAlexa-hostedスキルが正式版?となったのでそれを使ってアレクサスキルを作って学習します。この時点で筆者が超初心者のため難しい説明はしません、というか出来ません。

#準備
こちらに準備方法を用意しています。
ここからテストが出来る段階まで進めておいてください。

[参考](https://qiita.com/vram/items/381f44de71d45ce12202)

#コード全体を理解する
テンプレートのHelloWorldのプログラム部分を省略してみました。

“`index.js
const Alexa = require(‘ask-sdk-core’);

const LaunchRequestHandler = {
// 省略
};
const HelloWorldIntentHandler = {
// 省略
};
const HelpIntentHandler = {
};
const CancelAndStopIntentHandler = {
// 省略
};
const SessionEnded

元記事を表示

SwitchBotの温湿度計の値をNode.js(BLE)を使って取得する

## 環境構築
balenaを使ってしまっていますが、debian環境なので `install_packages` はそのまま `apt install` 等で置き換えてください。

またNode.jsでBLEを扱うためのnobleというライブラリを今回は使いますが、本家よりも `@abandonware/noble` の方がメンテされているので、今回はこちらを使います。

“`Dockerfile:Dockerfile
FROM balenalib/%%BALENA_MACHINE_NAME%%-node:12-buster-build as build
RUN install_packages bluetooth bluez libbluetooth-dev libudev-dev
RUN npm install @abandonware/noble rxjs

FROM balenalib/%%BALENA_MACHINE_NAME%%-node:12-buster-run
WORKDIR /work
COPY –from=build ./node_modules ./nod

元記事を表示

aptでlibssl1.0-devをインストールするとrosが削除された

##概要
もともとrosが入っていたubuntu18.04のPCにnodejsをインストールしたくて、libssl1.0-devが必要と言われたので、以下のコマンドをうったらros関連を大量にremoveされた。

“`
apt install libssl1.0-dev

Start-Date: 2020-08-06 11:19:07
Commandline: apt install libssl1.0-dev
Requested-By: solitude_under_the_blue_sky (1000)
Install: libcurl4-gnutls-dev:amd64 (7.58.0-2ubuntu3.9, automatic),
libssl1.0-dev:amd64 (1.0.2n-1ubuntu5.3)
Remove: ros-melodic-image-proc:amd64 (1.15.0-1bionic.20200530.124945),
ros-melodic-rviz-visual-tools:amd64 (3.8.0-4bionic.20200624.

元記事を表示

Cloud Functions を Node.js 10 移行する

久しぶりに Cloud Functions のコンソール画面を開いたら下記のような警告が来ていました。どうやら Node.js 8 が非推奨になり2021年の3月中旬には全面的にサポートされなくなるとのことなので、Node.js 10 へ移行します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292456/55bda261-ff67-2d9f-58d4-2c711d65b39c.png)

https://cloud.google.com/functions/docs/migrating/nodejs-runtimes?hl=ja

## 移行していく

まずは Node.js 10 にバージョンアップするので、Deploy・エミュレーションができるように最新の Firebase CLI をインストールします。

“`
$ npm install -g firebase-tools@latest
“`

次に `functions` > `package.json` で

元記事を表示

【Node.js mysql】mysql接続 データを取り出す

##【ゴール】
mysql接続 データを取り出す

##【開発環境】
■ Mac OS catalina
■ Homebrew 2.4.9
■ mysql Ver 8.0.21

##【実装】

###appを作成
****homebrewのインストールが事前に必要です***
****mysqlのインストールが事前に必要です***
*mysqlのコマンドも合わせて覚えれます

“`mac.terminal
// ディレクトリ作成

$ mkdir js
$ cd js
$ npm init -y
$ npm install express
$ npm install ejs
$ npm isntall mysql
$ touch server.js
$ touch app.ejs

// mysql でDATABASEを作成

$ mysql -u root -p
$ mysql> CREATE DATABASE JS;
$ use JS;
$ CREATE TABLE User (id int auto_incremet, name char(10));
$ INSERT IN

元記事を表示

Node.jsのインストール

#Node.jsのインストール
##環境
OS: Windows10 Pro
Node.js: v12.18.3

##手順
1. [Node.js公式サイト](https://nodejs.org/ja/)へアクセスして推奨版をDL
2. DLしたmsiを実行
3. コマンドプロンプトでバージョン確認

###1.公式サイトへアクセス
[https://nodejs.org/ja/](https://nodejs.org/ja/)へ移動して推奨版を選択します。
![nodejs.org_ja_.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684640/358965b4-c09f-41dc-80dd-2000ff550050.png)

###2.DLしたmsiを実行
![msi_bn.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684640/7fe2fd2b-07b0-5421-c238-7e8c1ed5605

元記事を表示

プロ野球選手のリアルタイム成績を返すLINE botを作った(LINE bot+heroku)

# 概要

**現役プロ野球931名(2020/8/14現在)のプロフィール&今年度成績を教えてくれるLINE bot**を作ったという話。

# 経緯

自分はプロ野球が好きです。

野球を見てると、自分や相手チームの選手の成績や出身高校が知りたくなる時がありました。
ただ、**気になった選手の情報を欲しいときにすぐに入手するのは意外に難しい**です。

* 選手名鑑の本だと、前年度成績しか載ってない…
* 速報アプリだと、調べたい選手の情報にたどり着くのに時間がかかったり、欲しい情報に対して情報過多だったりする…
* チームと背番号しかわからない選手だと、調べること自体が難しい…

そんな中、1年ほど前に[Bリーグの選手情報を返すLINE Botを作った](https://kta-basket.hatenablog.com/entry/2019/02/08/005551) の記事を拝見しました。

* 普段から使っている**LINEが選手名鑑になる! 本を取り出さなくてもいい!**
* 出てくる情報がシンプルで、**欲しい情報が一目瞭然!**
* **選手名が分からなくても、チーム

元記事を表示

node.jsを使ってみる

node.jsをインストールしてみる。
参考:https://www.sejuku.net/blog/82322
# 1. ダウンロード
– https://nodejs.org/ja/
– https://nodejs.org/dist/v12.18.3/node-v12.18.3.pkg
– node-v12.18.3.pkgを実行してインストール。

実行してみる。

“`
% node –version
v12.18.3
“`

# 2. Hello, world!
“`hello.js
console.log(‘Hello, world!’)
“`

“`
% node hello.js
Hello, world!
“`

と、無事実行できた。
参考:https://qiita.com/loremipsumjp/items/3d32a44fe80c9a2febbe

# 3. npmを使い、expressをインストールしてみる
参考:https://qiita.com/tarotaro1129/items/e02fbb911dc4af412ad0
npmとは、パ

元記事を表示

【Alexa】新機能 hostedスキルで作成する

#はじめに
2020年7月頃よりβ版だった**Alexa-hostedスキル**が正式公開となりました。※なったはず。
ここでは新しく実装されたAlexa-hostedスキルを使ってスキルを作っていきます。

Amazon開発者ポータルを使用するためにAmazonデベロッパーアカウントが必要です。
あらかじめ環境を整えてから読んでください。

#Alexa-hostedスキル以前の方法
Alexa-hostedスキルが正式に公開されるまではAlexaとのインターフェイスは**Alexa**スキル、そのプログラムの実装は**AWS**にて行われていました。

|手段|コンソール|アカウント|
|:–:|:–:|:–:|
|Alexaにスキルを用意する|Amazon開発者ポータル|Amazonデベロッパー|
|Alexaにプログラムを用意する|AWSコンソール|AWSアカウント|

そのため**Amazon開発者ポータル**と**AWSコンソール**を行き来して開発する必要があります。
そして**Amazonデベロッパー**アカウントのほかに**AWSアカウント**も必要になります。

元記事を表示

`npm token create –json`をchild_processで実行しつつ、結果のトークンはコンソールに表示しない方法

`npm token create`をNodeJSのプログラム中から呼びたくて、

execだとプロセスが終わるまで帰ってこないので、対話的なプログラムには向かない

“`javascript:帰ってこない
const exec = child.exec(“npm token create –json”, (err, stdout, stderr) => {
console.info({ err, stdout, stderr })
})
“`

非同期処理を書きたくないのでspawnSyncを使おうとした。

やりたいことは

1. パスワードの入力を求めるメッセージはコンソールに表示したい
2. ユーザーが入力するパスワードはコンソールに表示したくない
3. 最終結果は(秘密のトークンを含むので)コンソールに表示したくない

である。
とりあえず

“`javascript
const child = require(‘child_process’)
const options = {
encoding: “utf-8”,
stdio: “inherit”
}
co

元記事を表示

Node.jsのインストールからReactNative+Expo+Typescript環境を構築しようね(2020/08/13 LTS対応)

#初学者との開発プロジェクト始動!

初学者との開発プロジェクトを始めるにあたって
手順書をざっくり作成したのでここに書き留めます。

##概要
– Node.jsインスト―ル
– Expoインスト―ル
– ReactNative+Typescriptでプロジェクト作成

##バージョン(記事作成時LTS)

| – | Version |
|:———-|————:|
| Node.js | 12.18.3 |
| npm | 6.14.6 |
| expo | 3.24.0 |

##Node.js
①最新Nodeのインストーラをダウンロード
https://nodejs.org/ja/download/releases/

②実行
node.jsがインストールされているのでアプリ実行
→真っ黒の画面が出たらOK(以下でnodeと呼びます)

③確認
nodeにて「node –version」と入力してEnter
→v12.18.3と出力されたらOK

##次にExpo!!
#

元記事を表示

JavaScriptのイベントループを理解する

## イベントループとは?

JavaScriptは**シングルスレッド**です。一度に実行できるタスクは1つだけです。つまり、

– 2つ以上の処理を並行して実行できない
– 2つ以上の関数を同時実行できない

ということになります。

例えば、10秒掛かるタスクを実行すると、他のタスクは10秒間待機しなければなりません。
JavaScriptはデフォルトでブラウザのメインスレッドで実行されるため、UI全体が動かなくなります。

では、**イベントループ**について解説していきます。
まず、V8などのJavaScriptエンジンやブラウザには、下記の画像の様に**コールスタック(Call Stack)**、**ヒープ(Heap)**、**タスクキュー(Task Queue)**、**Web API**と呼ばれる4つのメカニズムを備えています。

![JavaScriptエンジン](https://meetup-jp.toast.com/wp-content/uploads/2019/06/083_01.png)

まずは、このメカニズムを簡単に説明していきます。

### Web A

元記事を表示

OTHERカテゴリの最新記事