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

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

もうBacklogやRedmineは要らない? Exmentでガントチャート付きタスク管理を実践する

どうも、業務改善が大好きな筆者です。

さて、[連日Exmentの記事を書いている](https://qiita.com/tags/exment)わけですが、そろそろタスク管理についても触れたいなと思っています。

タスク管理といえば、TrelloやAsana、BacklogやRedmineなど、SaaSのサービスが乱立してますよね。(Redmineはオンプレも可能ですが)

一方で、Excelやスプレッドシートに書き込んで、お手製のタスク管理をされている方もいらっしゃると思います。

## ガントチャート好きな人、多いですよね

筆者個人が、タスク管理でどうしても外せないのが**ガントチャート**です。ガントチャート機能付きのタスク管理サービスというと、どうしても選択肢がせばまってきます。

今は[Toggl Plan](https://toggl.com/plan/product)という名前になってTogglファミリーとなった、かつてのTeamweekが、個人的には一番好きでした。

Redmineにもガントチャートがありますが、デフォルトのあれはダメでしたね。何が良くて何がダメな

元記事を表示

AWS lambdaで、node httpsモジュールでpostする

AWS lambda node、標準のhttpsモジュールで、chatwork APIにpostしたいと思ったが、検索してもrequest-promiseを追加しろみたいな話しかなく、AWS lambdaの標準パッケージでサクッと試したいだけだったのにサクっといかなかった。

https://nodejs.org/api/https.html#https_https_request_options_callback
公式にはgetの記述しかないのでpostができないのか、と思ったらできた。

writeにたどりつかなかった……

(参考)
https://qastack.jp/programming/6158933/how-is-an-http-post-request-made-in-node-js

“`
const https = require(‘https’);
const querystring = require(‘querystring’);

exports.handler = function(event, context){
var postMessa

元記事を表示

ESP32をGoogle Homeデバイスにする

GoogleのスマートスピーカであるGoogle Home Miniに「OK Google、スイッチをオンにして」というと、M5StickCのLEDが点灯するようにします。(要は、Lチカです)
いまさら感はあるのですが、なんでも最新のAndroid 11になって、電源長押しで、Google Homeデバイスを手軽に操作できるようになったのです。
Androidスマホから、電源長押しでこんな感じの画面がすぐ出せるので、いろいろ使えそうです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261826/a7de768f-f751-1b32-3041-f16de38b5ec4.png)

ソースコードをGitHubに上げておきました。

poruruba/GoogleHomeDevice
 https://github.com/poruruba/GoogleHomeDevice

#構成

まずは、一般ユーザがM5StickCを使うときの構成です。

![image.png](https:/

元記事を表示

Instagramにアップロードされた写真を埋め込みHTML形式で取得してみた

#はじめに

Instagramにアップロードされた写真を埋め込みHTML形式で取得してみました。

APIを使うために、Facebook developer にアプリを登録したり、Facebookページを作成したり、Instagramのアカウントをビジネスアカウントに切り替えたりと色々事前準備が必要でした。

トークンの取得方法は下記サイトがすごく丁寧に解説してくれていて、参考にさせていただきました。
https://navymobile.co.jp/instagram-graph-api

今回は、Graph API用のアプリ(開発モード)とoEmbed用のアプリ(ライブモード)2つ作りました。
Facebookにレビューが通ればアプリは一つで実現できると思います。

環境は下記になります。
macOS Catalina 10.15.6
Node.js v14.8.0
(Node.js Library)request 6.14.7

#コード

下記、コードになります。
(1) Graph API でアカウントに紐付く投稿のURLを取得
(2) oEmbedでURLを埋め込みH

元記事を表示

IMI住所変換コンポーネントを魔改造して昔の地名を検索できるようにしてみた

1. [IMI住所変換コンポーネントでいろんな住所を正規化してみた](https://qiita.com/uedayou/items/4c9d30fc031a9bf6762e)
2. [IMI住所変換コンポーネントを改造してリバースジオコーディングに対応してみた](https://qiita.com/uedayou/items/667ffc162ec972c74e48)
のシリーズ記事です。

今回は、IMI住所変換コンポーネントをさらに改造して、昔の地名も検索できるようにしました。

imi-enrichment-address-plus

## 昔の地名の検索

昔の地名のデータソースとして、[大学共同利用機関法人 人間文化研究機構](https://www.nihu.jp/ja)が公開する[歴史地名データ](https://www.nihu.jp/ja/publication/source_map)を利用利用しました。

現在の住所と同じくLevelDBに格納し、

元記事を表示

togglとExmentをAPI連携させて、簡易原価計算的なことをやってみる

どうも、業務改善が趣味な筆者です。

これまでに、[MFクラウド請求書APIとExmentを組み合わせて、簡易SFA/CRM的なこと](https://qiita.com/kohki-shikata/items/73ec72c0171bef0be25f)をやってみました。

今回は、さらに発展させて、簡易原価計算的なことをやってみたいと思います。

## 今回の記事で想定する原価計算

– 筆者の業務はサービス業(人件費=原価)
– 時給×3を原価とする
– 受注した見積書の金額が、業務にかけた時間×時給×3を超えると赤字
– 超えなければ黒字

非常にシンプルですが、サービス業なんてどこもこんな感じではないでしょうか。

これをベースに、各案件が赤字になっていないかどうか、黒字であれば、粗利率はどうなのか、というのがわかる原価計算システムを作ってみたいと思います。

## toggl is 何?
![2020-09-11_16h04_29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116223/6

元記事を表示

さくらvpsでnode.jsでSocket.ioする

##Node.jsインストール
[さくらVPSでNode.jsが動く環境を作ってみた – Qiita](https://qiita.com/Purindle/items/978d8403398e75018734)

“`bash
curl -L git.io/nodebrew | perl – setup
echo ‘export PATH=$HOME/.nodebrew/current/bin:$PATH’ >> ~/.bash_profile
source ~/.bash_profile
nodebrew install-binary stable
nodebrew use stable
node -v
v14.10.1
“`
##Socket.ioインストール
“`bash
npm install socket.io
npm -v
6.14.8
“`
##Node.jsでHTTPSサーバ(https://〜)
[node.jsによるHTTPSサーバの作り方 – Node.js/JavaScript入門 ](https://kaworu.jpn.org/javascript

元記事を表示

Sequelizeでdevelopment/production用のseedを分けたい

## はじめに

node.jsでサーバサイドの処理を作成するときにORMとして、[Sequelize](https://sequelize.org/)を利用しています。

その際に、開発用と本番用でseedを分けて管理したくなったので、それについて書かせていただきます。

## どのようなケースか?

例えば、以下のようなテーブルがあった場合、

“`
id, request_url
“`

開発用にseedで作成するデータは、このようになります。

“`
1, http://localhost:3000/user
2, http://localhost:3000/login
3, http://localhost:3000/company
“`

しかし、これは開発用のデータのため、本番でこのseedを実行しても、うまくアプリケーションが動かないです。

そのため、本番用のseedでは、ドメインを指定して、データを作成したい。

“`
1, https://api.subroq.com/user
2, https://api.subroq.com/login
3, htt

元記事を表示

MongoDBを扱うExpressアプリをAWS Lambdaに乗せてサーバーレスにする

# はじめに

AWS Lambdaによってバックエンドアプリをサーバーレスにすると、可用性やコスト、スケーリングの面で利点があります。

DBとやり取りするバックエンドアプリの場合、かつてはDBコネクションの所要時間が懸念されたり、またそもそもLambda全般に言えるコールドスタートの遅さが課題でした。しかし最近(2020年頃)ではこれらの課題はかなり解消しており、バックエンドアプリをサーバーレスにすることが随分と現実的になっています。

この記事では、DBがMongoDBであり、Expressで書かれたバックエンドアプリについて、Lambdaによるサーバーレス化の流れを紹介します。作成したLambda関数は、API Gatewayを通して公開する想定とします。

# MongoDBへのコネクションを再利用する

DBコネクションの課題への対処法は、MongoDBの公式ドキュメントにポイントがまとめられています。

[Best Practices Connecting from AWS Lambda](https://docs.atlas.mongodb.com/best-pract

元記事を表示

【nvm-windows】ディレクトリ毎に Node.js のバージョンを自動で切り替える

functions などを書いていると、Node.js のバージョンを切り替えたいことがありますよね。手動で`nvm use`するのも面倒なので自動化しましょう。

nvm のインストールについては割愛します。

# 環境
– Windows 10 Pro
– Git Bash
– nvm 1.1.7

## .nvmrc
バージョンを切り替えたいディレクトリに`.nvmrc`を作成し、nvm にインストール済みの Node.js のバージョンを記述します。

“`
14.10.1
“`

## ~/.bashrc
以下を追記。ディレクトリを移動した際、`.nvmrc`が存在すれば、`.nvmrc`に記述されている Node.js のバージョンを変数に格納し、`nvm use [変数]`を実行しています。

“`bash
enter_directory() {
if [[ $PWD == $PREV_PWD ]]; then
return
fi

PREV_PWD=$PWD
[[ -f “.nvmrc” ]] && curre

元記事を表示

Typeorm でマイグレーションをしよう

## はじめに

Typescript 用の OR マッパー Typeorm を使用して、環境設定からマイグレーションをする方法まで紹介します。

[公式のリファレンスはこちら](https://typeorm.io/#/)

## 前提

“`bash
$ node -v
v14.9.0

$ yarn -v
1.22.4

$ mysql –version
mysql Ver 8.0.19 for Linux on x86_64 (MySQL Community Server – GPL)
“`

## 環境構築

まず、Typescript 環境を構築するところから始めます。この記事ではパッケージマネージャに yarn 使用しますが、NPM や他のものをお使いの方は、適宜読み替えてください。

“`bash
yarn init -y
“`

これで package.json が作成されました。続いて、Typescript 関連のツールと Typeorm をインストールします。その他 Linter や Formatter などはお好きな物をお使いください。

“`ba

元記事を表示

Twitter広告APIを利用してキャンペーンを作ってみる その1~TwitterAPI申請編~

# 経緯
私が所属している会社では__[待ラノ](https://lanobe.jp/ “待ラノ”)__という小説投稿サイトを運営しています。
待ラノではオススメ小説のランキング上位5作を定期的にTwitterの公式アカウントで紹介しています。
紹介された小説をTwitter広告のキャンペーンを利用してプロモーションをしようってなりました。

# そもそもTwitter広告のキャンペーンって何?
Twitter広告のキャンペーンですが、簡単いうと1日にかける予算や期間内にかける総予算を指定して、Twitterに広告を出す機能です。

# Twitter広告APIでキャンペーンを作る理由
1つのキャンペーンで複数のツイートをプロモーションする場合、1日にかける予算を一気に消化されてしまいます。
しかもどのツイートにどれだけ予算が消化されているかがわかりません。
そのため、1つのツイートに1キャンペーンを紐付けることで消化される予算の見える化を行うことになりました。

ただ手動でTwitterの広告コンソールから、1ツイートに1キャンペーンを毎回作ることになると結構手間です。
というわけで

元記事を表示

VSCodeでDocker入門

# 対象
Dockerインストール済み
初めてDockerを使用する。

# 前提
コマンドラインは使える
VSCode インストール済み

# 本記事について
一般的なのDockerの学習フローではdockerコマンドを学びつつ、イメージやコンテナの概念について理解し、その後docker-composeへと進んでいくと考える。

本記事ではイメージやコンテナ等の概念の説明は大きく省き、コマンドもvscodeの拡張機能で代用する。それによってdocker-composeのコマンドの最小限のみ学んでさくっと動かすことで実践的にDockerについて理解していこうというもの。

# 本記事のゴール
docker-composeコマンドがいくつかつかえるようになる。
nodejsの実行環境が作れる様になる。

# VSCode環境構築

![スクリーンショット 2020-09-14 13.18.11.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113504/0e1c92b2-04e9-d8a2-a4c7-3c

元記事を表示

New Relic APMをNode.jsのアプリケーションに導入してパフォーマンス解析をする

## 背景
– Webアプリケーションのパフォーマンスチューニングコンテスト「ISUCON10」の予選に参加した。
→ [チームメイトの参加ブログ](https://rso.hateblo.jp/entry/2020/09/13/181343)
– New Relicから [ISUCON10参加チーム向けNew Relic特別無料ライセンス](https://blog.newrelic.co.jp/developers/how-to-utilize-isucon-special-license/) が提供されていたので使ってみた。

## 導入方法
前提として、NewRelicのAPMライセンス適用済みのアカウントが作成されていること

– NewRelicポータル > APM > Add More で `Node js` を選択
– 画面の案内に沿って導入する
1. アプリケーション名を決めて入力する
2. Node.jsアプリケーションのディレクトリでnewrelicのNPMパッケージを導入
`$ npm install newrelic –save`

元記事を表示

GitHub Actionsを使ってWebサイト(EC2)の更新を自動化する

GitHub Actionsを使ってWebサイトの更新を自動化する手法を備忘録がてらにご紹介します。
この記事を読むことで、下記の作業を自動化できます。

1. Node.jsを用いた静的アセット(html,css,js)のビルド
2. scpを用いたビルドアーティファクトのAWS EC2インスタンスへのデプロイ
3. slackへの通知

## 技術・ツール:hammer_pick:
前提となる技術とツールをご紹介します。
Node.js、EC2インスタンス、slackは既に用意されているものとして説明します。

| 名前 |
| —- |
| GitHub Actions |
| AWS EC2 |
| Node.js(v12.18.3) |
| slack |

## GitHub Actions を始める前に
slackへの通知やEC2インスタンスへのssh接続が必要となるため、GitHubのsecretsを使用して秘匿情報を隠蔽します。
[ Settings > Secrets > New secret ]より、下記のsecretsを追加してください。

![85b5

元記事を表示

Node.jsでナイーブベイズ分類器を使った分類を行う

#ナイーブベイズ分類器のBayesモジュールを使う
ナイーブベイズ分類器は、次のようなことができます。

* スパムメールの判定
* ニュース記事やブログ記事のカテゴリー判定

ごく簡単にいうと、学習に必要なのはカテゴリーに関連する単語をたくさん登録するだけです。カテゴリーのわかっている文章を単語に分解して登録します。判定するときには、カテゴリーに関わる単語の出現率で判定されます。

もちろん、もっと正しい理解をしたほうがいいですが、[bayesモジュール](https://www.npmjs.com/package/bayes)を使うならこの程度のイメージを持っておくだけで使えて、なかなか有益な結果を得られます。詳しく知りたい方は末尾のリンク先を参照してください。[^1]

##使い方(イメージ)

“`javascript
// 学習
classifier.learn(‘カテゴリーAに関する長文・・・・・’, ‘カテゴリーA’)
classifier.learn(‘カテゴリーBに関する長文・・・・・’, ‘カテゴリーB’)
classifier.learn(‘カテゴリーCに関す

元記事を表示

npm install –save について

## はじめに

本投稿は `npm install` コマンドの `–save` オプションについてですが、すでに

npmでパッケージをインストールする際、ネットを検索すると `–save` というオプションをよく見かける。
ex)axios をインストールする場合

“`shell
$ npm install axios –save
“`

`-g` でグローバルにインストールする際には見ないのだが、何者なのか調べてみた。

## npm install –save オプションについて

`package.json` の `dependencies` に登録してくれるようだ。

### 何がうれしいのか

git にコミットする際、パッケージをインストールしているフォルダ `node_modules` は `.gitignore` によって除外されます。
違う開発環境を git からクローンして構築する場合、`package.json` を元に復元します。
よって、同じパッケージ環境を簡単に構築することができます。

## 結論: `–save` オプションは必要か

元記事を表示

実行できて見栄えも良いMarkdown手順書で快適な運用ライフを送ろう!

### 実行できる手順書(LC4RI)ってのご存じでしょうか?

ドキュメントとコマンドが混じって書いてあって、コマンド部分は実行できて、
その実行結果が載っています。
なので、**手順書として読めて、かつ実行した内容とその時の出力がエビデンスとしてとれるもので
運用作業者にとってはExcel手順書の置き換えにぴったし**なんですね

そういう書き方が出来るツールとしてjupyter notebookが良く使われているんですけど、
これが運用してみるとドキュメントの並び替えとか、編集が意外と面倒だったりする。

もっと普通のエディタで書けたら・・そう思ってました。したらヒラめいた!

### VSCodeのmarkdown編集機能を実行できるようにすれば良いんだ!!

# つくってみたわ

![lc4ri2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189193/1cd4535d-49d1-19c4-1532-3e60654e61f4.gif)

[VScodeのマーケットプレイスからインストール

元記事を表示

ウソ穴 Ver 6 の作り方

## はじめに

個人開発`ウソ穴`の作り方を紹介します。

## ウソ穴とは

`ウソ穴`は、ライブ映像 or 動画とARを組み合わせて、壁に穴が空いた錯覚を作り出します。Webサイトなので、ユーザーはアプリのインストール無くウソ穴を使用できます。

## ウソ穴 Ver 6

今回は、Android端末でも動作実績のある Ver 6 を紹介します。

## デモ映像

ウソ穴 Ver 6 Type B で顔に穴を開けてみました。

OTHERカテゴリの最新記事