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

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

LambdaからFargateへの切り替える際にNode.jsアプリのタスクスペックをどう決めたか?

最近、LambdaからFargateに移行して、Node.js(NestJS)アプリの動作を最適化するためにタスクスペック(CPUやメモリの割り当て)についていろいろ試行錯誤しました。この経験を踏まえて、最適な設定を見つけるまでの流れを共有します。

## Lambdaとの違い
最初はLambdaを使っていたんですが、リクエストごとに新しい環境が立ち上がり、リソースの競合がなくて快適でした。短い処理ならLambdaが効率的で、オートスケーリングも自動的に対応してくれていました。

でも、長時間稼働するバッチ処理や大量データの処理になると、Lambdaではコールドスタートやタイムアウト(30 s)が気になってきました。そこで、より柔軟なリソース管理ができるFargateに移行することに決めました。

## Fargateに移行してみて: タスクスペックの試行錯誤
Fargateの強みは、CPUやメモリなどのリソースを自分で細かく設定できるところですが、これが逆に難しくもあります。Node.jsはシングルスレッドで動くので、どのくらいのリソースが最適なのかを見極める必要がありました。

#

元記事を表示

NestJSでCloud Runのコンテナ自URLを正しく取得する方法

# はじめに
NestJS を使って Cloud Run 上にデプロイされたアプリケーション内で、自サービスの URL を取得する際に、req.protocol が http になってしまうことがあります。これは、リバースプロキシを介したリクエストで、内部的に http で処理されるためです。

Cloud Run では、外部リクエストは HTTPS で送信されますが、コンテナ内部に届く際には HTTP として認識される場合があります。この問題を解決するためには、Express の trust proxy 設定を行い、X-Forwarded-Proto ヘッダーを信頼することで正しいプロトコル(https)を取得する必要があります。

この記事では、NestJS での trust proxy 設定の方法と、自URLを正しく取得するための実装方法について解説します。

## NestJSでの解決方法

### trust proxy の設定
NestJS では、Express を使ったアプリケーションであれば、app.set(‘trust proxy’, true) を設定することで、リ

元記事を表示

(Node.js) @mapbox/tilebeltモジュールを理解する

# はじめに
node.jsのコードの中で@mapbox/tilebeltモジュールを使用する機会があったので、どのようなモジュールであるのか簡単にまとめたいと思います。

# @mapbox/tilebeltモジュールとは
Mapboxが提供しているJavaScriptモジュールで、地図タイルを扱うための便利な関数が含まれています。

モジュールの主な機能には以下のものがあります。

1.タイル計算:
緯度経度からXYZタイル座標へ変換したり、逆にタイル座標から地理的な境界ボックスに変換したりできます。

2.親子関係の取得:
該当タイルの親タイルを取得したり、タイルを分割して子タイルを生成することができ、地図のズームインやズームアウトの操作に役立ちます。

# tileToBBOX()の使用方法
モジュールの中の一つのメソッドであるtileToBBOX()の使用方法の使用方法について解説します。これは、タイル座標から地理的なバウンディングボックス(BBOX)を取得する関数です。タイルは通常、ズームレベルz、x座標、y座標で指定され、地図の特定の領域を表します。tileToBBOX関

元記事を表示

コーディングもするデザイナーが知っておきたい SVG 最適化(svgo v3 対応)

Docker Desktop と SVGO プラグインでしている SVG 最適化について、覚書を残しておきます。

## 設定ファイル(imagemin.js)
“`js:imagemin.js
const keepfolder = require(‘imagemin-keep-folder’);
const path = require(‘path’);
const crypto = require(‘crypto’);
const { JSDOM } = require(‘jsdom’);
const fs = require(‘fs’);

(async () => {
const imageminSvgo = (await import(‘imagemin-svgo’)).default;

// Imageminで最初の圧縮・最適化
await keepfolder([‘src/**/*.svg’], {
plugins: [
imageminSvgo({
// コード整形用プラグイン
// js2svg: {

元記事を表示

pnpmを使ってNode.jsのバージョン管理から開放される

## はじめに

### この記事の目的

1. プロジェクト毎に異なるバージョンのNode.jsを使えるようにする
2. プロジェクトメンバーが使うNode.jsとパッケージマネージャーのバージョンを統一する
3. バージョンの切り替えを自動化する

### 対象読者

1. Node.jsを使ってHTMLやCSSのコーディングをしている人
2. Node.jsのバージョン管理を煩わしいと感じている人、もしくはこれからバージョン管理を始めようとしている人

### 背景

昨今、Node.jsはフロントエンドの開発環境としてその地位を獲得しています。SassのコンパイルやTypeScriptのビルドだけでなく、様々な用途で使用されています。

また、フロントエンドの開発を取り巻く環境は変化が早く、Node.jsのバージョンアップもそれに合わせるかのように半年ごとにメジャーアップデートが行われています。そのため、複数プロジェクトに参画している場合、プロジェクト毎に異なるバージョンのNode.jsが使われることも多くあります。

異なるバージョンのNode.jsで開発することで、特定メ

元記事を表示

Node.jsでVOICEROIDをしゃべらせてみる

# 概要
WebフレームワークでVOICEROIDを操作してみたいな~とふと考え付いたので、いずれReactなどで動かすためにまずはNode.jsでVOICEROIDを操作できるかという技術検証です。実際にReactでも動くかはまだ試せていないのでいずれやります。

# Node.jsで動かす方法
といってもVOICEROID製品はほとんどC#で作られていることが多くNode.jsから直接制御するのは大変そうということがわかりました。ただ、調べるとどうやら[AssistantSeika](https://wiki.hgotoh.jp/documents/tools/assistantseika/assistantseika-000)というアプリケーションを使えば行けそうだということがわかりそのラッパーである[Node-Seika](https://github.com/nusu-github/node-seika)というものがあることを知ったのでこれを使ってみようと思います。

# 使うライブラリなど
大前提として、喋らせるVOICEROIDの正規ライセンス、AssistantSeik

元記事を表示

mysql接続時にER_NOT_SUPPORTED_AUTH_MODEのエラー

# 事象
node.js, expressで動くAPサーバと、mysqlが乗ったDBサーバがあり、
APサーバ側で以下のコードを書き、mysqlへ接続したい。

“`js
const express = require(‘express’);
const router = express.Router();

let todos = [];

/* GET home page. */
router.get(‘/’, function(req, res, next) {
res.render(‘index’, {
title: ‘ToDo App’,
todos: todos,
});
});

router.post(‘/’, function(req, res, next) {
connection.connect((err) => {
if (err) {
console.log(‘error connecting: ‘ + err.stack);
return
}
console.log(‘succ

元記事を表示

効率を向上させるための Web 開発エンジニア向けの 100 以上の無料リソース

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861208/359d72a5-1170-c084-5a93-16b721d8e827.png)

ウェブエンジニアにとって、急速に進化するウェブ技術についていくことは非常に重要であり、同時に挑戦でもあります。ウェブ開発者として、常に学び、適応し続ける必要があります。以下は、著者が開発と学習の過程で出会った貴重なツールとリソースのリストであり、皆さんと共有します。

## JavaScriptライブラリ
– [jQuery](https://jquery.com/): 最も有名なJavaScriptライブラリ。
– [Backbone.js](https://backbonejs.org/): 複雑なウェブアプリケーションのためのMVP構造を提供します。
– [D3.js](https://d3js.org/): 最も人気のあるJavaScriptビジュアライゼーションライブラリの一つ。
– [React](https://reactjs.

元記事を表示

🐳 DockerとNext.jsの基本:node_modules問題解決ガイド(AI)

## 🎯 目的
このガイドは、DockerとNext.jsを使用する際に発生する「node_modules」フォルダの消失問題について説明し、その解決方法を詳細な解説付きで提供します。

## 📚 基本概念

### 🧱 Docker
仮想のコンピュータ(コンテナ)を作り、アプリケーションを動かすためのツールです。

### ⚛️ Next.js
ウェブサイトやアプリケーションを作るための人気のあるJavaScriptフレームワークです。

### 📁 node_modules
アプリケーションが正しく動作するために必要な部品(モジュール)が保存されているフォルダです。

## 🚨 問題:node_modulesが消えてしまう

### 症状
– Dockerを使ってNext.jsのアプリを起動すると、`node_modules`フォルダが消失します。
– アプリケーションが正常に動作しなくなります。

### 重要性
`node_modules`フォルダはアプリケーションの動作に不可欠です。このフォルダが消えると、アプリは必要な部品を見つけられなくなります。

## 🕵️ 原因:バイ

元記事を表示

#atcoder #プログラミング #Javascript # 本番環境自動判別方法等

**本内容を利用した場合の一切の責任を私は負いません。**

# 概要
初めてまともにやってみて、タイトルのものが欲しくなったんだけど、探しても見つからず、自作したもの。
(ローカルで大量のテストケースに耐えれるか確認するため、標準入力ではなく、1テストごとのファイルを大量に流し込みたい。
本番とローカルとでソースを分けたくない。)
既知だったり、別の方法があったりするかもだけど。
それと、他に気づいた点。

# 本番環境自動判別方法
全部かはわからないが、提出画面の下に下記がある。

![提出画面.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397476/421e9e4f-da76-2c90-372f-6530618648f8.png)

ということは、カレントにこのファイルがあれば本番ということになる。
(ローカルが異なるファイル名であることが前提。)
てことで下記で判別する。

“`Javascript
var isSubmit = false;

if (require(“fs”).exis

元記事を表示

Node.js と ws でシンプルな WebSocketサーバー: Bufferオブジェクトで受けとった文字列データを UTF-8 の文字列にする

## はじめに
Node.js で下記の ws を使い、でシンプルな WebSocketサーバーを使う時の話です。

過去にも、その内容の記事を書いていたのですが、今回は Bufferオブジェクトで受けとった文字列を扱う話に関わる、シンプルな内容です。

●ws – npm
 https://www.npmjs.com/package/ws

### 背景の補足
とあるハッカソンで、WebSocket を使った PC とスマホ・ガジェット等を連動させる通信処理を実装しようとした時に、特定の複数の文字列をキーに、複数の動作を行わせることをやろうとしました。

そのテスト実装をした時、「文字列を送信する側が Bufferオブジェクトでデータを送る形」で、「受信側では、文字列変換した内容を扱いたい」という状況があってやった内容です。

## 実装内容
以下が本題です
今回、以下では、WebSocketサーバーの機能がある受信側の実装(かなりシンプルなもの)を示します。

`npm i ws` でパッケージをインストールして、下記のプログラムを作り、nodeコマンドで動かします(接続は、例えば

元記事を表示

ejsを使うときに必須コード!

## 書こうと思った理由

EJS を使っているときに、`res.render()` ではなく `express.static()` でやっていたから、ほかのコードなどでなぜかダウンロードされる現象を少なくしたいから。

`res.render()`は、例えばこんな風に使います:

“`js
app.get(‘/hoge’, (req, res) => {
res.render(path.join(__dirname, ‘/src/hoge.ejs’)); // <--ここ }); ``` **これがポイント!** 1. **`res.render('テンプレート名')`** - `'hoge'` は、テンプレートファイルの名前です。EJS では、通常 `.ejs` という拡張子を持つテンプレートファイルを使用します。この場合だと `src/hoge.ejs` というファイルが読み込まれます。 2. **データを渡す** - テンプレートにデータを渡したい場合、第二引数にオブジェクトを渡すことができます。この例では、`{ title: 'hogehoge'

元記事を表示

プログラムにおける終了コードとは?その役割とNode.jsでの活用例

## はじめに

こんにちは。HRBrainでオウンドメディア・ランディングページの開発を担当している渡邉です。

先日、終了コードを真偽値と誤認したことが原因で、ハマりかけました。

終了コードは、プログラムが終了する際にOSへ返す数値であり、その値によってプログラムの実行結果を表しています。

この記事では、終了コードの役割と、Node.jsでの具体的な活用例を解説します。

## 終了コードを真偽値と混同してはいけない

プログラムの終了コードは `0` が成功、`0以外` がエラーや失敗を表します。

これは多くのプログラミング言語やOSで採用されている標準的な仕様です。

しかし、直感的には `0` はfalseや失敗を示し、`1` はtrueや成功を意味すると思いがちです。これが誤認の原因となります。

– 終了コード
– `0` → 成功
– `1` やそれ以外 → 失敗
– 真偽値(一般的な解釈)
– `0` → false
– `1` → true

## 終了コードの特徴と一般的な値

終了コードには、以下のような特徴があります。

1. 終了コー

元記事を表示

npm本体のバージョンアップデート方法

## npmのバージョンアップデート方法

npmのバージョンを最新に更新するには、Terminalで以下の手順を実施します。

### 1. 現在のnpmバージョンを確認する

“`sh
npm –version
“`

### 2. npmを最新バージョンに更新する

“`sh
npm install -g npm@latest
“`

### 3. 更新後、再度バージョンを確認して正しくアップデートされたか確認する

“`sh
npm –version
“`

## 注意点

– グローバルインストールには管理者権限が必要な場合があります。その場合は、コマンドの前に`sudo`を付けて実行してください。

– Node.jsのバージョンによっては、特定のnpmバージョンが推奨される場合があります。Node.jsをアップデートすることで、推奨されるnpmバージョンも自動的に更新されることがあります。

– npmの更新後、他のパッケージやプロジェクトに影響が出る可能性があるため、更新前にプロジェクトのバックアップを取ることをお勧めします。

元記事を表示

paiza.ioでnode.js その4

# 概要
paiza.ioでnode.js、やってみた。
練習問題やってみた。

# 練習問題
リストなタプルをソートせよ。

# サンプルコード

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

var rowElements = [{“timestamp”:”1728082796491″},{“timestamp”:”1728083796491″,”name”:”ai”,”publish”:”ture”,”condition”:”good”,”comment”:”ok”},{“timestamp”:”1728083845078″,”name”:”aita”,”publish”:”1″,”condition”:”good”,”comment”:”ok”},{“timestamp”:”1728082865943″},{“timestamp”:”1728360810390″,”name”:”test”,”comment”:”iine”},{“timestamp”:”1728362175611″,”name”:

元記事を表示

Boltオープンソースコードベースへようこそ

> **Bolt**オープンソースコードベースへようこそ!このリポジトリには、StackBlitzの**WebContainer API**を利用した**AIによるソフトウェア開発ツール**の構築を始めるのに役立つ、bolt.newのコアコンポーネントを使用したシンプルなサンプルアプリが含まれています。

### BoltとWebContainer APIを使用して構築する理由

BoltとWebContainer APIを使用して構築することで、ユーザーが仮想マシンを必要とせず、ブラウザ上で直接フルスタックWebアプリを**プロンプト、実行、編集、デプロイ**できるブラウザベースのアプリケーションを作成できます。WebContainer APIを使用すると、AIがユーザーのブラウザタブ内の**Node.jsサーバー**、**ファイルシステム**、**パッケージマネージャー**、**開発ターミナル**に直接アクセスし、完全に制御できるアプリを構築できます。この強力な組み合わせにより、主要なJavaScriptライブラリとNodeパッケージをすぐに使用できる新しいクラスの開発ツールを作成

元記事を表示

【VRChat】OSCを使ってDiscordからチャットボックスに入力する

# OSCを使ってDiscordからチャットボックスに入力する
こんにちは。VRChat始めたてのぽよたんぴです。
VRChatにはマイクがなくても会話できる「チャットボックス」という機能があります。

ですが、文字を打ってる間は移動などができません(当然ですが)
そこで、VRChatにはOSC[^1]という、外部アプリからVRChatを制御できるAPIのようなものがあります。
今回はOSCとDiscordを使用して、スマホ版Discordから入力した文字をチャットボックスに送信するプログラムを作成していきます。

# 必要なもの
– VRChat
– Node.js
– Discord

# OSCを有効化
VRChatを開き、アクションメニューを開きます

アクションメニューの開き方

– デスクトップ: Rキー
– Viveコントローラー: メニューボタン長押し
– Oculus Touch: B、Y長押し
– Indexコントローラー: B長押し

参考: [リンク](https://vrchatjp.playing.wik

元記事を表示

discord.js v15の時代がもうすぐそこへ

# 前置きと感謝
今年の8月にdiscord.js v13が[v13.17.1](https://www.npmjs.com/package/discord.js/v/13.17.1)で開発終了しました。
2021年6月([chore: prepare release](https://github.com/discordjs/discord.js/commit/cfde127072ae06b63f17ba19b3e0d28fddef97d6))から2024年8月までの3年間、お世話になりました!
![goodbye-discordjs-v13.png](https://cdn.oto.pet/img/goodbye-discordjs-v13.png)
[音声ファイル](https://cdn.oto.pet/aud/goodbye-discordjs-v13.mp3)

# discord.jsの今後
discord.jsの現行サポートバージョンはv14です(執筆時点での最新は[v14.16.3](https://www.npmjs.com/package/discord.js/v

元記事を表示

LINE Messaging API超入門〜概要編

## はじめに
今までいくつかLINEのMessaging APIを利用した記事を書いてきました。
* [Node.jsとMessagingAPIでLINEの応答ボットを作る](https://qiita.com/course_k/items/85bf9cfab971cb5b97ee)
* [Node.jsとMessaging APIでプッシュメッセージを送ろう](https://qiita.com/course_k/items/8a2448ac988bb6fc7914)

しかし、どれも断片的な知識に留まるのみだったので、改めてその概要から機能まですべて網羅的に解説することにしました。

全何回になるかわかりませんが、すべての機能を解説する予定です。

最近はノーコードやローコードなど、コードを極力書かずにLINE BOTを作るのがはやっていますが、本シリーズでは自分で手を動かしてコードを一つずつ書くことで、その理解を深められるようにしていきます。

今回は第一回として、Messaging APIとはそもそも何なのかについて説明します。

## Messaging APIとは
###

元記事を表示

SnowflakeとReactを使ったデータのリアルタイム可視化【初投稿】

# はじめに
はじめまして!:sunny:

本記事では、Snowflakeに蓄積されたデータ(仮想IoT機器の温度)を、Express(Node.js)を使ったバックエンドで取得し、Reactフロントエンドを通じてリアルタイムで可視化するデモを紹介します。Snowflakeからのリアルタイムデータ取得から視覚化までの一連の流れが理解でき、IoTやデータ可視化などに応用できるはず…!

# 使用するライブラリとバージョン
このプロジェクトでは、以下のライブラリを使用します。

– Node.js & Express: サーバーサイドでのAPI構築(Express v4.19.2)
– Socket.io: クライアントとサーバー間でリアルタイム通信を実現(Socket.io v4.7.5)
– Snowflake SDK: Snowflakeデータベースへのアクセス(Snowflake SDK v1.12.0)
– React: フロントエンドのUI構築(React v18.3.1)
– Chart.js: グラフの描画に使用(Chart.js v4.4.4)
– その他の依存関係

元記事を表示

OTHERカテゴリの最新記事