- 1. AzureEventGridを触ってみたよ
- 2. MacOS Catalinaにnodebrewを通じてNode.js(npm)を設定する
- 3. Docker上のCentOSでnodebrewを入れる
- 4. [Node.js + Heroku] 環境変数を実行環境ごとに切り替えて接続する
- 5. TypeScriptパッケージをwebpack (Tree Shaking)とNode.js両方で使えるようにする(ES6 Modules / CommonJS)
- 6. Microsoft Teamsで使えるQualityForward Botを作る
- 7. node.js (Express) でのオープンリダイレクト脆弱性対策
- 8. 結婚式の招待にLinebotを導入してみた話
- 9. Mac に Node.js 環境をさくっと整えるための最短ルート
- 10. Discord.js v12がリリースされたので追加されたものを一部紹介
- 11. Node.jsアプリにSass導入
- 12. azure app service で kintone アプリデータ公開その5(グリッド表示)
- 13. azure app service で kintone アプリデータ公開その4(JS API)
- 14. COTOHA感情分析APIとSlackを使用し、メッセージ分析ロボットを作りました
- 15. azure app service で kintone アプリデータ公開その3(REST API)
- 16. azure app service で kintone アプリデータ公開その2(環境変数利用)
- 17. Node.js で DynamoDB のデータを読む
- 18. AWS S3 の使い方 (Node.js)
- 19. 入門者もプロもJAMスタックからはじめよう!
- 20. JavascriptのテストフレームワークJestを導入して、非同期関数をテストする
AzureEventGridを触ってみたよ
# はじめに
仕事でIoTHub, EventHubs, ServiceBusと触ってきましたが、それぞれ利用用途が異なります。AWSもそうですがたくさんのキューサービスが存在します。
今回はEventGridを触っていきたいと思います。# EventGridとはなにか?
このサービスはEventメッセージを扱うサービスで、送る側は後にどんな処理が行われるかについては関知しません。このへんはIoTHub,EventHubsと同じですね。
逆にメッセージを扱うサービスはServiceBusで受け取った側が最後まで責任をもってキューからデータを削除してあげる必要があります。ServiceBusについては先日まとめたエントリーをご参照ください。
* [Qiita – AzureServiceBusを色々触ってみた](https://qiita.com/uzresk/items/582a7a92e85677fb8365)
**イベントソース**は[こちら](https://docs.microsoft.com/ja-jp/azure/event-grid/event-sourc
MacOS Catalinaにnodebrewを通じてNode.js(npm)を設定する
## 困ったこと
* MacOS Caltalinaの標準ターミナルであるzshにはnpmが標準で入っていない
## 実行
手順
1. nodebrewをcurlを利用してインストール
“`$curl -L git.io/nodebrew | perl – setup“`
2. Vimを開いて下記nodebrewのパスを~/.zshrc(zshの設定ファイル)に記入
“`export PATH=$HOME/.nodebrew/current/bin:$PATH“`
Docker上のCentOSでnodebrewを入れる# はじめに
Centosにnodebrewを入れる記事はたくさん存在するのですが、
Dockerでやった時に詰まったので個人的なメモがてら残しておきます。# 環境
* docker“`zsh
$ docker –version
Docker version 19.03.5, build 633a0ea
“`* Dockerfile
“`Dockerfile
FROM centos:centos7
“`# やったこと
## 1. 従来の記事を読んでinstall
“`zsh
$ curl -L git.io/nodebrew | perl – setup
“`↓ 悲しみのエラー
“`
Can’t exec “which”: No such file or directory at – line 927.
Can’t exec “which”: No such file or directory at – line 927.
Need curl or wget at – line 927.
“`whichがないと言われinstall出来ない。
[Node.js + Heroku] 環境変数を実行環境ごとに切り替えて接続する
ローカルで開発して、Herokuでデプロイする際に環境変数を切り替えて接続したかったのでその手順を記録しました。
Herokuのバージョンは、下記の通りです。
“`shell
$ heroku –version
heroku/7.39.0 darwin-x64 node-v12.13.0
“`## ローカルの環境変数を設定
npmの[config](https://www.npmjs.com/package/config)パッケージをnpmインストールします。
“`shell
$ npm install config
“`次に、default.jsonを作成しましょう。
“`shell
$ mkdir config
$ vi config/default.json
“`このdefault.jsonを読み込んで接続します。
“`
your-app/
└ config/
└ default.json
“`ローカル開発の環境設定を記述します。
“`json:default.json
{
“localDB”: {
TypeScriptパッケージをwebpack (Tree Shaking)とNode.js両方で使えるようにする(ES6 Modules / CommonJS)
## モチベーション
私は今までwebpackのみの割とシンプルなプロジェクトを作っていました。
特にインポート・エクスポートについては、`import` だの `export` だの書いておけば動いたのですが、
– monorepo構成で、共通モジュールをこまめに切り出し、
– webpack / Node.js 双方から参照するパッケージを作った途端に、Node.js 「共通モジュールにある **`export` キーワードって何?** そんなキーワードうちら知らんのやけど。」
と文句言われ始めたので、Node.jsからも文句を言われないパッケージを作りたいと思います。
※文中に書かれている ES2015 と ES6 は同じものを指しています。
## プロジェクトの構成 (monorepo)
(https://github.com/knjname/both-es6-commonjs-build にてソースコードを公開しています。)
下記のような[yarn workspace](https://classic.yarnpkg.com/ja/docs/workspa
Microsoft Teamsで使えるQualityForward Botを作る
[Microsoft Teams](https://products.office.com/ja-jp/microsoft-teams/group-chat-software/)はMicrosoftの提供するチャットツールです。ビジネス界隈で利用が広がっています。他のチャットサービスと同様に、他社のサービスと簡単に連携できます。今回はMicrosoft Teamsと連携できるQualityForward用ボットを作成してみました。
## 利用するAPIについて
Microsoft Teamsのボットは5秒以内にレスポンスを返さないといけないという縛りがあります。Web APIを何度も叩いていると5秒以内にレスポンスが返せない可能性があるので、以前作成したGoogle Apps Script上で動作するWeb APIを利用します。
[QualityForwardのテスト集計を返すSlackコマンドを作ってみた – Qiita](https://qiita.com/goofmint/items/f33fea50b8280205013d)
このWeb APIであればGoogle Ap
node.js (Express) でのオープンリダイレクト脆弱性対策
この記事は、[WESEEK Tips Wiki](https://tips.weseek.co.jp) に投稿された記事「[/Tips/JavaScript/Express/オープンリダイレクト対策](https://tips.weseek.co.jp/5e5d51463051ce00499cac59)」の転載です。
# オープンリダイレクトとは?
– [WESEEK Tips Wiki: /用語集/オープンリダイレクト](https://tips.weseek.co.jp/5e5d34c83051ce00499cac56)
# Express に於けるリダイレクト
[Express 4.x API#res.redirect](http://expressjs.com/en/api.html#res.redirect)
– URL パラメータ等、ユーザーが指定可能な文字列をそのままリダイレクトさせるコード書くとセキュリティホールとなる
– `res.redirect(‘//evil.example.com/path/to/attack’)` で再現可能
– -> `h
結婚式の招待にLinebotを導入してみた話
## 経緯
いつもはITコンサルティングの会社で働いているTsugaです。
この度結婚することになり、妻と共に式の準備に勤しんでいます。準備をする中で、ちょっとこの風習は古いんじゃないのか?と思うことがいくつかあったので、自分たちの式では少し工夫をしてみました。
## 結婚式のここがイケてない
### 1 招待状
未だに結婚式の招待状は手紙で用意することが前提になっています。これを業者に丸っと外注すると、非常にお値段的に高くつきますし、自分たちで用意するとなると、それはそれで大変でやりたくありませんでした。
何より、手紙をもらった側も、返信の際は[暗黙のしきたり](https://www.weddingpark.net/magazine/8225/
)に従って返さねばならず、ちょっと億劫です。あと、招待状でしか会場の情報や開始時間の情報は送られてこないので、
自分なんかは管理が苦手なので当日になって焦って探したりします。もう、普通に紙で管理する必要が全くないので電子化したいなと。
### 2 ご祝儀
これ、自分が参列する時も悩みの種です。銀行って仕事時間中にし
Mac に Node.js 環境をさくっと整えるための最短ルート
## Mac を買った
– 新しい MacBook Pro を買った
– というわけでアプリとか作ってみたいし JavaScript とかをガンガンやっていきたい
– いろいろ調べたところ・・・
– アプリ開発にあたって Node.js とかいうやつをインストールする必要が出てきた
– でも買ったばっかりだから Mac の中身からっぽじゃん。。
– 「Mac Node.js 環境構築」、検索と
– 「nodebrew」「nvm」「anyenv」「nodenv」「ndenv」「npm」「yarn」・・・
– :smiley: ・・・
– **俺はアプリ開発を諦めた**
– となりかけたので、改めて、空っぽの Mac に Node.js まわりの環境を整えるまでをメモ。## この記事で扱うこと(使えるようになるもの)
– 何も入っていない状態の Mac に Node.js のバージョンマネージャとパッケージマネージャをインストールして、Node.jsを用いた開発に着手できる環境を構築する
– 扱うものは以下。
– Homebrew
– anyenv
– node
Discord.js v12がリリースされたので追加されたものを一部紹介
とうとうこの日が来ました。**Discord.js v12**がリリースされました。?
Discord.jsユーザーの9割はこの時を待ち望んでいたでしょう!ということでDiscord.jsの新機能というか、追加された一部分を紹介します。# Discord.js とは
> Discord.jsは、Discord APIと簡単にやり取りできる強力なNode.jsモジュールです。
> https://discord.js.org/#/## v12のリリースまでに凄く時間がかかっている。
このv12ですが結構前から開発が進んでいたものをリリースしたものです。**破壊的変更が大量**にあります。
v11のコードをそのまま動かすとほぼ確定でエラーが起きるでしょう。
**そしてこの記事を読んでも1割、いや1割以下しか理解したことにならないでしょう…**## Node.jsのアップデートが必要
今回のv12リリースで、Node.jsのバージョンは**v12.x以降**となりました。`node -v`コマンドでNode.jsのバージョンを確認して必要なら[Node.jsの公式サイト
Node.jsアプリにSass導入
# はじめに
生のCSSを書くよりも、Sassで書いたほうが良いらしい。
導入が想像よりも面倒だったので、備忘録として残す。
ざっくりとした理解で書いているので、誤解を生む表現もあるはず。
その点、ご注意ください。ちなみに、本記事では、“gulp.js“を使う方法を紹介する。
## 環境
– windows 10 home 64bit
– node.js 12.12.0
– **gulp.js 4.0.2**
– **バージョン3と4では仕様が異なるため注意!**## Sassとは
CSSを便利に書くための言語みたいなもの。
SASS記法とSCSS記法の2種類がある。
SCSS記法のほうが、CSSの書き方に近い。
本記事では、SCSS記法で進める。ざっくりとした使い方(?)としては、
1. Sassを使えるように、環境構築する。
2. CSSで記述したい部分をSassで書く。
3. SassをCSSにコンパイルする。(“.sass“または“.scss“ファイルを、“.css“ファイルに変換する。)## Node.jsアプリケーションでSa
azure app service で kintone アプリデータ公開その5(グリッド表示)
azure app service で kintone アプリデータ公開その5です。
ブラウザー上で、kintone アプリデータをグリッド表示します。# 概要
これまで作ってきた REST API, JS API を使って、グリッド表示を実装します。
今回は、プラグインでも使っている ParamQuery Grid Pro を使ってみます。# 参考情報
簡単なグリッド表示確認用なので、フリーの ParamQuery grid でもOKのはず。
– [ParamQuery Grid Pro](https://paramquery.com/pro/grid)
– [ParamQuery grid](https://paramquery.com/)# グリッド表示処理の追加
list.js, list.pub で、グリッド表示処理を行います。
## app.js の変更内容
listRouter 処理の2行を追加します。
“`app.js
var createError = require(‘http-errors’);
var express = requir
azure app service で kintone アプリデータ公開その4(JS API)
azure app service で kintone アプリデータ公開その4です。
ブラウザー上で、REST API を呼び出すための JS API を作成します。# 概要
JavaScript で、REST API を呼び出すには、xmlhttprequest などを使えば可能ですが、いちいち手順を踏むのは面倒です。
簡単に REST API を呼び出す JS API を作ってみます。
kintone.api のようなものです。# 参考情報
REST API を呼び出すには、axios が便利そうです。
kintone-js-sdk でも、axios を使っていましたので、axios を利用します。– [axiosを乗りこなす機能についての知見集](https://qiita.com/terrierscript/items/ccb56b6fc05aa7821c42)
– [axios を利用した API の使用](https://jp.vuejs.org/v2/cookbook/using-axios-to-consume-apis.html)
– [axios](
COTOHA感情分析APIとSlackを使用し、メッセージ分析ロボットを作りました
## 経緯
エンジニアってみんなさん忙しいよね?。
忙しいけど、やりたい事だったら、よく夢中になって、ライン見なくなりますね。
でも、大事なメッセージ、例えば彼女のメッセージは見なくちゃいけない時もありますね!
この時は、身近なツールで彼女のメッセージを分析して気持ちだけ教えてくれるもの欲しい?
ということで、今回作ってみました。## やりたい事
メッセージをslack botに送って、ロボット分を通し、キーワード、キーワードのタイプやメッセージの感情結果など返ってくるという簡単な仕組みです。– slackにコピーしたメッセージを送る
– 裏側でメッセージをCOTOHA感情分析APIに送る
– APIから返信した結果を整理して、slackに返す**【実装例】**
![2020-03-02 11.27.39.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/470919/a11d45ad-6b25-a4d8-d488-37d380c91598.gif)
これで、は忙しい時われわれエン
azure app service で kintone アプリデータ公開その3(REST API)
azure app service で kintone アプリデータ公開その3です。
kintone アクセス用に、REST API を作ってみます。# 概要
[azure app service で kintone アプリデータ公開その2(環境変数利用)](https://qiita.com/rex0220/items/38df7a061d267ffd495b)の続きです。
ブラウザ上で、kintone アプリデータをグリッド表示する場合に、kintone アプリデータを取得する方法が問題になります。
「ページ作成時、JavaScript の変数にレコード情報を入れる」、「DOM上にレコード情報を入れる」なども考えられます。
ただしページ制御なども考えるとkintone と同様に REST API でレコード取得したほうがよさそうです。
幸いにも node.js, Express では、簡単に REST API が構築できるようですので、試作してみます。# 参考情報
node.js, Express だけで、REST API が構築できそうです。
– [Node.js
azure app service で kintone アプリデータ公開その2(環境変数利用)
kintone のアプリデータをazure app service で公開その2です。
kintone への接続情報を環境変数で管理してみます。# 概要
[azure app service で kintone アプリデータ公開その1](https://qiita.com/rex0220/items/c38939eea69e0eff37a3)の続きです。
kintone 接続用の情報を環境変数に設定して、利用してみます。# 環境変数の参考情報
npm dotenv を使うとよさそうです。
– [環境設定を行う!Node.jsのenvの使い方【初心者向け】](https://techacademy.jp/magazine/16243)
– [Node.jsで環境変数を取得する](https://qiita.com/setouchi/items/274d9eebc8c9d3470ac1)
– [環境変数とnpm scriptとかpackage.json周りの話](https://gist.github.com/kenmori/ef48f09e9f1bfb30fe34cc11d
Node.js で DynamoDB のデータを読む
参考ページ
[Amazon DynamoDB Step 3.2: Read an Item](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStarted.NodeJs.03.html#GettingStarted.NodeJs.03.02)
[Node.js からDynamoDBを操作するサンプル](https://qiita.com/inouet/items/b2246d2419daf1788f63)“`js:get_item.js
#! /usr/bin/node
//
//
var AWS = require(“aws-sdk”);var dynamodb = new AWS.DynamoDB({region: ‘us-east-1’})
var table = “Movies”
var user = “Scott”var params = {
TableName: table,
Key:{
“user”: {“S”: user},
AWS S3 の使い方 (Node.js)
AWS S3 を Node.js で使ってみます。
1)バケットの一覧
“`js:s3_list.js
#! /usr/bin/node
//
// s3_list.js
//
// Mar/02/2020
// —————————————————————
var AWS = require(‘aws-sdk’)var s3 = new AWS.S3({apiVersion: ‘2006-03-01’})
s3.listBuckets(function(err, data) {
if (err) {
console.log(“Error”, err)
} else {
console.log(“Success”, data.Buckets)
}
})// —————————————————————
“`2)バケット内のファイル一覧
“`js:s3_listobjects.j
入門者もプロもJAMスタックからはじめよう!
## JAMスタックとは何か
JAMスタックの[公式サイト](https://jamstack.org/)によると、ビルドが自動か手動か、もしくはフレームワークがNext, Gatsby, Hugoどの種類でも共通しているのはサーバーに依存しないということであると説明されています。ではではJAMの頭文字について説明していきます。
#### Javascript
上記で「サーバーに依存」しないため、メイン使用することになるのはフロントエンドで大活躍しているJavascriptです。Angular, React, Vueなどのフレームワークやライブラリを使用したものももちろん含まれます。#### API
全てのサーバーサイドの処理やデータベースアクションは再利用可能なAPIとして抽象化されており、JavaScriptによるHTTPS経由でアクセスされます。#### Markup
デプロイ時に静的サイトの生成ツールやアプリケーションのビルドツールによって事前にビルドされていなければい。## JAMスタックを始めるのは難しいか?
これまで技術構成を表す用語として下記のようなもの
JavascriptのテストフレームワークJestを導入して、非同期関数をテストする
Javascriptのテスト用ツールには、MochaやChaiなどいろいろあります。
今回は多様なテストツールの中でも、Facebook製の**jest**というフレームワークを導入して使ってみます。## jestとは
Jest · ?快適なJavaScriptのテスト
https://jestjs.io/ja/>Jest is a delightful JavaScript Testing Framework with a focus on simplicity.
>It works with projects using: Babel, TypeScript, Node, React, Angular, Vue and more!
Jestはシンプルで、Babel、Typescript、Node、React、Angular、Vueなどに対応しています。
## 前提
今回はTypescriptプロジェクトにjestをインストールする想定です。
## 導入手順
Getting Started · Jest
https://jestjs.io/docs/ja/g