- 1. 初めての Azure Bot Service – Sample code と local test 編 –
- 2. nodenvを使ったNode.jsのインストール手順
- 3. JSON Serverでオブジェクト以外を返す方法
- 4. VS CodeでDocker開発コンテナを便利に使おう
- 5. JSON.Stringifyで循環オブジェクト参照構造体が処理できないのをcycle.jsで処理した
- 6. toioとTwitterAPIを合わせて使ってみた!
- 7. Node.js で Redis のキーの一覧を取得
- 8. Windows 10へNode.jsをインストールする
- 9. Slackの特定投稿をメールで自動送信してみた
- 10. JSのプログラムでincludeするコンパイラ的な何かをかいたお話
- 11. Swagger-codegenを使おうと思ったが、エラーで使えなかった件
- 12. Ubuntu18.04 開発環境作成メモ
- 13. Node.jsを用いた定期ツイートbot作成メモ
- 14. 【文系新卒が】出来立てご飯を食べたかった話【GoogleHome LINE Node-RED】
- 15. LambdaからRedisのデータを取得したい
- 16. Could not find matching close tag for “
- 17. node.jsを10->12に更新したときに起きたエラーと対処内容
- 18. npm を使用して、誰かが書いたコードをリユースする方法
- 19. ネットサークル「TeamKitten」のメンバー管理APIをNodeで書き直した
- 20. NestJsのDB接続周りでハマった話
初めての Azure Bot Service – Sample code と local test 編 –
# はじめに
今回は Azure Bot Service を使用して連続した対話に対応できる Bot を作成します.
Azure Bot Service を初めて使用する人を(できる限り)想定してます.
(熟練の方々からしたら退屈するかと思います.)また,今回は Bot の sample を local test するところまでで
Azure への Deploy については次回行います.(訂正や指摘などあれば,温かく教えていただけると助かります.)
# 私の開発環境
– PC : surface laptop2 (windows 10)
– Editor : VS CodePC に関しては何でも大丈夫です.
Editor に関しては 本記事を参考にされる場合は VS Code をご使用ください.
(後程お話しますが, Azure への deploy 時に VS Code の Extension を使用しています)# Azure Bot Service の概要
Azure Bot Service とは,Microsoft 社のクラウドサービスである Azure のサー
nodenvを使ったNode.jsのインストール手順
#はじめに
これまではNode.jsのバージョン管理ツールとして、
nodebrewを使っていたのですが、
ディレクトリごとにNode.jsのバージョンを分けたくなったので、
nodenvのインストール手順を記録として残します。[nodenv](https://github.com/nodenv/nodenv)はこちらから。
[今回参考にしたQiitaの記事](https://qiita.com/YuukiMiyoshi/items/080b6cde332d8d4e06f3)はこちらから(ありがとうございます)。詳しくは調べてませんが、pyenvと同様の管理方法ができるらしいですね。
今回はHomebrewを使ってnodenvを入れていきます。
# 環境
– MacBook Air (Retina 13-inch 2018)
– OS
– macOS Mojave バージョン 10.14.6
– メモリ
– 16GB
– シェル
– bash#手順
## 前提
`$`はターミナルでの入力を示しま
JSON Serverでオブジェクト以外を返す方法
# JSON Serverで文字列を返す方法
公式の[Getting started](https://github.com/typicode/json-server#getting-started)をもとに、
/profileにリクエストが来た場合、nameの値を文字列として返却する方法を紹介する。
文字列として返したい箇所には、**”type”: “string”**を記載している。“`json:db.json
{
“posts”: [
{ “id”: 1, “title”: “json-server”, “author”: “typicode” }
],
“comments”: [
{ “id”: 1, “body”: “some comment”, “postId”: 1 }
],
“profile”: { “type”: “string”, “name”: “typicode” }
}
“`以下のように、JSON Serverをモジュールとして使用することで、上記内容を返却する前に後処理を行え
VS CodeでDocker開発コンテナを便利に使おう
# はじめに
– ローカル環境で開発し、Linux環境にデプロイしてテストするのが面倒
– Dockerを使っていい感じに開発環境を作りたい
– しかし色々設定や構築が面倒そんな方のためにDockerコンテナを用いた開発環境をVS Codeから便利に構築、運用できる拡張機能「Remote-Containers」の使い方のご紹介です。
# この拡張機能の素晴らしさ
VS Codeの拡張機能「Remote-Containers」はコンテナ内でVS Codeを立ち上げ、ホストマシンのVS Codeと通信させることであたかもローカル環境で開発しているような操作感でコンテナ内開発が行えるというものです。
詳しい構成は公式ドキュメントに図があります。
![](https://code.visualstudio.com/assets/docs/remote/containers/architecture-containers.png)
(https://code.visualstudio.com/assets/docs/remote/containers/)また、複数の開発環境をV
JSON.Stringifyで循環オブジェクト参照構造体が処理できないのをcycle.jsで処理した
#概要
https://qiita.com/saitoeku3/items/9e9a608e53029d541a8f
と同じエラーにあったので、cycle.jsで処理したサンプルコードを紹介するよというお話##cycle.js
https://github.com/douglascrockford/JSON-js/blob/master/cycle.js##インストール
“`
npm install json-cyclic
“`##サンプルコード
“`
//import
const decycle = require(‘json-decycle’).decycle;
const retrocycle = require(‘json-decycle’).retrocycle;
……
//文字列に変換
receiveNewAcString = JSON.stringify(receiveNewJson, decycle());//JSONオブジェクトに変換
receiveNewAc = JSON.parse(receiveNewAcString, retr
toioとTwitterAPIを合わせて使ってみた!
# toio.jsとTwitter APIを合わせて使ってみた
久しぶりの記事投稿。今回は[toio](https://toio.io/#four-attracts)をJavascriptで制御するのとTwitterAPIを合わせて使っていく。
## toioとは
toioとはソニーインタラクティブエンタテインメントより発売されているロボットトイである。詳しくは公式サイトを見てほしいが、子供から大人まで楽しめるモノになっている。公式から[toio.js](https://github.com/toio/toio.js)というNode.js(サーバサイドで動くJavaScript環境)のライブラリが公開されているので今回をそちらを利用していく。## 今回やること
toioの最大の特徴は主役であるデバイスのキューブ(下図)の光学センサーを用いて、付属のマットやシールに施されている特殊印刷を読み取り、キューブの絶対座標やIDを取得できる点だ。
Node.js で Redis のキーの一覧を取得ライブラリーのインストール
“`bash
sudo npm install -g redis
“`“`js:redis_list.js
#! /usr/bin/node
// —————————————————————
// redis_list.js
//
// Jan/17/2020
//
// —————————————————————
console.error (“*** 開始 ***”)
//
const redis = require(“redis”)
const client = redis.createClient(6379,’localhost’)client.on (“error”, function (err)
{
console.log (“Redis connection error to ”
+ client.host + “:” + clien
Windows 10へNode.jsをインストールする
# 概要
– Node.jsをNode.jsのサイトからダウンロードしてインストールします。
– Node.jsの利用方法を説明します。# Node.jsのインストール
1. インストーラをNode.jsのダウンロードサイトを開きます。
1. [Node.js – ダウンロード](https://nodejs.org/ja/download/)1. 「LTS版」の《Windows Installer》をクリックしてダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/54727cbc-3a9a-0b19-85d9-891375f9c1a1.png)1. ダウンロードしたインストールファイルをクリックしてインストーラーを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520689/898d4005-c802-4cfc-dda2-6
Slackの特定投稿をメールで自動送信してみた
# はじめに
社内コミュツールとしてSlackが導入され、社内のコミュニケーションが多少なりとも活性化してきました。
SlackのAppやワークフロービルダーを使って既存プロセスを楽にしようと考える人も出てきて、ツールが変われば人も変わるなーと実感しています。そんな中でも依頼は「社内メール」という文化は残っており、最後は誰かがメールを送らないといけません。。。
なのでSlackで簡素化した申請プロセスの申請内容をSlackから社内メールに自動送信するようにしてみました。# 環境
今回は以下の環境を利用しました。Slack(Outgoing Webhook)
Sendgrid
Google Apps Script(Node.js)順番に設定内容を記載します。
# 1.Slack
チャンネルで特定のキーワードに対して反応するOutgoing Webhookを設定します。
Outgoing WebhookはSlackのApp管理ページから「App ディレクトリを検索」で検索できます。## 1-1.設定内容
チャンネル:Outgoing Webhookを動かすチャンネル
JSのプログラムでincludeするコンパイラ的な何かをかいたお話
どうも、フミです。
京都の上のほうから市内に向かう電車の中で書いているので、誤字はお許しください…普段からC系の言語とJavascriptを二刀使いしている皆さん、皆さんはJavascriptをかいていて、あ~、include文使えたらいいのにな…
って思ったことありませんか?いや、いやいや、シンキングフェイスをしたそこのあなた、あなたの気持ちはよ~くわかりますとも!ええ、ええ、そうでしょうね!importを使えばいいだろう!でしょうね!!
使いこなせるのであればいいのですが、importは少し書き方が特殊になる上に、スコープ的にめんどくさいんです(個人の感想です。)
そこで、JSでもinclude文が使えるようになるためのプログラムを作りました!!
5分くおりてぃなので悪しからず…# やったこと
Nodejsを使って既存のファイルを解析し、include文を適用したjsファイルをa.jsとしてカレントディレクトリに出力します。多分コード読んだほうがわかるので…
“`js:cmp.js
const main_file=process.argv[2
Swagger-codegenを使おうと思ったが、エラーで使えなかった件
## 発生した問題
swagger-codegenでnodejs-serverを選択し、モックサーバーを立てようとしたら以下のエラーが出た。“`
Error: Cannot find module ‘./middleware/swagger.router’
“`
パッケージの中を確認すると、確かにswagger.routerがない。
issueが立ってた。パッケージに間違いがあるらしい。
https://github.com/bug-hunters/oas3-tools/issues/17## 解決策
Swagger-codegenのバージョンを下げて、
swagger-codegen@2で対応した。“`bash
$ brew install swagger-codegen@2
“`## 学んだこと
パッケージも間違っていることがある。
npmのサイトにissuesが上がっていることがある。
Weekly downloadsとかが多いものは信頼性が**ちょっと**高い。
Ubuntu18.04 開発環境作成メモ
# how to use
“`
cd ~
chmod +x setup.sh
./setup.sh
“`# setup.sh
“`setup.sh
sudo apt update
sudo apt -y upgrade
sudo apt -y install vim
sudo apt -y install git
sudo apt -y install guake
sudo apt -y install curl
sudo apt-get -y install xsel# pyenv
sudo apt -y install build-essential libffi-dev libssl-dev zlib1g-dev liblzma-dev libbz2-dev libreadline-dev libsqlite3-dev
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo ‘export PYENV_ROOT=”$HOME/.pyenv”‘ >> ~/.bash_profile
echo ‘exp
Node.jsを用いた定期ツイートbot作成メモ
すぐ忘れるのでメモ。
もっと無駄の少ないやり方なんて知りません、、、
#まずTwitterAPIの取得
申請の際の作文はbotにしか使わないという趣旨を書けばすぐに通るはずです。API keyとToken keyが得られれば勝ち。
#ツイート内容のコードを作る
用意するのは`npm i Twitter`と`npm i node-schedule`ツイート
https://yukimonkey.com/js-application/twitter-bot-2/画像ツイート
https://qiita.com/n0bisuke/items/6b269f61152e9f336c35時間指定はNode-scheduleを使う
#Heroku
###アカウント作成タイムゾーンについて、途中で気づいてめんどくさかったのでソースコードの時間を-9hしました。
###Herokuへデプロイ
コマンドはこの記事を参考にしました。
https://qiita.com/daiki7nohe/items/035c39c1e538551b1f6c#git%E3%82%B3%E3
【文系新卒が】出来立てご飯を食べたかった話【GoogleHome LINE Node-RED】
# 事の始まり
僕はご飯が大好きな文系新卒君です。
僕はありがたいことに、家に帰るとご飯が毎日用意されています。
しかし学生時代のように出来立てのホカホカご飯を食べれる機会は減ってしまいました。
そう…社会人は学生とは違い帰る時間がバラバラ。
帰る時間を連絡しても、1日中ケータイを触ってるわけじゃないのでご飯の完成にラグが起きてしまう。…..だったら帰宅時間を教えることのできるシステムを作ればいいじゃないか!!
## 全体図
どうすれば帰宅時間を知らせることができるか考えた結果、
**「物理的」**に知らせるのが一番じゃないかと考えました。
![100.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469819/93452af2-a96c-4513-4276-248d6403e395.png)こんな感じで実装すれば、ラインメッセージと自宅へ音声送信両方が実現ができるはず!
## 実装
それでは実装していきますよ!!
事前準備は4つ– Node-REDのインストール
– LINE
LambdaからRedisのデータを取得したい
# 使用するもの
– Lambda
– Redis## 私の環境
Node 12系DockerでLamdaを用意しています。方法については、以下の記事を参考にしてください。
https://qiita.com/gdtypk/items/78b6a76dc9f212296c89Redisも同様にDockerで起動しています。
redis:4.0## 困ったこと
Node.jsは非同期で動作するので、そのあたりが苦労した。## コード
“`javascript
const redis = require(“redis”);
const Promise = require(‘bluebird’);// 接続情報
const config = {
host: ‘redis’,
port: 6379
};let client = null;
let value = “”;
const key = “key”;exports.handler = async (event, context) => {
try {
/
Could not find matching close tag for “<%="のエラーメッセージ
node.jsのエラーコード
Could not find matching close tag for “<%=" 意味 “<%=“. に合うタグが見つかりませんでした。
node.jsを10->12に更新したときに起きたエラーと対処内容
表題通りの記事です。
これからnode.jsを10->12に更新する方の助けになれば幸いです。## 確認環境
* Ubuntu: 18.04.3 LTS
* node.js: 10.16.0、12.14.1
* ビルドツール: gulp (後述しますが4系へのアップデートが必須でした)## やったこと(全体像)
* [n](https://www.npmjs.com/package/n) をつかってローカル環境のnode.jsを10->12に更新 (参考: [nodeとnpmのバージョン更新方法](https://parashuto.com/rriver/tools/updating-node-js-and-npm))
* `npm ci`して、出てきたエラーを潰す
* firebaseの更新
* node-sassの更新
* `npm run build`して、出てきたエラーを潰す
* gulpを3系->4系へ移行## エラー1 (firebaseの更新により解消)
最初はイージーケースから。#### 事象
`npm ci`したところ、大量(体感3分)の
npm を使用して、誰かが書いたコードをリユースする方法
## npmで誰かが書いたコードを使用する
NPM(Node Package Manager)は、誰かが書いたコードを使用できる便利な管理システム。
自分で1から作るんじゃなくて、誰かが書いたコードを使用できるなら、それをリユースして無駄な時間を削減しようっていう考え方を元に作成された管理システム。
https://www.npmjs.com/
## npm を使用するまでの手順
今回は intro-to-node のフォルダ内のindex.jsというファイルでnpmを使用できるようにします。
### npm を初期化する
コマンドラインでちゃんと intro-to-node フォルダに移動しているか確認してください。
ネットサークル「TeamKitten」のメンバー管理APIをNodeで書き直した
[TeamKitten](https://teamkitten.tk)というインターネット上のサークルのリーダーをやっている[TinyKitten](https://tinykitten.me)です。
最近goa(v1だったかな)で書いていたメンバー管理用APIをNode.js(NestJS)で書き直したことと、エコシステムについて書いていきます。
**晩酌中に書いてるので普段以上に文が意味不明になってるかと思いますがご容赦ください。**
## そもそもなぜ移行したか?
いままでgoaというGolangで書いたDSLをよしなにSwaggerと実装テンプレートに落とし込んでくれるすぐれものを使っていました。が、
**突然のアップデートでgo getすらできなくなる**
という事態が発生ししばらく安定して動くコードで騙し騙しで動かしていました。
しかし、APIにバグが見つかりどうにも現行コードベースでは修正できないと判断し移行した次第です。## goaをアップグレードすればよかったのでは?
それもそうなのですが、goa自体にそれほど固執がなかったのと、チーム内にGolangを書け
NestJsのDB接続周りでハマった話
# 何を作成する?
Nest.jsで環境ごとにデータベースの接続先を分けるために,接続情報を実行環境の環境変数から非同期で取得し作成する.
# 環境
– Node.js v12.14.1
– Nest.js v6.7.2
– TypeORM v0.2.22
– Postgresql v11.6# 実装ログ
### 必要最小限の実装
参考)[Nest.js Document > TECHNIQUES >Database](https://docs.nestjs.com/techniques/database)
##### ライブラリインストール
TypeORM, Database Driver (Postgresql)をインストールする.
“`
$ npm install @nestjs/typeorm typeorm pg
“`##### DB接続情報を定義
**app.module.ts**にデータベースの接続情報を定義する.
“`typescript
import { Module } from ‘@nestjs/common’;
im