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

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

Transcribeの英語ミーティング文字起こしをmarkdownにする

fushimiです。
この記事は [Wanoグループ Advent Calendar 2019 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/wano-group) の11日目の記事になります。

## (英語)会議 is …:innocent:
最近プロジェクトではニューヨークのチームと英語での会議をする機会が多いです。基本リスニングも不得手なので、会議同席中も熱が入って速度が速い時はなかなか聞き取れないことがあります。
そこで会議の後など、勉強/議事録がてら[Amazon Transcribe](https://aws.amazon.com/jp/transcribe/)での音声文字起こしを見てわからなかったところの文脈を追ってみたりしています。
今回はTranscribeの出力をmarkdown化するやつをwebアプリに起こしてみました。

### 制作物
リポジトリ:
[wano/aws-transcribe-render](https://github.com/wano/aws-transcrib

元記事を表示

Reactで実現するUniversal JavaScript

#はじめに
この記事は[React#2 Advent Calendar 2019 10日目](https://qiita.com/advent-calendar/2019/react2)の記事です。

先日某勉強会で以下のようなLTをさせていただきました。

###[はじめてのUniversal JavaScript](https://speakerdeck.com/nozaki/hazimetefalseuniversal-javascript)

当記事ではこのLTを元に

・Universal JavaScriptについて
・LT内でも言及されているReact Routerを用いたSSRについて

深ぼっていこうと思います。

#なぜUniversal JavaScriptか
まずはじめに、少しReactAdventCalendarという趣旨から少しはずれるかもしれませんが、Universal JavaScriptという言葉について触れておこようと思います。

Universal JavaScriptとは、
・サーバーサイドやクライアントのコードをJavaScriptのコードで共

元記事を表示

Firebase Cloud Functionsでデフォルトで使える環境変数

## 前提
– 2019/12/09現在の情報です
– Firebase Cloud Functions
– GCPのCloudFunctionsではない
– Runtime Node.js 10
– Node.js 10はBetaなのでご注意を

## TL;DR
– Nodejs 8で取れてた環境変数が10系だと取れない可能性があるので気をつけよう
– Nodejs 10では[こいつら](https://qiita.com/_mogaming/items/edd6024ca0cdd8d3cd93#%E4%BD%BF%E3%81%88%E3%82%8B%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0%E4%B8%80%E8%A6%A7)が使えるぞ

## ドキュメント
– [FirebaseのEnvironment configuration](https://firebase.google.com/docs/functions/config-env#use_environment_configuration_to_initialize_a_m

元記事を表示

obnizでぬいぐるみとの握手をトリガーに?

#やったこと
obnizのアドベントカレンダーに何書こうかと考えていたところ、このフクロウくんが視界に入ったので、ぬいぐるみとの握手で何かアクションを起こしたら面白いんじゃないかなぁ〜ってことで色々やってみました。
![IMG_7386.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/130420/30fcfb8a-d6e5-a00d-0041-c5fd33873f10.jpeg)

#材料
* obniz
* バッテリ
* 圧力センサ

obnizにそのまま圧力センサをさして握手を検知しています。めちゃ簡単。

こんな感じにして、フクロウくんのお腹と手に埋め込みました。
(写真汚くてごめんなさい…)

||PWAのキャッシュ戦略

はじめまして、おはこんばんちは。hiraokです。
普段はAndroidエンジニアとして粛々と活動してます。
最近自分のきゃりあについて悩みすぎてハゲそうなのでGoogleのCodelabsでPWA始めてみました。
https://codelabs.developers.google.com/codelabs/workbox-lab/index.html

これを見てこの人に比べたらわたし、おれ大丈夫だなって思っていただけたら幸いです。

## Get Set Up
とりあえず clone しておきましょう!

“`bash
git clone https://github.com/googlecodelabs/workbox-lab.git
“`

## プロジェクトに依存するパッケージインストールしてサーバースタートしてくれや

スクリーンショット 2019-11-11 0.28.32.png僕の個人プロジェクトを加速させたNuxt

## はじめに
2019年は年間通してNuxtにお世話になったのでその感想を書きたかったのですが、感想という感想を書く時間がなくもう11日です。そのため内容はお察しください。

## Nuxt とは何か?

> Nuxt は、Vue の公式ガイドラインに沿って強力なアーキテクチャを提供するように設計されたフレームワークです。一部分から徐々に採用することが可能で、静的なランディングページから複雑な企業向け web アプリケーションの作成に使用できます。
本質的に汎用性があり、さまざまなターゲット(サーバー、サーバーレス、または静的)をサポートし、サーバーサイドのレンダリングは切り替えることができます。
強力なモジュールエコシステムにより拡張可能で、REST や GraphQL エンドポイント、お気に入りの CMS や CSS フレームワークなどさまざまなものに簡単に接続できます。PWA および AMP のサポートは、Nuxt プロジェクトにはないモジュールのみになります。
NuxtJS は Vue.js プロジェクトのバックボーンであり、柔軟でありながら自信を持ってプロジェクトを構築する

Raspberry Pi のセットアップを試みる

# はじめに

この記事は、[SLP KBIT Advent Calendar 2019] (https://adventar.org/calendars/4214) の10日目の記事です。

最近 Raspberry Pi を手に入れたので、セットアップを行います。
その後、実際に少しだけさわってみようと思います。

# まずは Raspberry Pi について調べてみよう

「ラズパイ手に入れたぜ! 遊んでみよう!」
と思ったのはいいけれど、Raspberry Pi について何も知らないなあ…
ということで、まずは Raspberry Pi について調べてみようと思います。

## Raspberry Pi について
生産しているのは、イギリスを拠点とする Raspberry Pi Foundation という慈善団体です。
彼らは、人々がコンピューティングパワーとデジタル技術を活用して、需要な問題を解決し、
創造的に自分自身を表現できるようにするために、活動しています。

Raspberry Piとは、人々が学習し、問題を解決し、楽しむために使用する
低コストで高性能なコンピュ

元記事を表示

Twitterの特定のハッシュタグでつぶやかれたツイートを収集する

#概要
node.jsで特定のハッシュダグでつぶやかれたツイートを収集して、csvファイルに保存します。

#Twitter Developer Platformにアプリを登録

##1.登録画面右上の「Create an app」をクリック
[アプリ登録画面](https://developer.twitter.com/en/apps)

![twitter01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43894/4d8376d1-95a2-db48-41e6-7f85df2996f0.png)

##2.用途の選択
今回は「Making a bot」にしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43894/cecf4bd7-b6c6-faee-ec10-295c1d2ea9ba.png)

##3.ツイッターアカウントの確認
現在、ログインしているツイッターのアカウントで問題ない

元記事を表示

zone.jsを使用してexpressでリクエストIDを出力するミドルウェアの作成

## zone.jsを使用してアクセス毎にユニークな識別子をログへ出力する
expressではアクセス毎にリクエストIDを発行する機能はなく、自前で用意する必要があります。
そこで、Nginx or UUIDv4を使用してリクエストID毎にユニークな識別子を用意します。
リクエスト毎に値を保持する必要があるので、zone.jsを使用し持ち回れるようにしておきます。
[nginxでrequest_id](https://qiita.com/toritori0318/items/d82f9beccd76ea8ccb85)
[uuid](https://www.npmjs.com/package/uuid)
[zone.jsについて](https://qiita.com/Quramy/items/83f4fbc6755309f78ad2)

“`javascript:logger.js
‘use strict’;

require(‘zone.js’);
const uuidv4 = require(‘uuid/v4’);
const moment = require(‘moment’);

元記事を表示

Google Cloud Functions で obniz を 1分おきに動かしてみた

この記事は [obniz Advent Calendar 2019](https://qiita.com/advent-calendar/2019/obniz) の11日目の記事です。

# obniz で高頻度なセンシングをラクに実現してみたい!
今年の首都圏を襲った台風をきっかけに、 obniz で自宅の気温や気圧などのログを取って可視化してみたいと考え、~~obniz Cloud の12分おきのセンシングではもの足りず、~~ Google Cloud Functions で obniz を 1分おきに動かしてみました。

# obniz とは
[obniz(オブナイズ)](https://obniz.io/)は日本の CambrianRobotics 社が開発したマイコンボードで、Wi-Fi に接続してインターネット経由で操作します。簡単に Wi-Fi に繋がり、ファームウェアの書き込み不要で API 経由で操作するので、インターネットと連携したハードウェアをサクッと作れるのが特徴です。

# obniz の動かし方
## obniz の動かし方の種類
obniz の動かし方は以

元記事を表示

[メモ]サウンドプログラミング

# Max know-how

# アルゴリズム

# C know-how

元記事を表示

fs.stat を Promise 化して複数のファイルの stat を一気に取る。

書いてから思ったのですが、下から読んだ方がいいかも。

# Promise 以前の状況

例えば node.js で ‘x’ という名前のファイルの stat を取得したい場合

“` sample.js
const fs = require( ‘fs’ )

fs.stat(
‘x’
, ( er, stat ) => {
if ( er ) console.error( er )
else console.log( stat )
}
)

“`

という風にやってたと思います。

### ファイルが複数の場合

複数のファイル、例えば ‘x’, ‘y’ という名前のファイルの stat を取得してから何かやりたいような場合、時間のかかる逐次処理でよければ

“` sample.js
const fs = require( ‘fs’ )

const
stats = []
fs.stat(
‘x’
, ( er, stat ) => {
if ( er ) console.error( er )
else {
stats.push( stat )

元記事を表示

npmについて学んだことまとめ

## 目次
1. npmとは
2. npmコマンド

## 今回の学習のゴール
– npmとは何かを知る
– 実際の使い方について知る

## 1. npmとは
– Node Package Managerの略称
– Node.jsのパッケージを管理するツール
– Node.jsをインストールすると、標準パッケージとして一緒にインストールされる
– パッケージとは、あらかじめ用意された便利な機能をまとめたもの
– 代表的なパッケージ
– Express
– Node.jsのWebアプリケーション開発で利用できるMVCフレームワーク
– promise
– 非同期処理を分かりやすく実装できる
– Socket.io
– 双方向のリアルタイムアプリケーションを実装できる
– npmでインストールしたパッケージのバージョン情報を`package.json`に格納し、`package.json`からパッケージを一括でインストールすることが出来る
– `

元記事を表示

Google Translation API v3 を Node で使ってみた

# はじめに
案件で使う機会があったので忘備録的な感じで記載していこうと思います。
諸々間違い、認識違いがあるかもしれませんが生暖かく見守っていただければと思います。

# 実装イメージ
* XServer X10プランを使用します。
* NodeでWebサーバ起動して云々はXServer上で実装するのは難しいのでphpで受けてコマンド呼び出しで動かします。
* 翻訳結果はjson形式で返却します。
* 本来であれば翻訳結果をjavascriptが受け取りうまくゴニョゴニョしてhtml上で表現するが正しいと思いますが、残念ながら自分はPHPerでjavascriptが得意じゃないのでこの部分は割愛させていただきたく。

# 環境
* XServer X10プランで契約できるレンタルサーバ
* php
* 7.2.17
* perl
* 5.16
* nodebrew
* 1.0.1
* Node
* v12.10.0
* npm
* 6.10.3

※php, perlのバージョンはXServerのデフォルト設定(2019/12/04時点)
※nodebrew

元記事を表示

.nodebrewからnへの移行をやってみた

かれこれnodeを触っておらず、nodebrewの存在を忘れていた状態でした。
アップデートしてもバージョンが変わらず、頭空っぽにして作業していたので笑、『[Node.jsとnpmをアップデートする方法](https://parashuto.com/rriver/tools/updating-node-js-and-npm)』という記事を参考にnを入れてアップデートを行うも(当然)上手くいかずwhichしてnodeのパスを見ると`.nodebrew`が経由されたことを知り、そこで思い出しましたw

あまりnodeを使わないので、このまま`$ n –stable`か`$ n –latest`で管理しようと思いnodebrewを消し、nに移行することにした際のまとめです。

## 注意事項

参考にされる際は、**自己責任**でお願いします。

この移行作業を行うことでnpmインストールしたライブラリまで消えてしまうため、削除する際に何をインストールしていたのか確認し、移行した後に再度入れなおしてください。
その際におそらく前のバージョンが新しいnodeでサポート外になり、サポートされ

元記事を表示

【解決済】node.js v12.13.1で “expo start”コマンドで起動するとエラーを吐いてしまうバグ

“Unterminated character class. Run CLI with –verbose flag for more details.”

ゼロ環境でExpoを導入しようとしたのでnode入れろとかC++入れろとか挙句の果てにはexpoの最新版だとインストール出来ないって怒られやっとインストール出来て起動出来ると思ったらよくわからないエラーに遭遇したので書き留めて置きます。

##環境
expo 3.5.0
node.js LTS版(12.13.1)

## 原因と解決策

nodeの12.10前後のバージョンが悪さをしてるみたいなのでダウングレードもしくは修正済のバージョンにアップグレードするのが安定しそうでしたが自分は入れ直したりアップグレードする手間が惜しかったでエラー箇所を修正しました。エラーと修復手順を見る感じだと文法の記述ミスなのかな。

##エラー箇所の修復手順

###手順1 原因のファイルを開きます

“Expoのプロジェクトを作成したフォルダ”\node_modules\metro-config\src\defaults\blacklist.j

元記事を表示

express-graphql + TypeScript で始めるGraphQL API Server

# はじめに

この記事は `express-graphql` で`Node.js` + `TypeScript` で簡単にGraphQL APIサーバを実装する
ハンズオンちっくな記事です。
実際に手を動かしてみてください?

ディレクトリ構造は下記のようになります。

“`
.
├── src
│   ├── data
│   │   └── index.ts
│   ├── fields
│   │   ├── index.ts
│   │   └── member
│   │   ├── index.ts
│   │   ├── query.ts
│   │   ├── mutation.ts
│   │   ├── resolvers.ts
│   │   └── types.ts
│   └── index.ts
├── package.json
└── tsconfig.json

“`

# 準備
## パッケージのインストール

実行は `ts-node` で行います。

“`
yarn add @types/expres

元記事を表示

NestJS Service 初期化 非同期

この記事は [NestJS アドベントカレンダー 2019](https://qiita.com/advent-calendar/2019/nestjs) 8 日目の記事です。

## はじめに

この記事では DB のコネクションやクラウドサービスの認証など、 Service として切り出したいが初期化が非同期になるものの扱い方を説明します。

サンプルコードのリポジトリは以下になります。

https://github.com/nestjs-jp/advent-calendar-2019/tree/master/day8-initialize-async-provider

なお、環境は執筆時点での Node.js の LTS である v12.13.1 を前提とします。

## おさらい: NestJS における Provider の初期化タイミング

NestJS の Module において定義された Provider (Service など) は、 NestJS のエントリーポイントで `NestFactory.create()` された際にインスタンスの生成がされます。
`@

元記事を表示

pm2を使っているからnodeアプリでlog4jは使わなくていい?

pm2で動かすこと前提のnodeアプリを書いていて、ログをそのままconsole.logとconsole.errorの2種類を使い分けるか、log4jを入れてきっちり分けるかで悩んだ結果、前者のconsoleを直に叩く方式にした。

## console直のメリット

– ライブラリを入れなくてもいい

## log4jのメリット

– stdout stderrの他に細かくログレベルを切り替え出来る
– ログにタイムスタンプを入れる事が簡単に出来る

pm2の機能で、ログにタイムスタンプを入れる事が出来るからconsoleでいいかな。

元記事を表示

IBM Cloud ObjectStorageにファイルをアップロードする

## やりたいこと
* multer, ibm-cos-sdk, multer-s3を使用して、multipart/form-dataで受け付けたファイルをIBM CloudのObject Storageにアップロードする。
* 参考:https://github.com/IBM/cos-web-gallery/blob/master/src/controllers/galleryController.js
* 備忘録

## 前提条件
* Node.js…10.16.0
* multer…1.4.2
* multer-s3…2.9.0
* ibm-cos-sdk…1.5.4
* IBM Cloud Object Storage・Bucket作成ずみ

## パッケージのインストール
“`
npm install –save multer multer-s3 ibm-cos-sdk
“`

### upload.controller.js
“`javascript
const multer = require(‘multer’);
const config =

元記事を表示

OTHERカテゴリの最新記事