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

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

Google Photosからランダムな1枚の画像を取得できるようにする

前回の投稿 [GoogleAPIライブラリを使わずにGoogleアカウントでログインできるようにする](https://qiita.com/poruruba/items/0f99400d178c4497f79b) で、とりあえず、Google Photos APIにアクセスする準備として、Googleアカウントでログインできる環境を作りました。

今度は、ログインしたアカウントのGoogle Photosの画像リストを取得して、ランダムに選択した画像を取得できるようにします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261826/56364c9a-89ec-5654-9097-a9c6a9d4323a.png)

ソースコードもろもろは前回同様以下にあります。

poruruba/GooglePhotosGallery

https://github.com/poruruba/GooglePhotosGallery

#Google Photos APIを利用できるようにする

元記事を表示

obniz feat.BAIKIN-MAN!

##パパの目論見##

うちの次女はアンパンマンが大好きでバイキンマンが大嫌いな典型的な2歳児なのですが、

ガチャポンで出てくるのは、決まってバイキンマンだったりします:joy:

今回の企画はバイキンマンを使ったおもちゃを作り、
娘に~~好きになってもらおう~~バイキンマンを克服してもらおうというものです。

逃げる者を追いたくなるのは人間の性でしょうから、近づいたら逃げるバイキンマンを作ります。
###名付けて、「BYE-BAIKIN-MAN!!」###
obnizを手に入れたので、いざトライ!

##試作品##

超振動距離センサとサーボモーターを組み合わせて、動力にしたいと考えました。

この超振動を使えば、地面を叩いてやつらは動くはずである!これは期待できそうだ!

##完成品「BYE-BAIKIN-MAN?」

https://twitter.com/taka_xedge/status/14528

元記事を表示

node.jsでHIITのTimerを作った

フィヨルドブートキャンプのプラクティスでnpmを自作しました。
せっかくなのでqiitaで公開させてもらおうと思ったので、勇気を出して書かせてもらってます。

「もっとこうした方がいいんじゃない?」などのご意見がありましたらコメントしてもらえると嬉しいです!

## どんなnpmを作ったのか
作ったnpmは、最近流行りのトレーニング手法である**HIIT(High Intensity Interval Training)のタイマー**です。

> [話題の筋トレ「HIIT」とは?](https://www.s-re.jp/magazine/health/102/)
HIITとは、「High Intensity Interval Training(高強度インターバルトレーニング)」の略で、負荷の高い運動と小休憩を繰り返すトレーニング法のこと。限界まで体を追い込むことで、常に脂肪が燃焼しやすい状態をキープし、体脂肪減少と筋肉増量効果を得るものです。

**実際に作成したnpmはこちらで確認できます↓**
– npm:[hiit_timer](https://www.npmjs.com/p

元記事を表示

LINE Botに格言を表示

[前回](https://qiita.com/tomosukesan/items/738468d8e6fd1576f615)の記事ではobnizに格言を表示しました。

今回は格言を表示してくれるLineBotを作成しました。

##流れ
まずはこちらの記事を参考にLine Botを作ります。
おうむ返しまで完了させます。

https://qiita.com/n0bisuke/items/ceaa09ef8898bee8369d

`server.js`を変更するので一度、`control + C`で`node server.js`を終了させます。

mylinebotフォルダの直下で
`npm i axios`を実行します。

そうすると`package.json`の中に`axios`が追加されます。

`server.js`ファイル内の`’use strict’`の次の行あたりにAPIを叩くための呪文`const axios = require(‘axios’);`を記載。

コード終わりの方の`//実際に返信の言葉を入れる箇所`のところに表示させたいAPIの情報を記載。

元記事を表示

CHIRIMENをNode.jsで使用してみる⑵ ー GPIO編 ー

## はじめに
本記事では、複数回に分けてCHIRIMENコミュニティが提供しているnpmパッケージnode-web-gpioとnode-web-i2cを使用してNode.jsからGPIOとI2Cを制御するために私が実施した方法とそのサンプルコードを記載した備忘録になっています。
今回は[前回の記事](https://qiita.com/okojon/items/58726940ef51d1c4a74c)に引き続きExamplesにあるGPIO ExamplesのコードをNode.jsから実行可能にする方法について説明していきます。

## コードの主な違い
Webブラウザ版とNode.js 版でのコードの主な違いについて説明します。

– navigator()関数がNode.jsでは使用不可、記述する必要がないため削除する。
– sleep()関数がNode.js には存在しないため、使用する場合は適宜実装する必要がある。
– その他、HTML下では動作するがNode.js下では動作しない記法を変更する必要がある。
ex)下記GPIO-Buttonなどの”ledPort.w

元記事を表示

@google-cloud/connect-firestoreで保存されるセッションデータに作成時刻を追加する。

# まえがき
GAEでセッション管理にFirestoreを使うという内容のガイドがGoogleから公開されています。
[Firestore でのセッション処理  |  Node.js  |  Google Cloud](https://cloud.google.com/nodejs/getting-started/session-handling-with-firestore?hl=ja)

非常にわかりやすいのですが気になる事が一つ
> Connect-firestore は、古いセッションや期限切れのセッションを削除しません。Google Cloud Console でセッション データを削除するか、自動削除戦略を実装できます。セッションに、Memcache や Redis などのストレージ ソリューションを使用すると、期限切れのセッションが自動的に削除されます。

流石にコンソールから手作業で削除するのは面倒くさいので、古いセッションを自動で削除するようにしたい所。
要するにCloud MemorystoreやCloud SQLを使ってほしいということらしい。
しかしConnec

元記事を表示

Chrome-driver のアップデート

# 環境

“`bash
$ node –version
v15.3.0

$ npm list chromedriver
app@1.0.0 \app
└── chromedriver@2.46.0
“`
* Google Chrome バージョン: 95.0.4638.54(Official Build) (64 ビット)
* [Selenium](https://www.selenium.dev/ja/documentation/)

# npm run e2e 実行時にエラーになる

“`bash
$ npm run e2e

> app@1.0.0 e2e
> node test/e2e/runner.js

Starting selenium server… started – PID: 80376

[Login] Test Suite
======================

Running: Login
{ parser: “babylon” } is deprecated; we now treat it as { parser: “babel

元記事を表示

Azure Functions と LINE Notify の組み合わせ(Node.js を利用、ポータルで開発)

この記事は、[Azure Functions](https://azure.microsoft.com/ja-jp/services/functions/) に HTTPリクエストを送ると、LINEアプリに通知が来る([LINE Notify](https://notify-bot.line.me/ja/) を利用)という仕組みを軽く試したものです。

Azure Functions周りの開発や設定は、[Azure のポータル上](https://portal.azure.com/)で行いました。

## 手順の概要
今回の手順は、おおまかには以下のとおりです。

– LINE Notify のトークンを取得
– Azure のポータル上で Azure Functions を使えるようにする
– Azure Functions でのコーディング前の準備
– [axios](https://www.npmjs.com/package/axios) をインストール
– 環境変数を設定
– Azure Functions でのコーディング

## 実際に進めていく
### LINE

元記事を表示

Node.jsのバリデーター「Ajv」で独自formatを作る(カスタムバリデーション)

# 概要
ある時、typescriptで作成する入力フォームのバリデーションをしていて困ったことになった。
入力した値を、どうしても文字列の状態で上限値チェックしなければならなくなった。
具体的には、unixtimeが上限を超えないかどうかをチェックしなければならないのだが、値は文字列の状態で受け取り、また文字列の状態でレスポンスしなければならない。

使用していたバリデーション用のライブラリがAjvで、色々と調べたら独自のバリデーションができることを見つけたので、備忘録として残しておく。

# 標準の文字列判定
普通に文字列判定をしたいだけであれば、以下で事足りる。

“` typescript
import Ajv from “Ajv”

const ajv = new Ajv()

// 検証スキーマを定義
const schema = {
type: ‘object’,
properties: {
timestamp: {
type: ‘string’,
},
},
};

const timestamp = “2147483647”

元記事を表示

nodejsのバージョン管理ツールVoltaを使ってみた

# Nodejsのバージョン管理ツール
 googleトレンドを見ると、最近voltaが来ている感じ、、。
![スクリーンショット 2021-10-25 23.47.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/712534/d480bf2d-79dd-f536-5b85-825027ee4687.png)

**githubのスター数比較**
– [Node.js管理ツールの更新頻度とスター数を比較してみた](https://qiita.com/tora_oba/items/8f8b7d3e5fb62bc96a3f)

# Voltaとは

>- Speed ⚡
– Seamless, per-project version switching
– Cross-platform support, including Windows and all Unix shells
– Support for multiple package managers
– Stable tool installa

元記事を表示

detaにNodeJSで入門(ほぼ自分用メモ)

# deta (baas)
なんかこれが欲しかったけど今まではなかったもの感が否めない最高なBaas(?)。
無料&クレカなし&簡単。満足。最高。

– データベース(NoSQL)
– Faas (lambdaとかFirebase functions みたいなやつ)
– ストレージ

これらが**本当にお手軽に**使える。

大切なことなのでもう一度言う。

**本当にお手軽に**使える。

## インストールもろもろ

### CLIインストール

“`
# Windowsの方 (PowerShellで実行してください!)
iwr https://get.deta.dev/cli.ps1 -useb | iex

# macの方
curl -fsSL https://get.deta.dev/cli.sh | sh

“`

自分はWindowsユーザなのでmacは試せていません。エラーなどあったらごめんなさい。

### パッケージインストール

“`
npm init -y
yarn add deta
“`

## 共通部分

いろいろインポートしておく。

“`

元記事を表示

TeamViewer IoTのAPIをNode.jsから触ってみたメモ #iotlt

LTネタとして1時間くらい調べたくらいの雑観です。時間かけてないので間違いが多いかもしれません。

[TeamViewer IoT](https://teamviewer-iot.com/)ってサービスがあるんですね、TeamViewerは学生時代にリモートデスクトップで使ったことあった気がする。そのソフトのIoT…?ほうほう。

[IoTLTのグループでコメントをもらった](https://www.facebook.com/groups/IoTLT/posts/1914940855343686/)ので触ってみました。

> ちなみに次回のIoTLTは11/16です!
> https://iotlt.connpass.com/event/228734/

また、こんなの作ったよー話はこちらのスライドに載ってます。

> ![](https://i.gyazo.com/e3733fff50250ba675d26c7f25465348.png)
> https://speakerdeck.com/n0bisuke2/teihuaruwang-rewen-ti-number-iotl

元記事を表示

npmでモジュールと同時にTypeScriptの型情報もインストールする

#準備
– `typesync`をインストールする

“`bash
$ npm i -D typesync
“`

– `package.json`のscriptsに以下を記述する

“`json
“scripts”: {
“postinstall”: “typesync”
},
“`

元記事を表示

Firebase Authのカスタムクレームをターミナルから簡易に設定する

サービスの管理者でも、全権限がある人や、アルバイトで一時的に入った人など、細かく権限を設定したいものです。
Firebase Authのカスタムクレームという機能を使えば、細かい権限設定が行えます。

https://firebase.google.cn/docs/auth/admin/custom-claims?hl=ja

しかし、その登録はAdmin SDKを介するので、**NodeのRepl環境で行うのは、認証情報の初期化がややこしい**です。

個人的にかなりつまづいたので、共有させていただきます。

# localのfunctionsディレクトリでNodeを起動

まず、ターミナルで`functions/`のディレクトリに移動してNode Replを起動します。

“`bash
cd XXX/functions/
node
“`
# サービスアカウントの秘密鍵を作成

1. Firebase Consoleのプロジェクトの設定に移動する

Reactのcreate-react-appの後npm startでエラー

# 結構しょーもないことに時間食ってしまったので・・・
全く仕組みを理解していない自分が悪く、調べ方も悪かったので起動するまでの段で時間を食ってしまってテンションが下がったので恥を書き込んでおく反省投稿です・・・。

Windows上でReactの勉強をしようとNode.jsの最新版をインストールし、本を見ながら、

“`
npx create-react-app my-app
“`
とかした後、

“`
npm start
“`

したらエラーが出て起動できなかったと。

エラーはこんなのです。

“`
:\Users\user\reacttest\my-app>npm start

> my-app@0.1.0 start c:\Users\user\reacttest\my-app
> react-scripts start

There might be a problem with the project dependency tree.
It is likely not a bug in Create React App, but something you n

元記事を表示

GoogleAPIライブラリを使わずにGoogleアカウントでログインできるようにする

Google Photosの画像をESP32のLCDに表示するのが最終目標ですが、まずは、Googleアカウントでログインできるようにするところを先行して投稿します。

前回の投稿 [Instagramにアップロードした画像をランダムにESP32に表示する]( https://qiita.com/poruruba/items/c25caeb77bbd1074c986) では、日ごろ定期的に上げているInstagramの画像を、ESP32に接続したLCDにフォトフレームとしてランダム表示していました。

今回は、Google Photosのアルバムをフォトフレームにします。
Google Photosにすると、スマホと同期できますし、Google Nest Hubにも表示できるため、都合がよかったためです。

思いのほか、手間取ったので、手順を書き留めておきました。皆様の参考になれば幸いです。
2回に分けて説明していきます。

* その1:Googleアカウントでログインできるようにします。
* その2:Google Photosからランダムな1枚の画像を取得できるようにします。

以下

元記事を表示

【基礎】discord.js v13 でボットを作る ~コマンド発展~

## 前書き
[前回](https://qiita.com/hitori_yuu/items/3b6c02fac5c610f0615a) はコマンドを作成しました。
今回はそのコマンドに情報を入れたり、コマンドを個々のファイルに分けたりしたいと思います。

##開発環境
[前回](https://qiita.com/hitori_yuu/items/3b6c02fac5c610f0615a) と変わりません

* Windows10
* npm 7.6.3
* node 17.0.1 (最小要件:16.6.0)
* discord.js 13.2.0

## コーディング
[前回](https://qiita.com/hitori_yuu/items/3b6c02fac5c610f0615a) 作成したファイル(`deploy-commands.js`)の`commands`の部分を下記のものに書き換え + 書き加えます。

“`diff_javascript:deploy-commands.js
– const { SlashCommandBuilder } = require(‘

元記事を表示

React-Native でBlockchain SymbolのSDKを利用する

https://jp.symbolplatform.com/

iOS,Androidアプリにブロックチェーンの機能を追加したいと思い、ブロックチェーンSymbolを選定し開発を開始しました。SymbolのSDKはJavascript/Typescriptが用意されていますが、そのままではReactNative環境では動かすことが出来ず、以下に対応したことを纏めます

モバイルアプリにブロックチェーンを組み込んでいきましょう

# 環境
– ReactNative@0.64.2
– Expo@43.0.0
– Symbol-SDK@1.0.1
– Windows10(Macの方は適宜読替下さい)

https://github.com/symbol/symbol-sdk-typescript-javascript

# Expoでプロジェクトを作成(or React-Native-CLI)
Expoでプロジェクトを作成し、Ejectします。EjectせずにExpoのまま実行しようとしても、linkが実行出来ないので失敗します。

“`console
expo init symbol_

元記事を表示

【基礎】discord.js v13 でボットを作る ~コマンド作成~

前回の記事 -> [【基本】discord.js v13 でボット作成](https://qiita.com/hitori_yuu/items/02eae8b14dc6a9c91c0d)
[2021年10月23日時点]
## 前書き
[前回](https://qiita.com/hitori_yuu/items/02eae8b14dc6a9c91c0d) はコーディングから起動までを行いました。
今回はさっそくコマンドを作成していきます。
今回参考にさせていただいたサイト -> [Creating commands](https://discordjs.guide/creating-your-bot/creating-commands.html#registering-commands) – Discord.js Guide

## 開発環境
[前回](https://qiita.com/hitori_yuu/items/02eae8b14dc6a9c91c0d) と変わりません
* Windows10
* npm 7.6.3
* node 17.0.1 (最小要件:16.6.0)
*

元記事を表示

【基本】discord.js v13 でボット作成

初投稿です。あたたかい目で見てくださると嬉しいです。
[2021年10月23日時点]
## 開発環境
* Windows10
* npm 7.6.3
* node 17.0.1 (最小要件:16.6.0)
* discord.js 13.2.0

## v13の主な変更内容
* `Node.js` のv16.6.0を前提
* `Discord APIv9` に接続
* `discord.js` 本体と `@discordjs/voice` が分割(個々にインストールしなければならない)
* スラッシュコマンドをサポート
* `ClientOptions` の必須
* `message` が非推奨になり、 `messageCreate` が推奨される
* タイマー関連のメソッドが削除
* Intetnsを指定する際の `ALL`、`PRIVILEGED`、`NON_PRIVILEGED`は削除
* `Channel#startTyping`、`stopTyping` 等は削除
など…
詳しくは下記のサイトへ
[v13の主な変更箇所](https://scrapbox.i

元記事を表示

OTHERカテゴリの最新記事