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

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

Paiza Cloud で LINE Bot を試してみる

プロトアウトスタジオアドベントカレンダー4発目の記事です!

昨日は @tkyko13 さんの「word2vecの勉強で「[word2vecの勉強で「ナダルリバースエボリューション」が再現できるのではないかと思いついたのでやってみた](https://qiita.com/tkyko13/items/0e5d5db8477a64209635)」でした。

## Paiza Cloud とは

[クラウド開発環境 PaizaCloudクラウドIDE \- クラウドIDEでWeb開発\!](https://paiza.cloud/ja/)

![2019-12-03_01h00_54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56170/c8751369-2152-9c0f-0fb1-3180a212fbc1.png)

> ブラウザを開くだけでLinuxサーバが使える!
クラウド開発環境PaizaCloudクラウドIDEでは、ブラウザだけでLinuxサーバを操作できます。ファイル操作、テキスト操作、コマ

元記事を表示

AIによる中耳炎画像認識LINE Botの作成

##概要

プログラムの勉強を始めて5か月ほどの開業医です。

前回、Microsoft Custom Vision Service を使用して鼓膜画像認識を試し、極めて高い診断精度でした。
[Microsoft Custom Vision Service を使用した鼓膜画像認識](https://qiita.com/doikatsuyuki/items/bbed5e902577d68fb8a9)

前回は「正常鼓膜」か、「急性中耳炎」か、「滲出性中耳炎」かを分けるためのタグだけでしたが、今回は急性中耳炎の重症度を判定できるようにするため「鼓膜の発赤の程度」、「鼓膜の腫脹の程度」、「耳漏の有無」に関するタグに追加しました。

さらに、LINE Botと連携しNowでデプロイしました。

##実装

スマホから鼓膜の写真をLINE Bot宛てに送ると、中耳炎かどうか応えてくれるLINE Bot。

##概念図

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453374/b74cf0e8-

元記事を表示

NestJSで始めるGraphQLサーバ開発(コードファースト編)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163591/299e2b62-2ee2-656b-aba1-267d4f50b148.png)
NestJSは、TypeScriptで記述するバックエンドアプリケーションフレームワークです。デフォルトで DI(Dependency Injection) の仕組みをサポートしており、テスト可能な構成を簡単に作ることができる特徴があります。
今回の記事ではNestJSを使用して最もシンプルなGraphQLサーバを構築します。
↓完成イメージ
![nestjs-graphql.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163591/b5df3895-ef8d-bc4b-6cfa-c2fa8d9f72d4.gif)

# GraphQLの基本

GraphQLは、RESTエンドポイントのように煩雑に管理されたエンドポイントではなく、1つのエンドポイントに対して厳

元記事を表示

SeleniumでSortableJS系ライブラリのDrag&Dropをテストする

# 前置き

[前回の記事](https://qiita.com/marumaru/items/fe81d43ef1ba8ddf2101)で、Vue.Draggableを使ったコンポーネントのドラッグ&ドロップを実行するCypressのテストコードについて書きました。
これをSeleniumで書いたらどうなるだろうと思い試してみたところCypress以上にハマったので、解決方法を記録しておきます。[^TestCode]

本記事内のドラッグ&ドロップのテストコードは、Vue.Draggableに限らずSortableJSベースのライブラリなら概ね動くものになります。
以下の公式サイトのデモにて検証しています。(2019/12/3時点)

* SortableJS [デモページ](https://sortablejs.github.io/Sortable/#simple-list)
* Vue.Draggable [デモページ](https://sortablejs.github.io/Vue.Draggable/#/simple)
* react-sortablejs [デモページ](

元記事を表示

Angularスキル獲得のために始めたこと、始めること

お仕事だったり同期と作ったアドベントカレンダーだったりのおかげで、Angularを触る機会を得た小生でございます。
今までフロントどころか、Webアプリの制作もしたことがなかったので、これをいいことにいろいろと勉強していってる最中です。

# Angularを触るにあたって何を知っていたか
* HTML
* CSS
* Javascript
* Node.js

HTML、CSSはお猿さんと同じくらいの知識がありました。
JavascriptはほぼNode.js触ってから覚えた感じ。
元々プログラミング経験があったので、ここらへんはなんとか理解しつつ進めております。

# Angularを理解するためには
* **[公式:入門チュートリアル](https://angular.jp/start)**(Angular未経験者向け)
* **[公式:基礎チュートリアル](https://angular.jp/tutorial)**(入門チュートリアルをやった人向け)
* **[2020年のフロントエンドマスターになりたければこの9プロジェクトを作れ](https://qiita.com/ra

元記事を表示

【自分用メモ】supertestとpassport-stubをmochaテストに組み合わせる

##supertestとは
supertestはmochaと組み合わせて使うのですが、ExpressのRouterモジュールのテストを行うことができます。
例えば以下の例では、`/`にアクセスしたらindexRouterが処理されるかテストしてくれます。
もちろん、`/login`も`/logout`もテストしてくれます。

“`JS:app.js
app.use(‘/’, indexRouter);
app.use(‘/login’, loginRouter);
app.use(‘/logout’, logoutRouter);
“`

##passport-stubとは
passport-stubは、passportモジュールを利用した認証システムを、テストする際に役に立ちます。
例えば、
「facebook認証などのテストをしたいけど、facebookアカウントを持っていない!」
といった時に役に立ちます。

##テストの例
“`JS:test.js
//supertestの読み込み
const request = require(‘supertest’);
//supe

元記事を表示

DIコンテナの実装を理解して、軽量 DI コンテナを自作しよう

# なぜ DI コンテナを自作するのか

関心の分離がされているアプリケーションは変更に強く、良い設計と言えます。[Dependency Injection](https://ja.wikipedia.org/wiki/%E4%BE%9D%E5%AD%98%E6%80%A7%E3%81%AE%E6%B3%A8%E5%85%A5)(以下 DI) は関心の分離を実現する テクニックの 1 つとしてよく見られるパターンです。しかしクラス間の依存関係が増えれば増えるほど、注入する依存を作ることは困難になり、DI のコストは段々と膨らみます。そのようなとき、 **依存を自動で解決し、欲しいインスタンスをすぐにとりだせる DI コンテナ** は有効な解決手段となり得ます。

JavaScript/TypeScript においても DI コンテナを提供するライブラリが存在します。例えば、[InversifyJS](https://github.com/inversify/InversifyJS) や [tsyringe](https://github.com/microsoft/tsyringe)

元記事を表示

nvm チートシート

## 前書き

この記事は オープンロジアドベントカレンダー2019の3日目です。
みなさんはNode.js のバージョンマネージャーは使っていますか?
弊社では3年ほど前は 何故か [nodebrew](https://github.com/hokaccha/nodebrew) をインストールすることを推奨されており、
私は愚直にそれを利用していたのですが、LTSを入れるコマンドが存在せず、
使い勝手の悪さを感じていたので、最近は [nvm](https://github.com/nvm-sh/nvm) というバージョン管理マネージャに乗り換えました。

使い方については、 GitHubの Readme と `nvm –help` の出力結果を読めばそれで十分なのですが、その都度、英語を読むのは面倒なので、以下に個人的によく使うであろうものを取捨選択してチートシートとしてまとめておきます。
本稿での nvm のバージョンは v0.35.1 です。
`.nvmrc` については別の方の記事を参照してください。本稿では言及しません。

## チートシート

### 前提
– 間違ったオ

元記事を表示

nodejs v12(LTS)におけるasync, awaitを用いたstream処理

# nodejs v12(LTS)におけるasync, awaitを用いたstream処理

QualiArts Advent Calendar 2019、3日目の記事になります。
## はじめに

2019年10月21日にnodejs v12のLTS版が公開されました。

nodeは奇数バージョンが開発版、偶数バージョンが安定版となるため、v11以降の今まで実プロジェクトだと利用しにくかった機能がこれによりいくつか使えるようになりました。

そのなかでもasync-generatorsやfor-await-of loops構文が大手を振って使えるようになったことにより、stream関連の処理が大きく変わると感じたため、すでにいくつか紹介されている記事も有りますが、この機会に改めて紹介したいと思います。
また、最後に簡単なサンプル処理も記述しているので、ご参考いただければ幸いです。

## for-await-of loops

今までstreamはeventEmitterを利用し、発火したeventをトリガーに処理を記述していました。
for-await-of loopsを用いると下

元記事を表示

pkg で node.js を入れたMacで、node.js を消さずに nodebrew + avn を入れようとしたらうまくいかなかったときのメモ

Node.js 7系以下が必要なプロジェクトがあり、node.js のバージョンを切り替える必要があったので nodebrew + avn を使うことにしたときのメモ。
うまくいかなかった時に試したことを一応自分用にメモしておくのがこの記事の目的なので、すっきりわかりやすい記事をご希望の場合は最終項の参考記事を参考にするのが良いかと思います。

# 1. 方法
## 前提
– Mac
– Node.js を[インストーラー](https://nodejs.org/ja/)からインストール済み
– nodebrew を homebrew でインストール済み

## nodebrew と avn
– nodebrew だけでも node.js のバージョンは切り替えられる
– avn を使えば、プロジェクトのルートディレクトリに置いた `.node-version` のバージョンに合わせて node.js のバージョンを切り替えてくれる

その他切り替える方法として anyenv (参考 https://www.to-r.net/media/anyenv/ )というのもあるらしいです。

元記事を表示

初心者にMongoDBを教えようと自作パッケージを作って奮闘した話

# ごあいさつ
初投稿です。よろしくお願いします。
[駒場祭](https://www.komabasai.net/)という学園祭でプログラミングをしたりしてました。基本的にNode.jsを使っています。

## 注意
この記事はあくまでやったことの紹介であり、解決策は提示していません。

## この記事は……
駒場祭委員会にはシステム局というIT分野を担当する部署があり、[ウェブサイト](https://www.komabasai.net/)や、参加される企画の登録をしたり、申請や情報を集めたりするウェブシステムと呼ばれるシステムなどを例年作っています。
無給の~~ブラック~~学生自治団体であるため、経験者は余り集まらず、キャンパスが変わるため2年生までしか参加しません。
よって初心者の1年生に2年生が引退するまでの半年間で様々な知識を教え込むことになります。

駒場祭のウェブサイトには(現在はもう使えませんが)当日に[公式グッズ](https://www.komabasai.net/70/visitor/goods)の売り上げや[キャンパスツアー企画](https://ww

元記事を表示

passportモジュールでfacebook認証

#passportとは
passportはNode.jsで利用できる認証ミドルウェア(モジュール)です。
passportを利用することで、アプリに簡単にOAuth認証を組み込むことができます。

OAuth認証に関して、こちらの記事がすごく分かりやすいので読んでみてください。
[一番分かりやすい OAuth の説明](https://qiita.com/TakahikoKawasaki/items/e37caf50776e00e733be)

passportの凄いところは、FacebookやTwitter、Googleなど、多くのアカウント認証を利用できる点です。

今回は、ExpressというNode.jsのフレームワークがグローバルインストールされている前提で進んでいきます。
参考:[Expressフレームワークのインストールと簡単な使い方](https://qiita.com/tarotaro1129/items/e02fbb911dc4af412ad0)

#passportを利用して、Facebook認証をしてみる
####Facebook Developersでアプリを

元記事を表示

Node8系→12系にあげたらいっぱいエラー出た

# 概要
お世話になったnode8系が2019/12に寿命を迎えます:pray:

スクリーンショット 2019-11-19 15.19.44.png

https://github.com/nodejs/Release#release-schedule

そのため、node (v8.7.0) → (v12.13.0)に変更しましたが、いろいろとエラーが出たためそのメモ書きです。
(使っているmoduleによって個人差が出るため完全に自分のための覚書です:writing_hand:)

# アップグレード方法
“`
$ nodenv install 12.13.0

$ nodenv local 12.13.0
““

# エラー発生

数個エラーが出たのですが、 `node-sass`を例にとります!

元記事を表示

Node.jsのCLIツールをカスタマイズ可能にする

Node.jsで何らかのCLIツールを作っているとします。

おそらくどのツールでも、オプショナルな機能を使うかどうかは、エンドユーザーに決めてもらいたいでしょう。その場合、`-i`とか`-a`のようにコマンドの引数をいくつか提供するのもいいですが、複雑な設定が必要になりそうだったら、設定ファイルでのカスタマイズを可能にした方がいいです。

## 設定ファイル

### ファイル名
設定ファイルの名前は、ツールの開発者が決めないといけないのですが、ほとんどのプロジェクトでは、`{tool}.config.js`という風に決まっています。たとえば、`webpack`だったら、`webpack.config.js`というファイルで設定できます。

### 設定ファイルの検出
最近の多くのプロジェクトでは、設定を全てオプショナルにするトレンドがあります。もし設定ファイルが存在しなければ、デフォルトの値で動きます。設定ファイルが存在するかどうか、Node.jsの`fs`モジュールにある`existsSync`という関数を使えばわかります。

`existsSync`はダイレクトリーかファイルの

元記事を表示

公式インストーラーからインストールしたNode.jsを削除する方法(macOS)

# 概要
Node.js FoundationはMacOS向けに公式インストーラーを用意している。

Screen Shot 2019-12-02 at 17.30.38.png

アンインストールの方法についての公式の見解が特に見当たらなかったので、推測しながら試した結果うまくいったので、記録として残す。
もし間違っている点があれば教えてほしいです!

# 対象者
– Node.jsの公式インストーラーをインストールしたが、nvmなどのバージョン管理ツールに切り替えたい人
– 既にnvmなどのバージョン管理ツールを使用しているが、過去にNode.jsの公式インストーラーを使用した覚えのある人

# 背景
興味本位から、まっさらなMacOSに公式インストーラーでNode.jsをインストールしたところ、
「これどう

元記事を表示

【Webpack4 備忘録】オススメ設定詰め合わせ

備忘録で作成したもの以外に入れた方がいいもののまとめ。

以前、備忘録で作成した [こちら](https://qiita.com/Kento75/items/f020fe34d20d9408af08) に設定を追加する。

## 目次

・[ソースマップにオリジナルのソースコードを表示する](https://qiita.com/drafts/c4e17cb54bfadb57b70b/edit#%E3%82%BD%E3%83%BC%E3%82%B9%E3%83%9E%E3%83%83%E3%83%97%E3%81%AB%E3%82%AA%E3%83%AA%E3%82%B8%E3%83%8A%E3%83%AB%E3%81%AE%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B)

・[build時にhtmlファイルも生成する](https://qiita.com/drafts/c4e17cb54bfadb57b70b/edit#build%

元記事を表示

Node.jsでOSを検出する方法

Node.js組み込みの関数が使えるのでとても簡単です。

`process.platform`でOS検出の結果がわかります。

“`javascript
// 例
const isWin = process.platform === “win32”
const isMacOS = process.platform === “darwin”
“`

全ての[可能な値](https://nodejs.org/api/process.html#process_process_platform):

* `aix`
* `darwin`
* `freebsd`
* `linux`
* `openbsd`
* `sunos`
* `win32`

## 注意

* macOSは`darwin`として検出されます
* Windowsは32-bitでも64-bitでも`win32`になります

元記事を表示

Nodebrew 本体が削除できなかった話

[Nodebrew本体を削除する方法](https://qiita.com/tonkotsuboy_com/items/f5d17f0b9698554a7716) に従い、Finder から削除したのに

“`bash:terminal
$ nodebrew -v
“`

でバージョンが表示され続け、消せていないようだった。

## 解決法
Homebrew で入れた nodebrew が残っているのが原因だったよう。

以下のコマンドを実行すると、 `nodebrew -v` でもバージョンが表示されなくなり、nodebrew の削除が完了した。

“`bash:terminal
$ brew uninstall nodebrew
“`

### 参考にした記事
[brew uninstall nodebrew](https://medium.com/@nagofox/brew-uninstall-nodebrew-8b10254c747f)

元記事を表示

jwtについて

YoutubeのfreeCodeCamp.orgでJWTについて動画があったのでまとめます。自分用に(笑。

jsonwebtokenの使い方について https://www.npmjs.com/package/jsonwebtoken。

この動画の中でserver側とfront側で分けていたのでそれに習います。

server側では
cors と cookie-parserを使ってログイン情報を受け取ります。
https://www.npmjs.com/package/corsから

“`
Simple Usage (Enable All CORS Requests)
var express = require(‘express’)
var cors = require(‘cors’)
var app = express()

app.use(cors())

app.get(‘/products/:id’, function (req, res, next) {
res.json({msg: ‘This is CORS-enabled for all origin

元記事を表示

JWTについて

YoutubeのfreeCodeCamp.orgでJWTについて動画があったのでまとめます。自分用に(笑。

jsonwebtokenの使い方について https://www.npmjs.com/package/jsonwebtoken

この動画の中でserver側とfront側で分けていたのでそれに習います。

server側では
cors と cookie-parserを使ってログイン情報を受け取ります。
https://www.npmjs.com/package/corsから

“`
Simple Usage (Enable All CORS Requests)
var express = require(‘express’)
var cors = require(‘cors’)
var app = express()

app.use(cors())

app.get(‘/products/:id’, function (req, res, next) {
res.json({msg: ‘This is CORS-enabled for all origins!

元記事を表示

OTHERカテゴリの最新記事