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

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

Node.js の C++ によるアドオンで、AsyncWorker からイベントを受け取る

# はじめに

最近、必要があって Node.js の Native アドオンを作りました。
その中で、外部とのデータやり取りで AsyncWorker を使っていたのですが、
値を受け取るときに Callback を使うサンプルはたくさんあるのですが、
イベントで返すサンプルが見つからなくてハマったので、ここに作り方をメモしておきます。

# 準備

現在、Node.js の Native アドオンの作成には色々方法がありますが、
今回のサンプルプログラムは、node-addon-api (N-API の C++ラッパー) を使っています。
(というか、他のやり方は「おまじない」だらけで、何が必要なのかがよくわからなかった・・・)

アドオンは、node-gyp を使ってビルドするのですが、環境作成方法などについては、先人の方々の優良記事がたくさんありますので割愛します。
(node-gyp タグで検索すると、たくさん見つかります。)

今回のサンプルプログラム作成に当たり、
https://qiita.com/Satachito/items/fa681ba96dc8e52ca7c1

元記事を表示

第1回 – Web API と Web UI でファイルダウンロード(Web API 編)

## はじめに
今回から2回に分けてファイルをダウンロードする簡単な Web API と Web UI のサンプルを紹介します。
第1回目の今回は [Node.js](https://nodejs.org/en/) + [Express.js](http://expressjs.com/) での Web API です。
第2回目は [Vue.js](https://jp.vuejs.org/index.html) + [Vuetify](https://vuetifyjs.com/ja/) で簡単な Web UI を作り、今回の Web API を叩いて実際にファイルをダウンロードします。

1. Web API 編(←イマココ)
1. Web UI 編

## 環境
OS: macOS Mojave 10.14.6
Node.js: 10.16.3
Express.js: 4.17.1

## API 仕様(概略)
* GET
* URI
`/api/download`
* クエリパラメータ
`file=ファイル名`
ファイル名は `sample.png` or `sam

元記事を表示

Node+TypeScript+ExpressでAPIサーバ構築

# はじめに
Node+TypeScript+ExpressでAPIサーバを作っていきます。
本記事はTypeScript環境の構築からAPIサーバの作成までの流れを記した初心者向けな記事になります。

本記事で紹介する技術は以下になります。

– Node.js
– TypeScript
– ts-node
– express
– swagger

**作業環境**

“`
OS: Windows 10 Pro
Node: 12.1.0
npm: 6.9.0
“`

# TypeScript+Node環境の構築

## Node環境でTypeScriptを始めるには

※手元のOSにNode.jsがインストールされていることを前提に始めます。

まずは適当に作業ディレクトリを作成して、その中に**typescriptパッケージ**をインストールしましょう。

“`
PS C:\Users\user\Desktop> mkdir project; cd project;
PS C:\Users\user\Desktop\project> npm init -y
PS C:\U

元記事を表示

node.jsからBigQueryを使う

久しぶりに触ったらハマった(ハマる要素はありませんが)のでメモ。

## 前提

* BigQuery側でデータセットおよびテーブルが作成されている。
* 適切なサービスアカウントが作成され、認証用のjsonが(カレントに)ダウンロードされている。

## 準備

“`bash
mkdir bq-test
cd bq-test
npm init -f
npm install –save @google-cloud/bigquery
touch index.js
“`

## 実装

index.jsを実装します。下記のような感じ。

“`js:index.js
const { BigQuery } = require(‘@google-cloud/bigquery’);

const bigquery = new BigQuery({
projectId: ‘your-project-id’,
keyFilename: ‘path/to/key.json’
});

const query = “select * from test.members”;

//

元記事を表示

新しい Mac に Git と Node.js の環境を作る

# どうでも良い前置き

5 年ぶりぐらいに Mac を買い替えました。
今までの買い替えの際には移行アシスタントを使って環境をそのまんま移行していましたけれども、これまでも Mac 買い替えのたびに前の端末から移行を繰り返して来ており、もはや不要な設定やソフトも沢山ある状態でした。
と言うわけで今回は、昨日までの弱虫だった自分を脱ぎ捨てて新しいワタシに生まれ変わろうと言う趣旨で、移行アシスタントに頼らずゼロから環境を作ることにしました。
データの大部分を iCloud に置く運用にしていたので端末固有の情報に対する依存性が下がって来ているのもその決断を後押ししています。

とは言え、ローカルの開発環境はローカルに作らなければなりません。
と言うわけで、新しい Mac に開発環境を作る流れの記録です。

# この記事でやること

– `Xcoce コマンドラインツール`のインストール
– `Homebrew` のインストール
– `Git` のインストール
– `Node.js` のインストール
– `Visual Studio Code` のインストール
– その他、細々したもの

元記事を表示

初学者が、LINE Botを作るまで

###はじめに
製作者がLNE Botを作るまでの道のりを、日記代わりに付けているものです。
初学者の参考になれば、幸いです。
Qiita初投稿のため、見辛い部分はあると思われます。
下記のページを参照しながらの制作を行なっております。
 [LINEのBot開発 超入門(前編) ゼロから応答ができるまで](https://qiita.com/nkjm/items/38808bbc97d6927837cd)

<開発環境>
MacBook Air (13-inch, 2017)
OS:Mojave
バージョン:10.4.6

##Node.jsをインストール
Node.jsを使用して、Bot本体を作成します。

フォルダーの作成&移動

“`
$ cd ~
$ mkdir -p App/bot
$ cd App/bot
“`
npm initコマンドでpackage.jsonファイルを作成

“`
$ npm init
“`
すると、下記の画面が発生。
npm initコマンド を実行する前段階が整っていないため、発生している。

“`
-bash: npm: command

元記事を表示

Cloud Functions for FirebaseとFirebase Hostingを試してみる

## やること

Cloud Functions for FirebaseとFirebase Hostingを試してみようと思います。
html/cssの静的ファイルのデプロイ、jsファイルの動的ファイルのデプロイ、html/css/jsの動的サイトのデプロイ、の3パターンを試してみようと思います。

## Firebaseを使うための準備

Firebase CLIをインストールとログインをします。

“`bash
~$ npm i -g firebase-tools
“`

インストールが完了したらプロジェクトディレクトリを作成&移動してFirebaseにloginします。

“`bash
~$ mkdir firebase-sample
~$ cd firebase-sample
~$ firebase login
“`

loginしたらFirebase ConsoleでFirebaseプロジェクトを作成しておきます。今回は「myproj」という名前で作っておきましょう。
Firebaseプロジェクトを作成したらinitしていきます。

“`bash
~$ fireb

元記事を表示

Node.jsでつくるNode.js-WASMコンパイラ – もくじ

# はじめに

「RubyでつくるRuby ゼロから学びなおすプログラミング言語入門」(ラムダノート, Amazon) という本に感銘を受けて、自分でもNode.jsで小さなプログラミング言語を作ってみるシリーズをやってみました。「[ミニインタープリター](https://qiita.com/massie_g/items/3ee11c105b4458686bc1)」「[ミニコンパイラー](https://qiita.com/massie_g/items/3ba1ba5d55499ee84b0b)」ときて、三部作(?)の最後はミニNode.jsからWASMを生成する小さなコンパイラーに取り組んでいます。

# 前提環境

今回は私の環境である macOS 10.14 Mojave を前提にしています。また Node.js v10.13 で動作を確認しています。

# Node.js-WASM コンパイラー目次

– [WASM コンパイラー – 01:WASMで定数戻り値を返す](https://qiita.com/massie_g/private/3c627db366ed20b8b7

元記事を表示

WSL2でElectronを動かすの巻

こんにちは!

お鍋が美味しい季節になってまいりました。おさむです。
WSL2+Electronな環境を構築する機会がありましたので、やり方をシェアしたいと思います。

# この記事のゴール
WSL2環境下にて、Electronで作成した画面が表示出来るところまで

# 前提
1. WSL2のセットアップが完了している
2. Ubuntu 18.04 LTSのOSイメージを使用している(たぶん他のディストリでもいける)

# やりかた
## ①Node.jsとnpmのインストール
apt-getで入れてしまいましょう。

“`bash
# Node.js
$ sudo apt-get install -y nodejs

# npm
$ sudo apt-get install -y npm
“`

## ②プロジェクトの作成
[Electron Documentation](https://electronjs.org/docs/tutorial/first-app) に従い、npmのプロジェクトを作成します。

“`bash
# ディレクトリを作成し、その中に移動
$ mkd

元記事を表示

Vue Web App Tutorial

# 11月16日 Web Application 製作入門
[富山IT勉強会#4](https://toyama-it.connpass.com/event/151572/) のハンズオン資料をまとめたものです。
非エンジニア、およびWebアプリ未経験者を対象に簡単なWebアプリ(SPA)を作成するハンズオンを行います。

## このハンズオンのゴール(目的)

– **必要最低限の知識で** Webアプリを作れるようになる(概念、環境構築 ~ Local環境での動作確認)
– 今後、更にレベルアップしていく際の切り口を共有する

## おことわり
一日(4h ほど)で行う予定であるため、最低限知っていれば取りあえずアプリが作れる程度に厳選しております。
そのため、かなり内容は端折っておりますのでご了承ください。
また、私自身プログラミング経験はWindowsアプリケーションがほとんどで、
Web関係は直近一年弱程度ですので情報にはかなり偏りがあります。
また、誤情報等、お気付きの場合にはご指摘頂けると幸いです。

## やること
– JavaScript入門(環境構築〜変数、制御構文

元記事を表示

Node.js でつくる WASMコンパイラー – 07:ユーザ定義関数を実装する

# はじめに

Node.jsで小さなプログラミング言語を作ってみるシリーズを、「ミニインタープリター」「ミニコンパイラー」とやってきました。そして三部作(?)の最後として、 ミニNode.jsからWASMを生成する小さなコンパイラーに取り組んでいます。

– [Node.jsでつくるNode.js-WASMコンパイラ – もくじ]( https://qiita.com/massie_g/items/c663095759a80c53c126)
– 前回の記事 … [06:文字列出力を実装しFizzBuzzを実現する](https://qiita.com/massie_g/private/2bbd6a914f1abdac195a)

## これまでの取り組み

– [Node.jsでつくるNode.js(ミニインタープリター) – もくじ](https://qiita.com/massie_g/items/3ee11c105b4458686bc1)
– [Node.jsでつくるNode.jsミニコンパイラ – もくじ](https://qiita.com/massie_g/item

元記事を表示

これからチーム開発に参加するUIデザイナーがGitHubでの開発フローをまとめた

##これからチーム開発に参加するUIデザイナーがGitHubでの開発フローをまとめた

##注意
– (自分用備忘録です)
– (開発初学者です)

###前提

– 環境構築が終わっていてローカルホストが立ち上がっている状態
– リモートリポジトリのcloneがローカルに完了している

###いつもはじめにやること

0-1.開発が決まったら、作業リボジトリにXDなどのデザインデータのリンクを貼った開発issue を立てる
– issue番号はメモっておき、あとでbranch名に使う

0-2.githubに接続する
`$ ssh github`

0-3.ターミナルでcloneした作業レポジトリ(ローカル)まで移動する

ターミナルでの操作
`$ cd git`
`$ cd 作業リポジトリ名`

準備完了!

###フロー

1. レビュワーがGitHubのPull requestsにrelease noteを切ってるのを確認する

例) master from release/0.0.1

2. Pull requestsの項目の一番を見る 上のvが最新のrele

元記事を表示

node.jsでHTTPリクエストを受け取るAPIを作る

#はじめに
今回はNode.jsのフレームワークであるExpressでHTTPリクエストを受け取るアプリケーション?を作りたいと思います。
利用用途としては

* しっかりリクエスト送れてるの?
* Expressとかnode.jsでAPIを作ってみたい

といったことが想定されます。私の場合は主に、というか9割前者ですね。JMETERでリクエストが正しく送れているか確認したかっただけです。

#実装
##下準備
まず以下のコマンドを実行します。この時、プロジェクトのディレクトリ内で行いましょう。

“`
> npm init
“`
あとはダイアログに従い、入力するだけです。
すると`package.json`が作成されると思います。

次にExpressをインストールします。

“`
> npm install express -save
“`
このコマンドをたたけばいろいろダウンロードされ、環境が整います。

##実行するファイルを作る

“`index.js
const express = require(‘express’)
const app = expres

元記事を表示

npm pack でnpmパッケージを圧縮する

node_module内のファイル(主にandroidのbuild.gradleなど)を編集した際に`npm pack`のコマンドを使用して変更を加えたパッケージを.tgzファイルにして、package.jsonの読み込み先を.tgzファイルに必要がある。

### 手順

例:`react-native-maps`の`build.gradle`を編集した時

– 編集したパッケージのフォルダに移動(`node_modules/react-native-maps/`)し、.tgzファイルを生成

“`
npm pack
“`
– custom_modulesフォルダを作っておき、生成された.tgzファイルをcustom_modulesフォルダに移動する
– 読込先を.tgzファイルに変更する

“`
npm i react-native-maps-0.24.2.tgz
“`

– package.jsonの読み込み先が変更されているか確認する

“`package.json
“react-native-maps”: “file:custom_modules/react-nat

元記事を表示

AWS DynamoDBをjsでいじるときに非同期処理で詰まった話

# AWS DynamoDBをjsでいじるときに非同期処理で詰まった話

## 初めに

このお話は、単に私がJavaScriptの非同期処理を理解していなかっただけなので、プロの皆さんでしたら余裕で回避できる問題だと思います。

私みたいな初学者で、同じようなことに詰まっている方がこの記事を見て解決していただけたら幸いです。

## 私がやりたかったこと

DynamoDBのCRUD操作を関数内で行い、実行結果を戻り値として受け取る といったことをしたかったのですが、戻り値に値が入っていない状態で返されてしまいました。

“`javascript
// 問題のあるコード
function getHoge(){
let hoge;

let params = {
TableName: ‘table’,
Key:{
“id”: “01”
}
};

documentClient.put(params, function(err, data){
if(e

元記事を表示

API Gateway + Lambda + DynamoDBでサーバーレス環境を構築する

# API Gateway + Lambda + DynamoDB = Serverless

AWSでサーバーレスを構築するアーキテクチャを考えた時に、もっとも基本的でわかりやすい構成は、API Gateway + Lambda + DynamoDB(ないしはS3)の組み合わせだと思います。

## このエントリーで触れること
– Lambda関数の作り方
– API Gatewayでのリソースの作り方
– API GatewayとLambda関数の紐づけ方
– Lambda関数でのDynamoDBのいじり方

AWS SAMには触れないです。

## Lambdaで関数を作る

Lambdaで関数を作ってデプロイするのは非常に簡単な作業です。

ランタイムはnode.jsを使います。

関数を作成する方法としては、
1. AWSコンソール上で関数を作成する
2. ローカルで関数を作成してzip化し、Lambdaにアップロードする
3. ローカルで関数を作成してzip化し、S3にアップロードした後に、Lambdaからそれを呼ぶ
4. ローカルで関数を作成してzip化し、cliでデプロ

元記事を表示

Nightmare.js でEC-CUBEの注文データを程よく自動生成する

## 環境
・EC-CUBE4.0.3
・Node.js

## はじめに
自動で注文データを作ろうと思うと、EC-CUBE3系の頃から[nanasess](https://qiita.com/nanasess)さん作成の Fakerを使った`GenerateDummyDataCommand` コマンドに大変お世話になっています。
4系でも、少し仕込みをしてから ` bin/console e:f:g ` (←アルファベット順なので覚えやすいw)で各種データを作ることができます。
また、[slack から EC サイトの自動注文テストを走らせる (puppeteer)](https://qiita.com/sunadorinekop/items/9d78e7e271748cff8add)も良記事です。

今回は、古参の[Nightmare.js](http://www.nightmarejs.org/) を使って実現しています。
こんな感じで、自動実行できるわけです。

![image](https://user-images.githubusercontent.com/8424850

元記事を表示

非プログラマのWindowsマシンにGit、Node.js、Nuxt.js環境を構築する手順

デザイナー(非プログラマー)のWindowsPCにNuxt開発環境を構築してもらう必要がありましたので手順書を作りました。

# 目標

非プログラマーが非プログラマ―の操作によって開発環境を構築します。
最終的にWindowsPCでNuxt.jsのプロジェクトを起動することを目標とします。

# 導入内容

– Git for Windows
– Tortrise Git
– Node.js
– Yarn
– Nuxt.js

# 事前に準備するもの(プログラマーが伝えておくこと)

– Nuxt.jsプロジェクトを管理しているGitリポジトリのURL
– 導入するNode.jsのバージョン(たいていLTSでOKかと思います)
– Nuxt.jsプロジェクトの起動・接続方法(たいてい`yarn dev`、`localhost:3000`でOKかと思います)

# 手順

## Gitのインストール

以下の記事が完璧な内容でした。
[TortoiseGitのセットアップ](https://qiita.com/SkyLaptor/items/6347f38c8c010f4d5bd2)

元記事を表示

【初心者向け】kubenetesのSpring bootとNodejsのアプリケーションをOpenShiftへデプロイしてみた

#さまり
 OpenShiftにSpring-bootとNodejsのアプリケーションのデプロイを試してみましたので、そのメモといくつか気づいたことを残して見ました。結論からいうとOpenShiftの特有の手法は今回特に利用していないため、大きい違いは発見していません。KubernetesよりOpenShiftに移行することによるデプロイ手順の参考になればと思います。

#環境
 本手順で利用したOpenShiftのバージョンは4.1です(minishiftではありません)。ローカルPCはMacbookを利用していました。
本手順にて利用したコードは以下のGithubから確認してください。
https://github.com/Zhuangbili/openshift_spring_nodejs
#Spring boot アプリケーションのデプロイ

####準備
 OpenShiftでマイクロサービスの開発を行うためのベースコードを作成することがメインの目的でしたので、まず簡単なコードを書いて見ました。参考:https://github.com/Zhuangbili/openshif

元記事を表示

AWS Lambdaで毎日料金を取得する

# AWS Lambdaで毎日料金を取得する

## TL;DR
AWSのダッシュボード見たほうが早い

## はじめに
監視しようがしてなかろうが、どのみちAWSのコンソールを常に開いている人にとっては、AWSのダッシュボード見たほうが正確で早いです。

しかし、そこまでAWS漬けでもない人にとってはいちいちAWSのコンソールを開き、料金やインスタンスの稼働状況を確認するのは面倒です。そこでSlackに稼働状況を監視して通知するAWS Lambdaの関数を定義して、楽して監視するようにします。

## やりたいLambda関数の疑似コード

* EC2の全インスタンスを取得する
* タグ情報を取得し、稼働状態を列挙する
* CostExplorerから料金情報を取得する
* 現時点の料金を出力
* 現時点の料金を日数で割り、月の日数倍して予想価格を出す

料金は直近の1日分料金を取得し、その金額を月の残りの日数分足したほうが正確ですが、これはこれで1日だけ異様に活発だった時等に瞬間風速に引きずられてそこまで正確じゃないので、今回は今までの平均が一番平均に近いという

元記事を表示

OTHERカテゴリの最新記事