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

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

REST API Design Best Practices を用いたAPI開発 #1

## 動機
仕事で関わるシステムの大部分が企業の基幹系システムであることが多く、昨今のフロントエンド開発にCatch Upしきれていないと感じている。
以下の記事をFollowしながら手を動かすことで、少しでもフロントエンド側の感覚をCatch Upをすること、また自分自身のメモとして残すことを目的として記事に起こす。

https://www.freecodecamp.org/news/rest-api-design-best-practices-build-a-rest-api/

## 環境
* OS
Microsoft Windows 10 Enterprise 10.0.19042 N/A ビルド 19042

* 開発環境
Visual Studio Code 1.64.2

* ターミナル環境
GNU bash, version 4.4.23(1)-release (x86_64-pc-msys)

* パッケージ管理
npm 6.9.0

## 基本設定
### フォルダ構造作成とパッケージインストール
まずは兎にも角にも、基本的なフォルダ作成から始める。
“`
mk

元記事を表示

パスパラメータ”/:id(\\d)”はどういう意味? Node.js Expressのパスパラメータの設定の色々

## はじめに
Node.jsのExpressでは、以下のようにパスパラメータに正規表現を使う事ができる。

“`js
app.get(‘/posts/:id(\\d+)’, (req, res) => {
console.log(req.params.id);
res.end();
});
“`

今回は、Expressのパスパラメータの書き方の設定方法について、その種類とその挙動(curlコマンドでAPIを呼び出した時のconsole.log(req.params.id)の出力内容)について実際に試してみて理解を深めてみたのでそれについてみていく。

※Expressのversionは4.17.1になります。

## Expressのパスパラメータの設定方法の種類
以下のように設定方法は何種類かあり、それらについてどのようなconsole.log(req.params.id)の結果が得られるか?を見ていく(他にも設定方法があるかもしれないが今回は以下の5種についてみていく事にする)。
![image.png](https://qiita-image-store.

元記事を表示

Nuxt.jsでインクリメンタルサーチ

# はじめに
ある案件で名前検索を実装することになり、文字を入力するたびに検索候補が現れるインクリメンタルサーチを作ってみたいと思い、実装してみました。ちなみにサーバーサイドはexpress、フロントはNuxt.js×TypeScriptです。expressやcss、その他細かい処理は省略していますが、悪しからず。
動きはこんな感じ。これに似た何かを作る際には参考になると思います。
![画面収録_2022-05-17_2_17_40_AdobeCreativeCloudExpress.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2660725/35c38203-ea0f-4c22-59e1-a5a4b3157d94.gif)

![画面収録_2022-05-17_2_24_49_AdobeCreativeCloudExpress.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2660725/88a967d0-374c-

元記事を表示

仮想通貨ライブラリ ccxt

# 仮想通貨ライブラリ ccxt

Node.jsを使う機会があったので、そのまま仮想通貨自動取引Botを自作することにしました。今回は軽く板情報取得までの流れを掲載します。

## そもそもccxtとは
ccxtは、**様々な仮想通貨取引所のAPIをまとめたライブラリ**です。
ccxtについては様々な記事で詳しく紹介されているのでそちらを参照してください。
今回はJavaScriptでccxtを使ってみたので、サンプルソースを掲載します。
取引所はBitflyerを利用しているので、その他の取引所を利用している場合はソースが異なる場合があります。

## 1. ccxtライブラリの導入
Node.jsでは、パッケージ管理システムのnpmを利用してライブラリの導入を行います。
今回はccxtのライブラリを使用するので、導入する際は以下のコマンドを打ちます。

“`console
npm install ccxt
“`

## 2. ライブラリを読み込む
以下はソースコードに記述するものになります。

“`javascript
const ccxt = require(

元記事を表示

macOS Montoryでnoble(BLE)を使いたくてハマったところ #iotlt

## mac+Node.jsでBLEを使いたい

IoT関連だとBLEを使いたいよねって話題が定期的に出てきますが、Node.jsでBLEを制御するnobleというライブラリがmacだと使えなくなっていた問題が数年前くらいにありました。

そこに対して、以前書いた記事で`@abandonware/noble`を使うと使えるようになったという話までが2021年春頃の話題です。

https://zenn.dev/n0bisuke/articles/01-nodejs-ble-noble-2021

## macOS Montereyで問題再発

[当時](https://zenn.dev/n0bisuke/articles/01-nodejs-ble-noble-2021)はBigSurだったのですがMontereyに上げてから試したらインストールでこける事象に。

“`bash
$ npm i @abandonware/noble

npm ERR! code 1
npm ERR! path /Users/n0bisuke/Documents/ds/playground/insma

元記事を表示

Node.jsのトランスパイル時にESLintでエラーがあればBuild停止する設定をWebpackでやってみた

## 以下の記事を参照して頂ければと思います

https://note.com/shift_tech/n/n92d51d4445ff

**※Qiitaの記事は全て個人的な記載であり、所属する組織団体とは無関係です。**

## 補足
ソースコード全体は以下。

https://github.com/yuta-katayama-23/node-express/commit/d7f4b09ade8c708fbcbb78fe3d804ec2c081b3c0

元記事を表示

[Cloud Functions] FirebaseStorage に保存された画像の幅と高さを取得する

Flutter / Firebase のアプリ開発で実装したことを記事にしました。
誰かのお役に立てれば幸いです。

アプリから、FirebaseStorage に画像を保存したときに、
その画像の width と height を取得する必要があったので、CloudFunctions 内で
画像サイズを取得する関数を作成しました。

## パッケージの導入

画像サイズを取得するパッケージは、

https://www.npmjs.com/package/image-size

こちらを使いました。コードが、とてもシンプルです。

## 画像パスから width , height を取得

まずは、Storage に保存された画像のパスと一時的に保存するディレクトリのパスを
用意する必要があります。
一時保存のディレクトリに画像をダウンロードしてから、サイズを取得する流れです。

“`typescript
import * as functions from “firebase-functions”;
import * as fs from “fs”;
import * as pa

元記事を表示

Slack AppでリクエストURLにLambda(Node.js)の関数URLを指定してYour URL didn’t respond with the value of the challenge parameterが出た時の対応

## はじめに

Slackアプリの Event Subscriptions -> Enable Events -> Request URLでURL設定時にタイトルのエラーが出た場合の対応方法を整理します。

## エラー内容

“`
Your URL didn’t respond with the value of the challenge parameter.
“`

– 内容としては`challenge` パラメータを指定してレスポンスを返していない、という意味です。

## 結論

Lambda(Node.js)の場合、以下のようなコードを書けばOKです。
`challenge` のみを含むレスポンスを返却するのがポイントです。

“`index.js
exports.handler = async (event) => {
// TODO implement
console.log(`event=${JSON.stringify(event)}`);
const event_body_json = JSON.parse(event.body)

元記事を表示

ワードクラウドを自作ニュースアプリに追加してみた

## はじめに
この間Node.jsで多言語Webニュースアプリ作ってみました

https://qiita.com/aibazhang/items/a53893c22c00d5962e62

https://www.multitrue.news

ニュースのタイトルと概要だけではつまらないので、単語の出現頻度によって直近一週間のニュースからワードクラウド作って、一目で世の中の出来事を確認できたら面白そうじゃないかと思いながら、ワードクラウドをニュースアプリに追加してみました。

## 詳細

ソースはこちらから確認できます。

https://github.com/aibazhang/multitrue

### 下準備
日本語と中国語などは英語と異なり、単語と単語の間スペースがないので、形態素解析が必要です。簡略化するために、今回は英語のワードクラウドのみを作ることにしました。人称代名詞や助動詞のような`Stop Words`をワードクラウドに出しても意味がないので、NLTKの英語`Stop Words`辞書を利用します。

https://gist.github.com/sebl

元記事を表示

fish で n を使って node をインストールしたときにハマったこと

nodeのインストール時に少し詰まったので備忘録として書いておこうと思います。

# 結論:

> fish での環境変数指定では `-x` オプションを忘れない!

“`shell:config.fish
set -x N_PREFIX $HOME/.n. # -x オプションが必要だった
set PATH $N_PREFIX/bin $PATH
“`

# n をインストールし、 n lts でインストールに失敗する

n のインストールは Homebrew でインストールしました。

“`shell
brew install n
“`

n ではインストール先が /usr/local/bin になっていますが、これだと権限でエラーになります。なのでインストール先を以下のように指定し、パスも通しました。

“`shell:config.fish
set N_PREFIX $HOME/.n
set PATH $N_PREFIX/bin $PATH
“`

これでインストールはできるようになったはずなので安定版をインストールしてみます。

“`shell
n l

元記事を表示

VSCodeで利用したいnodejsを指定してデバッグ実行する

nodejs上で動作するプログラムをVSCodeでデバッグ実行する際に、デフォルトだと`pwa-node`というVSCodeに組み込まれたnodejsが利用されます。

nodejsの特定のバージョンを指定して実行したい場合は、そのバージョンのnodejsをインストールし、`.vscode`フォルダにある`launch.json`ファイルで、`runtimeExecutable`にインストールしたnodejsのパスを指定することで実現できます。

“`
{
・・・
“type”: “pwa-node”,
“runtimeExecutable”: “/Users/someone/.nvm/versions/node/v12.14.0/bin/node”
}
“`

元記事を表示

[Electron] C++ addon (Native Node Module) を他PCに展開したとき、”Specified module could not be found” で動かない

# 前段

ぼく「Electronでアプリ作ったよ!」
とも「module not found とか言われて動かないよ〜」
ぼく「はっ!?」

と、なったときの対処方法です。

# チェック項目

## :white_check_mark: 対象Nodeモジュール(hogehoge.node)は、ちゃんと存在している?

対象Nodeモジュールが存在しないときは、Webpackに失敗しているのかも。

*.nodeを読み込むルールを確認します。

“`json:webpack.config.js
{
module: {
rules: [
{
test: /\.node$/,
loader: “node-loader”,
options: {
name: “[name].[ext]”
}
}
]
}
}
“`

## :white_check_mark: 対象Nodeモジュール(hogehoge.node)に必要なDLLは入ってる?

`dumpbi

元記事を表示

Node.jsのバージョン管理ツールvoltaの使ってみる(windows)

# はじめに
プロジェクトごとにNode.jsのバージョンを切り替えるツールについてwindows環境で**volta**が良さそうだったため、使ってみました。voltaを使えば、複数プロジェクトでバージョンが違うNode.jsプロジェクトがあった場合に、手動で切り替えなくても、プロジェクトを移動することで自動的にバージョンが切り替わります。
### インストール方法
windowsでは、インストーラーが用意されているため、下のリンクからダウンロード可能です。
[voltaのインストール(windows)](https://github.com/volta-cli/volta/releases/download/v0.9.2/volta-0.9.2-windows-x86_64.msi)
### Node.jsのインストール
Node.js v15を試しにインストールしてみます。
“`bash
volta install node@15
node -v
v15.14.0
“`
最新のLTSリリースをインストールするなら指定する必要はありません。
“`
volta install

元記事を表示

Sequelizeで “SELECT count(DISTINCT(`user_id`))”を実現する

Node.js + Sequelize で開発中・・・
重複したデータを除外したデータ数が欲しくなった。
「期間内にサインインしたユニークユーザ数が知りたい」とかそんな感じのこと。

ドキュメント探すのに時間がかかったので、未来の自分と誰かのために書き残します。

## テーブル

こんな感じのテーブルを使う想定です。
“`sql
mysql> select * from access_logs;
+—-+———–+———+———+———————+
| id | tenant_id | user_id | type | created_at |
+—-+———–+———+———+———————+
| 1 | 1 | 2 | signin | 2022-04-13 15:55:50 |
| 2 | 1 | 1 | signout | 2022-04-13 15

元記事を表示

[BigQuery, Node.js] スプレッドシートをデータソースとする外部テーブルを作成する

社内データがたくさんのスプレッドシートに分散している…というのは、あるあるな状況ではないでしょうか。例えば、期間Aのデータはスプレッドシート1にあり、期間Bのデータはスプレッドシート2にあり、期間Cのデータは…。そのように分散したデータをBigQueryに集約して、SQLで抽出、結合して、CMSやBIツールなどのアプリケーションに渡せたらできたら便利ですね。

ということで、今回はNode.jsのクライアントライブラリを使用して、BigQueryに外部テーブルを作成する方法についての記事です。

# そもそも外部テーブルとは
公式ドキュメントからの引用です。

>外部テーブルは、標準の BigQuery テーブルのように機能するテーブルです。
[外部テーブル | BigQuery | Google Cloud](h

元記事を表示

Node.js でマルチアカウントの AWS リソース情報をファイル出力してみた

使用している AWS リソース情報を一覧で確認したいことってありますよね。
単一アカウントであれば、以下の方法があります。

https://dev.classmethod.jp/articles/tag-editor-seach-allregion/

https://dev.classmethod.jp/articles/cli-resource-search/

今回は、上記の方法のうち 2 つ目の記事を参考に、マルチアカウントの AWS リソース情報を json ファイルとして出力する Node.js プログラムを作成してみました。

# 前提
・AWS マルチアカウント構成である
・各アカウントにはスイッチロールすることができる
・スイッチロールの権限は `AdministratorAccess`
・[AWS CLI でスイッチロール](https://zenn.dev/mn87/articles/338b163a2f81cd)ができる状態である
・CLI からの呼び出しで MFA は使用していない

なお、今回はマルチリージョンでの出力は行っていませんのでご注意ください。

元記事を表示

Node.jsの雛形の作り方

# Next.jsの雛形の作り方
Node.jsで基本的な操作である雛形の作成を忘れないように残しておく。

## Next.jsの雛形とは(完成品)
雛形とはこのようになっている
この雛形をいじっていくことによって、作りたい形に変化させていく。

## 雛形のフォルダの作り方
* 事前準備として、**node.js**のインストールと**npx**と**yarn**のパッケージをインストールしておく必要がある。
* 雛形のフォルダを下のコマンドを入力して自動作成する。
“`
$ npx create -next -app [フォルダ名]
“`

このようなフォルダが作成される。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

* 作成後フォルダの中に入り、

元記事を表示

Node.jsのバージョンが元に戻る事象のトラブルシュート

## 環境
Ubuntu 20.4

## はじめに
自分の環境に入っているNode.jsのバージョンは、v10.19.0(system)とv16.14.0の2種類。systemとなっているバージョンは、aptでインストールしているはず。そして、v16.14.0は、nvmでインストールしているはずです。

nvmを使って、Node.jsのバージョンをv16.14.0に上げたのだが、OSに再度ログインし直すと、必ず、元のバージョンであるv10.19.0(system)に戻ってしまう現象が発生しているため、そのトラブルシューティングの記事。

## やったこと
OS起動直後のNode.jsのバージョンです。
“`
$node -v
v10.19.0
“`

バージョンをv16.14に変更しました。
“`
$node use v16.14
$node -v
v16.14.0
“`

しかし、この後、OSにログインし直すと、Node.jsのバージョンがv10.19に戻ってしまいます。原因は、defaultのエイリアスの設定ができていないことでした。
“`
$ nvm ls
->

元記事を表示

nextronでcontextbridgeを使おうと思ったら詰まった

詰まったのでまとめておきます.
# 環境
– PC
– macOS Monterey バージョン12.2.1
– MackBook Air (M1, 2020)
– package.json
“`json

“dependencies”: {
“electron-serve”: “^1.1.0”,
“electron-store”: “^8.0.1”,
“node-fetch”: “2”
},
“devDependencies”: {
“@material-ui/core”: “^4.12.4”,
“@material-ui/data-grid”: “^4.0.0-alpha.37”,
“@types/node”: “^16.11.7”,
“@types/react”: “^18.0.8”,
“electron”: “^18.2.0”,
“electron-builder”: “^23.0.3”,
“next”: “^12.1.6”,
“nextron”: “^8.1.0”,

元記事を表示

P2P地震情報のWebSocketを使って地震情報BOTをつくろう!

:::note warn
見にくい記事に気を付けてください(?)
:::

## はじめに
(Discord.jsとか使ってリアルタイムで情報更新するやつ作りたいなぁ)
(せや!WebSocketのやつとかあるか探してみよ!)
(あった!!これでやってみよう!)

と、こんな感じで作り始めました。

## どういうやつ?
地震情報を送ったり~
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2594613/d351c6fe-7b11-7bc5-bb22-40ecfc6cc440.png)
震源情報を送ったり~
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2594613/b1cbd471-bfa3-271f-9387-a501616f47e8.png)
緊急地震速報をお知らせするのもあるぞ!
![image.png](https://qiita-image-store.s3.ap-nor

元記事を表示

OTHERカテゴリの最新記事