Node.js関連のことを調べてみた2020年08月21日

Node.js関連のことを調べてみた2020年08月21日
目次

GAEでNode.jsを使ってHello Worldをするまで

GAEを使って、Node.jsのHello Worldを行った際の備忘録。

と言っても、Googleの公式ドキュメント通りに行えば大体大丈夫でした。
たまに詰まっても、ググれば出てきたって感じでした。

ではさっそく。

#GAEとは
Google App Engine の略。
Google Cloud Platform の一部。
Google のサーバーを借りてwebアプリ等を公開できる。

#公式ドキュメントを参考にやってみる
まずは、こちらの手順に従う。
スタンダード環境で Node.js を使用するためのクイックスタート
https://cloud.google.com/appengine/docs/standard/nodejs/quickstart#local-machine_1

以下、躓いたところの対処法を残しておく。

“3.リージョンを選択“
東京なら asia-northeast1 だ。
https://cloud.google.com/about/locations?hl=ja#locations

![スクリーンショット_081920_084150_P

元記事を表示

Firebase Authentication 匿名ログイン 成果物URL:https://tokumei.netlify.app

## 成果物
https://tokumei.netlify.app

ワイ 「ログイン後Firebaseから**寿命が1時間のJWTトークン**が取得できる」
ワイ 「現実的な使い方をするなら」
ワイ 「**JWTトークン**を自分が使ってるオリジンサーバに送って改ざんされていないかチェックする」
ワイ 「ライブラリは**firebase-admin**を使う」

## トークンが改ざんされていないかチェックするソース
“`package.json
{
“dependencies”: {
“firebase-admin”: “^9.1.0″
}
}
“`

“`index.js
const admin = require(‘firebase-admin’);

// 各自用意
const firebaseConfig = {
type: ”,
project_id: ”,
private_key_id: ”,
private_key: ”,
client_email: ”,
client_id: ”,
auth_uri:

元記事を表示

API Endpointのエントリポイント・コードの書き方

API Gatewayとかから飛んできたリクエストをLambdaでいい感じに処理する、よくあるバックエンドコード
この辺のいい感じの記述を模索してて最近こんな感じになっています。

## 最近の自分の書き方

“`js
/**
* フォーマットに関してはこいつに任せる。
*/
const run = async(event, hoehoe) => {
// どでかいtry-catchで例外をアプリ内に封じ込める
try {
// 悩むけどこの辺の情報はこっちでいいかな
const name = event.pathParameters.name;

// 処理は極力別クラスに任せる
const service = new Service(hoehoe);
const pet =service.getPet(name);

// 仕様と対応するので正常系の出口は一箇所
return getSuccessResponse({
color: pet.color.value,
size: pet.si

元記事を表示

ちょっと古いBraviaもHey! Siriで操作できるようにする。

##はじめに
ほんの少し前のことなんですが。
長年使ってたテレビが遂に壊れてしまったんですよ。地デジが始まる頃に買った『KDL-40X5000』って言うソニーのテレビ。
テレビが映らないのは困るなあってんで、すぐに買いに行ったんです。そしたらこの10年ちょっとで、テレビってえらい進化しているんですね。薄く軽くなったのはもちろん、ベゼルが小さくなったんですよ。なので、設置面積はほとんど変わらずだいぶ大きなテレビを置けました。
今回買ったのは**『KJ-49X8500F』**です。
Android TVなんですねー。
YouTubeとか見られるんですねー。
あこがれの4Kですよー。
画が綺麗になりましたねー。
画面も大きくなりましたよー。
と大満足。

そこにニュースが。
「[ソニーのAndroid TVがAirPlay 2とHomeKitをサポート](https://japanese.engadget.com/jp-2019-12-04-android-tv-airplay-2-homekit.html?guccounter=1&guce_referrer=aHR0cHM6Ly93d3c

元記事を表示

Express 入門

公式ドキュメントもかなりシンプルでわかりやすいですが、自分用メモとして。
[Express(日本語ドキュメント)](https://expressjs.com/ja/)

## 最小構成

最低限、これで動かせるよ!というコードです
さくっとWebサーバ立ててなにか試したい時に

### インストール

“`bash
$ mkdir myapp
$ cd myapp
$ npm init # entry point: app.js => 任意のファイル名
$ npm install express
“`

### ディレクトリ構成

“`
(root)
├ package.json
├ package-lock.json
├ app.js
└ node_modules
“`

### コード

“`js:app.js
const express = require(‘express’)
const app = express()

app.get(‘/’, (req, res) => res.send(‘Hello World!’))

app

元記事を表示

nvmをインストールしたのに、-bash: nvm: command not foundになる。

https://github.com/nvm-sh/nvm#install–update-script
こちらの

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

を使ってnvmをインストールし、特にエラーもなく完了したはずなのに

“`
$ nvm –version
“`

-bash: nvm: command not found
と言われた。

色々試した結果、

“`
$ source ~/.nvm/nvm.sh
“`
を実行することで解決。

頑張った末に、手順の下の方に”Troubleshooting on macOS”を見つけたので、ドキュメントを読むのが大事だと思いました。

追記(2020年8月21日)

このままだと、起動のたびに同じコマンドを叩かないといけなかったので、起動のたびに有効化してくれるように、/etc/profile.d/以下にシェルを置いておきます。
>/etc/profile.d/nvm.sh

“`

元記事を表示

npmのライブラリの比較と評価方法:npm trends & Github

# 人気のあるライブラリをnpm trendsで探す

 **[npm trends](https://www.npmtrends.com/)**は、指定したライブラリのカテゴリと近いものを提示し、選択するとダウンロード数を比較してくれます。
 たとえば、dom parserを比較すると以下の用になります。

[npm trends: dom parserの比較](https://www.npmtrends.com/dom-parser-vs-cheerio-vs-htmlparser2-vs-parse5-vs-scraper-vs-xml2js-vs-xml-js-vs-fast-xml-parser-vs-xml2json-vs-jsdom)

![screencapture-npmtrends-dom-parser-vs-cheerio-vs-htmlparser2-vs-parse5-vs-scraper-vs-xml2js-vs-xml-js-vs-fast-xml-parser-vs-xml2json-vs-jsdom-2020-08-20-07_45_01.png](h

元記事を表示

【第4回】「みんなのポートフォリオまとめサイト」を作ります~フロントエンド編~ 【Cover】成果物URL: https://minna.itsumen.com

ワイ 「この記事のカバーです」
https://qiita.com/kiwatchi1991/items/58b53c5b4ddf8d6a7053

## バックナンバー
[【第1回】「みんなのポートフォリオまとめサイト」を作ります~プロトタイプ作成編~][1]
[1]:https://qiita.com/yuzuru2/items/045678d3c580028c1d4f

[【第2回】「みんなのポートフォリオまとめサイト」を作ります~REST API編~][2]
[2]:https://qiita.com/yuzuru2/items/19592997737c8be2dafc

[【第3回】「みんなのポートフォリオまとめサイト」を作ります~SNSログイン編~ ][3]
[3]:https://qiita.com/yuzuru2/items/be34b9286ce758c1e8c0

## 成果物
https://minna.itsumen.com

## リポジトリ

### フロントエンド
https://github.com/yuzuru2/minna_frontend

###

元記事を表示

【第3回】「みんなのポートフォリオまとめサイト」を作ります~SNSログイン編~ 【Cover】成果物URL: https://minna.itsumen.com

ワイ 「この記事のカバーです」
https://qiita.com/kiwatchi1991/items/58b53c5b4ddf8d6a7053

## バックナンバー
[【第1回】「みんなのポートフォリオまとめサイト」を作ります~プロトタイプ作成編~][1]
[1]:https://qiita.com/yuzuru2/items/045678d3c580028c1d4f

[【第2回】「みんなのポートフォリオまとめサイト」を作ります~REST API編~][2]
[2]:https://qiita.com/yuzuru2/items/19592997737c8be2dafc

## 成果物
https://minna.itsumen.com

## リポジトリ

### フロントエンド
https://github.com/yuzuru2/minna_frontend

### バックエンド
https://github.com/yuzuru2/minna_backend

## 構成
フロントエンド: **Netlify**(月間100GBまで転送量無料)
バックエンド: **N

元記事を表示

Node.js Ⅲ

◆削除機能をつける 削除ボタンの準備

①ルーティングを用意
app.post(‘/delete’,(req,res) => {
処理
});

②削除ボタンを用意

③リダイレクト
app.post(‘/delete’,(req,res) => {
res.redirect(‘/index’);
});

◆削除の処理
①index.ejs

Node.js Ⅱ

◆MySQLに接続しよう

const mysql = require(‘mysql’); →mysqlパッケージを読み込み

const connection = mysql.createConnection({
//データベース名、パスワード
});

◆クエリの実行

connection.query(‘クエリ’, クエリ実行後の処理)と書くことで、
Node.jsからデータベースに対してクエリを実行することができます。

例)

connection.query(
‘SELECT*FROM items’, →クエリ
()=> {
クエリ後の実行処理
}
);

![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635497/92ff9783-cee9-a1df-c8bc-46d5aa7d79ff.png)

例)実行後の処理

connection.query(
‘SELECT*FROM items’, →クエリ
(error,result)=> {
console.log(resu

元記事を表示

Eclipse 2020-06 で、“Node.js version could not be determined” と言われる件

# Eclipse 2020-06 で、“Node.js version could not be determined”
対象バージョンのnodeはインストールして、パスも通っているのに、eclipse起動時に下記の画像のメッセージが出る

# Eclipseのバージョン
Eclipse IDE for Enterprise Java Developers (includes Incubating components)

Version: 2020-06 (4.16.0)

# nodeのバージョン

“`
$ node -v
v10.17.0
“`

# OS
![スクリーンショット 2020-08-19 10.58.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44351/86158d91-217a-cae2-97b1-693a05daf9db.png)

# メッセージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.

元記事を表示

json-serverでstaticを指定してもプレビューのページを表示する

## json-server
わたしは自分のことをxRアプリエンジニアだと思っていたのですが、最近はいろんなサーバをいっぱい立てています。
そのうちのモックサーバなんてjsonを返せればいいので[json-server](https://github.com/typicode/json-server)を使いました。

> Get a full fake REST API with zero coding in less than 30 seconds (seriously)

が嘘じゃないすごいやつです。
あと、たのしい顔文字がいっぱい出力されます。

## `–static`の罠

![2020-08-08 02.02.01 localhost 65269d951fd9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146245/69386e82-39ff-5445-5b3b-e32ce7ba552e.png)

[http://localhost:3000](http://localhost:30

元記事を表示

Serverless Framework でエラーを検知して Webhook で Slack に通知を飛ばす方法

#はじめに

AppSync の Lambda リゾルバを書く際に [Serverless Framework](https://www.serverless.com/) を使用したのですが、
デプロイ後のバグ調査の際、毎回ブラウザから AWS Console を開いて該当 Lambda の CloudWatch のログを見に行くのが面倒でした。。 :upside_down:

そのため、エラーレポートの仕組みが欲しくなり、Lambda のエラーを Slack に通知する仕組みを Serverless Framework で実装する方法について調査したので、備忘録も兼ねて記事にまとめました :writing_hand:

追記 (2020/08/19)

ローカルから Lambda 関数のログを確認したいだけなら、Serverless Framework CLI の [logs コマンド](https://www.serverless.com/framework/docs/providers/aws/cli-refer

元記事を表示

【第2回】「みんなのポートフォリオまとめサイト」を作ります~REST API編~ 【Cover】成果物URL: https://minna.itsumen.com

ワイ 「この記事のカバーです」
https://qiita.com/kiwatchi1991/items/58b53c5b4ddf8d6a7053

## バックナンバー
[【第1回】「みんなのポートフォリオまとめサイト」を作ります~プロトタイプ作成編~][1]
[1]:https://qiita.com/yuzuru2/items/045678d3c580028c1d4f

## 成果物
https://minna.itsumen.com

## リポジトリ

### フロントエンド
https://github.com/yuzuru2/minna_frontend

### バックエンド
https://github.com/yuzuru2/minna_backend

## コレクション定義(テーブル定義)
ワイ 「今回は**NoSQL**の**MongoDB**を使ってます」
ワイ 「コレクションとは**RDB**でいう**テーブル**的なやつです」

| RDB | MongoDB |
| —- | —- |
| スキーマ | データベース |
|

元記事を表示

Static Web Appsでは現状TimerTriggerは使えないっぽい

[Azure Functions のタイマー トリガー](https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-bindings-timer?tabs=javascript)を使ってStatic Web Appsに紐づいたAPIプログラムもタイマー実行できないかと思いましたがどうやらできないっぽいのでメモ。

ビルドでこんなコケかたします。

“`
Error in processing api build artifacts: the file ‘myTimer/function.json’ has specified an invalid trigger of type ‘timerTrigger’ and direction ‘in’. Currently, only httpTriggers are supported. Visit https://github.com/Azure/azure-functions-host/wiki/function.json for more informatio

元記事を表示

SAP Cloud Platform 上で WebSocket を使ってみた

# はじめに
この記事は [chillSAP 夏の自由研究2020](https://note.com/chillsap/n/n66e12ef65d11?fbclid=IwAR3REd19CLNDvQHZDNjQaE_2Cki4bqGln4pVk7UJjHYEq39yUtF_5Xch1BQ) の記事として執筆しています

今回は、 SAPUI5 の API Reference を眺めていると WebSocket( [sap.ui.core.ws.WebSocket](https://sapui5.hana.ondemand.com/#/api/sap.ui.core.ws.WebSocket) )のライブラリを発見したので試してみました。

## WebSocket とは?
>WebSocket(ウェブソケット)は、コンピュータネットワーク用の通信規格の1つである。ウェブアプリケーションにおいて、双方向通信を実現するための技術規格である。2011年にRFC 6455として>最初の標準仕様が定義された。

[転載:WebSocket – Wikipedia](https://ja.wi

元記事を表示

Node.jsⅠ

◆Expressを導入する

$ npm install express →入力してenter

nodejs_lesson@1.0.0/home/..
express@4.17.1 →入力結果

◆インストールしたExpressを利用する

const express = require(‘express’) ;
const app = express();

◆listenメソッド

app.listen(3000);

『ターミナル』
$ node.app.js →app.jsをターミナルを実行する
ファイルを実行するには「node ファイル名」とします。

◆ルーティング

app.get(‘/top’, (req,res) => {
トップ画面を表示する処理
});

![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635497/d17d86cf-226e-33af-9541-b7a1626e02bb.png)

ルーティングの処理でres.renderと書くことで、指定したビュ

元記事を表示

ytdlでYoutubeダウンロード+Macでファイル変換&編集

もう、無限に広告がポップしてくる詐欺ソフトに悩まされることはありません。
我々エンジニアはプログラミングとCUIという頼れる味方がいます。

## この記事を読むと

– ターミナルから簡単&爆速にYoutubeから動画をダウンロードできます。
– ファイル形式の変換と時間指定の切り抜きのお勧め方法もカバー

## 環境

– Macbook Pro 2017 13インチ
– MacOS Catalina ヴァージョン10.15.6

## やり方比較

### 没案1.Youtube Premium

最も簡単にYoutubeの動画をオフラインで利用する方法はYoutube Premiumに登録することです。料金も月1000円程度と破格。
しかしなんでYoutube Premiumではダメなのかというと、PCのローカルに落とせないからです。例えば、私の場合は英語音声のみで字幕無しの動画に対して、Amazon Transcribeを利用して文字起こしや翻訳を行うのがそもそもの動機でした。また、スマホアプリ上でしかオフライン利用できません。
やはり普通のファイルとしてローカルに落とすのが

元記事を表示

【JS】Node.js と GoogleSpreadsheet で業務効率化

`google-spreadsheet` というパッケージを使用し、スプレッドシートへの書き込みの実装をしたので、その備忘録です。
[google-spreadsheet – npm](https://www.npmjs.com/package/google-spreadsheet)

下記の記事をみておけばほぼわかります。
[【Node.js】 Googleスプレッドシートを簡易データベースとして使う – 一日一膳(当社比)](https://sonnamonyaro.hatenablog.com/entry/2020/03/01/222650)
[GoogleスプレッドシートからNode.jsでシフトデータを読み出す方法 – Twilio](https://www.twilio.com/blog/load-data-from-google-spreadsheet-jp)

## 準備
### APIの有効化 & 認証
1. GoogleSpreadsheet API 有効化
2. サービスアカウントを発行
3. スプレッドシートに 作成したサービスアカウントを招待(メールアドレス

元記事を表示

OTHERカテゴリの最新記事