Node.js関連のことを調べてみた

Node.js関連のことを調べてみた

Azure Static Web AppsのデプロイでGitHub ActionsのNode.jsのバージョンを指定する

# はじめに

今回は、AzureのStatic Web Appsにおいて、GitHub Actionsによるデプロイ時のNode.jsのバージョンを指定する方法について書いていきます。

とある依存ライブラリが、Node.jsがv18以上でないと動かないようになってましたが、これをGitHub Actionsでビルド&デプロイしようとしたときに、v16が使われてしまい失敗するということが起きたので調査しました。

## Azure Static Web Appsとは

Azure Static Web Appsとは、GitHubとの連携が強力なWebホスティングサービスです。

https://learn.microsoft.com/ja-jp/azure/static-web-apps/overview

GitHub Actionsを利用して、プッシュしたら自動デプロイ、みたいなフローが簡単に構築できます。

また、Azure Functionsが組み込まれており、バックエンド処理を記述することも可能です。

# エラーが起きたポイント

これは、GitHub Actionsのロ

元記事を表示

Promise.allの魔法:複数の非同期操作を一度に処理

# はじめに
Promise.allは、複数のPromiseオブジェクトを並行して処理するための非常に便利なJavaScriptの機能です。複数の非同期操作を完了する必要があり、これらの操作が相互に依存していない場合に、Promise.allは特に便利です。
# Promise.allを利用前
以下の関数を参考にしてください。この関数では、すべてのステップが前のステップが終了するのを待ってから実行されますが、実際にはご飯を炊くことと野菜を切ることは同時に行うことができます。そのため、かなりの時間が無駄になっています。
“`typescript:example.ts
// チャーハンを作る関数
const makeDish = async (): Promise => {
await prepareIngredients(); //食材を用意する
await cookRice(); //ご飯を炊く
await chopVegetables(); //野菜を切る
await addIngredients(); //食材を入れる
await stirFry(

元記事を表示

Node.jsで待望(?)のコンソールの色を変えられるようになった

Node.js 21.7.0のアップデートでText Stylingという項目がありました。

コンソールに表示させる **文字の色や装飾や背景色を変えられる**ようになります。

> ![スクリーンショット 2024-03-31 19.12.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/7a51a464-e65c-ad8e-b00c-f955b51fa002.png “スクリーンショット 2024-03-31 19.12.55.png”)
> https://github.com/nodejs/node/releases/tag/v21.7.0

“`js
const { styleText } = require(‘node:util’);
const errorMessage = styleText(‘red’, ‘Error! Error!’);
console.log(errorMessage);
“`

こんな感じでコンソールの文字色が外部モジュール無しで変えられま

元記事を表示

node.jsでメモリの使用量を調べる方法

この記事では、Node.jsでメモリ使用量を調べるための方法を紹介します。

## process.memoryUsage()メソッドの使用
Node.jsには、現在のプロセスのメモリ使用状況を調べるための組み込みのメソッドがあります。process.memoryUsage()は、ヒープ使用量、ヒープの合計サイズ、RSS(Resident Set Size)など、様々なメモリ使用指標を含むオブジェクトを返します。
“`
/*
rss (Resident Set Size): 全てのメモリ使用量を含む、プロセスに割り当てられたメモリの量
heapTotal: ヒープに割り当てられた合計メモリの量
heapUsed: 実際に使用されているヒープのメモリの量
external: V8エンジン外部で確保されたメモリの量(例えば、ネイティブモジュールによって確保されたメモリ)
*/

const used = process.memoryUsage();
const messages = [];
for (let key in used) {
const mb = Math.round

元記事を表示

浦島太郎の為のJavaScript周り整理メモ

## はじめに

ちょこちょこJavaScript周りは追っていたが、変化が目まぐるしく追いつけていなかった。
業務で使うに当たり、ざっくり把握し直したのでメモ。

## 言語周り

### 標準仕様: 実装状況はブラウザなど実行環境に依る
– CommonJS: requireで読み込むやつ
– ECMAScript: importで読み込むやつ。こっちが標準になっていく

### 型付け
– TypeScript: 結局JSに変換して実装するので後付けという立ち位置

## 実行環境周り

### エンジン
– V8: Node.jsやChromeで使われている
– JavaScriptCore: WebkitなどAppleで使われている?

### ランタイム
– Node.js
– Deno: npmの反省から生まれる。パッケージ管理機能込み。Rust製
– Bun: 早い。Node.jsの置き換えを狙う。Zig製

### パッケージマネージャー: どれか一つを選ぶ。bundler的なやつ
– npm (+ npx): 大きなプロジェクトなどだと遅さが問題になる?
– yar

元記事を表示

Node.jsとMessaging APIでプッシュメッセージを送ろう

## はじめに
[前回](https://qiita.com/course_k/items/85bf9cfab971cb5b97ee)に引き続き、MessagingAPIの練習です。
今回はボット側から任意のタイミングでメッセージを送ることができるプッシュメッセージに挑戦します。

Node.jsとMessaging API、そしてボットのサーバーとしてRenderを使用します。
構築手順については[前回](https://qiita.com/course_k/items/85bf9cfab971cb5b97ee)の記事を参考にしてください。

また、本記事は以下のソースコードをベースにし、以降で紹介する処理を追加していくことで実装を進めます。

ソースコードを確認する

“`javascript:app.js
// モジュールのインポート
const https = require(“https”);
const express = require(“express”);
const fs = require(“fs”);

/

元記事を表示

Voltaを使用していることによるNodeのバージョン変更ができない時の対処法について

## Nodeのバージョン変更ができない時の対処法について

今回Nodeを指定してインストールしたが、バージョンが変わらず沼りかけたので記事にしました。
“Node バージョン 変わらない” などで検索してみたものの、どの記事の内容を実行しても状況が変わりませんでした。
原因は”Volta”を使用していたことにあります。
その経験を元に対処法を共有できればともいます。

注:
“Volta”については個人で調べてください。
“Volta”を使用しているということはプロジェクトでバージョンを統一している可能性があります。
ですので、プロジェクトに影響がないか等の影響範囲を確認した上でバージョンの変更をするように。

まずNodeを指定してダウンロードしたのに変わらない場合、まずは下記コマンドを実行してください。
“node”コマンドの実行可能ファイルがどの場所にあるかが表示されます。
“`.ターミナル

$ which node

“`

確認できたらそのファイルに移動し”node -v”を実行すると変更前のバージョンが出てくるはずです。

出たきたら下記コマンドでnodeをイ

元記事を表示

Disocrd.js 主要権限名

# Discord.js v14のメンバーの主要権限名
d.jsで、メンバーが所持している権限の確認するなどの際に使用する権限名を書いていきますが、すべての権限を書いているわけではありません。

:::note warn
Disocrd.js v14で動作します。その他のバージョンでは動作はしない可能性があります。
:::
##
### サーバーでの権限
– ADMINISTRATOR: サーバー全権限(管理者)
– KICK_MEMBERS: メンバーのキック権限
– BAN_MEMBERS: メンバーのBAN権限
– CREATE_INSTANT_INVITE: 招待リンクの作成権限

### テキストチャンネルでの権限
– VIEW_CHANNEL: チャンネルの閲覧権限
– SEND_MESSAGES: メッセージの送信権限
– MANAGE_MESSAGES: メッセージの管理権限
– MENTION_EVERYONE: everyoneメンションの送信権限

### ボイスチャンネルでの権限
– CONNECT: ボイスチャンネルへの接続権限
– SPEAK: ボイスチャ

元記事を表示

【M3 Mac】 HomebrewとNode・npmの導入

![Homebrew.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755200/f4593013-5b47-c816-bd2b-0b99dfcf9723.jpeg)

# HomebrewとNode・npmの導入
Node・npmはともかく、Homebrew導入で途中エラったので備忘録
環境はM3 MacBookAir

# Homebrewの導入
## 1. インストールするディレクトリに移動
以下のコマンドを実行し、`/Users/{user-name}`ディレクトリへ移動

**{user-name}は環境によって異なる。**
“`shell:実行内容
cd ~
“`
:::note info
Macの純正ターミナルは初期ディレクトリがここ
どこにインストールするかは個人が任意に設定(あくまで自分はここ)
:::

## 2. Homebrewをインストール
以下のコードをコピーするか、公式サイトからコピーして実行
“`shell:実行内容
/bin/bash -c “$(curl

元記事を表示

Node.jsでGoogleスプレッドシートを手軽に読み取る

## はじめに
Node.jsでGoogleスプレッドシートを読み書きするためには、公式のnpmとして[googleapis](https://www.npmjs.com/package/googleapis)が提供されており非常に便利ですが、より少ないコード量で手軽に様々な機能を扱うためのラッパーである[google-api-tool-box](https://www.npmjs.com/package/@genta-mz/google-api-tool-box)を公開したので、使い方を解説します。

## インストール

Node.jsのプロジェクトを作成し、`@genta-mz/google-api-tool-box` をインストールしてください。
“`shell
$ npm i @genta-mz/google-api-tool-box
“`
https://www.npmjs.com/package/@genta-mz/google-api-tool-box

## GoogleAPIでアクセスするための認証情報をセットアップする

一番簡単なのはGCPプロジェクトの

元記事を表示

node.jsのREPLで深いobjectを全部表示する

“`
> repl.writer.options.depth = null
“`


“`
> {1: {1: {1: {1: {1: 1}}}}}
{ ‘1’: { ‘1’: { ‘1’: [Object] } } }
> repl.writer.options.depth = null
null
> {1: {1: {1: {1: {1: 1}}}}}
{
‘1’: {
‘1’: { ‘1’: { ‘1’: { ‘1’: 1 } } }
}
}
“`

`repl.writer.options` に `util.inspect` の第二引数を設定できるようだ。

https://github.com/nodejs/help/issues/1490

元記事を表示

【Webアプリ開発】23卒、新卒1年目にやれたこと

Hello, everyone. どうも、新卒1年目エンジニアでした。

年度が変わります。せっかくの機会なので、今年度(2023年度)やったことを振り返ります。

# 筆者の略歴

– 大学時代(2019.4~2023.3)
– 情報系の学部を卒業(23卒)
– 授業で一通りのコンピュータサイエンスは知っている状態
– RISC-V OSを実験で作って、セマフォ使って並列処理動かしたのが思い出
– 教育データをAIでこねこねして、最終的にXAI(Explainable AI)の話につなげた卒業研究
– Pythonいっぱいやった
– 就職(2023.4~)
– 某事業会社の開発部門に配属
– 上流から下流までしっかりやる
– Webアプリ作ることが多い

# やったこといろいろ

## 1. Webエンジニアの超基礎研修

社内での研修期間を存分に利用して、Webエンジニアとして育ちました。そもそも、まともにWebアプリを作ったことすらなかった筆者だったので、すべてを本当に基礎から学びました。

###

元記事を表示

Prismaでリレーションされたレコードの有無を条件にデータ抽出したい場合の解決策

## Prismaとは
Prismaとは型安全なデータアクセスを提供するTypeScriptベースのORMです。
https://www.prisma.io/

## やりたかったこと
以下のER図ようなテーブル構成があり、**「タグAが紐づいている」**、または **「全く紐づけがない」** アイテムを抽出する必要がありました。

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2221418/9165e0f0-8ee1-09c0-153b-1976591735df.png)

**「タグID Aが紐づいている」** という条件はsomeを使用することで実現できます。
“`js
where: {
{
tagsOnItems: {
some: {
tagId: ‘A’
}
}
},
}
“`

しかし **「全く紐づけがない」** という条件が問題でした。
Pr

元記事を表示

生成AIでシステムを作成してみよう! 1回目

## はじめに
Qiita初投稿になります。
今後生成AIが仕事のサポートしていくということで生成AIの学習とやってみたこととそこから学んだコツを共有していきます。
学習中の内容な為、間違いがあると思いますが寛容な心で指摘していただけるとありがたいです。
また、いろいろな方のご意見を聞きたいため、よろしければ記事の感想などをいただけるとありがたいです。
こちらの学習で行うことは生成AIを使用して企画書・要件定義・基本設計・詳細設計・プログラミング・テスト・環境作成 等をやっていきます。
使用予定のツール言語は以下の通りです。
・ChatGPT 3.5
・Github Copilot
・node.js
・javascript

## 本日の内容
企画書の作成
(所要時間10分ぐらい)

## やったこと
まず本日の内容をやっていくにあたってあまりマーケティング、営業の経験がないのがとても問題、、、、
どうやればいいんだと最初から挫折していましたが、まあやってみるかとChatGPTにて新しいチャットを開いていきました。

とりあえず、細かい企画はわからないので日本でとても有名なノーコード/

元記事を表示

nvmのインストール方法、使用方法、アンインストール方法

nvmのインストール方法、使用方法、アンインストール方法をまとめました!

https://magicgifted.com/nvm/

元記事を表示

connect-flashのメッセージが消える

Express3系でFlashメッセージを表示する為、connect-flashというパッケージを追加して、(勝手に)罠にハマったので共有しておきます。

https://www.npmjs.com/package/connect-flash

サンプルコードを見ながら、下記のようなコードを書いて動作チェックしました。

“` app.js
app.get(‘/flash’, function(req, res){
req.flash(‘info’, ‘Flash is back!’)
res.redirect(‘/’);
});

app.get(‘/’, function(req, res){
console.log(req.flash(‘info’)); // デバッグ用にメッセージを仕込んだ
res.render(‘index’, { messages: req.flash(‘info’) });
});
“`

“` index.ejs
<% if (messages){ %>

<%= messages %>

<% } %>
“`

元記事を表示

大学1回生がソリューションエンジニアとして働いてわかったこと

# はじめに
こんにちは、学生エンジニアのMasamichiです。最近大阪に引っ越したのですがあまりのアクセスの良さにびっくりしてます。ただ車を運転したいなとは思わなくなりました()

今回は、2023年11月〜2024年2月まで株式会社プレイドにてエンジニアインターンに参加してきたので、その体験記を書いてみました。

# インターンについて
## ポジション
僕が今回ついたポジションは[カスタマーエンジニア](https://www.wantedly.com/projects/1418410)という職種です。
※僕はこの部署の中で特にソリューションエンジニアという配役だったので、今回はソリューションエンジニアという職業について言及しています。

## 仕事内容
社内では自社SaaSである「KARTE」の**ソリューション開発をする**という仕事をしました。具体的には、導入企業からご意見をいただいたり社内で新たな使い方を検証したい機能を、設計・実装・発信するという一貫したプロセスを体験できました。以下に自分が実装したソリューションの一覧を載せておきます。

https://soluti

元記事を表示

Node.jsを使った定期的なファイル同期の構築手順

# node-cronを使ったフォルダ同期の環境構築

Node.jsとnode-cronパッケージ、rsyncユーティリティを使用して、指定のフォルダ間で15秒ごとにファイルを同期する環境を構築します。

## 前提条件

– Node.jsがインストールされていること
– node-cronパッケージがインストールされていること
– rsyncユーティリティがインストールされていること
– 対象のフォルダ(/bitnami/wordpress/wp-content/uploads/ と /home/bitnami/Dropbox/wp-uploads/)が存在していること

## 手順

### 1. Node.jsとnpmのインストール

Node.jsの最新版をインストールします。

“`bash
curl -sL https://deb.nodesource.com/setup_current.x | sudo -E bash –
sudo apt-get install -y nodejs
“`

node-cronパッケージをインストールします。

“`bash
n

元記事を表示

Node.jsとMessagingAPIでLINEの応答ボットを作る

## はじめに
業務でLINEのMessagingAPIを使ったサービスの開発をすることになりました。
練習のためLINEの応答ボットを作ってみたので、その手順を説明します。
なお、本記事は以下2点が前提となっています。
* JavaScript、Node.jsの知識があること
* GitHubのアカウントを持っていること

## LINE関連の設定
### LINE Business IDの作成
Messaging APIの機能を使用するためにはLINE Business IDが必要です。
以下のURLにアクセスします。
https://manager.line.biz/

「アカウントを作成」をクリックします。

「メールアドレスで登録」を押下します。

【API Gateway】IPアドレスによるアクセス制限を実装・設定する方法

API Gatewayで実装したAPIにおいてIPアドレスによるアクセス制限をする必要が出てきたため、その方法を調査・実装した。

# 結論
API GatewayのLambdaタイプオーソライザーを作成し、特定のIPアドレスにのみ認可を与えることでアクセス制限をかけることができる。

# 実装内容
まず、オーソライザーの本体となるLamnda関数を実装する。

“`javascript
exports.handler = async (event) => {
if(event.authorizationToken){
// X-forwarded-forの内容がトークンに設定されるので、
// カンマで区切りで取得したIPアドレスの一番最初の要素がアクセス元のIPアドレスになる
ip = event.authorizationToken.split(‘,’)[0].trim();
}
else{
return generatePolicy(‘user’, ‘Deny’, event.method

元記事を表示

OTHERカテゴリの最新記事