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

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

Beebotte の REST API と MQTT の組み合わせを公式情報を見つつ試す(curl と Node.js)【2022年4月版】

過去に、以下の記事でも扱った [Beebotte](https://beebotte.com/) で、REST API と MQTT を組み合わせて使う話です。

– [MQTTブローカーとしても使える Beebotte で MQTT.js を使った Pub/Sub(Node.js で実装)【2022年4月版】 – Qiita](https://qiita.com/youtoy/items/e2539558b67e708b905d)
– [Beebotte のダッシュボードで M5StickC から送った数値をグラフ化する(UIFlow + MQTT でデータ送信) – Qiita](https://qiita.com/youtoy/items/b65ddfc89a03117a0ee3)

## 通信方法に関するドキュメントを見てみる
### Beebotte の MQTT
MQTT を使う話は、冒頭でも掲載していた[過去記事](https://qiita.com/youtoy/items/e2539558b67e708b905d)をご参照ください。

### Beebotte の R

元記事を表示

モジュールバンドラーってなに?

## モジュール化とは
モジュール化とは、別ファイルに分割すること。コードの管理をしやすくすることで、大規模開発などにも対応できる。
* 他のコードとの依存性を少なくし、変更、拡張がしやすくなる
* 変数名の競合をさせないことで、名前空間の汚染を防ぐことができる
* 機能ごとにモジュール化するため、再利用がしやすい

## モジュールバンドラーとは

> **モジュールバンドラーは複数のJavascriptファイルの依存関係を解析して、一つのファイルとしてまとめてくれる(バンドル)機能**があります。モジュールバンドラーによってバンドルされたファイルはそのまま読み込ませて使用することができます。これにより、開発者はファイルの依存関係を気にすることなく、Javascriptファイルを使用することが可能になりました。依存関係を気にすることがなくなったおかげで、大規模な開発などでもJavascriptを導入しやすくなりました。
>
引用:[https://it-kyujin.jp/article/detail/1675/](https://it-kyujin.jp/article/deta

元記事を表示

Firebase Authenticationを使ってAPI Gatewayに認証機能を付与する

# 概要
Firebase Authenticationに登録されているユーザーだけがAPIを使えるようにするため、
エンドポイントであるAPI Gatewayにオーソライザーを設定します。

処理の流れは以下の通りです。
1. **Firebase Authentication SDK**を使用し**IDトークン**を取得する
2. 取得したIDトークンをヘッダーに付与し、APIGatewayのエンドポイントへリクエストを送る
2. API Gatewayの**オーソライザー**が**Firebase Admin SDK**を使用しIDトークンを検証する
2. 認証できた場合、Lambda関数を実行する

# 対象読者
Firebase Authenticationの機能が分かる方
API GatewayとLambdaでAPIを作成

元記事を表示

MQTTブローカーとしても使える Beebotte で MQTT.js を使った Pub/Sub(Node.js で実装)【2022年4月版】

この記事では、以下の REST・WebSocket・MQTT が扱えるサービスの「[Beebotte](https://beebotte.com/)」を扱います。

●Beebotte
 https://beebotte.com/
![Beebotte](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/8e7844a6-5147-c987-2709-7272e744a7a6.png)

Beebotte については、以前、ダッシュボードを使った可視化の話を記事にしたことがありました。

●Beebotte のダッシュボードで M5StickC から送った数値をグラフ化する(UIFlow + MQTT でデータ送信) – Qiita
 https://qiita.com/youtoy/items/b65ddfc89a03117a0ee3

今回試すのは、IoT関連の話でも良く登場する MQTT です。

## Beebotte で MQTT を扱う
冒頭に書いたとおり、Beebotte を使うとリアルタイ

元記事を表示

CDK 2.20.0 と 2.19.0 はぶっ壊れてるので 2.18.0 を使おう

# もしかすると

これで解決するかも?

– https://qiita.com/siruku6/items/701ca518c126dc5ba571

# tl; dr

> npm install aws-cdk@2.18.0

# 何が起きるか

## 2.20.0 を入れようとすると

“`
% npm install aws-cdk@2.20.0
npm WARN tar zlib: incorrect data check
npm WARN tarball cached data for aws-cdk@https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.20.0.tgz (sha512-rs9LTpvrlbsMcenZ3t7TuLDGbHhbnDocrE63Xb2PT++VptR/A8svllK8k1W7hPl77L9QS75GNK5gh+ShkEzsnw==) seems to be corrupted. Refreshing cache.
npm WARN tarball tarball data for aws-cdk@

元記事を表示

夜集中して、寝ないで頑張れる環境をつくり、疲れたらLINEで癒しの曲を!

## Obniz X LINE Botで勉強を頑張れる「環境づくり」にチャレンジ!
最近仕事が特に忙しく、**プログラミングスクールとの両立に苦労していました**。辛酸をなめる状況が続き、まとまった時間を捻出するのが難しい環境だからこそ、**よなよな勉強を頑張れる環境を整えたい。**

特に、**仕事後の夜の勉強時間を増やし、質も向上させたい**。そのために今回は、**IoTの力**を利用して、**3つの課題解決**に取り組んでみました。

##### ① 妻が部屋に入ってきて話し込んでしまう → 集中モードの時は赤いLEDを点灯させる
##### ② 眠くなってくると、寝てしまう → ベッドに寝ようとするとき、警報を鳴らす
##### ③ 休憩すると、長くなってしまう → 疲れたよ!と送ると、自動的に癒しの音楽が流れ、その間だけ休憩する

**今回のイメージ動画をご覧ください。**

## 課題① 妻が入ってきて、話し込んでじゃうので集中モードの時間を

元記事を表示

とかく、この世は住みにくい。対人関係の距離感をobnizで物理的に測り矯正するLINEBotを作成!

## 目的
みなさん、毎日生きづらいですか?ちゃんと懊悩してますか?この世の悩みごとの多くは対人関係から生まれると言いますが、他人との距離感の取り方って難しいですよね。私個人としては他人と距離を置き気味で迷惑をかけることもあるのではと思っているのですが、その自己認識すらずれているかもしれません。悩ましい。

というわけで、友人知人に対して、自分が心地よいと思っている距離感が、果たして客観的に見てどれぐらいなのかをセンサーで図り教えてくれるLINEBotを作ろうと思います。

![2019-07-04_2338-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2562329/14642032-b1d3-eaee-990f-1fe4dec57bf8.png)

こちらの42カ国、9000人を対象にしたパーソナルスペースの調査によると、ルーマニアやハンガリーなどは、130センチ以上距離を取り、アルゼンチンやペルーは80センチを下回る超情熱系のインファイターと、国によってもパーソナルスペースにかなり変動がある

元記事を表示

SequelizeでbulkCreateを使用してINSERTする際、値を指定していないAUTO_INCREMENTを付与したカラムの値を取得する

## 初めに
SequelizeでbulkCreateメソッドを使用する際に、AUTO_INCREMENTを付与しているカラムを指定せずに挿入した場合に、thenメソッドの引数に挿入したカラムの値がNULLで格納されていた。
検索した際に日本語の情報が少ないと感じたため、AUTO_INCREMENTを付与したカラムの値を取得する方法を記載する。

■ Sequelizeのバージョン
3.30.4
■ MySQLのバージョン
5.7.37
## 解決方法
bulkCreateメソッドに以下の記述を追加することで解決した。

“`js
individualHooks: true
“`

#### 例
“`js
Model.bulkCreate(
[ { coulumn: “test” }, { coulumn: “test” } ],
{ individualHooks: true }
).then((results)=>{
// 引数resultsに挿入されたAUTO_INCREMENTを付与したカラムの値が格納されている
})
“`

## trans

元記事を表示

Node.jsでリバースプロキシを書いた

# リバースプロキシとは
インターネットにてリクエストをほかのサーバの代わりに受けて(代理:proxy)他のサーバへ中継してくれるサーバ
![rproxy.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638607/dc2ba0c7-bf6d-fa20-d710-f856e41a5f9e.png)

# なぜわざわざNode.jsで書くのか
ふつうはNginxを使う。
今回は小規模な自分用サーバのために使うので、ほかの機能で使っているnode.js
にまとめて載せられると便利だと思い書いた。

# コード
https://github.com/wonderhorn/nodegate

ポイント
– [http-proxy](https://github.com/http-party/node-http-proxy)を使う、プロキシもリバースプロキシもこれでできる
– http-proxyのバグでPOSTが通らないのでヘッダをいじる:https://github.com/wonderhorn/nodeg

元記事を表示

照度センサーを使って灯りがついている時間を計測し、電気料金がわかるものづくりに挑戦してみた!!

こんばんは。

現在小売業で働いており、新入社員の受け入れの研修をしています。
講義の中で「**店舗で使用しているものはすべて経費が掛かっていると思ってください。**」と
新入社員に伝えましたが、こんなぼんやりしている説明はないなと反省・・・

**なので、経費としてわかりにくいものを**
**分かりやすくするための装置を作ろうと実装してみました。**

(ひとまず照度センサーを使って電気料金がわかるものを作りたくなったので、
まずは家のトイレで使用している電気料金を調べてみることにしました!)

## 作ろうとしたもの
照度センサーを使って電気がついている時間を分単位で計測し、
電気料金がわかるものを作ろうとしました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1811930/b5699ba0-b334-393f-335a-93f4c0599885.png)

↑の画像は電気をつけている状態でNode.jsを実行して、
0.15v以下になった時間を計測してくれるものです。

元記事を表示

お手軽構築!docker-compose+Circle CI環境下でのスペルチェック環境

## この記事 is 何

ソースコードをcommit/push(後の本流へmerge)した後に「あっ、これtypoしてる…」という経験はありませんか?
英語が苦手な私はよくあります。VSCodeの拡張機能でスペルチェッカーを入れてますが、それでも見落としがちです…
そのようなときにCIで自動で検出/ブロック出来たらいいですよね!

この記事では、その対策方法について解説しました。

## この記事では解説しないこと
解説している素晴らしい記事はたくさんあるので、既存の記事にお任せしました!

– Docker、Docker-composeの導入方法/解説
– Circle CIとは?
– githubとCircle CIの連携方法
– Visual Studio Codeの導入方法/解説

## 動作環境

– Local環境
– Windows 10
– Docker Desktop 2.2.0.4
– docker-compose 1.25.4
– Visual Studio Code 1.66.1
– Code Spell C

元記事を表示

Node.js×TwitterAPIでツイートを連続取得

# search_metadataによる連続取得
TwitterAPIは一度のリクエストで最大100件までしかツイートを取得できません。
例えば`#ゲーム実況`というタグが付いたツイートを収集しようと思っても最新の100件を取得したらそこで次の取得を打ち切ってしまいます。
どうにかならないかということで調べてみたところ以下の記事がヒット。
[Node.jsでTwitter検索から100件を超えるツイートを取得したい](https://qiita.com/ryo-a/items/53fe9eadcf719b817c9a)

詳細はリンクを参照してほしいのですが、以下のようなコードで連続取得が可能になります。
“`
const Twitter = require(‘twitter’);
const client = new Twitter({
consumer_key: “—“,
consumer_secret: “—“,
access_token_key: “—“,
access_token_secret: “—”
});

const

元記事を表示

Nginx html うまく表示できない エラー[ Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of “application/octet-stream”. Strict MIME type checking is enforced for module scripts per HTML spec.]

## きっかけ
1. viteでつくったサイトをwebブラウザで表示させようと思ったらなにも表示されない
1. コンソールを見るとエラー
“`:Chrome コンソール
Failed to load module script:
Expected a JavaScript module script but the server responded
with a MIME type of “application/octet-stream”.
Strict MIME type checking is enforced
for module scripts per HTML spec.
“`

## 改善方法の結論
httpコンテキストに以下を追記
“`conf:nging.conf
http{
+ include /etc/nginx/mime.types;
+ default_type application/octet-stream;

..省略
}
“`

– include /etc/nginx/mime.type

元記事を表示

WSL2上でwebpackのホットリロードが効かない

# はじめに

上記の本を参考にTypeScriptの勉強をしていたところ、webpack serveによる自動ビルドがうまく働かず少し悩んだため、解決策を備忘録として残しておきます。

# 状況

webpack serveでサーバーを起動するこ

元記事を表示

Node.jsで使えるExcelライブラリ調査

Excelファイルを扱うライブラリが多すぎてどれを使ったらよいかわからないので・・・

# 結論

データの読み込みだけなら __xlsx__
Excelのテンプレートに書き込むなら __ExcelJS__ or __xlsx-populate__
ただし、ExcelJSはかなり多くのバグが放置されているので注意

| | TypeScript | 読み込み | 書き込み | スタイル設定 | スタイル保持 | 画像挿入 | セルコメント |
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
| xlsx | ○ | ○ | ○ | | | | ○ |
| xlsx-js-style | ○ | ○ | ○ | ○ | | | ○ |
| node-xlsx | ○ | ○ | ○ | | | | |
| ExcelJS | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| excel4node | | | ○ | ○ | | ○ | ○ |
| officegen | | | ○ | |

元記事を表示

BoxにNode.jsからファイルアップロードメモ

[Box](https://www.box.com/ja-jp)のAPIを使ってファイルアップロードを試してみます。

## シンプルなサンプル

https://github.com/box/box-node-sdk

こちらのSDKを使って試してみましたが、割とシンプルに動きました。

ドキュメントを見つつasync/awaitに書き換えてます。

> https://github.com/box/box-node-sdk/blob/main/docs/files.md#upload-a-file

“`js
‘use strict’;

const BoxSDK = require(‘box-node-sdk’);
const fs = require(‘fs’);

// Initialize the SDK with your app credentials
const sdk = new BoxSDK({
clientID: ‘xxxxxxxxxxx’,
clientSecret: ‘xxxxxxxxxxxx’
});
const client = sdk.g

元記事を表示

初見だけど爆速でできた!Botからユーザにダイレクトメッセージを送る方法(Webex API編)

React、node.js、Google Cloud Platform (App Enigine)で[SORTFUL](https://sinceretech.app/ “SORTFUL”)というチームビルディングゲームを作る際に出てきた疑問を、備忘録として記事にまとめています。

はじめに

SORTFULは参加者それぞれにダイレクトメッセージで「数字」を送るところから始まります。
![soortful1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2388662/57718e8a-af03-0a99-bb7f-b98864c79504.png)

この「メールアドレス情報から、ダイレクトメッセージを送る」というのが、今回の目的です。
Webexとslackを使いたいので、以下のような感じになります。

Webex
![Webex6.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2388662/31a9a

元記事を表示

serverlessFWにこんにちは serverlessでローカル上でAWS Lambdaを起動・呼び出してみる

## はじめに
[AWS SAMを使ってLambda(GO)のCICDをGitHub Actionsで構築](https://qiita.com/yuta-katayama-23/items/d5c786aaa2a439a3cb17)でサーバーレスアプリケーションを構築するフレームワークとして[AWS SAM](https://aws.amazon.com/jp/serverless/sam/)は触った事があったが、[serverless](https://www.serverless.com/)は触った事がなかったので、serverlessでHello World(Node.js)をやってみたので備忘録を残す。

やってみた事としては、以下の3つ。

– cli上で`severless`コマンドからHello World的なLambda関数を作成するseverless.ymlの作成
– ローカル環境でそのLambda関数を実行し、Lambdaを呼び出し
– 【おまけ】実際にAWS環境にDeploy

ソースコード全体は以下。

https://github.com/yuta-kata

元記事を表示

MQTTブローカーの shiftr.io で HTTPリクエスト(内向き/外向き)を組み合わせる【2022年4月版】

MQTT を利用する際の仲介役となる MQTTブローカーを準備する際、外部サービスやライブラリ等を利用して準備するなどしますが、クラウド・デスクトップの両方で使える MQTTブローカーで shiftr.io というサービスがあります。
この shiftr.io は、MQTT だけでなく HTTP のインタフェースを持っており、HTTPリクエストと MQTT の Pub/Sub との間をつなぐ役割を担うこともできます。

その shiftr.io の HTTPインタフェースについては、過去に一部を試したことがあり、手順を以下の記事に書いていました。

●【NoCode 2020】 MQTTブローカーの shiftr.io と IFTTT の Webhook をつなぐ(shiftr.io の HTTP Interface) – Qiita
 https://qiita.com/youtoy/items/c690e2f1aa064e6dd289

しかし、その時に試せてなかった機能もあったり、試したものの記事にしてなかった部分もあったため、あらためて今回の記事で情報をまとめてみようと思います

元記事を表示

GAEでAPIキーを隠したいとき

React、node.js、Google Cloud Platform (App Enigine)で[SORTFUL](https://sinceretech.app/ “SORTFUL”)というチームビルディングゲームを作る際に出てきた疑問を、備忘録として記事にまとめています。

はじめに

今回SORTFULを開発するにあたって、Webex APIとSlack APIを使いました。
ここで問題になってくるのが、APIキーの隠し場所です。

そこで私は、GAEにデプロイする際に使うyamlファイルに環境変数として登録する方法を選びました。
以下にその方法を記します。

環境変数を設定する方法

GAE(Google App Engine)では、app.yamlに環境変数を設定できます。(参考:[app.yaml構成ファイル](https://cloud.google.com/appengine/docs/standard/go/config/appref?hl=ja “app.yaml構成ファイル”))

“`app.yaml
env_variables:
MY

元記事を表示

OTHERカテゴリの最新記事