- 1. LINE Messaging APIのテンプレートメッセージでチャットBOTを作る
- 2. Docker composeでstrapi+PostgreSQL開発環境を作る
- 3. Node.jsとSocket.ioで簡易的なチャットを実現させる
- 4. フロントエンジニアにおくるstrapiことはじめ[2019/12版]
- 5. SlackのWebhookをプロキシする仕組みを作る
- 6. Next.jsでcookieをシンプルに扱うことができるライブラリ nookies を紹介
- 7. create-react-appで作ったアプリがhttpsだと動かない
- 8. Go、Node.jsのプログラム間でRPC通信をする
- 9. TwilioのAuthyの2FA(電話番号認証)機能をnode.jsから使う
- 10. lambdaのNode.jsバージョンを上げるときはログのフォーマット変更にも注意
- 11. Temporal dead zoneと死の秘宝
- 12. 金曜の夜になったら会社の Slack 通知を自動でミュートしたい
- 13. Node.jsからSendGridを使ってメールを送る
- 14. reveal.jsの環境構築で躓いた話(windows 10)
- 15. 続・実録 Node-REDノード作成 24時
- 16. Slackで匿名で投稿できるチャンネルを作ろうとしたら少しだけ苦労した話
- 17. Vue.jsのコンポーネントのimport文をdynamic importに変換するcliコマンドを作りました
- 18. Firebase Admin SDKで一般的なWebサービスの構成にFirebase Authenticationを使った認証処理を組み込む。
- 19. macへnode.jsのインストール
- 20. ObnizとAWS LambdaとLINEを使って家のエアコンをスマート化した話
LINE Messaging APIのテンプレートメッセージでチャットBOTを作る
この記事は室蘭工業大学データサイエンス研究室の [DSL Advent Calendar 2019](https://qiita.com/advent-calendar/2019/muroran-it-dsl) 16日目の記事です。M1の @romorimori が担当します。
#はじめに
LINEが提供している[Messaging API](https://developers.line.biz/ja/services/messaging-api/)には様々なメッセージタイプのテンプレートが用意されていて、個人でも簡単にチャットBOTを作ることができます。この記事では確認テンプレートやポストバックアクションなどの機能を使って、晩ご飯をレコメンドしてくれるチャットBOTを作っていきます。
##完成品
Docker composeでstrapi+PostgreSQL開発環境を作る理想の形になっていないのでそのうちブラッシュアップする…
## フォルダ・ファイル構成
“`
.
├── app //空フォルダ
├── db
│ └── pgsql-data //空フォルダ
└── docker-compose.yml
“`## docker-compose.ymlを用意
2019年12月時点では下記が入ります。
Node.js : v13.2.0
PostgreSQL : psql (PostgreSQL) 10.11“`yaml:docker-compose.yml
version: ‘3’
services:
postgres:
image: postgres:10-alpine
container_name: “test-postgres-db”
ports:
– 5432:5432
environment:
POSTGRES_PASSWORD: secret
volumes:
– ./db/pgsql-data:/var/lib/postgresql/d
Node.jsとSocket.ioで簡易的なチャットを実現させる
# 簡易的なWebチャットを実装する
## はじめに
この記事は[SLP KBIT Advent Calender 2019](https://adventar.org/calendars/4214)の16日目の記事である。
Socket.ioを用いた開発をまだやったことがなかったので今回はそういった開発を行っていきたいと思います。
かなり前に作ったので実装過程をちょっと忘れてしまいました…。##環境
・Windows 10(64bit)
・Node.js : v10.15.3##準備
この開発ではNode.js、Socket.ioの他に、ローカルサーバーを簡単に立ち上げれるExpressを使うのでもしインストールしていない人は以下のコマンドでインストールしてみましょう。“`
$ npm install express
“`#実装
##サーバをたてる準備“`js:create.js
var express = require(‘express’);//expressを使用
var app = express();
var http = require(‘htt
フロントエンジニアにおくるstrapiことはじめ[2019/12版]
## Strapi
[strapi](https://strapi.io/)はNode.js製のオープンソースHeadlessCMSです。3.0.0-alphaからbetaになったことで、導入手順などが変わったようなので、現時点での最新版の導入方法のメモになります。[公式のクイックスタートガイド](https://strapi.io/documentation/3.0.0-beta.x/getting-started/quick-start.html)
## 下準備
– Node.js
– データベース(文中ではPostgresQL)ちなみに下記環境で書いています。
– macOS Catalina 10.15.1
– Chrome バージョン: 79.0.3945.79strapi公式の求める3.0.0-beta時点での各種バージョン
“`
# Node.js
Node.js >= 10.x
NPM >= 6.x# Database
MongoDB >= 3.6
MySQL >= 5.6
MariaDB >= 10.1
PostgreSQL >= 10
SQLi
SlackのWebhookをプロキシする仕組みを作る
Slackはさまざまなカスタマイズ機能を持っているのが魅力のツールです。例えばBotを作ったり、カスタムのslash commandを作ったりすることで、プラットフォームの拡張ができます。
Slack Botの作り方はいくつかあるのですが、Slackのリッチな機能を最大限に引き出すには、SlackからのWebhookを受けることが必要になってきます。すなわち、ボタンなどが付いたリッチなメッセージの投稿は難しくないのですが、投稿したメッセージのボタンやメニュー操作は、SlackからWebhookの形で通知される仕組みになっています。
※ この辺りの仕組みの詳細については、まとまっている記事がいくつもあるので省略します。
– [Slack Botの種類と大まかな作り方](https://qiita.com/namutaka/items/233a83100c94af033575)
– [slackで単純なボタン付きメッセージを送る](https://qiita.com/masakabe/items/c47fc98e939475594842)Slackは当然publicなサービスなの
Next.jsでcookieをシンプルに扱うことができるライブラリ nookies を紹介
# Next.jsでcookieを扱うのは大変
Next.jsなどのサーバーサイドレンダリング(以下SSR)をしているフレームワークでcookieを扱うのは面倒くさいですよね。
その理由の一つとして、同じコードでもSSRの場合とクライアントでレンダリングしている場合で挙動が違うということがあります。
例をお見せしましょう#### クライアントでレンダリングしている場合
`console.log(document.cookie); // accessToken=test1234;`#### SSRの場合
`console.log(document.cookie); // ReferenceError: document is not defined`### 原因
クライアントサイド(ブラウザ)でレンダリングしている時は、ブラウザに保存されているcookieにアクセスできるが,
SSRの時はブラウザに保存されているcookieにアクセスできません。### SSRの時にcookieを扱うには
SSRでcookieの情報はここに入っています“`index.tsx
cons
create-react-appで作ったアプリがhttpsだと動かない
# 問題点
create-react-appで作成したアプリケーションにhttpsでアクセスすると、以下のようにエラーとなりました。
`SecurityError: Failed to construct ‘WebSocket’: An insecure WebSocket connection may not be initiated from a page loaded over HTTPS.`
![d1fb5456080f4fbb895c367aae298593.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114715/999ad720-7d4a-0fa2-9caf-5c28f6c2afeb.jpeg)
httpだと問題なく動きます。
create-react-appで作ったアプリを試しにHerokuに上げてみたときに、この問題を踏みました。
# 原因
以下でIssuesが上がっていました。
https://github.com/facebook/create-react-app/issues
Go、Node.jsのプログラム間でRPC通信をする
#概要
`gRPC`を使用して、Go、Node.jsのプログラム間でRPC通信をします。
クライアント側をGo、サーバ側をNode.jsが担当します。環境
MacOS Catalina: 10.15.1
Go: 1.13.4
Node.js: 10.15.3#クライアント(Go)の作成
クライアント側のディレクトリを作成します。“`
$ mkdir grpc-test-go
“`
クライアント側のディレクトリ構成は最終的に以下のようになります。“`
$ cd grpc-test-go
$ tree
.
├── bridge
│ ├── bridge.pb.go
│ ├── bridge.proto
│ └── go.mod
├── client.go
└── go.mod
“`
###.protoファイルの作成protoファイルを作成して、仕様を定義します。
型に`repeated`をつけると配列になります。
[公式ページ](https://developers.google.com/protocol-buffers/docs/proto3)を参
TwilioのAuthyの2FA(電話番号認証)機能をnode.jsから使う
呼び出し方は本家のAPI使う方法や[先人のnpmパッケージ](https://www.npmjs.com/package/authy)使う方法とかあるが、今回は先人のnpmパッケージを利用してみる。
>ちなみにTwilioでは2つの電話番号認証機能があり、どちらを使うかはケースバーケースのようです。
## Authy API
Authyが提供するAPIはSMS送信以外での2FAに対応していますが、今回はSMS送信による認証を試してみます。
## 準備
### Twilioに登録
Twilioに登録して利用できるようにしておく。無料枠もあるがすぐに消費してしまいます・・・。
### Authyのプロジェクト作成とAPIの取得
左メニューからAuthyを選択肢、新規プロジェクトを作成、設定にてPRODUCTION API KEYを取得します。
## APIの機能(利用の流れ)
利用方法は簡単で、主な利用APIは下記の2つ。
* verification_start()でSMS経由でCode送信
* verification_check()でCode検証あとは、
lambdaのNode.jsバージョンを上げるときはログのフォーマット変更にも注意
# バージョンでログ出力が違うから注意
2019年末にlambdaのNode.js 8.10がEOLを迎えます。
ログ出力の部分で微妙に動作が違うので念の為確認してからバージョンアップしましょう。
特にログ出力をライブラリで行っている場合、そちらの実装がどうなっているか見ておいた方が良いです。
kibanaとかでパースするロジックに変更が必要になるかも。## Node.js 8.10
### 関数コード
“`
exports.handler = async (event) => {
// TODO implement
const response = {
statusCode: 200,
body: JSON.stringify(‘Hello from Lambda!’),
};
// デフォルトのテンプレートにconsole.log入れただけ
console.log(`”This is Node.js 8.10 log.”`);
return response;
};
“`### Exe
Temporal dead zoneと死の秘宝
ChromeやNodeJSのJavascriptコンソール画面で動作確認する場合、
以下の様に間違ってエラーになってしまうことがあります。“`js
const obj = JSON.parse(“”); // JSON形式じゃない文字列を指定
// Uncaught SyntaxError: Unexpected end of JSON input
“`JSON形式の文字列で指定するところに空文字を指定した場合ですが、“Uncaught SyntaxError“となってしまいます。
じゃあ間違えたのだからと訂正して再度実行すると
“`js
const obj = JSON.parse(“[]”); // JSON形式の文字列を指定
// Uncaught SyntaxError: Identifier ‘obj’ has already been declared
“`
既に宣言済みなのでエラーとなります。それでは、既に宣言済みなら変数が存在するのだと思って参照してみると
“`js
console.log(obj);
// Uncaught Re
金曜の夜になったら会社の Slack 通知を自動でミュートしたい
# はじめに
「休日は会社の Slack をミュートしておきたい!」という要望は普通にあると思うのですが、
2019年12月15日現在、**Slackには特定の曜日に自動で「おやすみモード」にする機能はありません。**そこで色々と試してみたのですが [Zapier](https://zapier.com)(または [IFTTT](https://ifttt.com/))で [Slack API](https://api.slack.com) を叩く方法が無料かつ最も簡単にできたので、
本記事ではその手順を解説していきます。# 手順
まず大まかにやることをまとめると、
– Slack 側で API を利用できるよう設定する
– IFTTT / Zapier 側で「時刻が金曜の21時であるとき」「Webhook / JavaScriptから API を叩く」アプレットを作るの2つです。
### Slack側の設定
Slack 側では Web API の利用を許可し OAuth トークンを取得する必要があります。
そのためには Slack App を作成しなくてはならな
Node.jsからSendGridを使ってメールを送る
久しぶりにSendGridを使ってみたのでメモ。
## SendGridの注意点
* ユーザ名はメールアドレスではなく、代理店である構造計画研究所から独自に振られたxxx@kke.comというやつ
>久しぶりですっかりID忘れてました。
## 準備
### API KEYの取得
利用するにはAPI KEYが必要です。到達率を上げるためにはドメイン認証やらいろいろやったほうがいい。
API KEYはSettingsの中にある。![スクリーンショット 2019-12-15 14.58.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/55188/fdff7b9a-05f1-fa44-0642-111a32d43109.png “スクリーンショット 2019-12-15 14.58.57.png”)
### 作業場の準備
“`
mkdir sendmail
cd sendmail
touch index.jsnpm init -f
npm install –save @s
reveal.jsの環境構築で躓いた話(windows 10)
# はじめに
最近、私の所属しているサークルでLT会をやっていこうという流れがあったので、Markdownからスライドを作れる「reveal.js」について紹介しました。
そのためにreveal.jsをセットアップしようとしたのですが、公式ドキュメントでは3行だったのが1時間以上かかってしまったので、その備忘録です。## Markdownとは
markdownは簡単な記法で記事などの文章を構成出来るマークアップ言語です。
qiitaやはてなブログなどで記事を上げている諸兄には馴染み深いものかもしれません。### 記述例:
“`
# 見出し1
## 見出し2
— 線
**強調**
“`
### 実行例:
# 見出し1
## 見出し2
—
**強調**## reveal.jsとは
かっこいいスライドを簡単に作れるフレームワークです。
htmlに書き込んで作りますが、ちょちょっと設定すると、Markdownを書くだけでそれがスライドになります。
パワーポイントをマウスクリックしながら無限に時間を溶かすことも、揃ってないデザインを先輩に怒られることもなくなります。
続・実録 Node-REDノード作成 24時
こんにちは、ポキオです。
[IoTLT Advent Calendar 2019](https://qiita.com/advent-calendar/2019/iotlt)と[enebular Advent Calendar 2019](https://qiita.com/advent-calendar/2019/enebular)の15日目の記事です。
~~手抜きです、ごめんなさい。~~![ポキオ Node-RED ノード作成](https://lh3.googleusercontent.com/ErN3bJigHpElEQ0-tnk_k8az9XIHRdR9Px3nJQtUuFvu37sn5TPTy7sWekD2Y4nF237SV0m6sk4exQjKquAtBqp2XLLjY1SKxZrI9VGXTY8IFydWAv6_kDZOFEtBkMmyCG5rf739ypg=s600 “ポキオ Node-RED ノード作成”)
## tl;dr
– 京急ノードを作ってみました
– Node-REDのノードライブラリに反映されるまで時間がかかることがあります
– 一度公
Slackで匿名で投稿できるチャンネルを作ろうとしたら少しだけ苦労した話
# はじめに
研究室でSlackを導入してから2年くらい経ちました。
話題でチャンネルを分けれるので非常に便利です。雑談用のチャンネルもあるのですが、特定の人ばかり話していて盛り上がりに欠けます。
「匿名ならみんな発言してくれるかも」と思ったのがきっかけで、匿名用のチャンネルを作りました。Googleで検索したら3年前のQiitaの以下の記事がヒットしました。
[「超簡単にSlackで匿名の意見を投稿できるようにする」 @shibukk](https://qiita.com/shibukk/items/8675e7684dba0476906c)**「超簡単」**とありますが、記事通りにやっても上手くいかず、少しだけ苦労しました。
BotKitのバージョンが上がって中身が変わっていたのが原因でした。修正した部分を自分の備忘録としてまとめておきます。
実行環境はUbuntu16.04。
node.js, javascriptが動けばどこでも大丈夫なはずです。# SlackのBotの取得
ここは本家と一緒です。
[「Botを追加する」](https://qiita.c
Vue.jsのコンポーネントのimport文をdynamic importに変換するcliコマンドを作りました
Vue.jsのコンポーネントのimportをdynamic importに変換するcliコマンドを作りました。
特定のディレクトリ配下のvueファイルを全てdynamic importに変換します。ソースはこちらで公開しています。
https://github.com/harhogefoo/dynamic-import-converter“`vuejs:通常のcomponentのimport文
“`“`vuejs:dynamic_importに変換
Firebase Admin SDKで一般的なWebサービスの構成にFirebase Authenticationを使った認証処理を組み込む。
# 概要
[Firebase #2 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/firebase_2)の14日目の記事です。[Firebase Authentication](https://firebase.google.com/docs/auth?hl=ja)を使用した記事は数多くあるのですが、`一般的なWebサービスのサーバーサイドでの認証にFirebase Authenticationを利用する`記事が見当たらなかったので、サンプル実装を書いてみました。
## 今回のFirebase Authenticationの想定ユースケース
– 自前でのユーザー管理は行いたい
– 認証部分のみFirebase Authenticationを導入し、Googleアカウントとの紐付けを行いたい。認証処理の実装の省略したい。## システム構成図と認証フロー
今回作成するFirebase Authenticationを組み込んだWebアプリのシステム構成を図にしました。![認証-Page-2.jpg](
macへnode.jsのインストール
macにnode.jsをインストールする時に、3記事くらい参考させていただいてやっとできたので、自分ができたやり方をメモしておく。
##まず、インストールの手順としては以下になる。
1.homebrewのインストール
2.nodebrewのインストール(一瞬詰まった)
3.Node.jsのインストール(ここで結構詰まった)自分は、特に手順3の環境パスを通すところで詰まった。
##1.homebrewのインストール
####まずは、すでにインストールされているか確認。“`
$ brew -v
-bash: /usr/local/bin/brew: No such file or directory
“`上記のメッセージが表示されている場合は、インストールされていない。
####インストール
https://brew.sh/index_ja.html に書いてあるスクリプトを実行する“`
/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/masterObnizとAWS LambdaとLINEを使って家のエアコンをスマート化した話
# きっかけ
僕の家は最寄駅から徒歩20分くらいありまして、その道を毎日歩いて通勤しています。春先や秋などは良いのですが、真夏日だと蒸し暑い中で家と会社を往復しています。
会社に行く時は電車に乗れさえすればエアコンが効いてて快適です!ただ帰りの場合は、家についても中は暑く、時には外よりも蒸し暑い時もあります。
どうせなら駅に着いた瞬間エアコンをつけて、駅から家まで歩いている間に涼しくなってくれればいいのに・・・# 作ったもの
LINEから「冷房」などとメッセージを送信すると、家のエアコンの冷房スイッチをONしてくれるbotを作成しました。![out.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329420/8b5a576c-a018-be7c-9338-5026622d0820.gif)
LINEなので当然、ローカルネットワークではなくインターネット回線越しです。なので家の外でも会社でもどこでも、家のエアコンをつけたり消したりできます!
これ作ったのほんとは夏頃なのですが、冬用に暖房ON機能関連する記事
OTHERカテゴリの最新記事
-
- 2024.09.19
JavaScript関連のことを調べてみた
-
- 2024.09.19
JAVA関連のことを調べてみた
-
- 2024.09.19
iOS関連のことを調べてみた
-
- 2024.09.19
Rails関連のことを調べてみた
-
- 2024.09.19
Lambda関連のことを調べてみた
-
- 2024.09.19
Python関連のことを調べてみた