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

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

Webpackerが提供しているコマンドの内部処理を追ってみた

[食べログ Advent Calendar 2019 ](https://qiita.com/advent-calendar/2019/tabelog)24日目の記事です。

はじめまして。
好きな筋トレはバーベルシュラッグ。
好きな小説家は宮内悠介。
食べログのフロントエンドチームに所属している@sn_____です。
クリスマスイヴなのでWebpackerの話をします。

皆さんWebpacker使ってます?
個人的にはWebpackerは好みではありません。

Webpackerは面倒なwebpack回りの設定をやってくれるので、Railsアプリケーション開発では重宝されるケースも多いと思います。
しかし、提供されるコマンドの内部処理はブラックボックス化されており、詳細を把握していない人も多いのではないでしょうか。
フロントエンドエンジニア的にはそこらへんも抑えておきたいので、Webpackerが提供しているコマンドの内部処理を調査してみました。

### 調査対象
– webpacker@4.2.2(2019/12/24時点での最新版)

### 調査対象コマンド

– `./b

元記事を表示

【fly.io】愛を込めて花束を

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6102/d4434532-d8af-d461-a53e-b6da744d78f2.png)

タイトルは [Superfly](http://www.superfly-web.com/) の[名曲](https://www.youtube.com/watch?v=ccPIoaKod_I)ですが、本記事はネタ記事でもなく釣り記事でもなく、もちろんポエム記事でもありません。node の PaaS 環境である fly.io の真面目なお話です。

え?なぜこのタイトルかって?

 **fly.io**
  ↓
 **フライ.アイオー**
  ↓
 Super **fly 愛を** 込めて…

ハイ!Merry Christmas!?  Σd(゚∀゚d) オゥイェ!!!

# これはなに?
fly.io は、node.js に特化した PaaS で独自の CDN を持ち Edge サーバによるキャッシュで高速なレスポンスを提供するフルマネージ

元記事を表示

tsconfig の path alias 解決に tsconfig-paths/register を node で使う方法と TS 依存の分離方法

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

## はじめに

Webpack 等でビルドせずに node で実行する際に tsconfig の path alias が解決されなくて困る方も多いと思います。
一方 ts-node じゃなくても tsconfig-paths/register で path alias が解決できることは意外と知られておらず、実は `$ node -r tsconfig-paths/register dist/main.js` で解決します。
しかし、 Production で動く node に TypeScript 由来の何かに依存しているのは怖いということもあるので、 tsconfig-paths の中身を読んだので何をしているかを説明します。

## サンプルプロジェクト構成

以下の構成で実行します。サンプルリポジトリは以下になります。

https://github.com/euxn23/how-

元記事を表示

NodeでAPIを使わずにYouTubeLiveのチャットを取得する

本記事は[VTuber Tech #1 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/vtuber)の24日目の記事です。

# YouTubeLiveのチャットを取得するやつを作った話
そういうことです。YouTube、クリスマスカラーっぽいでしょ。
非公式手法なので自己責任重点な。

## TL;DR
作ったので使って、どうぞ。
[youtube-chat](https://www.npmjs.com/package/youtube-chat)
[GitHub](https://github.com/LinaTsukusu/youtube-chat)

## 何故作ったのか
自分で配信するようのコメビュを作っていろいろやろうと思い、最初は普通にAPIで取得すればいいやと考えていた。が、ウカツ!
毎秒取得したら数分でAPI上限に達してしまうではないか!ブッダシット!

## 使用技術
– Node.js
– TypeScript

## 使い方
1. 普通にインストールする

“`bash

元記事を表示

【Node.js】NW.jsでnodeなしで動くアプリを作りたい!

大幅に遅れましたが、この記事は [株式会社ピーアールオー(あったらいいな!を作ります) Advent Calendar 2019](https://qiita.com/advent-calendar/2019/pro-japan1) の19日目の記事です。

# はじめに
最近、お仕事でもNode.jsを使うことが増えてきました。
JSベースなので結構雑にツールを作れてありがたいのですが、そのツールを誰かに連携する時に相手方もNode.jsを入れてもらう必要があって連携は中々ハードル高めです。
という訳で、今回はWindowsでNode.jsで作成したものをスタンドアロンアプリとして出力できるNW.jsを触ってみました。

# 実行環境
OS: Windows 10 Pro v1903
node.js: v10.13.0
NW.js: 0.43.2
NW-Builder: 3.5.7

# 導入手順…と言いたいところですが
NW.jsの導入についてはQiita上にかなりしっかりまとめていただいている記事が存在します。

[NW.jsでデスクトップアプリの夢を見る!](https://q

元記事を表示

[Heroku Postgres] Herokuを使って無料でデータベースを利用する

# はじめに?
メリークリスマス!!!!??
クリスマスいかがお過ごしでしょうか???
ふっけです。今回はNitKitアドベントカレンダーということで、高専祭のクラス展示で入退場システムを作成したときにHerokuのPostgresSQLを使用したので、その方法について書きます。

# 環境?
Node.js v12.8.0

# データベースの導入?
Herokuでのプロジェクトの作成は省略します。
Herokuでプロジェクトを作成したあとResourcesのAdd-onsからHeroku Postgresを追加します。
![スクリーンショット 2019-12-24 15.20.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/264742/7eee5910-3f63-781d-e4c1-3ae104a7d376.png)
追加後 Heroku Postgresのリンクから管理画面に飛ぶことができます。
![スクリーンショット 2019-12-24 15.28.10.png](https://qii

元記事を表示

LINE WORKS Bot APIをひと通り触ってみる(node.js)#2

LINEWORKS Advent Calendar 2019 / 25日目の最終日の記事です。

本記事では、LINE WORKS Bot の[メッセージ送信 API](https://developers.worksmobile.com/jp/document/1005008?lang=ja) をnode.jsでひと通り触ってみたいと思います。

前回:[LINE WORKS Bot APIをひと通り触ってみる(node.js)#1](https://qiita.com/shotamaco/items/bd510729adc0497d7d0b)

#0. はじめに
記事の流れになります。

1. こんなの作ります
2. 環境準備
3. 作ってみる
4. 動かしてみる
5. 気づいたこと
6. まとめ

#1. こんなの作ります
LINE WORKS Botのメッセージ送信には下表のタイプが存在し、そのタイプをすべて網羅するBotを作ります。
また、quick reply (クイックリプライ)も使用します。

| 送信タイプ | 説明 |
|:–|:–|
| [text](http

元記事を表示

obniz-nobleでnoble使ってるプロジェクトをreplaceしてみる

# サマリ
遠隔地のBLEデバイスをnobleで動かせるよ with **obniz-noble**

# 背景

最近BLE周りしか触ってないじゃないか!?っていうぐらいBLEのことばっかやってますが、先日、[obniz-noble](https://github.com/obniz/obniz-noble)なるものをリリースしました

どういうものかというと、**nobleでobnizを操作しようよ!**っていうものです。

node.jsでBLEといえばnoble一択、というほど強いんですが、このnoble、なんとnodejsのバージョン8でしか動きません。

正確にはnobleはバージョン依存していないのですが、nobleが使ってるライブラリがバージョン依存で動きません。nobleのgithubも2年以上放置されてますし、メンテナンスする予定ないんですかね・・・

いろいろなかたがこれに対応してnode12でも動くnobleとかを作っていたりシますが、ここはやっぱりobnizでしょ!ということで**obnizで動くnoble

元記事を表示

Hubotを使ったslack botの作り方【2020年版】

# Hubotとは
HubotとはGithub社が開発したNode.js上で動くBotアプリケーションを作成するためのフレームワークです。

Hubotは、`Hubot本体`、`アダプター`、`拡張スクリプト`から構成されます。
Hubot本体とチャットアプリの間を仲介するアダプターが存在するため、slack、chatworkなどの様々なチャットツールとHubotを連携することが可能です。
Bot作成フレームワークはHubot以外にも存在しますが、Hubotは様々なチャットツールと連携できる点が他のものと比べて大きな特徴です。

![TH800_001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149122/722e3cf6-d581-e3d6-db1e-c4313746ba4c.png)
[GitHub社謹製! bot開発・実行フレームワーク「Hubot」](https://gihyo.jp/dev/serial/01/hubot/0001)より引用

Hubotを使うことにより、複雑な振る舞い

元記事を表示

expressメモ

# mongooseでdb接続
connect成功と失敗でlogを出力させた。

“`
// Set up Default mongoose connection
var mongoDB = require(‘./.db_url’);
var DB_URL = mongoDB.LOCAL_DB;
// connect mongoDB
mongoose
.connect(DB_URL, {
useUnifiedTopology: true,
useNewUrlParser: true,
})
.then(() => console.log(‘DB Connected!’))
.catch(err => {
console.log(`DB Connection Error:${err.message}`);
});
“`

元記事を表示

【ヒーローズ・リーグ 駅すぱあと賞受賞】みんなの現在地から集合場所を決めてくれる機能、他。飲み会幹事おたすけ LINE BOT 「鯨飲くん」を作った

# はじめに
飲み会幹事の仕事って、なかなか大変ですよね。
みんな飲み会はやりたいけど、幹事はやりたくない。そんな幹事の負担を少しでも軽減してくれるサービスがあったら、もっと気軽に飲み会を開催できるようになって、みんなの繋がりをより広く、深くできるのではないか…
そんな思いを形にした LINE Bot「鯨飲くん」を作りました。

ProtoPedia はこちら。
>https://protopedia.net/node/1899

この作品はヒーローズ・リーグ 2019 のハッカソン予選で制作したものです。ありがたいことに、「駅すぱあと賞」を頂くことができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154885/d7067d29-5ff4-617b-35e2-4b8014c3db21.png)

2日間のハッカソンを通しての制作プロセスや、制作時にやってよかったこと、反省点などを後半でご紹介いたします。

# 作ったもの
LINE のグループチャットに参加させて利用する LI

元記事を表示

obnizOS 3.0.0でobniz-nobleを使って周囲のBLEデバイスを探してみる

#obnizOS 3.0.0がリリースされました。
新バージョンではBLE機能が強化されている印象を受けました。

##手持ちのobnizBoardで新機能を試してみたい。
Node.jsでobniz-nobleを使ってをobnizで周辺にあるBLEデバイスを検索してみる

“`
npm i obniz-noble
“`

“` server.js
‘use strict’;
const express = require(‘express’);
const PORT = process.env.PORT || 3000;
const app = express();

var obnizNoble = require(‘obniz-noble’)
var noble = obnizNoble(“OBNIZ_ID_HERE”)

noble.startScanning(); // any service UUID, no duplicates

noble.on(‘discover’, function(peripheral) {
console.log(‘発見したデバ

元記事を表示

ラズパイ4とGStreamerでストリーミングサーバーを作ろう

## やること

ラズパイ4にカメラをつけてストリーミング配信の環境を作ります。 ラズパイに付けられるマイクがなかったので、音声なし映像のみです。

## 参考

– [ラズパイを映像展示用デバイスにした話](https://qiita.com/zgw426/items/61949d7802bebaaee941)
– ラズパイにNodejsインストール
– [[メモ]video.jsでHLS配信をやってみた](https://qiita.com/t114/items/c7fdffaa2e7fdf406a7b)
– Video.jsの使い方
– [Raspberry Pi + Node.jsでSkyWayを動かしてみる](https://qiita.com/n0bisuke/items/7b8907fbcb7c

元記事を表示

StreamでBuffer.concatしない冴えたやりかた

## はじめに

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

> https://twitter.com/yosuke_furukawa/status/1201778011286065153
> Yosuke FURUKAWA @yosuke_furukawa
> なんだこの誕生日アドベントカレンダーは / “Node.js Advent Calendar 2019 – Qiita”
> 午後5:19 · 2019年12月3日·はてなブックマーク

最初は誕生日カレンダーみたいになってたので、ネタ記事を書こうかなーと思っていました。
ですが、始まってみると案外真面目な記事ばかりだったので、真面目に書くことにしました。
*(そう、私は12/24生まれです!{クリスマス,誕生日}{ケーキ,プレゼント}はいつも一つ。)*

## StreamでBuffer.concatしない冴えたやりかた

一般的にStreamを扱う時は `on(“data”,

元記事を表示

MacにNode.jsをインストール(anyenv + nodenv編)

# プロジェクトごとにNode.jsのバージョンを管理できる!?
っていう話を聞いたのでnodenvをインストールすることにしました。
nodebrewだと`nodebrew use [バージョン番号]`みたいに切り替えるのが~~めんどくさくて~~大変で。
nodenvだと簡単にできるっぽいのでこっちを使ってみます。
いろいろなプロジェクトに関わってくるとこういうのがすごくありがたい。
開発者の方に感謝です。

# インストールの流れ
1. Homebrewのインストール
1. anyenvのインストール
1. nodenvのインストール
1. Node.jsのインストール

### ・Homebrew
HomebrewはMac用のパッケージマネージャ。
ツールのインストールとか諸々を管理してくれます。
http://brew.sh/index_ja.html
nodebrewをインストールするためにHomebrewを使います。

### ・nodenv
順番前後しますが、これがメイン。Node.jsのバージョン管理ツール。
https://github.com/nodenv/node

元記事を表示

備忘録 Node.jsでexportsを使ったモジュール化の作り方

Node.jsには、モジュール化といってさまざまな機能を持ったプログラムを個別のファイルに分割することができる。

効率よくコードを管理できるだけでなく、さまざまなユーザーが作成したプログラムを再利用しやすくできる。

Node.jsにはこのようなモジュールを管理できるツール「npm」や「yarn」等がある。

#「exports」
基本的なモジュール化の方法として「exports」がある。

exportsを使うと、指定した値を外部のNode.jsファイルから読み込んで再利用することができるようになる。

>**exports.プロパティ名 = 値**

この値は文字列・数値・配列・オブジェクト・関数など、さまざまなものを設定できる。

>**exports.str = ‘こんにちは’;**

>**exports.obj = {
name: ‘メロン’,
price: 500,
store: ‘東京店舗’
};**

>**exports.func = function() {
console.log(‘exportsの関数’);
};**

#「module.ex

元記事を表示

Macでyarn installしたらnode-gypのエラーが出た

# どうした

既存のプロジェクトの手直しをしようとして、ローカルにnode_modulesを入れたかったので以下のコマンドを実行したらエラーが出た。

“`
yarn
//yarn install の短縮形
“`

エラーは以下。

“`
Command: node-gyp rebuild
Arguments:
Directory: /Users/user/.ghq/github.com/hppRC/gatsby-firebase-sample/node_modules/fsevents
Output:
gyp info it worked if it ends with ok
gyp info using node-gyp@5.0.5
gyp info using node@13.2.0 | darwin | x64
gyp info find Python using Python version 2.7.16 found at \”/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Pyt

元記事を表示

Node.js で stream を使って gzip ファイル全体をメモリに乗せずに先頭一行だけを取得する

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

## はじめに

gzip ファイルなどの圧縮されたファイルを読み込む際、たとえば csv など圧縮率の高いファイル形式かつ大きなファイルの場合、全てをメモリに乗せ切れないことが稀にあります。
そもそも csv のカラムだけ欲しいなどの場合にデータ全体を取得するのは時間もかかるし無駄です。
そこで、 Node.js は stream を扱いやすい言語なので、これを使って簡単に解決できるため紹介します。

なお、 S3 からのデータ取得であっても `createReadStream()` すれば `stream.Readable` 型になるため、同様の手法が可能です。そもそも、この話自体がローカルよりはクラウド絡みの方が多いケースになると思いますが……。

## おさらい: Node.js での stream でのファイル読み書き

例えば、ファイルを読み込んで標準出力に表示します。

“`typescri

元記事を表示

toioで生き物っぽい何かを作ってみた

ご覧いただきありがとうございます。
この記事は[SB-AI Advent Calendar 2019](https://adventar.org/calendars/4324)の18日目の記事となります。

#はじめに
突然ですが皆様は「人工生命」と聞いてどんなものをイメージしますか?
SFに出てくる怪物のようなイメージを持つ方も多いかもしれませんが、家を掃除してくれるルンバも人工生命の一つと言えます。
「人工生命」は国際的には「ALIFE」という名称で世界各国で研究が進められており、人工的に生命を作る事を通じて生命とは何かを理解しようとする研究分野の事です。

私はこの分野の研究者でもなんでもない、ただのサラリーマンですが、仕事でロボットに関わる機会が多く、
また昨年ALIFE関連のハッカソンに参加しチームで作品を作った経験から、プライベートで「人工生命」を1つのテーマとしてモノづくりをしております。
(嬉しい事にチームで作った作品が、今年の文化庁メディア芸術祭のアート部門で[審査委員会推薦作品](http://festival.j-mediaarts.jp/works/art/mo

元記事を表示

思いもよらないものをnpm publishしてしまった話(前任者の顔写真など)

スクリーンショット 2019-12-23 0.06.32.png
俺「すっげぇいい名前のライブラリ思いついた!!」

俺「npm あるかな?あるかな?」

(カタカタ)

俺「なかった!よっしゃ一番乗りや!!!今すぐ作らないと!!!」

俺「`npm init` enter enter enter enter `npm publish` うおおおおおおおいっけぇぇぇ!!!!!!!」

(カタカタカタカタカタカタカタカタッターン)

俺「ミ゜ッ!」

ーーー

おはようございます。[本番環境でやらかしちゃった人 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/yarakashi-production)の 23 日目を担当する、[@sandessO

元記事を表示

OTHERカテゴリの最新記事