- 1. docker-lambda – AWS Lambda の開発効率を爆アゲする
- 2. 初心者がGitHubでJavaScriptのコードを書き換えるまでにやったこと
- 3. React & バックエンド処理の画面をとりあえず公開するまで
- 4. 【IBM Watson】AIが性格を推定してくれるPersonality Insigthtsデモサイトの構築方法 (Node.js編)
- 5. 単一リポジトリ内の複数のpackageで共通の型を使い、さらに型をpackage化
- 6. firebase データ取得にfor文を使いつつ、その中で非同期処理する方法
- 7. MNISTのデータベースをJSONで得る
- 8. 全世界の夜更かしさんに送る、Google Home(mini) + Nature Remo + 鯖(Synology NAS) + Node.jsでつくる夜更かし防止装置のすヽめ(google-home-notifier未使用)
- 9. Macにnode.jsとnpmをinstallする
- 10. pm2でdeployしようとするとbash: npx: command not foundで失敗する
- 11. 正規表現を使った処理で、いい感じの場所に区切り文字を入れる
- 12. LINE Payのオンライン決済を実装する前に知りたかったハマりどころ
- 13. [JavaScript][ES2017]0埋め(ゼロパディング)をするシンプルな記法(padStart, padEnd)
- 14. Node.jsの”Error: Cannot find module ‘cfn-response'”の解決方法
- 15. 超短納期開発Tips vol.1 – JEST駆動開発で辛い試行錯誤フェーズを素早く心穏やかに終わらせる
- 16. Webサービスのe2eテスト 〜メール認証編〜
- 17. Elastic Beanstalkで、Node.js+expressアプリを動かそう [ハマりポイント説明]
- 18. 花粉症の重症度を判定し自分に合う市販薬を教えてくれるLINE Botの作成
- 19. 【Node.js + Sheets API v4】Googleスプレッドシートを読み書きする
- 20. Auth0ラボ – その2 : Calling an API
docker-lambda – AWS Lambda の開発効率を爆アゲする
## 要約
– AWS Lambda の Function を実装するときは **docker-lambda** を使用すると開発スピードが上がる。
– Docker コンテナが提供されているので、導入に手間がない。
– AWS Lambda の Function 実行だけでなく、 Deploy package の作成にも便利。## はじめに
AWS Lambda を使用することが増えてきたのですが、イチイチ AWS アカウントの設定や、 AWS Lambda へのデプロイが手間だと感じていました。そこで、ローカル開発環境上で実行できる方法を探したところ、 [docker-lambda](https://github.com/lambci/docker-lambda) なるものの存在を知ったのでお試ししてみました。
## 概要
本記事の概要は次の通りです。
### 書くこと
– docker-lambda の導入方法
– docker-lambda の実行方法(Node.js版)
– AWS Lambda へのデプロイ用パッケージを作成する方法### 書かないこと
初心者がGitHubでJavaScriptのコードを書き換えるまでにやったこと
笹澤さんのところでプログラミング開発の練習をさせていただいている、茨城大学の浅野です。
GitHubなどは全くの初心者であった自分が、GitHubでJavaScriptのコードを書き換えるまでに至った流れを書いておきます。
可能な限りGitHub初心者の人にも伝わる言葉で書くことを目標に頑張ります。
#1. そもそもGitHubって何って話から
GitHub(ギットハブ)って何だろうというところから始めます。GitHubとは…
「GitのHub」です。
怒らないでください。
でもこの認識結構大事みたいで、GitとGitHubってどうやら違うみたいなんです。
##1.1. Gitとは「みんなで編集しやすいシステム」
仕切り直して、Gitって何だろうというところから始めます。Gitとは「みんなで一つのファイルを編集しやすいようにしてくれるシステム」のことです。
ファイルでは説明しづらいので、みんなで小説を書くことを考えてみます。
##1.2. 小説をみんなで書くことで考えるGit
Aさん、Bさん、Cさんの3人で一つの小説を書きあげることを考えます。Aさんが導入
React & バックエンド処理の画面をとりあえず公開するまで
# やりたいこと
Reactを使ったフロント側と、バックエンドとの連携処理を最低限動かし、Herokuで公開するまでをメモします。
千里の道も一歩から。# 全体イメージ
ローカルでの全体イメージは以下です。
Reactはフロントエンドのフレームワークなので、サーバサイドのバックエンド処理は別物として分離してしまったほうが分かりやすそうです。
![SnapCrab_NoName_2019-12-26_23-11-19_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114715/238c701e-0bcc-5551-16fc-4bf2cedd8fa6.png)# 手順
## 前提
以下ができていることを前提にします。– [Node.js](https://nodejs.org/en/download/)がローカルにインストールされていること
– [Github](https://github.com/)と[Heroku](https://jp.heroku.com/)のアカウントを持
【IBM Watson】AIが性格を推定してくれるPersonality Insigthtsデモサイトの構築方法 (Node.js編)
皆さん、こんにちは。戸倉彩です。
今回は今すぐ使えるIBM Watson Personality Insights APIのサービスを使用した、テキストやTwitterのツイートを分析するWebアプリケーションを開発する方法を紹介します。パブリッククラウドのサービスを使用しますが、無料の範囲で作成することができるので、自己学習やコミュニティのハンズオン等の題材に迷った時には役立てていただければと思います。
# IBM Watson Personality Insights (性格分析)とは
**Personality Insights**は、IBMが提供しているIBM Watsonサービスの一つで、テキストから筆者のパーソナリティ(ビッグ・ファイブ、価値、ニーズ)の3つの特徴をAIから推測します。詳細については**[IBM Watson Personality Insights 公式サイト](https://www.ibm.com/watson/jp-ja/developercloud/personality-insights.html)**をご覧ください。# Personal
単一リポジトリ内の複数のpackageで共通の型を使い、さらに型をpackage化
# 概要
小規模のサーバーサイド・フロントエンドのように、
マルチパッケージを含む構成のリポジトリにおいて・・・“`
root
├── functions
│ └── package.json // サーバーサイドの package
└── hosting
└── package.json // フロントエンドの package
“`以下を満たすためのメモです。
– functions, hosting から単一の型定義を使う
– `root-types` package として、型を export する
– ここでexportした型を、外部のプロジェクトからも使えるようにする## 最終形態
上記の条件を満たすリポジトリの最終形です“`
root
├── package.json // root-types package
├── types
| ├── dist // root-types としての配布物
| ├── src // root-types の実装
| | ├── index.
firebase データ取得にfor文を使いつつ、その中で非同期処理する方法
この記事は、どっかからAPIをとってきたデータを、firebaseのデータ群と比較参照する場合、
非同期処理とfor文をどうやって組み合わせれば良いかというところにいつも引っかかっていてしまっていたので、その備忘録です。## 環境
– Node.js
– Cloud firestore## どんな問題なのか
firestore にあるcollection からデータを全てとってくる場合、下記の例のように、`forEach`を使ってとってくるのが普通です。“`js
var query = db.collection(‘contents’).get();
query
.then(function(snapshot) {
snapshot.forEach(function(childSnapshot) {
… // childsnapshot の処理
});
});
“`しかし、この`forEach`文の中、つまり、`childsnapshot`の処理の中に、時間がかかる関数を呼び出していて非同期処理をする必要があるとなった場合、
**`f
MNISTのデータベースをJSONで得る
MNISTのWebサイトで配布されている手書き数字のデータは、バイナリ形式です。これを、JSONデータに変換する方法をメモしました。
http://yann.lecun.com/exdb/mnist/
DBをダウンロードして、解凍します。
“`js:mnistdb2json.js
// MNIST手書きデータをJSONに変換する for Node.jsconst CONV_LIMIT = 5000 // 小さなJSONを作成する場合
// サンプルファイルの保存先を指定
var DIR_IMAGE = __dirname + “/image”;// モジュールの取り込み
var fs = require(‘fs’);// 変換処理
convertToJSON(“train”);
convertToJSON(“t10k”);function convertToJSON(basename) {
console.log(“convert: ” + basename);
// 各種ファイル名を決定
var file_images = basename
全世界の夜更かしさんに送る、Google Home(mini) + Nature Remo + 鯖(Synology NAS) + Node.jsでつくる夜更かし防止装置のすヽめ(google-home-notifier未使用)
# はじめに
ついつい夜更かしをしてしまうの方に向けにGoogle HomeとNature Remoを組み合わせて**「指定した時間以降、部屋が明るければGoogle Homeより早く寝るように警告を発する装置」**をNode.jsで実装する作例をご紹介します!!
市販品を組み合わせるだけなのでお手頃に作れます!!(たぶん)ちなみに似たような作例はよくありますが、多くの記事では**「google-home-notifier」**と呼ばれるGoole Homeに簡単にプッシュ発話をさせるライブラリが使われており、google-ttsの仕様に依存していたり、バグが多かったりして動かないことが多いのでなるべく根本ロジックから実装する方法でやっていきます。
### 構成
![プレゼンテーション1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57833/38a65fd7-f35b-6cb2-aad3-db97d179cdbb.png)# 必要なもの
### Nature Remo
所謂スマートリ
Macにnode.jsとnpmをinstallする
# 目的
MACにnode.jsとnpmをinstallする# 環境
MAC OS Catalina 10.15.2で実施# 作業ログ
“`bash:bash
# xcodeのinstall (gccのinstallに必要)
$ xcode-select –install# gccのinstall (nodebrewのinstallに必要)
$ brew install gcc# nodebrewのinstall
$ brew install nodebrew# nodebrewでinstallされるファイルが格納されるdirectoryを作成
$ mkdir -p ~/.nodebrew/src
$ nodebrew install-binary stable# currentの表示されるのが使うversion
$ nodebrew list
v12.14.0current: none
# stableを使うと指定
$ nodebrew use stable
use v12.14.0# node.jsのversion確認
$ node -v
v1
pm2でdeployしようとするとbash: npx: command not foundで失敗する
## 原因
– bash_profileにnvmの設定を記述していた
– bash_profileは対話モードじゃないと読み込まれない
[参考](https://qiita.com/dark-space/items/cf25001f89c41341a9fd#bash_profile%E3%81%A8bashrc%E3%81%A7%E5%B7%AE%E3%81%8C%E5%87%BA%E3%82%8B%E3%82%BF%E3%82%A4%E3%83%9F%E3%83%B3%E3%82%B0)
– しょうがないので/usr/local以下のnvmとは関係ない古いnpmが呼ばれる→npxコマンドが存在しない
## 現状
ecosystem.json“`json
“deploy” : {
“production” : {
“user” : “dev”,
“host” : “**********”,
“ref” : “origin/master”,
“repo” : “**********”,
“path” :
正規表現を使った処理で、いい感じの場所に区切り文字を入れる
# モチベ
繋がってしまった文字列でいい感じのところに区切り文字を入れたいことってありますよね(?)
自分の場合は繋がってしまった時間帯の表記を、1区間ごとにカンマで区切りたいなーっていうタイミングがありました。
処理前 `13:00~15:0017:00~22:309:00~23:00`
処理後 `13:00~15:00,17:00~22:30,9:00~23:00`区切りたいところに特定の文字があれば、JSだったら[replace()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/replace)とか[split()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/split)を使って簡単に区切り文字を入れ替えたり、配列にしたりできます。
# まず思いついた方法
今回の場合、上記なような考え方ができないため他の方法をとる必要があ
LINE Payのオンライン決済を実装する前に知りたかったハマりどころ
LINE Payのオンライン決済を実装する機会があったので主なハマりどころを共有します。
# Transaction IDが丸められる
決済要求のためにRequest APIを呼ぶ必要があるのですが、このAPIから返ってくるTransaction IDは19桁の数値で返ってきます。
> 決済要求の結果として受け取った取引番号(19桁)
> https://pay.line.me/documents/online_v3_ja.html#confirm-api19桁の巨大な数値なので、そのまま受け取ってしまうと丸められてしまう可能性があります。
その後のConfirm APIにTransaction IDを渡す必要があるのですが、丸められていると当然違う値なので「決済要求情報が存在しません。」となり決済が出来ません。
丸められていることに気づくまでかなりの時間を要しました。文字列で返すなどアップデートで対応してほしいところです。JavaScriptで書かれたLINE Payのライブラリがあるのですが、こちらではlossless-jsonを利用してこの問題に対応しているようです。
[JavaScript][ES2017]0埋め(ゼロパディング)をするシンプルな記法(padStart, padEnd)
## 概要
ググるとまず`slice()`を使う方法が出てくるが、ES2017が使える環境ならば`padStart()`の方が良い。Node.jsならば8.0.0から使用可能。
## 使い方
一つ目の引数にパディング後の桁数、二つ目にパディングに使う文字(デフォルトは半角スペース)を指定する。“`javascript
> ‘123’.padStart(5)
‘ 123’> ‘123’.padStart(5, ‘0’)
‘00123’> ‘123’.padStart(10, ‘*’)
‘*******123’
“`右側を埋める`padEnd()`もある。
“`javascript
> ‘123’.padEnd(5, ‘0’)
‘12300’
“`## ドキュメント
* https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/padStart
* https://developer.mozilla.org/ja/docs/Web/Jav
Node.jsの”Error: Cannot find module ‘cfn-response'”の解決方法
# Error: Cannot find module ‘cfn-response’
Lambda-Backedカスタムリソースにおいて、Node.js 8がEOLとなるため、コードはそのままでランタイムの指定だけをNode.js 12.xに変更したところ、このようなエラーが発生しました。“`エラーメッセージ
Response:
{
“errorType”: “Runtime.ImportModuleError”,
“errorMessage”: “Error: Cannot find module ‘cfn-response'”,
“trace”: [
“Runtime.ImportModuleError: Error: Cannot find module ‘cfn-response'”,
云々
“`Node.js 8では以下の指定で同じ階層のファイルrequireできるのですが、
“`Node.js8:
const response = require(‘cfn-response’);
“`Node.js 12では、パスを明記する必
超短納期開発Tips vol.1 – JEST駆動開発で辛い試行錯誤フェーズを素早く心穏やかに終わらせる
# はじめに
今年も[ヒーローズ・リーグ](https://hl2019.we-are-ma.jp/)に参戦させて頂きました。例年通り素敵な体験をさせていただけた思う一方、戦績としては決勝ステージには進出しつつも、何も賞を獲得することが出来きませんでした。ここ数年何かしらの賞を頂いていたことが、いつのまにか自分のアイデンティティになっていたんだなぁと思ってしまった次第です。
この寂しくも悔しい気持ちを沈めたいという想いをこめつつ、散っていったアイデア達を作るうえで学習したことを言語化してアウトプットすることで、次の挑戦への糧とすると共に、来年の締め切り当日になんらかのアイディアを思いついてしまう多くの方が諦めずに応募まで進める助けにができば幸いです。# 超短納期開発Tipsって何?
[ヒーローズ・リーグ](https://hl2019.we-are-ma.jp/)応募やハッカソン参加など、比較的短時間でアイディアを練ってプロトタイプを仕上げる必要があるときの開発Tipsです。ハッカソンTipsと読み替えても差し支えありません。
具体的な規模と速度間としては、**[こういうも
Webサービスのe2eテスト 〜メール認証編〜
## はじめに
この記事は [Goodpatch Advent Calendar 2019](https://qiita.com/advent-calendar/2019/goodpatch) の22日目です.私が現在担当しているWebサービスの開発において、Puppeteerを用いたe2eテストを用いてQAの効率化を図っています。
この記事では Node.js と Gmail API を使い、アカウント作成時のメール認証を自動化する方法について共有したいと思います。注:この記事ではPuppeteerには触れません!
## 環境準備
メールをNode.jsで取得するためには、Gmail APIの設定と、各種ファイルの取得・生成が必要です。
基本的には[Node.js Quickstart](https://developers.google.com/gmail/api/quickstart/nodejs)に従って作業します。### フォルダの準備
あらかじめ、各種ファイルを保存するフォルダの準備しておきま
Elastic Beanstalkで、Node.js+expressアプリを動かそう [ハマりポイント説明]
#? はじめに
Lambdaの方が使い勝手がいいので、あまり使わないElastic Beanstalkですが、いざ使おうと思うと、いくつか躓くポイントがあるので、その点も含めて、Node.js+expressで作ったサンプルアプリを動かすまでの手順を紹介します。##? Elastic Beanstalk
https://aws.amazon.com/jp/elasticbeanstalk/
Java、.NET、PHP、Node.js、Python、Ruby、Go、Dockerなどで作られたプログラムをデプロイ、実行する環境。
実態としては、EC2の上にApacheやNginx等のサーバーを立てて提供してくれる。#? 作業手順
大きくは以下の手順になります。1. Node.js+expressでアプリを用意する。
2. ソースコード+node.jsモジュールをZIPファイルにまとめる。
3. Elastic Beanstalk実行環境構築、デプロイ。
4. 実行。##? Node.js+expressでアプリを用意する
今回は、`express myapp`コマンド作成さ
花粉症の重症度を判定し自分に合う市販薬を教えてくれるLINE Botの作成
##概要
プログラムの勉強を始めて半年ほどの開業医です。そろそろスギ花粉の季節ですね。
2月の中旬ごろからスギ花粉は飛散開始します。花粉症の方はその前にお薬を準備しておくといいですね。医療費削減のため一部の花粉症の薬が今後医療機関で処方できなくなるかもしれないといわれています。そうすると市販の薬で対応しなけらばならない花粉症患者さんが少なからず出てきそうです。そのような時に患者さんが困らないように、自分の花粉症の重症度が分かったり、自分に合った市販の花粉症薬が探せるサービスがあれば良いかと思い今回「花粉症の重症度を判定し自分に合う市販薬を教えてくれるLINE Bot」を作ってみました。
以前作ったWEBアプリはこちら
[花粉症の重症度が分かるWEBアプリの作成~Auth0でユーザー認証~](https://qiita.com/doikatsuyuki/items/b79378f6d7a30bbe5e87)
[自分に合った市販の花粉症薬を探すアプリの作成]
(https://qiita.com/doikatsuyuki/items/69b95169cb4d152d8cd7)
【Node.js + Sheets API v4】Googleスプレッドシートを読み書きする
# はじめに
Node.jsでGoogleスプレッドシートを読み書きする。使うもの:
* Node.js v10.16.0
* Google Sheets API v4
* Visual Studio Code# Google Sheets API を使えるようにする
[Node.js Quickstart | Sheets API | Google Developers](https://developers.google.com/sheets/api/quickstart/nodejs)
上記サイトを参考に、まず Google Sheets API を使えるようにする。「Enable the Google Sheets API」のボタンを押してしばらく待つと、Google Cloud Platformに`Quickstart`という名前のプロジェクトが作成され、Client IDやシークレットと共に設定ファイルをダウンロードできるようになる。
![](https://qiita-image-store.s3.ap-northeast-1.amazonaw
Auth0ラボ – その2 : Calling an API
# はじめに
この記事はAuth0のハンズオンラボで[Auth0 Identity Labs](https://auth0.com/docs/identity-labs)を元に作成しています。Node.js + Express.jsで作成されたSample ApplicationとAPIを利用して、Auth0から払い出された認可情報を元にApplicationからAPIを呼び出します。[Auth0ラボ – その1 : Web Sign-In](https://qiita.com/hisashiyamaguchi/items/0e5d764c267eacc50769)が完了していることが前提となっているため、未だの方は[こちら](https://qiita.com/hisashiyamaguchi/items/0e5d764c267eacc50769)からお試しお願いします。# 検証環境
– **OS** : `macOS Catalina 10.15.2`
– **node** : `10.15.3`
– **npm** : `6.13.2`
– **Git** : `2.23.