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

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

[Electron] IPC には新しい ipcRenderer.invoke() メソッドを使ったほうが便利 (v7+)

# TL;DR;

Electron v7 から、`ipcRenderer.invoke()`、`ipcMain.handle()` が新たに追加されました。これは、従来まで利用されてきた `ipcRenderer.send()` や `ipcRenderer.sendSync()` の上位互換のようなものです。今後は積極的にこちらを使ったほうがよさそう。

# 従来の Renderer <-> Main プロセス間通信 (IPC)

## 同期: `ipcRenderer.sendSync()`

文字通り、同期 (Sync) 的にプロセス間通信を行います。
この際に重要なのは、sendSync によって Main プロセスが呼ばれるとその間は Renderer プロセス上の処理は完全にブロックされます。Main プロセスからの応答があるまでは、renderer プロセス側の操作画面はいわゆるフリーズしたような状態になります。描画処理も止まるので、ローディング画面のような CSS アニメーションも容赦なく固まります。

ドキュメントにも下記のように、どうしても使わざるを得ない状況下に

元記事を表示

Oculus Quest で日本語を打つ

#VR 空間でも日本語入力
![rdgqs-1spna.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188014/08205813-9603-6782-275e-97ff10ae8bf1.gif)
文字小さくてごめんなさい?

# 製作物
[日本語メモ](https://oculusquest-jpn-ime.glitch.me)  ([Glitch プロジェクト](https://glitch.com/~oculusquest-jpn-ime))
Oculus Quest なら Alt + Space で半角 ⇔ 日本語入力の切り替え。
URL を開くと ID が URL に付与されますので、再度編集したい場合は ID が付けられた URL をブックマークしてください。
テキストが変更がされると自動でサーバーに保存されます。

# 解説
[Oculus Quest + Firefox Reality + Glitch + A-Frame で VR 内 VR 開発](https://qiita.com

元記事を表示

開発環境の1つであるVSCodeの開発環境についてチラ見してみる

# リーマンサットについて
趣味で宇宙開発を行う団体「[リーマンサット・プロジェクト](https://www.rymansat.com)」がお送りする新春アドベントカレンダーです。インデックスは[こちら](https://qiita.com/rsp-dgkz/items/497225739b88c817a90c)

リーマンサット・プロジェクトは「普通の人が集まって宇宙開発しよう」を合言葉に活動をしている民間団体です。
他では経験できない「宇宙開発プロジェクト」に誰もが携わることができます。
興味を持たれた方は [https://www.rymansat.com/join](https://www.rymansat.com/join) からお気軽にどうぞ。

# 概要
機械学習周りやWEBサービスを担当してますAkira Sugawaraです。

開発環境、、、エンジニアなら誰しも気になりますよね?
リーマンサットでは趣味開発なので、特に大きな制限を設けずに自由に開発しています。
開発エディタはVSCodeやIntelliJ、ソースコード・タスク管理はBacklog、といった感じで

元記事を表示

GoogleドライブのファイルをGoogle Cloud Storageへコピーする

Google Cloud APIの中には、`gs://[bucket]/[path]`の形式になっているCloud StorageのURLを与えることができるものがある。今回はGoogleドライブに入っているファイルをCloud Storageにコピーして`gs://`のURLとして使えるようにしたかった。

streamをうまく使うことで、一時ファイルを作らずにコピーすることができた。

## 準備

以下のパッケージをインストールしておく。

“`
$ npm i googleapis @google-cloud/storage
“`

ドライブ用にGoogle APIのOAuthクライアントIDを作成する。[APIとサービスの認証情報](https://console.cloud.google.com/apis/credentials)から[OAuth クライアント ID の作成]で作成できる。コマンドラインツールの場合は[その他]を選んで作成する。JSONをダウンロードしておく。

Cloud Storage用にサービスアカウントキーを発行して、これもJSONをダウンロード

元記事を表示

npm install で har-validator-5.1.2.tgz が Not Found と言われた

ちょっと前に表題の現象が発生してたので、手元のメモを元に記事にしておく。

以下の記事の方が解説されている方法が正攻法だと思われるが、なんらか事情でうまくいかなかった記憶。(うろ覚え)

[yarnコマンドで 404 Not Found に遭遇したときの対処法 – Qiita](https://qiita.com/yoskeoka/items/3d015fb1dc43f73fe4d8)

そこで、[Github の Issue のコメント欄](https://github.com/ahmadnassri/node-har-validator/issues/113) を参考に `package-lock.json` の `har-validator` の登録内容を自分で `5.1.3` のものに書き換えて `npm install` する方法で対応した。

“`json:package-lock.json
“har-validator”: {
“version”: “5.1.3”,
“resolved”: “https://registry.npmjs.or

元記事を表示

Auth0のManagement APIのアクセストークンを取得するメモ

Auth0の[Management API](https://auth0.com/docs/api/management/v2#!/Users/get_users)の利用時の話です。

[前回の記事](https://qiita.com/n0bisuke/items/07c388f0c0be77ed601c)だとアクセストークンを直指定だったので、時間が立つとアクセストークンが切れてしまいます。

API経由で動的に生成する方法を調べたのでメモです。

## アクセストークンのテスト

APIトークンを試す際には、公式の[Get Access Tokens for Testing
](https://auth0.com/docs/api/management/v2/get-access-tokens-for-test)にあるように、管理画面からAPIトークンを取得して直接指定すると良いです。

> ![](https://cdn2.auth0.com/docs/media/articles/api/tokens/copy-token.png)

[Auth0でログインユーザーのロール

元記事を表示

スクレーピング用のクローラー作成

# 概要
機械学習用にコンテンツデータを集めないと行けなくて、毎回クローラー書くの面倒だったので、汎用的なクローラーを開発

## 構成
![クローラー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/525769/293adead-df4f-718c-1541-fdbadbfc8c3f.png)

### 仕組み
LinkCrawlerで起点のURLからリンクを辿り対象のURL収集しDBに保存、
ContentsCrawlerで収集したURLを取得しコンテンツの取得を行ってDBに保存する

## AWS
![aws.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/525769/18e4c390-cb23-a2da-abb2-bbf8bdd56a66.png)

## アプリケーション
・puppeteer
・node.js

## DataBase
“`sql:table
CREATE TABLE `site` (

元記事を表示

[メモ] GitHub Actions を使って Electron の multi-platform-build をやる

# やりたかったこと

最近個人的に Electron で小さなアプリを作る機会があったが、公開するにあたってビルド -> Release のフローを自動化したかった。当初 TravisCI を使っていたが、この機会に GitHub Actions を使ってみたのでその時のメモ。

ちなみに今回想定しているフローは、

1. 新しい Tag を Push (e.g., v0.0.2)
2. Tag Push をトリガーに GitHub Actions の build job がスタート
3. 成功すると、Tag 名の Release (draft) を作成し、ビルドした成果物 (e.g., `.exe` `.dmg`) ファイルを作成した Release の Assets としてアップロード。
4. Release を行う (手動で draft -> public release として更新する)

勝手に public release まで公開してほしくはなかったので、今回のゴールは draft 状態の Release までです。

イメージ

元記事を表示

Auth0でログインユーザーのロール(Roles)を元にハンドリングするRulesを書いてみた

Auth0でログインしたユーザーによって処理を変えたいときに、Rulesというログイン時に任意スクリプトを実行してハンドリングさせる機能があります。

> 参考: [「Auth0」のRulesが便利機能だった!! / 『「Auth0」で作る!認証付きシングルページアプリケーション』でAuth0をさわってみた](https://blog.pirox.dev/2019/05/04/231114)

今回は、 **ユーザーのロールを元にハンドリングをする処理を書いてみます**。

このRulesはNode.jsで記述するFaaS的なものになっているので、公式サンプルには無いものも比較的カスタマイズしやすそうです。

## 例: whitelist – 特定のメールアドレスの人を通す

公式サンプルです。こんな雰囲気。

> ![](https://i.gyazo.com/6a83be437f181033cef72eef882f1ffd.png)

“`js
function (user, context, callback) {

// Access should only be g

元記事を表示

やらかしJS先生がみた関数パラメータの闇({name, value = 0}) => console.log({name, value})

#Overview

過去にバグになってしまったものを忘れないよう書き留めておくシリーズです。
今回の題材は関数パラメータのデフォルト引数です。

“`javascript

const print = ({name, value = 1}) => console.log({name, value});

print({name: “value is null”, value: null});
print({name: “value is undefined”});

“`

#Target reader

– この結果がわからない方

#Prerequisite

– JavaScriptを一通り理解している

#Body

##答え合わせ

正解はこうなる。

“`javascript
> Object { name: “value is null”, value: null }
> Object { name: “value is undefined”, value: 1 }
“`

どうだろう?“`value: null“`にnullが来ることを予想できただろうか?

元記事を表示

async/await完全に理解した(JavaScript)

# きっかけ

最近Node.jsを触る機会があるが、言語を体系的に勉強してきたわけではないので、必要な機能から調べながら使っている。
あるとき一定時間待ってから次の処理を行うシーケンス的なことをしたいなと思って調べたところ、やりたいことは「非同期処理」と言われるようだ。次のようなサンプルコードが出てきた。

“`javascript:コールバックを使う方法
const t0 = Date.now(); // 開始時刻を取得
console.log(‘開始: ‘ + (Date.now() – t0)); // 経過時刻をあわせて出力
setTimeout(function() {
console.log(‘1秒後に実行されるはず: ‘+ (Date.now() – t0)); // 経過時刻をあわせて出力
}, 1000);
“`

“`:出力
開始: 0
1秒後に実行される: 1004
“`

**あーそーゆーことね完全に理解した**(画像は脳内補完願います)
よし、ちゃんと1秒後に実行された。
じゃあ処理を2段階にしてみよう。

“`javascript:コール

元記事を表示

nodeを終了する方法(コマンド)4選

#nodeを終了する方法4選

###① .exit
.exit と打つことで終了出来ます。

“`
[name]MacBook-Pro:[filename] [name]$ node
Welcome to Node.js v13.5.0.
Type “.help” for more information.
> .exit
[name]MacBook-Pro:[filename] [name]$
“`

###② Ctrl + d

Ctrlを押しながらDを入力することで終了出来ます。
こちらが一番簡単ですが、2回Ctrl + Dを入力してしまうとターミナル自身が終了してしまうので注意が必要です。

“`
[name]MacBook-Pro:[filename] [name]$ node
Welcome to Node.js v13.5.0.
Type “.help” for more information.
>  (ここで Ctrl + dを入力)
[name]MacBook-Pro:[filename] [name]$
“`

###③ Ctrl + c を2回入力

元記事を表示

【Catalina】nodebrewからnode, yarnをインストール

#はじめに
node.jsのバージョン管理とyarnのインストールについて
色々な所からインストールしていたら、brew doctorから怒られてしまいました。。。
Catalinaにアップデートしたら、読み込めないし、、、

“`
$ node -v
zsh: node: command not found
“`

PATHを通すと node -v, npm -v が使えるようですが

せっかくなので、一元管理するため
一度、全てアンインストールしてから再インストールしました。
nodebrewでの管理が上手くいったので、自分用メモとして残しておきます。

nodeの管理はnodebrewで行い、npmからyarnをインストールしました。
※公式では非推奨らしいですが、、、
https://yarnpkg.com/ja/docs/install#alternatives-stable

#node.jsとyarnの削除
今まで入れていたnodeとyarnを全て削除します。

“`:(例)Homebrewで入れた場合
$ brew uninstall yarn
$ brew un

元記事を表示

【Node.js】楽天での消耗品の購入を自動化した

# はじめに
私は普段、洗剤やトイレットペーパーなどの日常の消耗品の買い物は楽天で購入している。
適当なタイミングで家にある在庫を確認し、不足している物をまとめて注文するというスタイルだが、「家じゅうを見て回りつつ足りないものをメモする」→「PCに向かってメモを見ながら楽天で商品を検索して購入する」の作業が面倒くさかったので、一部を自動化した。

使うもの:

* Node.js v10.16.0
* puppeteer-core v2.0.0
* googleapis v46.0.0
* Google Sheets API v4
* Visual Studio Code

前提条件:

* 楽天市場に会員登録している

# 買い物リストを用意する
まずはじめに、Googleスプレッドシートに、以下のような買い物リストを作成する。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/424975/87b7bd6e-e553-c9c0-e79e-933d4ff648e5.png)

一般的に買い

元記事を表示

React.jsとAWS(cognito)の連携

##何をする?
reactコンポーネントからAWSのcognitoにユーザ登録を行い、サインインを行います。

## cognitoについて
アプリやwebサービスの認証基盤です。認証ロジックだけAWSに託します。
サービス提供者はログイン情報を保持することなく認証結果のみを受け取ります。
また、cognitoを介して様々なAWSサービスが使えるようになります。
詳細は公式ドキュメントを参照ください。
[公式ドキュメント](https://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/what-is-amazon-cognito.html)

## バージョン
– node.js **10.15.3**
– react.js **^16.12.0**
– material-ui **^0.20.2**
– amazon-cognito-identity-js **^3.0.15**

## 準備
awsへの連携にはamazon-cognito-identity-jsを使います。

“`
npm install —

元記事を表示

VSCode で “Cannot find runtime ‘node’ on PATH. Is ‘node’ installed?” との戦い

# Cannot find runtime ‘node’ on PATH. Is ‘node’ installed?というダイアログが!
Node.js でサーバーサイド書く簡単なサンプルを真似して作ろうとしてデバッグ環境を整えてるときに発生
`node -v`ってやってもちゃんと返却値あるし原因がわからない。。。
“一応” 解決したのでその方法を記載します。

## 環境
* OS: macOS Catalina version 10.15.1
* VSCode: 1.40.2
* Node: v12.14.0 (installed by nodebrew)

## TLDR
launch.json に以下の設定を追加

“`
“runtimeExecutable”: “/usr/local/var/nodebrew/current/bin/node” <- which node の結果をそのまま貼り付けた ``` [レファレンス](https://code.visualstudio.com/docs/nodejs/nodejs-debugging) によると > runtime

元記事を表示

Auth0+ファイル1つでローカルサイトにログイン機能を付ける!

##小さいな1歩から始めることにしました。
前回、[超初心者がログイン機能のついたサイトのデスクトップアプリ化に挑戦(あんど失敗・・)](https://qiita.com/marumaruchan/items/2a9667f5a30f71038da9)でAuth0で認証を付けた自分のサイトをエレクトロン化するとログイン機能が消えるという問題にぶつかりました。
色々悩みましたが、Auth0が提供してくれるサンプルファイルは多くあって、複雑すぎて何が間違っているかさっぱり見当がつきません・・(涙)。
そんな時、「[ファイル一つコピペで試すAuth0+Vue.jsのログインサンプル](https://qiita.com/n0bisuke/items/7de00908acc7854e79af)」という記事を読んだので、コードを参考にしながら単純なファイルを用いて、ローカルサイトに認証(Line限定)を付けてみることにしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508834/411

元記事を表示

Google Cloud Storage にデータがアップロードされたらブロックチェーンNEMに記録するFunctionsを作成する。

ブロックチェーンは改ざんが難しいプラットフォームであることはだんだんと周知されてきました。ですが、ブロックチェーンに登録する作業やシステム構築を考えた場合に、なかなか現在のシステムを置き換えるという発想には至っていないのが現状ではないでしょうか。
NEMはノードにREST API機能が実装されており、従来のシステムに「プラス・ブロックチェーン」を簡単に実現することが可能です。

今回はGCPが提供するGoogle Cloud Storageにデータがアップロードされた場合に、自動的にNEMブロックチェーンに記録するプログラムを作成してみましょう。

Google Cloud Storage にデータが登録された場合に起動させるファンクションの作り方は公式のチュートリアルが参考になります。
[Cloud Storage のチュートリアル](https://cloud.google.com/functions/docs/tutorials/storage)

これにNEM Catapultのライブラリを追加していきます。
`nodejs-docs-samples/functions/he

元記事を表示

iPhoneから1タップするだけでAWS上のプログラムをON/OFFする方法

#はじめに

常にクラウドでプログラムを走らせておいて、
自分の気の向くままに、どこでもいつでも手軽にプログラムを停止、再起動したい時ってありませんか・・?
私はあります!

わざわざon/offするだけなのに外出先にノートPCを持ち歩きたくない、
**iPhoneひとつで、もしくはAppleWatchからポンと押すだけで実行・停止できる。**
なんかかっこいい、、

**iPhoneや、AppleWatchに「ヘイ Siri! ホゲをつけて」**
と言うだけでAWSプログラムを起動できます。
ナンカ、カッコイイデス。

「したいもの&カッコいいものは作ればいい」ということで早速作ってみました。

##仕様条件
– クラウドはAWSのEC2
– 実行停止するプログラムはNode.js
– 自宅にネット接続されたラズパイが常駐している事
– Apple HomeKit環境を自宅で設定できること
– iPhoneユーザーであること

##概要
早速、ネタバラシします。
AppleにはIoT家電を制御する環境としてHomeKitがあります。
[Apple HomeKitの説明](https:

元記事を表示

Raspberry Pi 4+Chinachu v0.10.1-gamma.0 地デジ録画サーバー構築

# はじめに

Raspberry Pi 4が手に入って色々と遊んでいたタイミングでちょうどよく(?)ブルーレイレコーダーが壊れたので、買い直すくらいなら自作するかという事で今回地デジ録画サーバを構築した時のメモです.

ひとまず録画してエンコードできれば良いのでストリーミング再生手順は省略。

なお、本記事は以下の記事を参考に環境構築しています。
https://qiita.com/shotasano/items/3809b8f3e0b62d51d3c3

## ⚠︎注意
以下の手順は全て自己責任でお願いします。
テレビ番組のコピー、配信は違法です。私的利用だけにして下さい。
TS抜き自体が現状グレーなのでそこらへん理解した上で利用できる方だけ利用して下さい。
この記事を参考にしたことにより生じたあらゆる損害について筆者は一切の責任を負いません。

# 使用ハード

## [Raspberry Pi 4 Model B / 4GB](https://www.amazon.co.jp/dp/B07WR5W2D6)
Raspberry Pi 3でも同じ手順でいけます。
Raspberry

元記事を表示

OTHERカテゴリの最新記事