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

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

SendGridでいい感じにメールの配信停止グループを管理する

今[個人で開発しているサービス](https://anymake.app/)にメールの配信基盤を整えようと思って色々調べていたので、その結果わかったことを備忘録としてまとめておきます。

## メールの配信停止設定で最低限やっておきたいこと

メールの配信設定を行うにあたって、以下の項目が守られていることが個人的に望ましかったです。

1. 簡単にメールを配信停止できること
2. 自分のサービスとメール配信サービスでメールの配信停止設定を共有できること

### 1. 簡単にメールを配信停止できること

まず、送られるメールは簡単に配信停止できるようにすべきです。[配信停止のベストプラクティスと、SendGrid の便利な機能](https://sendgrid.kke.co.jp/blog/?p=10712)にも以下のように書かれています。

> 1. 簡単に配信停止できるようにする

> 配信停止の手順が簡単であればあるほど、受信者と送信者、双方にとってメリットがあります。配信停止のボタンやリンクをどこに置くか決める時、隠すように配置してはいけません。また、リンクがきちんと機能する

元記事を表示

SiriっぽいTeamsアプリを作ってみる

# はじめに

仕事にしても何にしても使えるものは使っておくに限る。
最近はリモートワークの影響でteamsを使い始めたので、これも使っておきたい。
どうせなら勤怠とかの自動化に使おうとも思ったが、敷居が高そうなので途中から計画変更してSiriにした。
だって、`Siriっぽいもの作った事あります`って言っておけば何かしら仕事もらえるんじゃなかろうか。

# 結果

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42445/2339e452-8381-aaf7-dc6f-4bfec2eda6b1.png)
何も分からない俺のSiri

# Teams API

TeamsにはTeamsに蓄えられた情報を扱うためのRest APIが用意されている。

+ [Microsoft Teams API](https://docs.microsoft.com/ja-jp/graph/teams-concept-overview)
+

元記事を表示

typescriptから直接bundle.jsを作成する方法

本記事ではtypescriptから直接bundle.jsを作成する方法について書いていきます。

<今までのbundle.jsの作成方法>
1.tsファイルをコンパイルしてjsファイルを作成
2.jsファイルをbundleしbundle.jsを作成

この流れが面倒なので直接やってしまおう。

1.ts-loaderをインストールする

`npm install –save-dev ts-loader typescript `

2.webpackの設定ファイルに記述

webpack.config.jsにどのファイルにts-loaderを実行するかを記述する。

“`ruby:webpack.config.js
const path = require(‘path’);

module.exports = {
entry: ‘./src/main.ts’, //最初に読み込ませるファイルもtsファイルに変更

output: {
filename: ‘bundle.js’,
path: path.resolve(__dirname,

元記事を表示

typeScriptにWebpackを使用する

※あくまで個人の学習ノートなので参考程度に

1.package.jsonを追加

`npm init -y`

package.jsonが作成される

2.webpackインストール

`npm install –save-dev webpack webpack-cli`

node_moduleのフォルダとpackage-lock.jsonが作成される。

※作成されるnode_moduleはgitにpushしない

3.webpack.config.jsをディレクトリに追加

webpack.config.jsはwebpackの設定ファイル

“`ruby:webpack.config.js
const path = require(‘path’); //requireはimportと同じ扱いでpathはnodejsがもっているモジュール

module.exports = {
entry: ‘./dist/main.js’, //一番最初に読み込ませるjsファイル

output: { //生成したファイルをどこに格納するかを指定

元記事を表示

MAC:node.jsでmysqlへ接続する

node.js から mysqlに接続するのに苦労しましたので覚書をします。

##環境
macOS : 10.15.5 (Catalina)
node.js : v14.3.0
mysql : ver 8.0.19

#mysqlインストール
“`shell:shell
$ brew install mysql
“`
でインストールされました。
(他の情報でmpnを使用するやり方が書いてありましたが、私の環境では起動ができませんでした)

##コネクションを実行するコード
“`javascript:mysqlconnection.js
//————————————————————
// my sql connection
//————————————————————
var mysql = require(‘mysql’);

//DBの定義
var dbConfig = {
host

元記事を表示

【アプリ編】textlintではじめる自動文章校正

###textlintとは

**textlint**(テキストリント)は、設定した校正ルールに基づいたミスの指摘・修正を自動化するツールです。

本来はコマンドプロンプト等の『黒い画面』からインストールして使うのですが、作者の方([@azu_re](https://github.com/azu)さん)がより使いやすいデスクトップアプリ版をリリースしてくださっています。
こちらで十分な方にとっては圧倒的におすすめです。

#アプリのダウンロード

https://github.com/textlint/textlint-app/releases/tag/v1.4.1

↑こちらのページからインストーラをダウンロード、実行します。

アプリを開くとこのような画面が出ます。▼
スクリーンショット 2020-07-07 11.47.51.pngbrowser-syncのport番号をランダムにする

複数の案件を同時に進めている都合上、複数個の[browser-sync](https://www.npmjs.com/package/browser-sync)を同時に走らせたいときportが衝突してイライラしちゃうので、そもそもportをランダムにしとけばいいんじゃないか説。

他にいい方法があれば教えてください。。。

“`js
// browser-sync.js
module.exports = () => {
const path = require(‘path’);
const browser = require(‘browser-sync’).create();

browser.init({
files: [
// 監視したいファイルのパターンリスト
],
// 動的・プライベート ポート番号からランダムで
port: Math.floor(Math.random() * (65535 – 49152)) + 49152,
startPath:

元記事を表示

FXトレーダーコミュニティをslackワークスペースで作った話(前編)

#作ろうと思ったきっかけ
去年リリースされたLINEオープンチャット
他の興味も含め興味があるジャンルのオプチャにあちこち入った
そのうちの一つがFXのオプチャで
たまーに覗いていた程度だった。2月3月ごろコロナの影響で為替が大きく動いた時にちょっと
真剣に覗いてみたところトレンドの解説などをかなり詳しくやってくれている人が何人かいて
参考にトレードをしたりしていた。
しかし毎日オプチャを見ていると
いくつかの不自由さに気づく。

`一つのタイムライン
`

まず一つはさまざまな話題が一個のタイムラインに溢れかえっていること
超初心者の自分でググれよみたいな質問だったり
だれかれ構わず粗探しをしたいクレーマー気質な人とそれと戦い続ける人の無駄なやりとりだったり
ロングしました、ショートしました!と張り切って伝えてくれている人がいるのはいいものの
ぱっと見でドル円の話をしているのかユーロポンドの話をしているのかが伝わりにくいかった。
職業柄かもしれないがこの情報が整理されていない状態がすごくストレスだった。

`人間しか投稿できない煩わしさ
`
本業ではもちろんslackをバリ

元記事を表示

Node.js でAWS Lambdaを量産する為のサンプルソースをgithubに公開してみた

# AWS LambdaをNode.jsで量産アレコレ
## 概要
AWS LambdaをNode.jsで書こうと思ったときに、良く思うのが、、、

– AWS SDKがPromise前提で入れ子が深くなりがち
– 継承使って汎用共通処理とオーバーライド使いたいなぁ~

である。

コールドスタート対策などで、javaでの実装は圧倒的に不利ってことで、java屋がNode.jsでLambdaを書こうと思うと、~~きっと同じ事を思うに違いない。~~(偏見)

という事で、上記が出来る汎用ソースをgithubに公開してみました。

(参考投稿)
[Lambdaのコールドスタートを改めて整理する](https://qiita.com/ny7760/items/700ae917da2c5b5e3f8a)

## index.js の処理構造
![indexのイメージ.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660954/37a78f07-3911-41ee-1e6e-3c8c76016bb6.jpeg)

元記事を表示

Node.jsを使ったECS上でのTCPアプリケーションの構築

このチュートリアルでは、**Alibaba Cloud** ECSを使って**TCP**クライアント/サーバのペアを作成し、**Node.js**を使って**TCP**アプリケーションを構築していきます。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/node-js-tcp-app-development-on-ecs_594176)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

Alibaba Cloud Tech Share執筆者のKunal Relanによるものです。Tech Shareは、クラウドコミュニティ内で技術的な知識やベストプラクティスを共有することを奨励するAlibaba Cloudのインセンティブプログラムです。

まず基本的なことから説明すると、オープンソースのJavaScriptランタイム環境として人気のあるものに、ChromeのV8 JavaScriptエンジン上に構築されたNode.jsがあります。Node.

元記事を表示

GithubのissueをAPI経由で作成する

issue管理大変ですよね。

複数のissueを一気に登録したり、システムと連携してイベントベースでissueを登録できたりすると、issueを管理するのがずっと楽になります。

node.jsで実装しているので、AWS Lambda経由で実行するといろんなイベントから呼び出せて汎用性が高そうです。

# 使うもの
octkitというGithubAPIクライアントのライブラリを使います。
https://developer.github.com/v3/libraries/

ドキュメントも豊富で使いやすいです。

# 実装

“`javascript:create_issue.js
const { Octokit } = require(“@octokit/rest”);
const dotEnv = require(‘dotenv’).config();
const octokit = new Octokit({auth: dotEnv.parsed.ACCESS_TOKEN});

if (process.argv.length !== 4) {
console.log(‘

元記事を表示

Node.js + Express + PhpStormでWordpressの投稿をWP REST APIを使って表示する

#PhpStormでNode.js Express Appを新規作成
File -> NewProject -> Node.js Express App

この時のオプションは以下の通りです。
Options
– View Engine: EJS
– Stylesheet Engine: Plain CSS

#terminalで WP APIをインストール

“`shell
npm install wpapi –save
“`

# routes/index.jsを編集

“`javascript
var express = require(‘express’);
var router = express.Router();
var WPAPI = require( ‘wpapi’ );
var wp = new WPAPI({ endpoint: ‘https://localhost/my-local-test/wp-json/’ });

/* GET home page. */
router.get(‘/’, function(req, res, next) {

元記事を表示

console.logで配列やオブジェクトが省略されてしまうときはconsole.dirを使おう

`console.dir`の第2引数にオブジェクト`{depth: null}`を渡すと深い階層も省略されずに全部見れます。

[Node.js console.dir](https://nodejs.org/docs/latest-v12.x/api/console.html#console_console_dir_obj_options)

“`js
const menu = {
main: {
currey: 500,
udon: 450,
rice: 150
},
side: {
soup: {
misoshiru: {
wakame: 250,
asari: 250
},
potage: {
corn: 250,
potato: 250
}
},
dessert: {
icecream: {
vanilla: 100,
chocolate: 100

元記事を表示

Node.js: Starttls でメールの送信

こちらと同じことを Node.js で行いました。
[Python3: Starttls でメールの送信](https://qiita.com/ekzemplaro/items/c248b52a6f36947af080)
hi-ho.ne.jp で試しました。

“`js:hi-ho.js
#! /usr/bin/node
//
// hi-ho.js
//
// —————————————————————
‘use strict’

const dotenv = require(‘dotenv’)
const nodemailer = require(‘nodemailer’)

console.error (“*** 開始 ***”)

dotenv.config()

const env = {
server: `${process.env.SERVER}`,
port: `${process.env.PORT}`,
usr: `${process.env.USR}`,

元記事を表示

Node.jsのAPIをまとめてみた

#はじめに
先週ぐらいからNode.jsの参考書を読み始め、途中から
「**■■ = require(‘〇〇’)**」
というのが連発してきて、いろんな種類のAPIが使えるのだと知りました。

参考書の最初は「require(‘events’)」や「require(‘http’)」を使っていて、
他にどんなAPIが使えるのか気になり、一覧としてまとめてみました。

※初学者のため誤りがあると思います。
 間違いはコメントしていただけると幸いです。:bow_tone1:

#本題の前に
本題の前に、「**require**」について少しだけ触れておきます。

requireとは、**モジュール化されたJavaScriptのファイルをNodeから読み込んで利用できるようにしてくれるもの**です。

npmを使ってインストールしてきたパッケージを利用する際にもこの「require」を使用します。

著者は普段、C言語を使用していますので、この「require」はC言語のインクルードみたいなものだと理解しています。(あくまでもイメージです。)

本記事は、Nodeをインストールしたらデフォル

元記事を表示

Node jsでCMSを作る part1

#はじめに
この記事は僕がNode jsでCMSを作りながらメモ代わりに更新していく予定です。
なので過度な期待はしないでください。

#作りたいもの
速度に全振りした低スペックでも動くCMS

#要件定義を決める
さて、作ると決めたもののどうしよう状態に陥ったのでCMSの作り方を調べてみた。
>CMSを検討する際に一番大事なこと!
CMS構築をするうえで一番重要なことは、ずばりこの一言に尽きます!
【要件定義をしっかりと、漏れなく、実施すること】
です。
下の解説で、なぜ要件定義が必要なのか、わかると思います。

と書いてあったので要件定義したいと思います。

##機能面の要件定義
要件定義なんてしたことないので、テキトーに書いていきます
###必須
サイトを公開できる
HTML,Markdown,独自のエディタでページを書ける
プラグインなどを読み込める
ページごとにjavascript,cssを設定できる
高度な高速化機能を搭載している
word pressの記事を読み込める
pjaxを標準搭載

###あればいいかな的なもの
テーマを読み込める
IoTなどと連携できる

##動

元記事を表示

Vue.jsを使ってFirebaseのデータを削除する

Vue.jsを使ってFirebaseのデータベース firestore のデータを削除する方法をお伝えします。

# 概要確認

こんな感じのfirestore のデータベースがあります。
スクリーンショット 2020-07-05 11.48.46.png

このときHPはこんな感じです。
![スクリーンショット 2020-07-05 11.47.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/550650/80077f4f-6335-5249-10eb-8829611e611d.png)

今回のゴールは**HP上の×ボタンを押したらデータベース上のデータも連動して消える**です。

# 手順
このゴールを達成するためには

元記事を表示

curlを使ってjavascriptを有効にした場合のhtmlソースを取得する

[domcurl](https://github.com/PaulKinlan/domcurl)というツールがあります。webscrapingに非常に便利なツールです。`phantomjs`などで要件を満たせない場合におすすめです。

> domcurlはPuppeteerを使う小さなNodeJSアプリケーションで、 npm i domcurlコマンドを発行することでインストールできます。 curlコマンドのように、簡単なdomcurl [url]を発行してリソースを取得し、JSをページ上で実行することができます。
>
> https://paul.kinlan.me/domcurl/

“`sh
$ npm i domcurl
$ ./node_modules/domcurl/index.js –url https://example.com
“`

元記事を表示

コマンドラインからjavascriptでレンダリングされたHTMLソースを取得する方法

`curl`からは、javascriptを有効にしたブラウザと同じHTMLソースを取得することが難しいことがあります。このような場合、`phantomjs`を使用すると便利です。

“`sh
$ npm i -g phantomjs phantom
“`

公式サイトにてバイナリも配布されてるので、`node`からのインストールが依存関係などで失敗する場合、こちらをダウンロード、解凍して実行権限を与えると良いでしょう。

https://phantomjs.org/download.html

“`sh
$ curl -sLO https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
$ aunpack phantomjs-2.1.1-linux-x86_64.tar.bz2
$ cd phantomjs-2.1.1-linux-x86_64/bin/
$ chmod +x phantomjs
$ ./phantomjs –version
“`

“`js:set

元記事を表示

npm ERR! code ELOOP が出たときの対処法

npm install を使った時に

npm WARN checkPermissions Missing write access to /Users/[ユーザー名]/node_modules/[ファイル名]
npm WARN [ユーザー名]@1.0.0 No description
npm WARN [ユーザー名]@1.0.0 No repository field.
npm ERR! code ELOOP

というエラーが出現してハマりました。これを仮説で解決できたので同じエラーでハマった方向けに書いておきます。

まず一番上にnpm WARN checkPermissions Missing write access to /Users/[ユーザー名]/node_modules/[ファイル名]

と書いてあります。

この意味は「ファイルにアクセスできない」という意味です。

この理由として考えられるのは

①ファイルへのアクセス権が無い
②ファイルそのものが無い
③ファイルパスがおかしい

のどれかです。

①の場合の対処法は公式にも書いてあります。

元記事を表示

OTHERカテゴリの最新記事