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

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

30秒でREST APIのモックサーバを準備する

# 背景
バックエンドの開発時に別のAPIサーバへ問い合わせするパターンがあるじゃないですか。
個人開発なら「[httpbin.org](https://httpbin.org/)」とか使えばいいのですが、業務だと外部サーバーに投げるわけにいきません。
というわけで30秒でサクッと作れるREST APIサーバである「[json-server](https://www.npmjs.com/package/json-server)」の紹介です。

# 1. インストール
※レギュレーションとしてパッケージのインストール時間は除外します!

$ npm i json-server

# 2. データを準備(15秒)
パスと応答データを記載したjsonファイルを準備する。

“`json:dummy.json
{
“top_gear”: [
{
“id”: 0,
“name”: “Jeremy Charles Robert Clarkson”,
“keyword “: “英国紳士(笑)”
},
{
“id”:

元記事を表示

Homebrewを使用してNode.jsをインストールする

## Goal

M1チップ搭載のMacBook AirにHomebrewを使用してNode.jsをインストールする手順を示します。

特定バージョンのNode.jsへ切り替えて使用できるようにするため、nodenvをインストールし、Node.jsをnodenvで管理します。

## References

* [“nodenv”](https://github.com/nodenv/nodenv). Will McKenzie. Retrieved December 29, 2021.

## Pre-Requisites

この文書の手順は、次の環境で実施し、動作を確認しました。

* MacBook Air (M1, 2020)
* macOS Monterey 12.0.1
* zsh 5.8
* Xcode 13.2.1
* Command Line Tools for Xcode 13.2.0.0.1 (Dec 3, 2021)
* Homebrew 3.3.9

## How To

### nodenvをインストールする

ターミナルを開きます。

nodenvをイン

元記事を表示

Stein使い方メモ

##はじめに
GoogleSpreadSheetをデータベースとして使用できるStein。

めちゃめちゃ便利なのですが
個人的に、使い方をよく忘れるのでここに残しておきます。

##使い方

https://qiita.com/masuraoProg/items/efaa6397d2d5409c968b

上記ののQiita記事を主に参考にしました。
まずはGoogle SpreadSheetの準備が必要です。
その後Steinのサイトへ飛ぶのですが、Google検索しても以外と出てこないため下に残しておきます。

https://steinhq.com/

今回はNode.jsに実装したいため、ローカル環境設定を多少行います。

steinを使用したいフォルダ以上の階層で`npm i stein-js-client`を実行(親フォルダで実行してもいけました)。
***ここの記載をしているQiita記事が少なかった印象です**
(npmは[ここから](https://www.npmjs.com/package/stein-js-client)参照しました。)

あとはコード内に下記

元記事を表示

馬券の的中成績を管理するWebアプリを作成した

競馬の馬券が当たった時はうれしいのですが、時間がたつとどのレースで当てたのかがわからなくなってしまいます。
そこで、当たったレースと払戻金を管理できるWebアプリを作成しました。

ついでに、レースの勝ち馬名や着順等も一緒に眺めたいので、netkeiba.com様のWebページをスクレイピングしました。(節度あるアクセスにしましょう)

記録場所は、手っ取り早くブラウザのLocalStorageにしました。JSONファイルにエクスポート/インポートする機能も付けておきましたが、永続的に記録したい場合は、そこまで複雑な処理ではないので、カスタマイズしてみてください。

ソースコードもろもろはGitHubに上げておきました。

poruruba/Keiba_Kanri

https://github.com/poruruba/Keiba_Kanri

#サーバ側の仕組み

Node.jsサーバとJavascriptによるWebページに分けられます。
実際のスクレイピングは、Node.jsサーバ側で実施しています。

Node.jsサーバ側では、2つのスクレイピングをしています。

①指定年

元記事を表示

Discord.js v13.4.0 でBot自身がタイムアウトされているかの判別

Discord.jsでBotを趣味で作っています。([NikkoBot](http://nikko114.f5.si/discord-bot/nikko-bot/))
タイムアウトされているかを判別するために3時間くらいかけたのでここに残せば皆さんが無駄な時間をかけないで済むかなあと思ったのでここに置いておきます。
実は初の記事投稿です。びっくり仰天。

#環境
+ [Node.js](https://nodejs.org) v17.3.0
+ [Discord.js](https://discord.js.org) v13.4.0

#そもそも「タイムアウト」って何者?
「タイムアウト」とは最近のDiscordのアップデートで追加されたものです。
機能としては

+ テキストチャンネルで発言やリアクション(絵文字)の追加ができなくなる。
+ ボイスチャンネルやステージチャンネルに接続できなくなる。
+ ボイスチャンネルやステージチャンネルに接続していた場合自動的に退出させられる。

などがあります。
サーバー管理Bot ([Dyno](https://dyno.gg/), [MEE6

元記事を表示

npmについて 個人的解釈メモ

# npmを個人的に解説していく

まだまだエンジニア初心者だが、知識をアウトプットして定着させていく。
記事を書く上で質問がいくつかでるので、誰か回答求む。

1. [npmにまつわるファイル・フォルダ](#npmにまつわるファイル・フォルダ)
1. [package.json](#package.json)
1. [package-lock.json](#package-lock.json)
1. [node-modules](#node-modules)
1. [package.jsonの中身について](#package.jsonの中身について)
1. [name](#name)
1. [version](#version)
1. [private](#private)
1. [homepage](#homepage)
1. [dependencies](#dependencies)
1. [scripts](#scripts)
1. [npm \ について](#npm \ について)
1. [npm a

元記事を表示

Azure VM 上のマネージド ID を使って Azure SDK のサンプルを実行してみた

#シナリオとサンプル
例えば、Azure Blob Storage へデータをアップロードするといった操作を定期的に行う場合、Azure SDK を使うことがあるだろう。
Azure 仮想マシン(VM)であればシステム割り当てマネージド ID を利用して Azure SDK を実行可能である。
開発したコードからリソースへアクセスする時の認証にマネージド ID を使うメリットとして、クライアントシークレットや証明書など従来の資格情報を直接指定する必要がなく、開発・運用時におけるリスク低減につなげることができるという点がある。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1879870/19ebb9fb-4ad0-80f1-6d8f-476096330f09.png)

https://docs.microsoft.com/ja-jp/azure/active-directory/managed-identities-azure-resources/overview

Azure SD

元記事を表示

nvmを使って、Node.jsをインストールする

# nvmをインストールする
GitHubのnvmのサイトのインストール手順に従い、以下のコマンドを実行します。

“`
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
“`

詳細は以下のサイトを参照してください。
https://github.com/nvm-sh/nvm

# Node.jsをインストールする
以下のコマンドを実行します。
(Node.jsのバージョンの12の最新版をインストールしています。)

“`
nvm install 12
“`

# インストール結果を確認する
以下のコマンドを実行します。

“`
node -v
npm -v
“`

元記事を表示

Node.jsでimport・export(ES6の構文)を使えるようにwebpack × Babelの設定をする

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

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

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

## 補足
### 設定全体は以下を参照

https://github.com/yuta-katayama-23/node-express/tree/d3224ed684d0a96894fd112b049d4ca8db9ef776

### おまけ
今回、Node.jsでimport・export(ES6の構文)を使えるようにする方法を見てきたが、上記のように`import ‘core-js/stable’;`, `import ‘regenerator-runtime/runtime’;`と書かないでも動く場合もあり混乱した。ちょっとどのパターンならbuildして動くのか?を調査してみたので以下にまとめてみた。

**※注意
 今回検証に使ったコードだから動いただけの可能性もあり、この辺りはまだ理解が完全ではないため参考情報程度に見て頂ければと思います**

元記事を表示

Firebase Cloud Functions(Node.js)でnodemailerを使ってgmailを送信する

# TL;DR

Firebaseの環境及びCloud Functionsの環境は出来上がっている前提です。
Cloud Functionsとnodemailerとgmailを使って、メール送信を行いたい場合を想定しています。
前半ではCloud Functionsにおいてのgmailの送信を行うための設定を解説しますが、
後半のほうはCloud Functionsに限った話ではなく、Node.jsでの送信の際にも参考にできると思います。

# 何はともあれnpm install

nodemailerとcorsが必要になるので、npm installしていきます。

“`npm
npm install nodemailer
npm install cors
“`

# Firebaseの環境変数にメールアカウント情報をセットする

gmailはメール送信時にSMTP over SSLで送信するので、
SMTPサーバーへのログイン情報が必要となります。
そんな情報をハードコードするわけにはいかないので、環境変数に持たせます。

“`
firebase functions:conf

元記事を表示

RPGツクールMVの任意スクリプト実行の準備を自動化してみた

以前、[RPGツクールMVで使える自作スクリプト集](https://qiita.com/qwe001/items/e3903f342b0a4582af76)を公開しましたが、
イチイチ各ゲームのHTMLファイルを編集するのは面倒だなと思って、
node.jsを用いてHTML編集を自動化しました。

さらに、nodeコマンドを毎回入力することさえも面倒なので
バッチファイルで簡単に自作スクリプトを差し込めるようにしました。

## 使用に必要なもの

node.js と cheerio が必要です。

cheerioはバッチファイル内でローカルインストールしますが、
何かうまくいかなかったらグローバルインストールしてみてください。

“`bash
npm install -g cheerio
“`

(windows環境でグローバルライブラリを読み込む方法がよくわからなかったのでローカルインストールしてます)

## 動作確認環境

* Windows 10 Home Edition
* node.js 12.14.0
* npm 6.13.4
* cheerio 1.0.0-r

元記事を表示

GitHubまたはGiteaからHerokuにデプロイする手順

お手軽にWebサーバを立ち上げられるHerokuですが、いつもアップロードしているGitHubから立ち上げる手順や、ローカルネットワークに立ち上げているGiteaから立ち上げる手順をまとめておきます。
というより、備忘録です。すぐ忘れるので。

ローカルネットワークに立ち上げたGit(Gitea)で日ごろは構成管理をして、Qiitaに投稿するときにGitHubに複製してソースを公開し、必要に応じてサンプル動作のためにherokuにデプロイしてアプリ公開する、といった活動を想定して説明していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261826/3799cd73-4e86-9c18-e877-d2c78b4e8a0d.png)

あるいは、有志の方のGitHubをカスタマイズする場合は以下の順番になります。

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

元記事を表示

C#のバイナンスの仮想通貨のライブラリを使ってみる

###前回のおさらい
前回、[Node.jsのバイナンスのAPIとC#を連携](https://qiita.com/iota_11/items/24ab2db7f2ee758f715c)して取得したが、1秒単位で情報を取得していくとなるとレスポンスが遅く機能的に難しい、システム構成や環境も複雑で煩雑で開発や保守に時間がかかる。他のPCに持って行った時に設定しづらい。アプリをバイナリ一つにコンパクトにまとめて、他のPCに持っていった時に簡単に利用できるのが望ましい。
###C#のバイナンスのライブラリを使用する

C#のバイナンスのライブラリがあったので使用することにした。

https://github.com/JKorf/Binance.Net

NugetからBinance.Netで取得できます。

“`
Install-Package Binance.Net
“`

“`csharp
using System;
using System.Threading.Tasks;
using Binance.Net;
using Binance.Net.Objects;
using

元記事を表示

[JavaScript] 正規表現とsplitを使って特定の文字列を置換する

ある文字列から、特定の文字列を除いて新たな文字列を作成するために
正規表現を使ったので、覚えておくために記事にしました。
同じようなことを実装するときに、この記事が少しでもお役に立てれば幸いです。

## 文字列を分割する
ある特定の文字の後ろで文字列を分割します。

“`javascript
const str =’ラジオ体操第一’
const regex = /(?<=体操)/; const words = str.split(regex); // [ 'ラジオ体操', '第一' ] ``` あとは配列の要素を置換するか、削除することで、目的の文字列を得ることができます。 配列の操作は、置換や削除、追加といろいろ使える`splice`を使いました。 最後に配列の要素をつなげて文字列にする`join`を使います。 ```javascript words.splice(1,1) console.log(words.join()) // 'ラジオ体操' ``` 文字列の置換を行う場合、`replace`を使う方法もありますが、 大量の文字列を扱い

元記事を表示

StripeのWebhook処理にAzure Functionsを使ってみる

## はじめに

最近、StripeのWebhookをAzure Functionsで設置する機会がありましたので、その時の手順をまとめたいと思います。

いつもはExpressでAPIサーバーを立てたり、AWS Lambda + API Gateway で処理したりしていたのですが、**Azure Functionsがとても便利**だったのでご紹介をかねて記事にしました。

## 開発環境

必要なものは以下の通りです。CLIはそれぞれ最新バージョンを使用して下さい。

– Node.js (v14.17.0)
– Stripe CLI
– Azure CLI
– Azure Functions Core Tools(Azure Functionsをローカルで実行するために使います)

## ローカルで関数アプリを作成する

#### 1. プロジェクトをダウンロードする

Node.js用のひな形が私のGitHubに入ってますのでそちらをご活用下さい。
**[プロジェクトをダウンロード](https://github.com/kota-imai/stripe-webhook-

元記事を表示

ElectronアプリをURLから起動する

Electronアプリをブラウザ上のURLから開き、URLに含まれた情報をレンダラープロセスで利用できるようにする実装方法をまとめます。(mac, windows用)

特にwindows用の実装の情報が少なく、苦戦したので、同じような状況の方の参考になりましたら幸いです。

# 環境

– electron v16(v12でも動作しました)
– electron-builder v22

# サンプルリポジトリ

https://github.com/K-kind/electron-custom-url-sample

# 完成イメージ

![キャプチャ.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504515/8632eded-34d6-67da-4965-0b8e67b98e18.gif)

– `custom-url://` のようなURLからアプリを起動し、画面にそのURLを表示することができる
– アプリが既に起動している場合、していない場合も同じように動作する

# 実装ステップ
##

元記事を表示

【Node.js】Expressとmulterを使って画像アップロードを実装する(multer, formData, axios)

#はじめに
メインはフロントですが、趣味でExpressを触っている者です。フロント側で画像アップロードを行う際はFileAPIを使ってDataUrlを作ってからサーバーに送る。という流れになると思うのですが、Expressで実装するとなるといろいろ前提が違ってハマったのでメモします。

#実装したコード

“`javascript
// 画像アップロード

app.post(
‘/photo/upload’,
// 解説①↓ ==========
upload.any(),
// 解説①↑ ==========
async (req: any, res: express.Response) => {
// 解説②↓ ==========
const customeId = 1
const formData = new FormData()
const file = req.files[0]
formData.append(‘files[]’, file.buffer, file.originalname)
for

元記事を表示

【Socket.IO】PC50台を無線でつなげてアートを作ってみた

この記事は [福島高専 Advent Calendar 2021](https://qiita.com/advent-calendar/2021/nitfc) 25日目(最終日)の記事です。

# 1. はじめに
こんにちは、高専4年のAkkunlabです。主にプログラミングや電子工作などをしています。

[去年のAdvent Calendar](https://qiita.com/advent-calendar/2020/nitfc)では「[ちょっとすごいと思わせるデジタルアートを作ってみた](https://qiita.com/Akkunlab/items/581f17a90f35b1879adb)」というタイトルで、**インタラクティブなLEDアート**について記事を書きました。

今回はその進化版として**50台のPCを使用したデジタルアート**を制作したので、記事にしていきたいと思います。
読みにくいところがあるかもしれませんが、最後まで読んでいただけたら幸いです。

# 目次
[1. はじめに](#1-はじめに)
[2. 制作したアート](#2-制作したアート)
[3. シ

元記事を表示

子どもの夜ふかし対策に照明が点いてたら消し続けるIoT装置を作った

# はじめに

私は保育園児のふたりの子どもがいるのですが、子どもたちの夜ふかしに日々悩まされていました。
21時~22時ぐらいに寝かしつけに入りはするのですが親が先に寝落ちしてしまい、子どもが寝室の照明をつけて夜中まで延々と遊び続けるという状況です。

せめて真っ暗闇なら親が寝落ちしたあともそこまで夜ふかししないだろうと思い寝室のブレーカーを落とすということも考えましたが、なぜかサーバールーム(クローゼット上部のルータが設置されている小さいスペース)とブレーカーが共用されており、このブレーカーを落とすと家中のネットワークが停止して夜間ジョブ(NASへのバックアップ等)に支障をきたしてしまうため断念しました。

そこで次の手段として考えたのが照明を消し続けるIoT装置の自作です。

# 仕様

以下のように仕様を考えました。

* 部屋の明るさを計測して照明が点いているかを判定
* 照明が点いていたら照明オフの赤外線信号を送信し続ける
* 上記の動作をデバイスのボタンを押してから1時間実行し続ける

図にすると以下のようなイメージです。
![image](https://user-

元記事を表示

discord.pyが開発終了したのでdiscord.jsに乗り換える

# discord.pyの開発終了
皆さんご存知かと思いますが、discord.pyの開発終了がアナウンスされました。[the_future_of_dpy.md – GitHub](https://gist.github.com/Rapptz/4a2f62751b9600a31a0d3c78100287f1)
開発終了したソフトウェアを使い続けることは、リスクの面から見ても良くありません。
当初の予定では同じPython製のAPIラッパーである[Pycord](https://github.com/Pycord-Development/pycord)を利用してdiscord.pyからのリファクタリングを行う予定でした。
ですが、embedを使いたかった[^1]上に、スラッシュコマンドの実装が容易であり、人口が多く、ちょうど.jsを始めたところだったので勉強がてらdiscord.jsへのリファクタリング作業を行いました。

[^1]: discord.pyやpycordでも利用可能だが、discord.jsのほうがより柔軟だったので移行しました。

# Bot詳細
AWS CLIというA

元記事を表示

OTHERカテゴリの最新記事