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

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

【初心者Nodejs】東大生限定の掲示板を作ってみた

Webアプリを作ってみたいなと思って、Nodejsの勉強がてら東大生限定の掲示板を作ってみた。

https://www.akamonnews.com/landing

![](https://storage.googleapis.com/zenn-user-upload/40f2290a036d-20231121.jpg)
*クリックするとリンク先に飛ぶリンク共有掲示板みたいな*

作る過程は楽しかったし、同時に難しかったので記録を残しておく。

僕はガチ初心者だし完全なアマチュアなので、すごく基本的な内容だということは念頭に置いといてね。もしかしたらこの記事で間違いとか、セキュリティ上のリスクみたいな部分があるかもしれないから、その時はコメントで教えてくれるとありがたい。
あと言葉もかなり雰囲気・イメージで使っていると思うので、例えばパッケージ・ライブラリの細かい違いとかはお手柔らかに。文系なので。

ちなみにまだユーザーが皆無なので、もしこれを見ているあなたが東大生である、あるいは東大生の知り合いを知っているとかだったらぜひシェアしてみてね。

## 1.コンセプト・基本方針

元記事を表示

node.jsでのdynamodb操作をまとめた(sdk v3)

# node.jsでのdynamodb操作まとめ

node.jsでのdynamodb操作操作をする機会があったため、各種操作方法をまとめておきます。
環境は以下です。

– node.js v18
– aws sdk v3

## 公式サイト

https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-dynamodb/

https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_lib_dynamodb.html

## 想定するDynamoDBスキーマ

– パーティションキー
– AccountType
– ソートキー
– user_id
– 属性
– role_id

## 共通

DynamoDBClientのみで頑張って書いても大丈夫ですが型定義など書かないといけないのでめんどくさいです。
DocumentClientを使うとスッキリかけます。
詳しくは公式サイトを確認してください。

元記事を表示

Node.jsでのMQTT: 実例とFAQ

![MQTT with Node.js: A Beginner’s Guide with Examples & FAQs](https://assets.emqx.com/images/f984e17ca21ac4b99653a9b666dc537b.png?imageMogr2/thumbnail/1520×684)

**目次**

– [はじめに](#はじめに)
– [Node.js MQTTプロジェクトの準備](#nodejs-mqttプロジェクトの準備)
– [MQTTブローカーの準備](#mqttブローカーの準備)
– [Node.jsでのMQTTの使用](#nodejsでのmqttの使用)
– [完全なコード](#完全なコード)
– [テスト](#テスト)
– [Q&A](#qa)
– [Node.js MQTT応用](#nodejs-mqtt応用)
– [まとめ](#まとめ)
– [リソース](#リソース)

## はじめに

[MQTT](https://www.emqx.com/ja/blog/getting-started-with-mqtt)は、パ

元記事を表示

Node.js バージョン管理 比較表

# 比較表
| Tool | macOS | Linux (WSL) | Windows | スター数 (k) | バージョン管理 | プロジェクト切替 | 特徴 | 最終リリース日 |
| — | — | — | — | — | — | — | — | — |
| [nvm](https://github.com/nvm-sh/nvm) | ◯ | ◯ | ✕ | 71.6k | .nvmrc | △ | スタンダード | 2023-08-22 |
| [asdf](https://github.com/asdf-vm/asdf) | ◯ | ◯ | ✕ | 19k | .tool-versions | ◯ | 複数言語の管理 | 2023-09-13 |
| [n](https://github.com/tj/n) | ◯ | ◯ | ✕ | 18.1k | .nvmrc
.node-version
.n-node-version | ✕ | macOSで導入しやすい | 2023-10-15 |
| [fnm](https://gi

元記事を表示

わがままゴルファーのためのLINE Bot

## 1. ゴルフの要素って多くない!?
こんなどうでもいいことを友達に聞くのもアレなのでChatGPTに同意を求めてみた。
![スクリーンショット 2023-11-20 224428.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3554996/563b2c74-80c3-e4e2-d54b-2cd3c903af87.png)
プレイするという観点からもゴルフは考えることが多くて複雑であると
改めて教えてもらった。

私が個人的にゴルフをしていく上で気になるのは
* **どうやって練習したらいいのか**
* **ラウンドに必要なものは揃っているか**
* **予約はどうやって取ればいいか**
* **天気はいいのか**
などである。

もちろん時間をかければわかる。

練習の情報もあふれているが、取捨選択の時間があれば
必要で効率のよい練習方法にたどり着けるだろう。

ラウンド前に必要なものが足りていなければ
買いに行けばいい。

ゴルフ場に電話したり
アプリを使えば予約もできる。

ラウンド当日の天

元記事を表示

Node.jsでCSVをJSONに変換する【csvtojson】

[csvtojson](https://www.npmjs.com/package/csvtojson)というモジュールを使えばできるのだが、使い方について調べると古い情報が多かったり複雑なことをしていたりと、**CSVをJSONに変換する**というただそれだけのことの情報が見つからないので、備忘として残しておく。
# やり方
CSVファイルを読み込んでJSONの配列にするモジュールなので、あとはそれを好きに修正してファイル出力すれば良い。
## 環境
||version|
|—|—|
|[Node.js](https://nodejs.org/en)|20.9.0|
|[npm](https://docs.npmjs.com/cli/v10)|10.0.0|
|[csvtojson](https://www.npmjs.com/package/csvtojson)|2.0.10|
## コード(使用例)
“`javascript
// モジュール読み込み
const fs = require(‘fs’);
const csv = require(‘csvtojson’);

元記事を表示

Node.jsとgulpをアップデートして、Dart Sassにしたお話

# はじめに

私が担当している弊社サービスでは、大きな問題がなかったため、長い間Node.jsをアップデートしないまま開発を行っていました。(Node.jsは、gulpを使用(Sassをコンパイル・画像圧縮など)するために入れています)
そんな中、新メンバーが加入することになり、PCのセットアップをする際、旧バージョンのNode.jsはさすがに入れられないということが発覚し、急遽アップデートしないといけない事態になってしまいました :sweat_drops:
今回は急いで対応を迫られ、ようやく重い腰を上げて対応したアップデートのお話になります。
(ちなみに、対応した私は黒画面が苦手な部類の人間です:skull:)

![nimotsu_hakobu_woman.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54595/802e5f1c-747a-173f-3f66-ef63c475b55a.png)

# チャレンジ :one:

| | before | after |
|:-:|:-:|:-:

元記事を表示

REST API Caching (忘備録)

# キャッシング

キャッシング(caching)は、特定のリソースのコピーを保存し、要求された時にそれを提供する技術である。

キャッシングを使用してネットワークを最適化することで、以下のようにサービスの品質全体を向上させる。

– バンド幅の削減
– レイテンシーの削減
– サーバーへの負荷の削減
– ネットワークの障害を隠す

# REST apiのキャッシング

GETリクエストは、デフォルトでキャッシュ可能であるべきである。ブラウザは、通常全てのGETリクエストをキャッシュ可能として扱う。

POSTリクエストは、デフォルトでキャッシュ不可である。Expiresヘッダ又はCache-Controlヘッダを設定すると、キャッシュ可能になる。

PUT及びDELETEリクエストはキャッシュ不可である。

# キャッシングヘッダ

キャッシングヘッダ(Cache Headers)は、RESP APIにおけるキャッシングの重要な部分である。キャッシングヘッダはクライアントに対してリソースのキャッシュ可能性の情報を提供する。最も一般的なキャッシュヘッダ:

– Cache-Contro

元記事を表示

OpenAI 画像生成API チュートリアル gpt-4-vision編(3/4)

# Table of Contents
– [Table of Contents](#table-of-contents)
– [🤖 **OpenAI Image Generation API Tutorial: OpenAIの画像生成APIチュートリアル**](#-openai-image-generation-api-tutorial-openaiの画像生成apiチュートリアル)
– [📌 **Project Overview: プロジェクトの概要**](#-project-overview-プロジェクトの概要)
– [🚀 **Implementation with gpt-4-vision-preview: gpt-4-vision-previewを利用した実装**](#-implementation-with-gpt-4-vision-preview-gpt-4-vision-previewを利用した実装)
– [📁 **Folder Structure: フォルダ構成**](#-folder-structure-フォルダ構成)
– [📝 **Imple

元記事を表示

WebSocket調べてみた。

## はじめに
WebSocketは、リアルタイムの双方向通信を可能にする技術です。WebSocketの基本的な概念とその発展の歴史について紹介します。

## WebSocketとは
WebSocketは、リアルタイムの双方向通信を実現するための先進的な技術です。これは、ウェブアプリケーションがサーバーとの間で即時的にデータを交換できるようにするプロトコルです。

### WebSocketとHTTPの違い
WebSocketと従来のHTTPの最も大きな違いは、通信の持続性にあります。HTTPプロトコルは基本的に「リクエスト-レスポンス」モデルに基づいており、クライアントがリクエストを送信し、サーバーが応答を返すという形で通信が行われます。このモデルでは、クライアントが新たなデータを要求するたびに新しいリクエストを送る必要があります。

一方、WebSocketは「フルデュプレックス」通信を提供します。これは、一度のハンドシェイク(接続確立)後、クライアントとサーバー間で持続的な接続が維持されることを意味します。この接続を通じて、クライアントとサーバーは互いにリアルタイムでデータを

元記事を表示

【超入門】Node.js(Express)を使ってCRUD操作が出来るAPIを作成

# 本記事について

本記事は、Node.jsを使ったAPI作成に関して、自身の忘備録としての側面が強いです。

基本的なCRUD操作が可能なAPIを作成する過程をまとめたので、誰かの参考になればと公開してみます。

# はじめに

### 利用するツール
Postman : APIの動作を確認するために利用します。

https://qiita.com/otohusan/items/43cbb61cfd177049d638

本記事で必要な操作は、こちらの記事でカバーしています。

## 実装

### コードを書く下準備

まずターミナルにて、ディレクトリ・ファイル作成とライブラリのインストールを行います。

はじめに、作業を行うディレクトリを作成します

“`bash
mkdir 任意のディレクトリ名
cd 任意のディレクトリ名
“`
次にnpm init を行い、pacakage.jsonを作成します

“`bash
npm init -y
“`

続いて、必要なライブラリをインストールします。

“`bash
npm install –save nodemon e

元記事を表示

【Node.js】Node.jsのVersion管理

Node.jsのVersion管理ツールは色々あり、主なものは以下のもの。
– [nvm (Node Version Manager)](https://github.com/nvm-sh/nvm)
unix, macOSで動作可能。
Windows版は[nvm-windows](https://github.com/coreybutler/nvm-windows/releases)
– [fnm](https://github.com/Schniz/fnm)
unix, macOS, windowsで動作可能。
Rustで作られた高速管理ツール
– [Volta](https://github.com/volta-cli/volta)
unix, macOS, windowsで動作可能。
Rustで作られた高速管理ツール
– [n](https://github.com/tj/n)
unix, macOS, windows WSLで動作可能。
Windows版は無さそう。
非常にシンプルな仕様

今回は、[Microsof

元記事を表示

Socket.IOのクライアント用モジュールはなぜパス指定のみで読み込めるのか

[Socket.IO](https://socket.io/)のクライアント側のモジュールが、`node_modules`内に存在しているにも関わらず、`/socket.io/socket.io.js`というパス指定だけでクライアントサイドから読み込めることが非常にフシギに思った。
> The io method is bound to the global scope in the standalone build:
> “`html
>
>
> “`
([Socket.IO公式ドキュメントより](https://socket.io/docs/v4/client-api/))

例えば、Bootstrapなどは[ここ](https://qiita.com/yutami/items/75d65de5d6f79143ee92)で解説したように、静的ファイルとして提供することをサーバーサイド側で定義

元記事を表示

CloudFront Lambda@Edge で新しい NodeJS ランタイムを利用する場合に Cannot find module ‘aws-sdk’ というエラーが発生する

# 問題

れまで NodeJS 14 ランタイムで利用していた Lambda@Edge のコードでは以下のように aws-sdk を利用するコードを書いていた。

“`js
const aws = require(“aws-sdk”);
“`

しかし、NodeJS 18 にランタイムを更新してデプロイすると、このコードがエラーになってしまったのでその原因と対処方法を調査した。

# 原因

NodeJS 18 ランタイムからは `require(‘aws-sck’)` によって利用される AWS SDK v2 ではなく、新たに AWS SDK v3 がデフォルトで同梱されるようになり、v2 を意味する `require(‘aws-sck’)` がデフォルトでは利用できなくなったため。

https://aws.amazon.com/jp/blogs/compute/node-js-18-x-runtime-now-available-in-aws-lambda/

v3 を利用する場合は、ドキュメントに従って適切なモジュールを利用することになる。

https://docs.a

元記事を表示

【Volumio3】β版JP_Radioプラグインのインストール方法

https://fickle-it.net/2023/11/volumio3-install-plugin-bata-jp_radio/

こんにちは、mOqOmです。
少し前にVolumio3でRadikoを聴取できるプラグインのJP_Radioを作成しました。
2023/11/04現在、Volumio3のプラグイン検索にはリリースされていませんが。。。

そこでVolumio3でRadikoを聴取できるJP_Radioの正式リリース前にプラグインを使用した方向けにインストール方法を紹介します。

### 動作環境(開発環境)
あまり気にしなくていいと思いますが、開発環境は以下になります。
以下のバージョン以上であれば動作すると思います。

Raspberry Pi 4 Model B
Volumio3(Ver:3.546)
Node.js(Ver:14.15.4)
npm(Ver:6.14.10)
Python3(Ver:3.7.3)
Python2(Ver:2.7.16)
ffmpeg(Ver:4.1.11-0+deb10u1)

### 初期設定

元記事を表示

【Node.js】インターネット上にある画像のURLを指定してローカルに画像を保存する

インターネット上にある画像のURLを指定してローカルに画像を保存する方法です。

## 私の環境
– macOS Ventura
– Node.js: v20.0.0
– 開発環境: VSCode

## 最初に

HTTPリクエストを行うためのライブラリ axios をインストールします。

“`
$ npm init
$ npm install axios
“`

コード

“`index.js
const fs = require(‘fs’);
const axios = require(‘axios’);

async function downloadImage(url, filePath) {
try {
const response = await axios({
url,
method: ‘GET’,
responseType: ‘stream’
});

const writer = fs.createWriteStream(fil

元記事を表示

フロントからWebスクレイピング ( react, express 連携 )

フロントからWebスクレイピンを行おうとするとCORSのエラーでだいたいはまる...
相手側の設定次第では回避できる時もあるがフロントのみだと解決できない...
そこで express で簡易にバックエンドのサーバ作って対応してみる
スクレイピングには jsdom 使ってます
サンプルでは yahoo news の画像を適当にとってきてます

フロントのみで CORS のエラー解消する方法あったら教えてください!!

# 実施環境
– Windows11
– node (v18.17.1) ※インストール済
– react@18.2.0
– express@4.18.2

# 手順

## react プロジェクト作成・移動 (create-react-app)
create-react-app を使ってプロジェクトを作成
プロジェクト名は任意でOK!
– プロジェクト作成
“`powershell
npx create-react-app project-name
“`
– プロジェクト移動
“`powershell
cd project-name
“`

## expres

元記事を表示

CLIだけでCode EngineWebアプリの作成をしてみるメモ

GitHub Codespaces上でCode Engineを使って開発をしてみます。

いつも手順忘れる..

## 1. CLIツールの準備

### IBM CloudのCLIをインストール

通常のGitHub CodespacesだとLinux指定になります。

“`bash
$ curl -fsSL https://clis.cloud.ibm.com/install/linux | sh
“`

これでOKです。

### Code Engineのプラグインインストール

“`bash
$ ibmcloud plugin install code-engine
“`

確認してみます。

“`bash
$ ibmcloud plugin list

ibmcloud plugin list
Listing installed plug-ins…

Plugin Name Version Status Private endpoints supported
code-engine[ce] 1.48.0 true

元記事を表示

【Node.js】Pinata-SDKでファイルをIPFSへPINする

ここを見ながらやりました。

https://github.com/PinataCloud/Pinata-SDK

ファイルをアップロードするようなことを、IPFSではピンというらしいですね。
(違ったらごめんなさい)

## 私の環境
– macOS Ventura
– Node.js: v20.9.0
– 開発環境: VSCode

## 準備
### PINATA
https://www.pinata.cloud/

APIキーを取得して、どこかに控えておく

### 環境変数の設定
ルートディレクトリで
Pinata のSDKと
環境変数設定のライブラリ dotenv をインストールする。

“`
npm install –save @pinata/sdk
npm install –save dotenv
“`

ルートディレクトリに .envファイルを作成し、
さっき控えたAPIキーなどを環境変数を設定する。

“`.env
PINATA_API_KEY = “PINATAのAPIキー”
PINATA_API_SECRET = “PINATAのAPIシークレッ

元記事を表示

AIを活用した開発の基本

# はじめに

最近、AIの進化がすごいですね。
私もスマホアプリの個人開発でAIを活用してみたところ、1/16の時間で完成しました。
(見積り 80h -> 実績 5h)

この記事では、AI(ChatGPT)を開発に活用した例をご紹介します。

ただし、毎週のように様々なAIプロダクトが発表されており、これが正解ではありません。
基本的な考え方は変わらないと思うので、状況に応じて柔軟に工夫し、最適なツールおよび活用方法を見つけてください。

# 前提知識

・AIは幅広い知識を持っているが、正解を教えてくれるわけではない。
・AIからの回答は提案であり、最終判断は人間が行う。
・前提条件とやりたいことを明確に伝えると、より正確な提案を得られやすい。
・イメージと違う方向に行ったら、それはプロンプト(質問や指示の仕方)が原因。プロンプトを繰り返し見直すべき。
・何度か再生成したり、プロンプトを微修正したりすると、より希望に沿った回答(提案)を得られることがある。

# 事前準備

ChatGPTに依頼する前に、前提条件と要件を明確にしましょう。
相手はこちらのことを知らないので、でき

元記事を表示

OTHERカテゴリの最新記事