- 1. [JS1日クッキング]SequelizeとExpressでAPIサーバー
- 2. yarn v2 は開発時における効率を損ねるのではないか
- 3. 【Yarn】パッケージをオフラインでインストールする
- 4. nodeでAbemaTVをダウンロードしてみる【スマホでもできる】
- 5. node 14.3.0 top level await
- 6. ランダムな(重複しない)ID的文字列を生成する
- 7. 【AWS】Lambda+Amazon SESでメールを送信する
- 8. AWS Lambda から Cloud Firestore を使ってみる
- 9. nodenvでMacにNode.jsをインストールする(auto rehash対応版)
- 10. ts-node と ts-node-dev の違い
- 11. あなたのnpmパッケージ、脆弱性の塊説。急いで最新にするよ!
- 12. HTMLから画像を生成するシンプルな方法(Node.js)
- 13. 【超初級】Node.jsの始め方 〜 2020.05.22ver〜
- 14. ShopifyアプリをTypescriptで開発する方法
- 15. VercelでLINE BOTを動かす 2020年5月版
- 16. systemctlってめちゃくちゃ便利なんだな…
- 17. AWS IoTボタンを押すと動物の鳴き声をgoogle homeで再生する2歳児向けおもちゃを作ってみた
- 18. 構成
- 19. 作成手順
- 20. Visual Studio Code で GAS のコードを編集する環境を作ってみた(Windowsだよ)
- 21. CloudWatch Synthetics & Puppeteer ことはじめ
- 22. [Node.js]Firestoreのコレクションにサーバーサイドから最速でドキュメントを書き込む書き方
[JS1日クッキング]SequelizeとExpressでAPIサーバー
何かを簡単に作って、ちょっとした勉強になる。そんなシリーズになる予定です。
今回は、簡単なTodoアプリに使うAPIサーバーを作っていきます。データベースはMySQLで、データベース操作にはSequelizeを利用します。
完成品はこちら -> [sequelize-todo-api-server](https://github.com/kei-lvngbk/sequelize-todo-api-server/tree/base)
# 材料
– Node.js
– mysql2
– sequelize
– sequelize-cli# 作り方
## 1. ライブラリのインストール
適当にディテクトリ作って、`npm init`で初期化してから、今回使うライブラリをインストールします。
“`shell
npm i sequelize mysql2
npm i -D sequelize-cli jest
“`予めMySQLサーバーをインストールして、設定をしておきます。以下は今回使うユーザー名とパスワードです。
“`sql
use mysql;
create
yarn v2 は開発時における効率を損ねるのではないか
# 背景
[npm, yarn による zero install 戦略](https://yosuke-furukawa.hatenablog.com/entry/2019/06/10/113111)を読んで Zero Install を知り、yarn v2 の有用性が気になった。パッケージ追加の速度やパッケージのサイズは従来よりも改善されるそうだが、パッケージをランタイム時に読み込むということはアプリ起動速度は従来よりも劣るように思えたため、検証を行った。# 検証方法
yarn v2 と v1 を用いる別環境にて、CRAを用いたプロジェクトを作成して以下の3点から優位性を比較する。
* パッケージ追加の所要時間
* プロジェクトディレクトリのサイズ
* アプリ起動の所要時間# 検証
## 1. パッケージ追加の所要時間
ReactアプリのプロジェクトをCRA経由で作成する。途中でパッケージ追加が行われるため、以下のコマンドを実行してdateコマンドの差から所要時間を算出する。“`bash
$ create-react-app –version
3.4.1
$ date
【Yarn】パッケージをオフラインでインストールする
# 背景
[Yarn v2についての動画](https://www.youtube.com/watch?v=XePfzVs852s)で出てきた「v1のオフラインインストール」について、よく知らなかったので調べてみた。# 概要
Yarnのオフラインインストールとは、パッケージを追加する際に実態のtarballをローカルにダウンロードしておき、後からそれを用いてパッケージをインストール出来るようにしたものである。パッケージをインストールする際に `yarn.lock` ファイルにダウンロード元のURLが記録されているため、URLが有効な限りは何度実行しても同一のファイルがダウンロードされることが保証されるが、ダウンロード元のダウンや閉鎖等によってURLが無効になった場合はダウンロードに失敗する。このような場合に備えて予めtarballをダウンロードしておき、オフライン時に利用するのがオフラインインストールである。# 詳解
## 事前準備
まずはじめに、適当なディレクトリを作成して以下のファイルを配置する。“`json:package.json
{
“name”: “yar
nodeでAbemaTVをダウンロードしてみる【スマホでもできる】
こんにちは。ひさしぶりです。
以前にはてなでAbemaTVが落とせなくなった〜!とかやり方見つけた!とか言うことを書いてたんですけど暇なんでqiitaにも書きます。
ざっと大まかに言うとminyamiっていうnodeライブラリを使います!以上!
**Windowsとかのやり方ははてなを見てくれ。**
※**今はこの方法以外ではDLできない**。(当方調べ)
## minyamiをぶち込む
とりあえずいつものようにnpmでインスコします。
(グローバルのほうがおすすめ。)“`Ruby:terminal
npm install -g minyami
“`## Chrome拡張機能を入れる
今回は拡張機能でhlsのリンクをゲットする寸法。
https://chrome.google.com/webstore/detail/minyami/cgejkofhdaffiifhcohjdbbheldkiaed
## あとはDLするだけ。
Abemaのページを開
node 14.3.0 top level await
https://github.com/nodejs/node/blob/master/doc/changelogs/CHANGELOG_V14.md#support-for-top-level-await
> 非同期関数の外でawaitキーワードを使用できるようになりました。
denoが出たと思ったら、nodeもtop level awaitをサポートしたのか
https://deno.land/
ランダムな(重複しない)ID的文字列を生成する
#概要
IDとかに使う重複しない文字列を生成するメモ。
node.jsの`crypto`を使う## 生成方法
cryptoの`randomBytes`を利用して、ランダムなBufferを生成し、それをエンコードして整形する。
– 重複しないためにはある程度長さが必要なので20文字以上を生成するようにする(今回は20文字)。
– エンコードはbase64。ただし+とか/が入るのでreplaceで削除“`javascript
const crypto = require(“crypto”);
const Length = 20;const ids = [];
console.log(“生成開始”);
for (let i = 0; i < 10; i++) { const _id = crypto.randomBytes(Length + 2).toString("base64"); const id = _id.replace(/\W/g, '').substring(0, Length); ids.push(id); } console
【AWS】Lambda+Amazon SESでメールを送信する
[前回の記事](https://qiita.com/duplicate1984/items/8a3ce5c434a44b2b04fd)でAmazon SNSを利用してSMSを送信するlambdaを書きました。
今回はメールを送信するためにAmazon SESを利用していきます。#やりたいこと
lambdaからのキックでメールを送信したいと思います。
ただし、宛先のメールアドレスはlambda内で指定したいと思います。Amazon SMSでもメールの送信は可能ですが、予め作成したサブスクリプションで認証済みのメールアドレス宛にしか送信できません。
そこで今回はAmazon SESを使用します。#Amazon SESって?
システムエンジニアリングサービス…ではなく
Amazon Simple Email Serviceです。従量課金制のEメール送信サービスです。
2020年5月現在、東京リージョンではサポートされていません。
エンドユーザーへのマーケティングや、ヘルスチェック系の通知などに利用できます。#コードとかより注意しておきたいこと
###サンドボックスの解除
AWS Lambda から Cloud Firestore を使ってみる
FirestoreのデータをAlexaSkillから呼び出したかったのでLambdaに接続してみました。
そのときの手順を残しておきます。
勉強中の身ですので温かい心で読んで頂けると嬉しいです。
###1.環境
Windows 10
Node v11.13.0###2.Firebaseのプロジェクト作る
Firebaseのコンソールからプロジェクトを作成します。
プロジェクトを作るとDatabaseがサイドバーから選べるのでそこから新しいデータベースを作成します。###3.ローカルフォルダにNode.jsのプロジェクトを作る
コマンドラインから任意のディレクトリに移動して
“`npm init“`を実行。
package.json が作成されます###4.Firebase Admin SDK をダウンロード
[Firebaseのドキュメント](https://firebase.google.com/docs/firestore/quickstart?hl=ja)に従ってnode-moduleをインストールしましょう
“`npm install firebase-adm
nodenvでMacにNode.jsをインストールする(auto rehash対応版)
nodenvというNodeバージョン管理ツールを使って、Node.js環境を構築します。
# nodenvインストール
## [Homebrew](https://brew.sh/)でインストール
“`
$ brew install nodenv
“`
nodenvはnode-buildコマンドに依存していますが、このコマンド一発でnode-buildもインストールしてくれます。## 一旦セットアップコマンドを実行する
“`
$ eval “$(nodenv init -)”
“`
ドキュメントではこのコマンドをシェルの設定ファイルに追記するよう書いてますが、[【最後】](https://qiita.com/axsann/items/0a7cdf5aa78b057e3a58#%E6%9C%80%E5%BE%8C-%E3%82%B7%E3%82%A7%E3%83%AB%E8%A8%AD%E5%AE%9A%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%ABnodenv%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2
ts-node と ts-node-dev の違い
# どちらも
typescriptでの開発には持って来いなパッケージ達ですが、初めて調べた時、似たような名前でどっちを使えばいいのか結構悩んだので、違いをまとめておきます。# ts-node
ts-nodeパッケージを追加します。
“`
npm install typescript ts-node
“`typescriptも追加しないと、tsファイルが動かないので、これも追加します。
※グローバルにインストール済みの場合は必要ないです。tsファイルを作成
“`ruby:src/index.ts
console.log(“Hello World”);
“`package.jsonに下記を追加
“`ruby:pacage.json
“scripts”: {
“ts-node”: “ts-node src/index.ts”
},
“`実行してみます。
“`ruby:実行結果
npm run ts-node> ts-node_t@1.0.0 ts-node C:\Users\ne240\Desktop\work\m
あなたのnpmパッケージ、脆弱性の塊説。急いで最新にするよ!
npm便利ですよね。
昨今フロントweb開発でNode.jsが登場しないことはないので、みなさんお使いかと思いますが、ちゃんとバージョン管理していますか?
私はしがないweb制作者ですが、npmパッケージなしでの開発はありえないです。
ただそういえばバージョン管理をしていないなと思い、現在バージョンと最新バージョンを比べてみることに。そしたら…
“`
$ npm outdated
“``微妙にパッケージが古くなってた…`
## npm-check-updatesをインストール
まずはpackage.jsonを最新バージョンにアップグレードしてくれるnpm-check-updatesをインストールします。
“`
np
HTMLから画像を生成するシンプルな方法(Node.js)
どうもこんにちは、[@y_temp4](https://twitter.com/y_temp4)です。
最近、趣味で個人開発している Web サービスの [AnyMake](https://anymake.app) にて、画像を動的に生成するプログラムを書く機会があったのでその方法についてまとめてみます。
関連記事:[埋め込みコンテンツを追加しました!| AnyMake | note](https://note.com/anymake/n/n2dbf8001c172)
## [node-html-to-image](https://github.com/frinyvonnick/node-html-to-image) を使う
自分は画像生成周りは全然詳しくないのですが、普段フロントエンドのコードを書くことが多いので
「**HTML から画像生成できたら便利だな〜**」
と思いました。
そこで少し調べると、[node-html-to-image](https://github.com/frinyvonnick/node-html-to-image)というライブラリが見つかり
【超初級】Node.jsの始め方 〜 2020.05.22ver〜
## ? Node.jsをインストールしてみよう♪
https://nodejs.org/ja/
こちらをクリックするとHPに行くと以下のような画面が出てくると思います。
どっちでも良いですが、推奨版をインストールするほうが安定的かもしれません。
流石に、インストールの方法は皆さんご存知かと思うので割愛します。## ? nodeがインストールできたか確認してみよう
実際にnodeが入っているかを確認しましょう!“`ターミナル:ターミナル
node -v
“`ターミナルを開き上記のように入力してみてください。
v12.16.3などと出てきたらOKです!## ? npmについて
nodeで開発を行っていく上で、必須となってくるのが
ShopifyアプリをTypescriptで開発する方法
# はじめに
Shopifyアプリとは、Shopifyストアに機能を追加するWebアプリケーションです。
下記URLのチュートリアルでは、Node.js、React、GraphQLを使用して埋め込みShopifyアプリを構築するプロセスについて説明されておりますが、Typescriptで開発したいと思い、実装する方法を調べて実現できたのでご紹介したいと思います。https://shopify.dev/tutorials/build-a-shopify-app-with-node-and-react
# 開発環境
下記環境で確認しています。– Mac
– VSCode
– node.js
– Shopify App CLI# プロジェクト作成
Shopify App CLIでベースのnodeのプロジェクトを作成します。– PublicかCustomを選択します。
“`shell-session
% shopify create node –name=starter-embedded-app
? What type of app are you building?
VercelでLINE BOTを動かす 2020年5月版
よく使う記事(↓)のソースコードを元にVercel(旧: now.sh)にLINE BOTをデプロイします。
> https://qiita.com/n0bisuke/items/ceaa09ef8898bee8369d
ちなみに、Vercelはnow時代から仕様がちょくちょく変わる印象があるのであくまでも現時点版だと思った方が良さそうです。
## 事前準備: LINE BOTを作成し、ngrokで動作確認
参考記事のSTEP3のngrokでトンネリングさせるところまで進めます。
> 参考: [1時間でLINE BOTを作るハンズオン (資料+レポート)](https://qiita.com/n0bisuke/items/ceaa09ef8898bee8369d)
nodeのアプリをforeverでデーモン化しようと思っていたところ、そもそもsystemctl使えば必要なかったという話です。
## 前提
– ts-nodeのexpressアプリをデーモン化したい
– サーバー起動時にも起動したい
– AWSのEC2## systemctlの設定を書く
systemctlは昔のserviceコマンドに替わるものですがだいぶ便利になっています。
昔はinit.dにややこしい起動スクリプトを書く必要がありましたが今では、
“`/usr/lib/systemd/system/foo.service
[Unit]
Description=foo[Service]
Type=simple
ExecStart=”/home/ec2-user/repo/script/start.sh”[Install]
WantedBy=multi-user.target
“`これだけで
“`
$ sudo systemctl enable foo
$ sudo systemctl start foo
$ sudo systemctl stop
AWS IoTボタンを押すと動物の鳴き声をgoogle homeで再生する2歳児向けおもちゃを作ってみた
AWS IoTボタンを押すと動物の鳴き声を再生する2歳児向けおもちゃを作ってみました。
きっかけは動物好きな子どもが親の真似をして 「おけーぐるぐる ぞうの声」 とgoogle homeに向かって何度もしゃべっても認識できない
→親に「おけーぐるぐる ぞうの声 っていって」と何度も言われるような状況がうまれ、しんどい。。。
そこでボタン押すだけなら操作なら2歳児でもできるでしょ!と思い作成しました。構成
構成はこんな感じです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294965/6c115d8c-e0ae-593a-6814-f430f6223b56.png)
1.Amazon IoTボタンを押す
2.ラムダ関数が起動(ただGETメソッドを実行するだけ)
3.ローカルのサーバーが起動(ngrokを使うことでインターネット上に公開)
4.google homeがしゃべる!作成手順
作成手順はこんな感じです。
1.LAN環境でgoogl
Visual Studio Code で GAS のコードを編集する環境を作ってみた(Windowsだよ)
#はじめに
なにやら世の中には「VSCode」という素晴らしいものがあることを今更知った。orz
なんだか、TypeScriptで書けて、JavaScriptに変換までしてくれるらしいのですが!?
GASでこういう↓ものを作成したので、だったら「VSCode」で書けないのかしらん?
[スプレッドシートをDB代わりにGASのWebアプリを作成しデータ更新させてみた。Vue版 その1~~](https://qiita.com/yamamow/items/6be4fa99cd3cb45ecffa)
ということで調べ、まとめてみました。
「間違ってるぞ。」「動かないぞ。」というときは優しくご指摘くださいm(\_’\_)m#参考にさせていただいたサイト
・[【Google Apps Script】claspを使ってローカル環境で開発する](https://coxcox.hatenablog.com/entry/2019/04/05/222532)
こちら↑を見ればできます。#わからないこと
1. Googleのアカウントを複数持っていた場合の挙動#インストールと設定手順
|No
CloudWatch Synthetics & Puppeteer ことはじめ
今さらながらCloudWatch SyntheticsでWebサイトの監視をしたのでまとめます。
# この記事の内容
* CloudWatch Syntheticsのために手動でS3バケットとIAM Roleを作る
* ローカル環境にPuppeteerをインストールしてNode.jsのコードを書く
* Googleのトップページに「猫 wikipedia」を入力して検索する
* トップにWikipediaの[記事](https://ja.wikipedia.org/wiki/%E3%83%8D%E3%82%B3)が出てこなかったら異常事態なのでスクショを撮ってCloudWatchでアラートを上げることにする
* このコードをCloudWatch Syntheticsに持って行ってCanaryを作成するきちんとした環境構築などはしていません。非常に意識の低い内容となっています。。
# まず最初に:勝手にバケットやIAMを作ってほしくない
最初のセットアップで `s3://cw-syn-results-999999999999-ap-northeast-1` というS3バケ
[Node.js]Firestoreのコレクションにサーバーサイドから最速でドキュメントを書き込む書き方
#Overview
Firestoreの一つのコレクションに1万件ほどデータを書き込んでいたが2分は要して遅かった。
公式ドキュメントのみではなかなか最速にたどり着けないためメモとして残しておく。#Target reader
– Firestoreでコレクションへのサーバーサイドからへの書き込みをNode.jsを問わず高速にしたい方。
#Prerequisite
– SDKはNode.jsのものを使用するが、他の言語でも同様になると考える。
– Node.jsのバージョンはGoogle Cloud Function(GCF)に依存し、現時点ではV10系とする。
– [Firestoreのインポート](https://firebase.google.com/docs/firestore/manage-data/export-import?hl=ja)による書き込みは調査対象外です。読む限り大量のデータを書き込む用途ではなくリストア向けに見えたこと、特に速度面で有利になる記述がなかったため。#Body
## 理論上の限界値を把握する
まずは公式ドキュメントから上限値