Node.js関連のことを調べてみた2021年12月04日

Node.js関連のことを調べてみた2021年12月04日

初心者がNode.js(Express)でYouTubeの動画をダウンロードできる機能をつくる。

この記事は、【 [可茂IT塾 Advent Calendar 2021](https://qiita.com/advent-calendar/2021/kamo-it) 】の4日目の記事です。

# 初めに
Node.jsも記事書くのも初心者なので、もしかしたらコードや説明の間違いや、記事が読みにくいかもしれませんが、お許しください・・・
また、こちらは全て自分の動画で試しております。
## つくるもの
フロント(ブラウザ)側:URLを入力
バックエンド(サーバー)側:それに応じた動画をmp4でダウンロードして送り返す

## 流れ
1. サーバーでHelloWorldがでるところまでつくる。
1. URLをおくるためのページを用意する。
1. URLを受け取って、その動画をダウンロードする

## 環境
どれも新しいversionでいいと思います。

$ npm -v
6.14.11

$ node -v
v14.16.0

## 作業開始

任意(今回はデスクトップ)の場所に作業していくフォルダを作りましょう。

そのフォルダをVSCodeで開きます。
さて、まずは初期化設定

元記事を表示

【実用編】指定した個数と面数のダイスを振る

## 前書き
前々から、TRPGに少し興味があり、ダイス機能を作ってみたいと思ったので作ってみたいと思います。

## どのようなものか
コマンドで、何回振るか、そのダイスは何面あるか。を指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1940116/0a2a6c32-55b1-9705-c423-64ab6db6d20e.png)
上記は**6面**のダイスを**4回**振った時の例です。

## どういう感じなのか(概要)
どういう動作をするのかの概要を説明します。

1. ユーザーから2つの引数を受け取る(回数・ダイスの面数)
1. Discordの最大文字数は2000なので、上の引数が大きすぎたら無視する(任意で大丈夫です)
1. それぞれのダイスの目の合計数とそれぞれの目のリストの変数を初期化しておく
1. 「1」で受け取った回数の引数分繰り返し処理をする
1. 繰り返し処理の中に「1」で受け取ったダイスの面数の中を乱数で出す
1. その目をリストに追加しながら、足

元記事を表示

LINE BOTとIFTTT(Fitbit)でなんちゃってピクミンブルームを作ってみた

この記事は、[プロとアウトスタジオ](https://protoout.studio/)の[アドベントカレンダー2021](https://qiita.com/advent-calendar/2021/protoout)の4日目です!

## はじめに

前回の記事(https://qiita.com/tkyko13/items/bdfee3416792737fd48d)のようにLINE BOTとIFTTTを組み合わせて最新作のPikmin Bloomのようなものを作ってみました

IFTTTにfitbitがあったのでそれを利用し、一日の終わりにその日歩いた歩数と、それにあった苗を一つだけもらえて、引っこ抜けるサービスです

位置情報とかは関係なく、歩数です

[![Image from Gyazo](https://i.gyazo.com/3d0614c109c581d3751b922e0e413977.gif)](https://gyazo.com/3d0614c109c581d3751b922e0e413977)

こんな感じに、一日の終わりにまず苗が通知され、引っこ抜くボタンを

元記事を表示

一番スマートなNode.js+TypeScript+MySQLの使い方

# はじめに

割と久々に Node.js で MySQL に繋ぐプログラムを書いてみたのですが、以前と比べて色々パワーアップしていたので、それらを組み合わせて「現時点のベストプラクティスはこんなんかな?」という感じの検討をしてみました。

多分これが一番スマートだと思います・・・という結論に達したのですが、どうだろうか:thinking:

Node.js はまだ触り始めたばかりなので、ご意見を頂けると幸いです :bow:

# ユーティリティ実装

この辺は好みが分かれるところかもしれませんが、DBアクセス用のユーティリティを作ります。

デザインパターン的にコレがベストかは少し自信がありませんが、Node.js だと流行りのパッケージはちょくちょく変わる(ex: mysql が mysql2 になったり、redisが ioredis になったり…etc)ので、自前コードで一枚噛ませて(ラップして)おいた方が良いと思います。(モノによりけりかもしれませんがインフラストラクチャ関連は特に)

## 関連パッケージ

“`
npm install –save dotenv
np

元記事を表示

# nvmでNode.jsを(Ubuntu/Windows)にインストールする方法

## はじめに
[https://github.com/nvm-sh/nvm](https://github.com/nvm-sh/nvm)を見ればまず間違いない.

## この記事でわかること

– nvmを使ったNode.jsのインストール方法(Ubuntu/Windows)
– Nodeのバージョン確認や切り替え等のコマンド(nvmコマンドはどのOSでも共通)

## nvmのインストール方法

Node Version Manager(NVM)とはその名の通り,Nodeのバージョンを管理してくれるソフトウェア.使用するnpmのパッケージによっては異なるバージョンを求められることがあるため,nvmのようなバージョン管理ツールは使って損しない.

### Ubuntu

公式の [README](https://github.com/nvm-sh/nvm) に従って進める.

curlが入っていなければインストールする.
curlはコマンドラインツールの一種で,URLの先にある場所とデータの送受信を行うために使われる.以下のコマンドを端末画面で入力してインストール.

“`
s

元記事を表示

Nodejs の postgresql ドライバ (Sequelize, Prisma) を少し触ってみた。

**@kenmaro**です。
普段は主に**秘密計算、準同型暗号などの記事について投稿しています**。
秘密計算に関連するまとめの記事に関しては以下をご覧ください。

> – [秘密計算エンジニアを始めて1年が経った。](https://qiita.com/kenmaro/items/416657efca2ff296169b)
– [秘密計算エンジニアを始めて2年半が経った。](https://qiita.com/kenmaro/items/48059dd60f79e80f5ef8)

## 概要
Nodejs のドライバを使ってpostgresqlに接続するテストを行った際に、
どのようなドライバやライブラリ、フレームワークがあるのかを調べたので簡単に備忘録的にまとめてみます。

## 初めにまとめ
いくつかDBドライバ的なものは存在して、有名なものも幾つかありましたが、
この二つが中でも有名なようでした。

– Sequelize

DBへのORMをもったライブラリであり、簡単に接続したいのであればこれを使うのが良さそうです。

– Prisma

ライブラリというよりはフレ

元記事を表示

DockerコンテナにDockerfileの変更が反映されない

# はじめに
現在、Web系自社開発企業への転職を目標にポートフォリオを作成中。
Dockerを活用してLEMP環境を構築し、Laravel+VuejsでWebアプリケーションの開発を行っております。
Dockerコンテナのnode.jsのバージョンを変更させるために、Dockerfileを編集した際に
Dockerfileの変更がコンテナに反映されないという問題で少しつまづいたので、記録として残します。

# 目次

1. [やりたいこと](#Chapter1)
1. [やったこと](#Chapter2)
1. [原因](#Chapter3)
1. [解説](#Chapter4)
1. [解決策](#Chapter5)
1. [参考文献](#reference)



# やりたいこと
Dockerfileを編集して、DockerコンテナのNode.jsのバージョンを変更したい


# やったこと
Dockerfileを編集

元記事を表示

CloudFunctionsアプリをDevContainerでさくっと開発する

クラウドコンピューティング、とりわけサーバーレス環境は
周りのめんどくさい事に煩わされずに「提供するモノの中身に注力できる」という点でより素早く、品質の良いサービスを提供できるシカケでもあります。

本稿では、開発環境でも「より中身に注力」するためにさくっと環境を立ち上げてデプロイする事について触れようと思います。

##TL;DR
– VisualStudioCodeのDevContainerでコンテナ内に開発環境を作る
– ローカルでCloudFunctionsを実行する
– 開発環境からCloudへデプロイする

##想定環境
– Windows10
– GoogleCloud(CloudFunctions)
– node.js
– VisualStudioCode

##ローカルマシンにインストールするのはふたつ
クラウドのアプリケーション開発に携わる方にとって、同時に複数のサービスを開発したりメンテナンスする必要に迫られる事はありませんか?

それぞれのアプリケーションが違うバージョンのフレームワークやプラグインを使っていたり、そもそも稼働するクラウドやリ

元記事を表示

Node.jsを安全にアップデートするためにやったこと

# はじめに

はじめまして、リンクアンドモチベーションのプラットフォームチームに所属している菊池です。
弊社で開発しているモチベーションクラウドのフロントエンドビルド環境は長らくNode.js 8を使っており、「さすがにやばい」という感覚と、シンプルにモダンなライブラリをインストール出来ない、セキュリティリスクなどの観点から当時のActive LTSである14系へのアップデート作業をすることになりました[^1]。

[^1]: 2021年12月現在のActive LTSは16となっています。https://nodejs.org/en/about/releases/

しかしながら、(みなさんもご存知の通り)Node.jsのアップデート作業は簡単には終わりませんでした。
今回は1度の失敗を経て、安全にアップデートするためにやったことを紹介したいと思います。

※ この記事は[モチベーションクラウドシリーズアドベントカレンダー2021](https://qiita.com/advent-calendar/2021/mcs)の3日目の記事です。

# 1度目のアップデート

1度目のアップ

元記事を表示

領域展開「Gradle」で Node.js を制する

失礼しました…

# はじめに

オークファンの大きめのデータを担当するバックエンドシステムでは Kotlin + Spring Boot + Gradle の構成がよく採用されています。少し前まではこの構成で作成されるのは、バッチプログラムや Web API がほとんどでしたが、最近さらに Vue.js を追加して UI を持った Single Page Application (SPA) の Web アプリも作成するようになってきました。

Spring Boot のプロジェクトを [Spring Initializr](https://start.spring.io/) で作成すると、Gradle Wrapper が付属しています。これにより、開発環境では JDK のみ用意するだけでプロジェクトのテストやビルドな

元記事を表示

文系卒の新人が伝えたいエンジニアへの道 社内新人研修編

# はじめに
ここでは僕が新人研修で学んだことを伝えたいと思います。研修期間は3ヶ月です。会社としては上流工程から下流工程までの案件を引き受けている SIer 企業です。その企業がどのような新人研修をしたかというのを参考にしていただけたらなと思います。

# 新人研修新人研修で行ったことは以下の通りです。

– 基本的な知識のインプット(SQL, Java, Git, etc..)
– 社内サービス改善
– 社内サービス作成

そしてここでは3つ目の社内サービスの作成について話していきたいと思います。

# サービス概要
– サービスの内容
– 社内向け書籍購入ウェブアプリケーション
– 使用用途
– 社員が読んだ書籍のレビューをし書籍の情報共有をしあう
– 使用した言語
– JavaScript
– フロントエンド:React
– バックエンド:Node.js
– インフラ環境
– AWS

この開発は新人8人(フロントエンド:4人、バックエンド:4人)で行いました。僕はバックエンド側の担当していたためバックエンド側の話

元記事を表示

Node.jsのeventemitterとそのデザインパターンについてまとめてみた

# はじめに
この記事ではeventEmitterとeventEmitterに関わるデザインパターンについて紹介しています。
evenEmitterをマスターすることで、よりプロのプログラマー(略してプロプロ)になれると思います。

# eventemitterとは
まずイベントエミッターとはなにか説明します。
これ、独自にイベントを作成し、指定したタイミングに関数を発火することができます
イベント駆動開発でよく用いられます。

イメージで言うと、フロントエンドでいうと、ボタンを押したときにonpushに登録された関数が発火しますよね。それです!
eventemitterを用いると、自作でイベントを作って、好きなタイミングで発火することができるようになります。
Node.jsではeventemitterがストリームの裏側で作られ、実行されています。

# EventEmitterの実行例
“`js
const EventEmitter = require(“events”)
const eventEmitter = new EventEmitter()

const bakuhats

元記事を表示

【Node.js】ExpressとFirebaseで画像アップロードを実装する

# ■はじめに
普段はVue.js, Nuxt.jsを使っているのですが、Expressで画像アップロードを実装しようとしたらいつもと勝手が違ったのとサーバー側でFirebaseを使う時はFirebase SDKではなくFirebase Admin SDKを使わないといけないことを理解しておらず詰まったのでメモ。

“`plugins/firebase.js:
const admin = require(“firebase-admin”);
require(“dotenv”).config();
const ServiceAccount = require(“../ServiceAccount.json”);

if (admin.apps.length === 0) {
admin.initializeApp({
credential: admin.credential.cert(ServiceAccount),
storageBucket: process.env.FIREBASE_ADMIN_STORAGE_BUCKET
});
}

module.ex

元記事を表示

ServerlessFrameworkでDynamoDBLocalを使う

今更ですが、[Serverless Framework](https://www.serverless.com/)でDynamoDBのローカル開発環境を構築するために、[DynamoDB Local](https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocal.html)を導入したので、その記録です。

## はじめに

[DynamoDB Local](https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocal.html) 自体は、そもそも aws 公式のツールです。

DynamoDB をローカル環境で利用できるように用意されています。

JRE 上で動作するので、Java6以上の実行環境が必要です。[^1]

それを Serverless Framework で使うための [Serverless DynamoDB Local](https://www.server

元記事を表示

【準備時間5分】JavaScriptを学びつつ戦う!RoboCodeやろうぜ!

#JavaScriptを学びつつ戦う!RoboCodeやろうぜ!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/524081/8cd86f77-d8d7-730d-c7b9-b020511eaf42.png)

※Windows + Node.js環境を想定して書いています。

Git
https://github.com/mokemokepyonpyon/robocode-js/tree/gh-pages

Download
https://github.com/mokemokepyonpyon/robocode-js/archive/refs/heads/gh-pages.zip

##RoboCodeとは
Robocodeとは元々Java言語でプログラミングする対戦型ロボットシミュレータです。
自分プログラミングしたロボットを、世界中のプログラマが開発したロボットと闘わせることができるんです!

youchenleeさんが作成したJS言語バージョンを
更に初心者向けに改良し

元記事を表示

discord.js 連投対策をする

今回はDiscord.jsで連投対策をしていきます

#必要なもの
discord.js@12(改良すれば13でもいい)
Node.js12以降

#コード
“`js
const discord = require(‘discord.js’);
const client = new discord.Client()

const spam = [];
//spamオブジェクト作る

const maxtime = 1;
//時間を定義しておく

client.on(“message”, message => {
//メッセージイベントを発火

if (message.author.bot) return;
//BOTの場合は処理を実行しない

if (new Date() – spam[message.author.id] <= maxtime * 1000) { //現在の時刻から保存された時刻を引いた数がmaxtime(ミリ秒なので*1000している)以下だった場合実行 //ここから下が連投された場合の処理

元記事を表示

npm実行時に /usr/bin/env: ‘bash\r’: No such file or directory

# 事象
WindowsでWSLでnpm実行時に下記エラーが発生。

“`
$ npm -v
/usr/bin/env: ‘bash\r’: No such file or directory
“`

コマンドプロンプトでは問題ない。

“`
>npm -v
8.1.0
“`

# 原因
WSL上では、Windowsにインストールしたものは稼働せず、WSL実行用にインストールが必要。

# 対応
https://docs.microsoft.com/ja-jp/windows/dev-environment/javascript/nodejs-on-wsl

上記リンクに従い実行

nvmのインストール

“`
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
“`

確認

“`
$ command -v nvm
nvm
“`

Node.js LTS版 インストール

“`
$ nvm install –lts
“`

確認

“`
$ nvm

元記事を表示

卒業した推しメンに電話して次の推しメン候補をSMSで教えてもらう

長らく応援してきた乃木坂46の大園桃子さんが2021年9月4日にグループを卒業、そして芸能界を引退しました。毎回全力投球していた握手会(最近ではオンラインのお話し会)もなくなってしまい、今は推しロスで夢も希望もない毎日を過ごしています。

**次の推しメンは見つかるのだろうか。。。**

そんな気持ちになれないよ…と未練たらたらな自分から脱却するためにTwilioで**「推しメンに電話すると卒業の旨が告げられて次の推しメン候補が送られてくる」サービス**を作りました。デモはこちら(音声Onにしてください)。