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

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

Node.jsのexpress(TypeScript版)でc言語のプログラムをRenderで実行

# はじめに
さきほど、JavaScript版のexpressでc言語のプログラムを実行するのを書いたばかりですがその続編で、TypeScript版をお届けします。

https://qiita.com/yo16/items/108de9889c79313df005

この記事は、c言語とかRenderとかはあまり書かず、JavaScriptでexpressを作ったのと同じことをTypeScriptでやるにはどうするかっていう、基礎に立ち戻った感じになりそうです。

c言語のコンパイルは、JavaScriptのままとします。(そこをTypeScriptにこだわる必要性を感じなかったので)

githubのリポジトリは、JavaScriptと同じで、フォルダを「app-c-lang2-ts」にしました。こちらもRenderで動作確認済み。

https://github.com/yo16/gcc_render_prac/tree/main

# 手順
## 1. 初期処理
“`sh
mkdir app-c-lang2-ts
cd app-c-lang2-ts
npm init -y

元記事を表示

Node.jsのexpressでc言語のプログラムをRenderで実行

# はじめに
とあるプログラムがC言語で書かれていて、それをwebシステムとしてnodeで実行したいと思ったのでやり方を調べました。整理すると、大したことはないです。

## 概要
準備
1. c言語のソースをコンパイルして、モジュールを作成
1. Webサーバーとして`express`を起動する

アクセス時
1. `express`のサーバー処理がモジュールをキックし、標準出力を得る
1. 標準出力を元にクライアントへ返す

## 作ったソース
https://github.com/yo16/gcc_render_prac

結果を一応貼っておくと、↓こういう文字を返すだけのwebシステムですw
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/4dabc6dd-d932-be8d-4869-039f394f6d05.png)

# 詳細
## 全体
フォルダ構成
![image.png](https://qiita-image-store.s3.ap-northeas

元記事を表示

Node.js と ws でシンプルな WebSocketサーバー + Node.js v22 でフラグなしで使える WebSocket

## はじめに
以前から利用している「ws」と、Node.js v22 でフラグなしで使えるようになった WebSocket を組み合わせる話です。

### ws
以下の ws は WebSocketサーバーを準備するのに使います。

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

### Node.js v22 で WebSocket利用
Node.js v22 でフラグなしで使える WebSocket は、以下に書かれているものです。

●Node.js — Node.js 22 is now available!
 https://nodejs.org/en/blog/announcements/v22-release-announce#websocket

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/3741c8c6-5f19-2bb6-cd54-133264ea5072.png)

ブラウザと同様に、WebSocketサ

元記事を表示

Node.js を使うときには、使用するライブラリのバージョンをピン留めしておきましょう

Qiita Engineer Festa 2024 記事投稿2本目!
本記事はQmonus Value Streamの投稿キャンペーン記事です

https://qiita.com/official-events/3648bc4e6cedb674491c

## 📌 はじめに

`npm install` コマンドを使用して外部ライブラリのインストールをする際に、バージョンが固定化されなくてもやもやした経験はありませんか?
さらにバージョンが固定化されないのは開発する上では些細な問題だと思い、スルーした経験はないですか?

“`json-doc:package.json
// 例
{
“dependencies”: {
// 心の声 (先頭のキャレット(^)いらないけど、大した問題じゃないしそのままでいいか〜)
“express”: “^4.19.0”
}
}
“`

私はわりと最近まで、スルーしてきました ///

そんな過去の私を含め、package.json の外部ライブラリを固定化する方法がわからない(もしくは、調べるのをサボっている)方向けに、T

元記事を表示

Node.js で Readline をシンプルに使う(1桁の数字の入力を扱う)

Node.js でキー入力をシンプルに取得したい、という状況があり、以下の標準モジュールを使った簡素なプログラムを作ってみました。

●Readline | Node.js v22.3.0 Documentation
 https://nodejs.org/api/readline.html

元にするプログラムは、上記のページに書かれているものです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/f0ed0fc0-430e-db34-9215-d523629afcbc.png)

“`javascript
const readline = require(‘node:readline’);
const { stdin: input, stdout: output } = require(‘node:process’);

const rl = readline.createInterface({ input, output });

rl.question(‘What

元記事を表示

cached-providerを作ってみた

# はじめに
キャッシュとは、一度取得したデータを一時的に保存しておき、次回同じデータが必要になったときに再取得せずに素早く提供する仕組みです。例えばAPIからデータを取得する場合、最初のリクエスト時にそのデータをキャッシュに保存しておき、次回からはキャッシュからデータを返すようにすると、処理が速くなります。

しかし、初回のデータを取得している間にも次のリクエストが来るかもしれません。ロックを取得して待たせるという選択肢がないTypeScript/JavaScriptの場合、このようなケースを綺麗に扱うのは意外と難しいものです。

その問題を解消するために書いた自作ライブラリの紹介です。

[cached-provider on npm](https://www.npmjs.com/package/cached-provider)

# 基本的な構成
## ObjectIdMapper
JavaScriptのObjectには固有のIDがありません。そのため、Objectに対してロック処理をするためには、Objectを一意に識別する仕組みが必要になります。ObjectIdMapperは

元記事を表示

ヴァージョン指定してnpm i libxmljs2 でエラーになる

## libxmljs2のinstallでエラー
Node v20.9.0の環境で

“`
npm i libxmljs2@0.29.0
“`

をすると、以下のようなエラーが出て詰まったのでメモ。

“`
~ 前略 ~
npm error node-pre-gyp http GET https://github.com/marudor/libxmljs2/releases/download/v0.29.0/node-v115-darwin-arm64-unknown.tar.gz
npm error node-pre-gyp ERR! install response status 404 Not Found on https://github.com/marudor/libxmljs2/releases/download/v0.29.0/node-v115-darwin-arm64-unknown.tar.gz
npm error node-pre-gyp WARN Pre-built binaries not installable for libxmljs2@0.29.

元記事を表示

【TypeScript】実はクロージャ外で型ガードしてもクロージャ内部では型判定の結果が無効化されていた

# 問題!!

以下コードを実行すると何が出るでしょうか!?

“`tsx
function getUrls(url: string | URL, names: string[]) {
if (typeof url === “string”) {
url = new URL(url);
}

return names.map(name => {
url.searchParams.set(“name”, name)
return url.toString();
});
}

console.log(getUrls(“http://localhost:8080”, [“test”]))
“`

## 答え!!

クロージャ内で引数urlの型が分からないのにURL型のメソッドを使おうとしてエラーになります。

つまり型判定の結果が無効化されちゃっています…..

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

元記事を表示

AmplifyのNodeのVersionを自動で指定する方法について解説

## 概要
AmplifyのNodeのVersionをコンソール画面から手動で変更するのは手間なので
– amplify.ymlにNodeのversionを直接記載する方法
– .nvmrcファイルを使って指定する方法
– voltaをAmplify内にインストールして指定する方法 <- オススメ の3つについて解説したいと思います ## 前提 - 今回はバージョン20.10.0を例に解説します ## ディレクトリ構成 ``` tree ├── .gitignore ├── Dockerfile ├── README.md └── application ├── src ├── next-env.d.ts ├── next.config.js ├── package-lock.json └── package.json ``` ## amplify.ymlに直接記載する方法 以下のようにnvmを使って使用したいNodeのバージョンを ``` nvm install 20.10.0 nvm use 20.10.0 ``` の順で直接指定する

元記事を表示

【JavaScript】ESMとCJSの違い

調べた範囲の📝です。マサカリ歓迎しております_(´ཀ`」 ∠)_

# ざっくりと

ESM(Ecma Script Module):モダン(新しい)。ブラウザはこちらのみ。Node.jsも対応済み。
CJS(Common JS Module):Node.jsの伝統的なモジュールシステム。
# Node.js において

ファイル名
– `.mjs` ファイル
– 常にESM(Ecma Script Module)として扱われる
– `.cjs` ファイル
– 常にCJS(Common JS Module)として扱われる

`package.json`の`”type”`フィールド
– `”type”: “module”`
– そのディレクトリ内の`.js`ファイルがESMとして扱われる
– `”type”: “commonjs”`
– そのディレクトリ内の`.js`ファイルがCJSとして扱われる

モジュールの読み込みメソッド
– `import`
– 非同期的
– 拡張子を明示する(`import ‘./module.js’`)
– ESM・CJSともに読

元記事を表示

自作 Cisco Unified IP Phone Services Application を Apache Bench にかけながら改良する

# はじめに
これは[前回の記事](https://qiita.com/CIB-MC/items/b046c23014203b704655)からの続きです。

とりあえずやっつけで Cisco Unified IP Phone Services Application (長い) を作ってみましたが、アクセスがあるたびに Node.js で表示用の画像を作ってるのでパフォーマンスが気になります。
ほら、もしかしたら数百人いる環境で使われるかもしれないし。(などと)

# テスト先環境
– ProLiant TM200 (Intel(R) Xeon(R) CPU D-1518) から 仮想2コア
– Debian 12.4
– Node.js v18.19.0

# Apache Bench で計測してみる

– リクエスト総数: 10000
– 同時リクエスト数: 200
– Lengthエラー報告: 無効

※ すなわちコマンドとしては `ab -n 10000 -c 200 -l テスト先URL`
※ Lengthエラー報告を無効にしているのは、アクセスするタイミングでエオルゼア時間

元記事を表示

【Node.js】Tailwind CSS の最も簡単な始め方

# 完成イメージ

| |
| :-: |
| ![スクリーンショット 2024-06-16 20.46.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457770/c3c72f39-424b-aebd-4461-935e49bf8e5f.png) |
| Node.js のサーバーから
Tailwind CSS クラスを使用した静的ファイルを表示できる |
# この記事について

備忘録です。なるべく簡潔に書こうと思います。

# 環境

| サービス名称 | バージョン | 種別等 |
| ——- | ——- | :————: |
| VSCode | 1.90.0 | エディタ |
| macOS | 14.5 | OS |
| Node.js | 20.13.1 | JavaScript実行環境 |
| npm | 10.5.2 | パッケー

元記事を表示

Cisco Unified IP Phone Services Application でエオルゼア時計を作る

# はじめに
唐突ですが Cisco IP Phone 7965 を買いました。
調べてみると、XMLアプリケーションを開発すればIdle画面をカスタマイズできるとのこと。
これはエオルゼア時計を作るしかないですね!(またか)

# 下調べ

まずは下記の公式資料を見てみましょう。

Cisco Unified IP Phone Services Application Development Notes
https://www.voipinfo.net/docs/cisco/xsi_dev_guide.pdf

……思ってたより実装の自由度が低いですね。
(個人の感想です)

表示にこだわりたいのでサーバ側で動的に画像を生成して、公式資料の中にある「CiscoIPPhoneImageFile: 3-9」を使って表示するのがよさそうです。

# 開発

次のものを用意しましょう。
– Linux環境
– Node.js + Express
– nginx

## Node.js+Expressで時計画像を作る
まずは簡単にラベルとエオルゼア時間表示だけで作ってみましょう。

IP Ph

元記事を表示

そもそもNode.jsってなに?

JavascriptをPC内で動かすためには
node.jsをinstallする必要があります。

そうすることで`npm run start`を使えば
Webサーバーが立ちあがるという。

…**Webサーバーが立ち上がる**って冷静にどういう意味?
意味は分かっているつもりでも、
ざっくり「こんな感じか」で今まで澄ましていたので
今回GPT先生と一緒に深堀していこうかと思います。

# Node.jsってなに?

### Node.js
…JavaScriptをサーバーサイドで実行するためのランタイム環境

### 主な特徴
– 非同期I/O:
– 多くのリクエストを同時に処理することができる
– イベント駆動
– イベントが発生すると対応するコールバック関数が実行される。
– リアクティブでレスポンスの良いアプリケーションを構築することができる
– シングルスレッド
– ?
– npm
– 豊富なパッケージ管理システムnpm

# なんでWebサーバーが立ち上がるの?

Webサーバーが立ち上がる理由は、プログラムが特定のネット

元記事を表示

Google Cloud Vision APIを使用して、Node.jsで手書きの文字を認識する

# はじめに
皆さんはOCRと聞いてどのようなイメージをお持ちでしょうか?
自分はOCRについて知識がなく、活字はある程度読めるが、手書きには弱いというイメージでした。

しかし、業務でGoogleのCloud Visionに触れて現在のOCRの性能に驚かされました。
以下URLからデモ版を試すことが可能です。

https://cloud.google.com/vision/docs/drag-and-drop?hl=ja

今回はAPIを使用して文字を認識し、テキストファイルに出力するまでの記事になります。

# 認識結果

### Input
![test.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3717745/304b4c2e-2533-2d05-5120-37760bbe779f.jpeg)

### Output
“`2024-06-16 12-41-34.txt
覆水盆に返らず
猫に小判
雨降って地固まる
明日は明日の風が吹く
虎穴に入らずんば虎子を得
“`

4、5行目はあえて

元記事を表示

【pnpm】依存パッケージについて調べるのに役立つコマンド5選

dependabot や renovate などが作った PR を手動ないし、オートマージで運用している人も多いと思いますが、このライブラリって何処で使われてるんだっけ?とか、どの依存なんです?を任意のタイミングで確認したい時に便利コマンド直ぐに忘れてしまうので、自分用にまとめておこうと思いこの記事を書くことにしました。

FYI:
https://docs.github.com/ja/code-security/dependabot
https://docs.renovatebot.com/

尚、全て pnpm v9.x の内容を前提としています。

## pnpm audit

https://pnpm.io/ja/cli/audit

依存関係の脆弱性チェックに使います。プロジェクトの依存関係を分析し、既知のセキュリティ脆弱性を報告してくれます。

報告の中身としてはこんな感じ
– Severity: 脆弱性の深刻度(Low、Moderate、High、Critical)
– Package: 脆弱性を持つパッケージの名前
– Version: 影響を受けるパッケージのバージョ

元記事を表示

[Microsoft][Node.js] Teams bot開発環境を整える 2024年6月版

# はじめに

Teamsで動くbotを作ろうと調べ始めると、どうにもたくさん情報があってよくわかりません。

自分のためにまとめ直してみます。

2024年6月時点の情報です。

# あらかじめ必要なもの

あらかじめ必要なものたちです。

– Node.js
– Microsoft 365 開発用テナント
– TeamsFx cli
– Dev tunnel cli
– (任意)Visual Studio Code

ひとつずつみていきます。

## Node.js

macOS や Linux の場合は [nodenv](https://github.com/nodenv/nodenv?tab=readme-ov-file#installation) を使用してインストールするのが簡単です。

Windows の場合は [NVM for Windows](https://github.com/coreybutler/nvm-windows/releases) を使用してインストールするのが簡単かな?

Node.js のバージョンは、18か20を使います。

自分は 20.14.

元記事を表示

Fitbit Web API:歩数の取得

# はじめに

この記事は[前回](https://qiita.com/ishidad2/items/c18881a36b58acdd5a76)の続きです。
まだFitbit Web APIを実行したことがない方は以下の記事を参考にしてください。

https://qiita.com/ishidad2/items/c18881a36b58acdd5a76

# やること

今回はWeb APIよりステップ(歩数)の情報を取得してみようと思います。

# API情報

[公式リファレンス](https://dev.fitbit.com/build/reference/web-api/intraday/get-activity-intraday-by-date/)を見ると以下のエンドポイントでSteps(歩数)の取得ができるようです。
また、このエンドポイントは`calories` , `distance` , `elevation` , `floors` , `steps`
を`resource`に指定することで、それぞれデータを取得することができるようです。

![image.png

元記事を表示

Fitbit Web APIで生体情報を取得

# 始めに

私は普段からFitbitを愛用しています。(愛機は[Fitbit Versa 4](https://www.fitbit.com/global/jp/products/smartwatches/versa4?sku=523BKBK))

:::note info
Fitbitは健康とフィットネスを追跡するためのデバイスとサービスを提供する会社です。
Fitbitの製品ラインアップには、アクティビティトラッカーやスマートウォッチがあり、歩数、心拍数、睡眠の質、消費カロリーなどのデータを専用のデバイスで取得し管理しています。
:::

https://www.fitbit.com/global/jp/home

このFitbitのアクティビティデータを使ってなにか出来ないかと思い、まずはAPIからのデータ取得方法の手順を調べたのでメモします。

# Fitbit開発者アカウントの作成

https://dev.fitbit.com/build/reference/web-api/developer-guide/getting-started/

簡単に流れを説明すると以

元記事を表示

雑にCookieParserとは?

# CookieParserとは
Node.jsとExpressフレームワークで使用されるミドルウェアで、クライアントから送信されたHTTPリクエストのCookieヘッダーを解析し、JavaScriptオブジェクトとして簡単にアクセスできるようにします。
Cookieを上手いことサーバーサイドで使用できる形に変換できるものです。

# 使い方

1. 以下のコマンドでインストールする。
“`bash
$ npm install cookie-parser
“`

2. アプリケーションにcookieParserを組み込む。
“`main.ts
import { NestFactory } from ‘@nestjs/core’;
import { AppModule } from ‘./app.module’;
import * as cookieParser from ‘cookie-parser’;

async function bootstrap() {
const app = await

元記事を表示

OTHERカテゴリの最新記事