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

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

BlankAndroidTV向けアプリをReactNativeで起動するまで

[Ateam Lifestyle Advent Calendar 2019](https://qiita.com/advent-calendar/2019/ateam-lifestyle)の19日目は
株式会社エイチームライフスタイル 自動車事業部 の @mziyut が担当します :santa:

最近購入したテレビがAndroidTVをベースにしたものだったのもあり、
0.55からReactNativeでAndroidTV向けアプリの開発を行えるようになっていたので試してみました。
ちなみに、2019/12/16時点の最新バージョンは、v0.61.5でした。

## ReactNativeとは :thinking:
簡単に言うと「Facebookが作成したReactをベースにネイティブアプリフレームワーク」です。

## AndroidTVとは :thinking:
簡単に言うと、Googleが提供する、スマートテレビ向けプラットフォームです。

## 今回用いる環境
“`sh
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.

元記事を表示

Decorator Hell を解消する

これを解決します。

“`typescript:src/models/user.ts
import { IsNotEmpty, MaxLength } from ‘class-validator’;
import { Column, PrimaryGeneratedColumn } from ‘typeorm’;
import { ApiProperty } from ‘@nestjs/swagger’;

export class User {
@PrimaryGeneratedColumn()
@ApiProperty({ example: 1 })
id!: number;

@IsNotEmpty()
@MaxLength(16)
@Column()
@ApiProperty({ example: ‘alice07’ })
displayId!: string;

@IsNotEmpty()
@MaxLength(16)
@Column()
@ApiProperty({ example: ‘alice’ })
name!:

元記事を表示

Node.jsのバージョンを上げた際のnode-sassのビルドエラー

ほんとにどうってこと無いメモです。

久々に開発しようとしたNuxtJSプロジェクトで、node-sassがコケました。
[node-sass](https://github.com/sass/node-sass)はv4.13.0です。

“`bash
$ yarn dev



● Client █████████████████████████ building (61%) 431/466 modules 35 active
node_modules/markdown-it/lib/rules_core/state_core.js

✖ Server
Compiled with some errors in 9.34s

✖ Client
Compiled with some errors in 13.93s

✖ Server
Compiled with some errors in 9.34s

ERROR Failed to compile with 1 errors

元記事を表示

新入社員に適当にNode.jsのアプリ入門教えたら意外とウケたのでメモ

# はじめに
細かいことは気にせずにNode.jsでwebアプリケーションを作る手順をまとめました。
新入社員の教育につかってみたら思ったより理解してくれて、開発の一歩目になってもらえたのでメモがてら置いておきます。
これから開発をする方がこの記事にたどり着いて少しでも開発への苦手意識などがなくなれば嬉しいです。

![スクリーンショット 2019-12-18 22.20.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143517/337074ec-2cc1-fedc-a373-3c847d16b761.png)

SlideShareはこちら?

元記事を表示

grpc_tools から生成した gRPC クライアントを promisify してみた。

# 前提条件

“`shell
% node –version
v12.13.0
“`

“`shell
% npm –version
6.13.2
“`

# 目的

最近、`grpc_tools` と `grpc_tools_node_protoc_ts` を併せて Typescript の型ファイルと node.js の gRPC のクライアントを生成する機会がありました。生成される GRPC クライアントなのですが、Node.js にありがちな callback にて行う非同期処理です。そのため、GraphQL のリゾルバ等と組み合わせて使用する場合、非常に使い勝手が悪いです。

今回は生成された gRPC クライアントの関数を promisify します。

# gRPC クライアントの生成

例えば、次のような protocol buffer から pb ファイルを生成することを考えます。

“`text:user.proto
syntax = “proto3”;

package user;

option go_package = “v1”;

servi

元記事を表示

Lambda + API GatewayでGithub上のアクションを検知してGithubに対してアクションする

# はじめに
最近バックエンドの実装をメインに担当しているエンジニアです。
先日チームメンバー(@sen-higaさん)と共同で行った業務効率化タスクを通して、初めてWebhookやサーバレスアーキテクチャに触れたので、その時の備忘録です。

# やったこと
Github上のアクションを検知してGithubに対してアクションするという仕組みをLambda + API Gatewayで実装しました。
GithubからGithubへの動線がわかりやすいように、タスクの実装時とは内容を変えて、イシューがOpenされた時に、作成者をイシューに自動アサインするというシンプルな仕組みにしました。

スクリーンショット 2019-12-19 8.56.08.png

もっとこうした方がいい、自分ならこう実装するというご意見があ

元記事を表示

Vue + Expressのテンプレート作成メモ

# はじめに
バックエンドをNode.js、フロントエンドをVue.jsでwebアプリを開発することが増えたので簡単にひな形を作る手順を残しておこうと思います。

# 手順
### expressのプロジェクト作成
`express プロジェクト名`

### vueのプロジェクトを作成
expressで作ったプロジェクトのルートディレクトリへ移動し
`vue create public`
publicというタイトルになっているので、気になる方はvueプロジェクトのindex.htmlのtittleタグを編集

### vueプロジェクトでビルドする
publicディレクトリへ移動し
`npm run build`

### expressのapp.jsに記述されているpublicのパスを変える
`app.use(express.static(path.join(__dirname, ‘public’)));`

`app.use(express.static(path.join(__dirname, ‘public/dist’)));`

### 一応この記述も消しておく
`

元記事を表示

Node.js boilerplate / Authentication from scratch – (express, graphql, mongodb)

![1*htOb7MGk4cXDpp4md_iHSQ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553366/742bc8b1-ba93-d667-5681-ba079accfbc0.png)

A boilerplate for Node.js apps / API server / Authentication from scratch – express, graphql – (graphql compose), mongodb – (mongoose).

https://github.com/watscho/express-graphql-mongodb-boilerplate :snowman2:

元記事を表示

npmのパッケージグローバルインストールは憲法違反です。

## 結論

`npx`コマンドを使おう

## グローバルインストール

とは

“`
$ npm install -g elm
“`
このように`-g`をつけてグローバル環境にパッケージをインストールをすることです

## ローカルインストール

対して、ローカルインストールは、

“`
$ mkdir my_project && cd my_project
$ npm init
$ npm install elm –save // or –save-dev
“`

こんな感じでインストールすると、`my_project/node_modules/`の中にパッケージがインストールされます。

## 違い

ローカルインストールの利点としては、プロジェクト毎に`package.json`で管理をするため、作ったプロジェクトを本番環境や他の人の環境に渡すことが簡単になります!

そして、いろいろなプロジェクトに手を出す際に、バージョン管理が簡単になります!

そしてグローバルインストールと違い、パソコンの環境を汚染しないため気持ち良いです!

## CLI系のパッケージ

元記事を表示

Decorator と継承

この記事は [NestJS アドベントカレンダー 2019](https://qiita.com/advent-calendar/2019/nestjs) 14 日目の記事です。
寝込んでいたため遅くなり申し訳ありません。

## はじめに

この記事では NestJS で多用される Decorator を継承した場合の挙動について説明します。
サンプルコードのリポジトリは以下になります。

https://github.com/nestjs-jp/advent-calendar-2019/tree/master/day14-decorator-and-inheritance

なお、環境は執筆時点での Node.js の LTS である v12.13.x を前提とします。
また、この Decorator の挙動は ECMA Script 仕様として定義されていない Decorator に対して、TypeScript 3.7.x 時点での実装による挙動であるため、将来的に仕様の策定・変更に伴い TypeScript コンパイラの挙動が変更になる可能性があります。

## 結論

メソッ

元記事を表示

【kintone】 APIトークンの自動生成

## まえがき

レコードやアプリの操作は、[kintone REST API](https://developer.cybozu.io/hc/ja/articles/201941754)でほぼほぼ実装できます。
しかし、通知やAPIトークンといった一部設定値については、kintone REST APIでサポートされておりません。
cybozu developer networkの[ナレッジノート記事](https://developer.cybozu.io/hc/ja/community/posts/360054477771)で紹介した[Puppeteer](https://www.npmjs.com/package/puppeteer)を使うと、そんなかゆい所に手が届いたりします。
今回は、APIトークンを自動生成する例を紹介します。

## デモ

Puppeteerを使って、APIトークンを自動生成します。
![demo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/528077/0ec3ae0

元記事を表示

“関数名を書き換える”嫌がらせプログラムを作ってみた – Babel Toolingの活用法

## 今から嫌がらせをします

こんにちは。どんぶラッコ(Twitter: [@don_bu_rakko](https://twitter.com/don_bu_rakko))です。
突然ですが、**今から関数名を書き換える嫌がらせをします**。

## 嫌がらせの手順

### 1. 関数が記述されているJSファイルを用意します

嫌がらせの対象となるJSファイルを作成します。
ここでは、関数 `fuu()`, `rin()`, `ka()`, `zan()` を作りました。風林火山。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241647/e46a3a69-5a6d-923f-a4d7-5e510e993109.png)

### 2. `rakko.js`を実行する

嫌がらせ開始です。
`node rakko.js [対象のjsファイルリソース]`を実行します。

![image.png](https://qiita-image-store.s3.ap-northeast-

元記事を表示

AzureFunctionsをJavascriptで構築する時の嵌りどころ

# はじめに

Javascript初心者がAzureFunctionsの開発を行った際に嵌ったポイントをお伝えしたいと思います。

# 前提

実際の案件概要は以下のような感じです

– 概要:検証用のPoCアプリの開発
– 構成:SPA(Vue.js) + AzureFunctions + CosmosDBでのサーバレスアプリケーション(基本PaaSで)
– ローカル環境:Windows + VisualStudioCode
– 言語:Javascript(フロントエンドとバックエンドで統一したかった)
– 開発時期:2019年8月~2019年11月
※本記事で書いている内容は現在時点でも修正されているかもしれませんし、今後も修正される予定のものも多いので、あくまで参考程度に見てもらえると助かります

# 本記事で触れるテーマ

– ベースOSの選択
– ローカル環境構築について
– Proxyを突破する技術
– Lintの設定
– Bindingsの落とし穴

## ベースOSの選択

Functionsのリソースを作成する際、事情がない限りはWindowsを指定する形で

元記事を表示

Use Async Hooks to monitor asynchronous operations

これが[Node.js Advent Calendar 2019](https://qiita.com/advent-calendar/2019/nodejs) 19日目の記事です。宜しくお願いいたします。

# Use Async Hooks to monitor asynchronous operations

非同期がJavascriptの特徴で、そして難しいどころです。この記事がNodeJSのAsync Hooks機能で非同期操作を監視することを紹介したいです。

私がJia Liと申します。非同期について大好きで、[angular/zone.js](https://github.com/angular/angular/tree/master/packages/zone.js)という非同期管理のライブラリのCode Ownerです、一応NodeJSのAsyncHooksのCollaboratorとしてZone.jsとAsyncHooksの連携もやっています。

この記事がNodeJSのAsyncHooksの機能を紹介したいです。

## なんで非同期を監視したいですか?

機能

元記事を表示

CAMPFIREのページをモニタリングしてクラウドファンディングの状況をウォッチする – スクレイピング編

クラウドファンディングプラットフォームの大手CAMPFIREさんのWebサイトをスクレイピングして、ファンディング中のプロジェクトの現在の進捗や、パトロン数などをウォッチしたいと思います。

今回はスクレイピング編です。

## 対象とするSPARKSチャンネル

今回はCAMPFIREの中でも、プロトアウトスタジオ x CAMPFIREで現在開催中の`SPARKS by BOOSTER STUDIO`のチャンネルを対象にスクレイピングしてみます。

> Sparks – https://camp-fire.jp/channels/sparks

> ![スクリーンショット 2019-12-18 1.49.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/c988f1d1-4927-2782-9e49-95b6c5efe78e.png “スクリーンショット 2019-12-18 1.49.15.png”)

### 環境など

* Node.js 13.3.0
* axios 0.19.

元記事を表示

TypeORMはNode.js開発のスタンダードになるか?

こんにちはGAOGAOの代表をしております [@tejitak](https://twitter.com/tejitak) です。[GAOGAOアドベントカレンダー](https://qiita.com/advent-calendar/2019/gaogao) 17日目の記事です。[GAOGAOのスタートアップスタジオ](https://studio.gaogao.asia/)にて、最近お手伝いしている海外のお客様案件にてTypeORMを導入しています。

今回の記事では、TypeORMとはなんぞや?という方を対象として、まだ比較的日本語記事が少ないTypeORMについてのご紹介します。

## Node.jsのORM

Node.jsでサーバーサイドを実装する際には[Express](https://expressjs.com/ja/)を使うことが多いと思います。ExpressはサーバーサイドのWebフレームワークで、データベースを扱うORMは自由に導入することができます。以下代表的なORMを紹介します。

– **mongoose**
公式ドキュメント: https://mongo

元記事を表示

Node.js+Selenium WebDriverでブラウザのエラーログを取得する話

## はじめに

こんにちは。
surimi_panです。

本記事は[North Detail Advent Calendar 2019](https://qiita.com/advent-calendar/2019/northdetail)の19日目の記事となります。
日付の数字(19)が西暦の下2桁(19)と一緒ですが、当記事に19に関わる要素は特にありません。

今回はNode.jsとSelenium WebDriverを利用して、
Google Chromeの開発者ツールにて出力されるログの中にエラーが無いかをチェックします。

## 要件

– Google Chromeの開発者ツールに出力されるエラーを取得したい。
– 取得するエラーログは深刻なものに限る。(WARNINGは含まない)

## 手段

Selenium WebDriverの、ログを取得する機能( `selenium-webdriver/lib/logging` )を利用します。
ブラウザのログをレベル(=ログの重要度)で絞り込んで取得することができます。

## 実装

“`javascript
req

元記事を表示

Googleスプレッドシートでウェブサイトの情報を管理する

#概要
ブログをつくる場合はWordPressといったCMSを使用するのが一般的です。
ただ、サイトによっては、大掛かりな管理は必要ないけど、のせる情報をハードコーディングしたくない場合があるかと思います。そんな時に使えるGoogleスプレッドシートで情報を管理する方法を紹介します。
今回はnode.jsを使用してGoogleスプレッドシート(Google Sheets API)からデータを取得するため、「[google-spreadsheet](https://www.npmjs.com/package/google-spreadsheet)」というnode.jsのパッケージを使用しています。

#設定する
こちらの方法に沿って設定を行います。(Googleのアカウントを持っている前提で進めます)
https://www.npmjs.com/package/google-spreadsheet#service-account-recommended-method

## 1. Google APIsでプロジェクトをつくる

https://console.developers.goo

元記事を表示

Firebaseを使ってみたので、所感を語ってみる

#目的
Firebaseって何?
使ってみたいけどどんなものなの?って人向け

#ざっくりFirebaseってどんなものなのか?
ざっくり説明します。
Googleが提供するBaasの一種。
Node.jsを利用したWebアプリケーションのバックエンドサービスです。
と言っても何を言っているのかわからないと思います。

Firebaseの基本的な構想としては(と言うよりもBaasの構想かな?)バックエンドの開発が必要ないサービスです。
例えば、ログイン機能。
Authenticationの機能がFirebase側で用意されていますので、フロントでFirebaseのAuthenticationを記述します。
そうするとあら簡単、ログイン機能完成です。

こう言ったバックエンドサービスを提供しているのがFirebaseなんですよ。って理解で良いと思います。

#Node.jsとは?
Node.jsとは、javascriptで開発可能な、サーバーサイド向けのプラットフォームのことです。
プラットフォームである。と言うことが重要です。フレームワークではありません。
簡単に言うと、Javascr

元記事を表示

【Node.js + Lambda】ノンエンジニア向けにツールでみんな幸せになる方法

:calendar_spiral: [i-plug Advent Calendar 2019](https://qiita.com/advent-calendar/2019/i-plug) の【17日目】の記事です:santa::tada:

私事ですが、2019/12/17本日はエンジニアとして職につき1周年になります。
それの記念っぽく、長めの記事を投下します。

# あるスプリントで…
弊社とある架空の動物部門の業務フローで毎日決まった:cat:キャットフード:cat:をgoogle詳細検索してきてその結果をpdf出力してファイリングするといったものがありました。これを効率化してほしいと依頼がありました。(フェイクです。)

つまり、手作業でやってる工程を
キーワードぽちーだけでpdfにできるノンエンジニア向けツールを作るということです。

### できるようにしたいこと
:one: :cat:キャットフードを詳細検索 + pdf出力 を(できる限り)自動でできること

# ノンエンジニア向けであるということは
まず思いついたのはコマンドラインツールでした。
Node.js

元記事を表示

OTHERカテゴリの最新記事