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

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

Node.jsでAzure Open AIのライブラリ(@azure/openai)を使ってAzure Open AIを使うメモ

[前回の記事](https://qiita.com/n0bisuke/items/9ee0627ea79ccc414b84)で、`The completion operation does not work with the specified model, gpt-35-turbo. Please choose different model and try again. You can learn more about which models can be used with each operation`というエラーがでるという話をしていましたが、どうやら使おうとしているモデルとメソッドの対応がよくなかった模様でした。

タイトル、冗長ですが、、前回は公式OpenAIライブラリでAzure Open AIを使ったので今回の表現で良い気がする…

## 準備

こちらの記事を元に、モデルを準備します。

https://qiita.com/n0bisuke/items/9ee0627ea79ccc414b84

次にライブラリは@azure/openaiを使います。

ht

元記事を表示

OpenAI公式npmモジュールでAzure Open AIのGPT APIを使うコピペサンプル

Azure Open AIのAPIをNode.jsから使ってみます。Azure Open AIのライブラリ(@azure/openai)を使ったら上手くいかず公式(openai)を使ったら上手くいきました。

https://zenn.dev/n0bisuke/scraps/c18f0da1fdc980

## 色々準備

### まずはOpenAIのライブラリインストール

ライブラリを入れておきましょう。

“`bash
$ npm i openai
“`

公式を使う場合のはこちらに残しています。

https://qiita.com/n0bisuke/items/6759ff0b0e481892f810

### モデルを作成する

Azureの管理画面からOpenAIのリソースを作成し、モデルデプロイをします。
(ちなみに、現状この時にどこのリージョンを選ぶかで、GPT4が使えたり使えなかったりします)

> ![スクリーンショット 2023-12-06 13.53.29.png](https://qiita-image-store.s3.ap-northeast-1

元記事を表示

【v4対応】シンプルにNode.jsからOpen AIのGPT APIを使うメモ

2023年8月頃にOpenAIのライブラリがv3からv4にSDKがアップグレードがあり、今までのコードが使えなくなったりしてました。 某授業で先生が詰まってましたね… ということでメモです。

## 準備

APIキーを取得してライブラリもインストールします。

– APIキー発行
– https://qiita.com/okinakamasayoshi/items/247c58342e5cf15c7bcd
– npmライブラリのインストール

“`bash
$ npm i openai
“`

## コピペ実行用

“`js
const OpenAI = require(‘openai’);
const key=’API キー’

const openai = new OpenAI({
apiKey: key, // defaults to process.env[“OPENAI_API_KEY”]
});

async function main() {
const completion = await openai.chat.completions.c

元記事を表示

Slackの会話履歴の取得をTypeScriptで実装する ~conversations.replies~

# 目次

1. 概要と前提
1. 実装のポイント
2.1. [`conversations.replies`](https://api.slack.com/methods/conversations.replies)のスコープ
2.2. [`curosr`ベースのページネーション](https://api.slack.com/docs/pagination#cursors)
2.3. [Rate limits](https://api.slack.com/docs/rate-limits)
1. ソースコード
1. 感想

# 1. 概要と前提

Slackのメッセージの会話履歴の取得をTypeScriptで実装していきます。

本記事では、私が実装する上で躓いたところを中心に解説していきます。そのため、全ての手順を詳細に解説するわけではありません。上記の目次を参考に、必要な箇所だけつまみ食いしていただければ幸いです。

**注意**:そもそも、Slackには、会話履歴などのデータをexportする機能が備わっています。
参考:[ワークスペースのデータをエクス

元記事を表示

TypescriptでCloud Loggingにログを出力する方法

# はじめに

本記事は、私が、Typrscript を使用して、Cloud Logging に出力しようとした際に、
以下の点が分からず少し調べるのに時間が掛かってしまったので解決した方法を記事にしました。

– Typescript で構造化ログを出力する方法
– ログフィールドを変更する方法
– ロギングパッケージの種類

# 想定読者

– Typescript で構造化ログを出力する方法が分からない
– 「Nodejs 構造化ログ フィールド変更」で調べてもそうじゃないって記事ばかりあった人
– ぱっと、解決方法が知りたい人

# 解決法

ロギングのインスタンスを生成する際に以下のカスタムフォーマットを設定する

1 . winston をインストール

“`bash:npm
npm install winston
“`

2 . loggerr インスタンスを生成

“`javascript:src/middleware/logger.ts
import winston from ‘winston’;

const myCustomFormat = winst

元記事を表示

Switchbot 温度計をobnizに対応した話

SwitchbotのBluetoothAPIが公開されていると聞いたので、obnizと連携できるなと連携させてみました。
あんまりパーツライブラリの開発過程って書いたことないなと思って、今回はライブラリの使い方というよりは作り方を書いてみます。

## SwitchbotAPIを読んでみる

SwitchbotのGithubにて、APIが公開されていました。

ちょっとわかりにくいのが、SwitchBotAPIと書いてあるのはwebのapiで、

https://github.com/OpenWonderLabs/SwitchBotAPI

SwitchBotAPI-BLEのほうがBluetooth APIの仕様書のようです。

https://github.com/OpenWonderLabs/SwitchBotAPI-BLE

手元にあるのがSwitchbot 温度計なので、温度計の仕様を見てみます。
温度計は英語名がMeterっぽいので、Meterのところを見てみます。

目次を見るとできることの全体像がわかりますね。

![SS20231205171345.png]

元記事を表示

n をやめて Volta にする

今まで node のバージョンを `n` コマンドで管理していましたが、ナウいパッケージ管理ツールを見つけたので乗り換えることにしました。

https://volta.sh/

# インストール
公式で書いてある通りにします。
“`shell
curl https://get.volta.sh | bash
“`
ターミナルを再起動します。.bashrc に勝手にパスを書いてくれるので、次回起動時に `volta` コマンドが使えるようになっています。
他にも `zsh` や `fish` でも自動インストールできるようになっています。便利!

# セットアップ

### 補完
そのままだとコマンド補完が効かないので、補完の設定をします。

Volta はコマンド補完のための設定を `volta` コマンドから生成できるように作られています。
雑には次のコマンドを実行してターミナル再起動すれば補完が効くようになります。

“`shell
volta completions bash >> ~/.bashrc
“`

### node
以下のコマンドで node18 が入ります

元記事を表示

Node用Cloud Function用環境構築

この記事は [ここのえ Advent Calendar 2023](https://qiita.com/advent-calendar/2023/99no_exit) Day 6の記事です。

# 要約

これです

https://github.com/nonuplet/cloud-functions-template

# Introduction

最近Cloud Functionsを使い始めたのですが、Nodeでちょっとしたスクリプトを回すのに結構便利でした。
頻繁に環境構築するのが面倒なので、備忘録も兼ねて手順を残しておきます。

# 環境

WSL + Ubuntu環境でテストしていますが、Linuxであれば問題ないと思います。
前提として`Node.js`, `Yarn` は導入済みとします。

– Functions Framework
– Typescript
– ESLint
– Prettier
– esbuild

# 手順

– 初期化

“`bash
yarn init -y
“`

デバッグ用に [**Functions Framework**](ht

元記事を表示

ProtoPediaの作品データを簡易的に取得して指標分析など

## ヒーローズリーグ2023お疲れ様でした!

ヒーローズリーグは老舗のものづくり開発コンテストって感じで2023年の決勝が先日終わりました。

ヒーローズリーグとは?はこちらの記事を読んでみましょう。

https://note.com/otama_kum_akero/n/nd43ffa03aba4

僕も出しましたけど賞に引っかからず…

https://protopedia.net/prototype/4902

## 288作品の情報を一覧化してみる

個人的な興味(理由はあるけど深くは言わない)で作品の情報を抜き出しつつソートしたりしたいなと思いました。

https://protopedia.net/event/hl2023

今回の応募作品は288作品でした。

この情報を手で取るのは大変で、ProtoPediaのAPIはあるけどなんか **挙動が怪しかったのでAPIは使わず**にサイトから抜き出してみるチャレンジをしてみます。

### サイトの構成

こんな感じで作品がdivタグ要素のBOXに入っています。 **”proto-box”というclass**

元記事を表示

色々な言語で簡単なREPLを実装する #typescript

続きです。

# REPLとは
[こちらの記事](https://qiita.com/runeleaf/items/7615afd7abc79c9b3c01)を参照してください。

## Typescriptで実装する
nodejsのreadlineを利用しています。

“`bash
$ pnpm init
$ pnpm add -D typescript @types/node
$ vim package.json
// scriptsに追加
“dev”: “node main.js”,
“build”: “tsc main.ts”,
“`

main.ts
“`typescript
import * as readline from ‘readline’

const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
})

rl.setPrompt(‘node> ‘)
rl.prompt()

rl.on(‘line’, line => {
try

元記事を表示

[5日目] 学校の食堂をIT化させる話 混雑度カメラのサーバー構成を考える(技術的に)

こんにちは、なりかくんと申します。
この記事はなりかくん Advent Calender 2023の5日目の記事です。

この話は、1日目から始めた学校の食堂をIT化させる話の続きとなります。前回は、混雑度カメラのサーバー構成を考える案をメモ程度に書きました。(時間が無くなって5日目に続きを書いてます。)

今回は、技術的に考えていこうと思います。

# 最初に思いついた構成案
今回、とにかくお金が無いんです!!なので、年6,000円程度で使えるレンタルサーバーを私は契約していたのでそれにドメインを追加して使ってやろうと考えました。
また、レンタルサーバーではデータベース(MySQL)が標準搭載されていたのでビックデータ化も非常に楽でいいなと思ったのもあります。

サーバー側の言語はPHPで、書きました。以下が実際に作ったプログラムの画像のアップロードとデータベース挿入のコードです。
なんと簡単なコードなのでしょうか(*´ω`)
“`php
$filename = $_FILES[‘image’][‘name’];
$uploaded_path = ‘../images/camera

元記事を表示

【TypeScript】バックエンド・フロントエンドで共有できるプライベートGithubPackagesの作り方

## 🌟はじめに
本記事はプロもくチャット Adevent Calendar2023の5日目です

https://qiita.com/advent-calendar/2023/puromoku

## 🤔 なんで必要なの?
### 🔥 Firestoreを使っている
僕が所属しているプロダクトでは、下記のような構成を取っています
– フロントエンド: Vue3/TypeScript
– バックエンド: Node.js/TypeScript
– インフラ: Firebase/GCP

### 📚 Firestoreはカスタムオブジェクト経由でRead/Writeできる
DBは基本的にはFirestore、一部CloudSQLを使っています。
フロントエンドから直接Firestoreの読み書きする部分が多く、随所でバックエンド経由でFirestoreへアクセスするため、フロントエンド・バックエンドともに同じドキュメントやコレクションにアクセスするのが多いです。

FirestoreはNoSQLのため基本的にはスキーマがありませんが、下記のようにモデルクラスと変換メソッド(`toFires

元記事を表示

@cap-js/notificationsプラグインでSAP Build Work Zoneに通知を送る

## はじめに
この記事は [SAP Advent Calendar 2023](https://adventar.org/calendars/8870)の 12月5日分の記事として執筆しています。

### SAP Build Work Zoneの通知機能とは
SAP Build Work Zone, standard editionでは、ユーザに対してアプリケーションなどから通知を送ることができます。通知はシェルバーのベルのアイコンをクリックすると表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276021/ae3e0d5e-b090-19d0-c70f-15175d191d36.png)

サイトの設定で”Show Notifications”に”Yes”を設定することで、通知を受け取れるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276021/c6

元記事を表示

AWS DynamoDB で超低コストな全文検索を実装しよう 〜実装編〜

この記事では、Amazon DynamoDB で全文検索を実装することで、コストを大幅に抑える方法をご紹介します。

:::note
この記事は、「[AWS DynamoDB で超低コストな全文検索を実装しよう 〜設計編〜](https://qiita.com/Michinosuke/items/f0406bce43bc243d2629)」 の続きです。
:::

https://qiita.com/Michinosuke/items/f0406bce43bc243d2629

## Serverless Framework の設定

Amazon DynamoDB と AWS Lambda を構築する必要があるので、[Serverless Framework](https://www.serverless.com/) を利用します。

インストールしていない場合は、インストールします。

“`sh
$ npm i -g serverless serverless-offline
“`

それから、プロジェクトを初期化し、AWS にデプロイします。

“`sh
$ serverl

元記事を表示

Node.js で地震情報の取得とか

これは [防災アプリ開発 Advent Calendar 2023](https://adventar.org/calendars/9301) 5日目の記事です。
前日 (12月4日) は Fukushimacam|黒板ちゃん さんの「[アナログ情報で防災・減災](https://fukushimacam.hatenadiary.com/entry/Advent_Calendar_2023)」でした。

# はじめに
:::note warn
– 初めて記事を書いたので、誤字・脱字等が多分あります
– この記事はプログラミングはじめたてほやほやな方に向けて書いています
– わかりやすくするため、解説を雑にしたり、端折ったりしてることがあります

:::

## 自己紹介

はじめまして、しろねです。
中学3年生で受験生の人です。

私は今年に入ってからプログラミングを勉強し始め、Pythonで地震情報を通知するソフトを作ったり、JavaScriptなどで地震情報の震度情報を地図に描画するWebアプリを作ったりしてました。

ですが、11月になって全くコードを書いていなかった

元記事を表示

【Bun】先日試したベンチのどの行が速いのか確かめて、最後に少し驚いた。

先日試したこのベンチのどの行が速いのかちょっと確かめてみたくなった。

https://qiita.com/toshirot/items/c4d090bc38f9b85d8cdd

このコードは「郵便局の郵便番号データ 18M のcsv(124,332行) を for で回しながら行数カウントするだけのスクリプト」です。やってることはそれほど多くないので、上から順番にベンチを試してみたいと思います。

ただ、今回は Bun と Node.js を完全に区別するべく、node_modules の無いBun用と node_modules の有る Node.js 用のふたつのディレクトリを作って試してみようと思います。

# 今回の環境

クラウド: Azure VM (これはオンプレでも何でも良い)
OS: Ubuntu 20.04.6 LTS (GNU/Linux 5.15.0-1050-azure x86_64)
Bun: 1.0.15 ( https://bun.sh/blog )
Node.js: v20.9.0

# 準備
#### 共通の作業

“`sh:bun用ディレクトリ

元記事を表示

S3へのアップロードをLambdaで検知してslackに通知する

## 概要
業務フローの最適化を目指してS3へのアップロードを検知してslackに知らせるシステムを構築してみようと思います。イメージはこんな感じ。
![名称未設定ファイル.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254217/7cf271d3-8eb4-5ae4-6336-80415f7d2e20.png)

## 前提条件
– Awsアカウントを作成済みであること(自由に触れる)
– S3のバケットが用意してあること
– slackアカウントを持っていること

## Lambda環境の用意
こちらにまとめてあるので割愛

https://qiita.com/nero-15/items/7a4b6e1b9a273c68159b

## トリガーを設定する
これは編集画面ですが、新規作成もほぼ一緒です。s3のバケットの特定のディレクトリにアップロードされた際にLambdaが動くように設定
![スクリーンショット 2023-08-18 0.42.22.png](https://qiit

元記事を表示

Puppeteerでpage.waitForTimeout’ is deprecated.

PuppeteerでwaitForTimeoutが非推奨(deprecated)になってました。

– Puppeteer v21.5.2
– Node.js v21.2.0

の環境です。

## “node:timers/promises”を使うように

こちらにあるように`.waitForTimeout()`は公式の`setTimeout()`を使いましょう的な感じでした。

https://stackoverflow.com/questions/77078345/how-to-fix-issue-that-deprecated-page-waitfortimeout-method-usage

“`js
const setTimeout = require(“node:timers/promises”).setTimeout;
//import {setTimeout} from “node:timers/promises”;

// …
await setTimeout(3000);
“`

とすればOKです。

## なるべく時間で待つのは使わない方がよい

S

元記事を表示

ゼロからWindowsにNext.js+Gitの環境構築

## 初めに

## インストールするもの
1.WSL2(Ubuntu)
2.Node.js
3.VScode
4.Git
5.Next.js

## 目次
1.[WSLのインストール](#anchor1)
2.[Node.jsをWSL上にインストール](#anchor2)
3.[VScodeをインストール](#anchor3)
4.[gitのインストール](#anchor4)
5.[Next.jsを使ってみる](#anchor5)
6.[GitHubにアップロードしてみる](#anchor6)


## WSLをインストールする
初めに参考にしたものを記載します。

https://learn.microsoft.com/ja-jp/windows/wsl/setup/environment#set-up-your-linux-username-and-password

powershell もしくはコマンドプロンプトを右クリックから、管理者権限で実行します。
次のコマンドを実行します。
“`
wsl –install
“`
する

元記事を表示

APIでkintoneのレコード操作(Node.js環境)

kintoneを初めて触ってみたのでメモです。

## kintoneのアプリを作成する
**1. kintoneアプリが必要なので作成**
サイボウズの開発者アカウントを取得し、右下のアプリの”+”から作成できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/1499d374-b86d-26cf-6ddf-9c17866be6c2.png)

**2. 「はじめから作成」を選択**
今回は簡単なアプリなので「はじめから作成」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/07c52ab8-386c-e7a3-bbfe-dc2dd4d0996c.png)

**3. 「数値」と「日付」を選択**
左のカテゴリから選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.a

元記事を表示

OTHERカテゴリの最新記事