- 1. Google Photosからランダムな1枚の画像を取得できるようにする
- 2. obniz feat.BAIKIN-MAN!
- 3. node.jsでHIITのTimerを作った
- 4. LINE Botに格言を表示
- 5. CHIRIMENをNode.jsで使用してみる⑵ ー GPIO編 ー
- 6. @google-cloud/connect-firestoreで保存されるセッションデータに作成時刻を追加する。
- 7. Chrome-driver のアップデート
- 8. Azure Functions と LINE Notify の組み合わせ(Node.js を利用、ポータルで開発)
- 9. Node.jsのバリデーター「Ajv」で独自formatを作る(カスタムバリデーション)
- 10. nodejsのバージョン管理ツールVoltaを使ってみた
- 11. detaにNodeJSで入門(ほぼ自分用メモ)
- 12. TeamViewer IoTのAPIをNode.jsから触ってみたメモ #iotlt
- 13. npmでモジュールと同時にTypeScriptの型情報もインストールする
- 14. Firebase Authのカスタムクレームをターミナルから簡易に設定する
- 15. Reactのcreate-react-appの後npm startでエラー
- 16. GoogleAPIライブラリを使わずにGoogleアカウントでログインできるようにする
- 17. 【基礎】discord.js v13 でボットを作る ~コマンド発展~
- 18. React-Native でBlockchain SymbolのSDKを利用する
- 19. 【基礎】discord.js v13 でボットを作る ~コマンド作成~
- 20. 【基本】discord.js v13 でボット作成
Google Photosからランダムな1枚の画像を取得できるようにする
前回の投稿 [GoogleAPIライブラリを使わずにGoogleアカウントでログインできるようにする](https://qiita.com/poruruba/items/0f99400d178c4497f79b) で、とりあえず、Google Photos APIにアクセスする準備として、Googleアカウントでログインできる環境を作りました。
今度は、ログインしたアカウントのGoogle Photosの画像リストを取得して、ランダムに選択した画像を取得できるようにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261826/56364c9a-89ec-5654-9097-a9c6a9d4323a.png)
ソースコードもろもろは前回同様以下にあります。
poruruba/GooglePhotosGallery
https://github.com/poruruba/GooglePhotosGallery
#Google Photos APIを利用できるようにする
obniz feat.BAIKIN-MAN!
##パパの目論見##
うちの次女はアンパンマンが大好きでバイキンマンが大嫌いな典型的な2歳児なのですが、
ガチャポンで出てくるのは、決まってバイキンマンだったりします:joy:
今回の企画はバイキンマンを使ったおもちゃを作り、
娘に~~好きになってもらおう~~バイキンマンを克服してもらおうというものです。逃げる者を追いたくなるのは人間の性でしょうから、近づいたら逃げるバイキンマンを作ります。
###名付けて、「BYE-BAIKIN-MAN!!」###
obnizを手に入れたので、いざトライ!##試作品##
前進。壊れたように動く。#protoout #obniz pic.twitter.com/ORmN5oxNyI
— TAKA (@taka_xedge) October 25, 2021
超振動距離センサとサーボモーターを組み合わせて、動力にしたいと考えました。
この超振動を使えば、地面を叩いてやつらは動くはずである!これは期待できそうだ!
##完成品「BYE-BAIKIN-MAN?」
https://twitter.com/taka_xedge/status/14528
node.jsでHIITのTimerを作った
フィヨルドブートキャンプのプラクティスでnpmを自作しました。
せっかくなのでqiitaで公開させてもらおうと思ったので、勇気を出して書かせてもらってます。「もっとこうした方がいいんじゃない?」などのご意見がありましたらコメントしてもらえると嬉しいです!
## どんなnpmを作ったのか
作ったnpmは、最近流行りのトレーニング手法である**HIIT(High Intensity Interval Training)のタイマー**です。> [話題の筋トレ「HIIT」とは?](https://www.s-re.jp/magazine/health/102/)
HIITとは、「High Intensity Interval Training(高強度インターバルトレーニング)」の略で、負荷の高い運動と小休憩を繰り返すトレーニング法のこと。限界まで体を追い込むことで、常に脂肪が燃焼しやすい状態をキープし、体脂肪減少と筋肉増量効果を得るものです。**実際に作成したnpmはこちらで確認できます↓**
– npm:[hiit_timer](https://www.npmjs.com/p
LINE Botに格言を表示
[前回](https://qiita.com/tomosukesan/items/738468d8e6fd1576f615)の記事ではobnizに格言を表示しました。
今回は格言を表示してくれるLineBotを作成しました。
##流れ
まずはこちらの記事を参考にLine Botを作ります。
おうむ返しまで完了させます。https://qiita.com/n0bisuke/items/ceaa09ef8898bee8369d
`server.js`を変更するので一度、`control + C`で`node server.js`を終了させます。
mylinebotフォルダの直下で
`npm i axios`を実行します。そうすると`package.json`の中に`axios`が追加されます。
`server.js`ファイル内の`’use strict’`の次の行あたりにAPIを叩くための呪文`const axios = require(‘axios’);`を記載。
コード終わりの方の`//実際に返信の言葉を入れる箇所`のところに表示させたいAPIの情報を記載。
全
CHIRIMENをNode.jsで使用してみる⑵ ー GPIO編 ー
## はじめに
本記事では、複数回に分けてCHIRIMENコミュニティが提供しているnpmパッケージnode-web-gpioとnode-web-i2cを使用してNode.jsからGPIOとI2Cを制御するために私が実施した方法とそのサンプルコードを記載した備忘録になっています。
今回は[前回の記事](https://qiita.com/okojon/items/58726940ef51d1c4a74c)に引き続きExamplesにあるGPIO ExamplesのコードをNode.jsから実行可能にする方法について説明していきます。## コードの主な違い
Webブラウザ版とNode.js 版でのコードの主な違いについて説明します。– navigator()関数がNode.jsでは使用不可、記述する必要がないため削除する。
– sleep()関数がNode.js には存在しないため、使用する場合は適宜実装する必要がある。
– その他、HTML下では動作するがNode.js下では動作しない記法を変更する必要がある。
ex)下記GPIO-Buttonなどの”ledPort.w
@google-cloud/connect-firestoreで保存されるセッションデータに作成時刻を追加する。
# まえがき
GAEでセッション管理にFirestoreを使うという内容のガイドがGoogleから公開されています。
[Firestore でのセッション処理 | Node.js | Google Cloud](https://cloud.google.com/nodejs/getting-started/session-handling-with-firestore?hl=ja)非常にわかりやすいのですが気になる事が一つ
> Connect-firestore は、古いセッションや期限切れのセッションを削除しません。Google Cloud Console でセッション データを削除するか、自動削除戦略を実装できます。セッションに、Memcache や Redis などのストレージ ソリューションを使用すると、期限切れのセッションが自動的に削除されます。流石にコンソールから手作業で削除するのは面倒くさいので、古いセッションを自動で削除するようにしたい所。
要するにCloud MemorystoreやCloud SQLを使ってほしいということらしい。
しかしConnec
Chrome-driver のアップデート
# 環境
“`bash
$ node –version
v15.3.0$ npm list chromedriver
app@1.0.0 \app
└── chromedriver@2.46.0
“`
* Google Chrome バージョン: 95.0.4638.54(Official Build) (64 ビット)
* [Selenium](https://www.selenium.dev/ja/documentation/)# npm run e2e 実行時にエラーになる
“`bash
$ npm run e2e> app@1.0.0 e2e
> node test/e2e/runner.jsStarting selenium server… started – PID: 80376
[Login] Test Suite
======================Running: Login
{ parser: “babylon” } is deprecated; we now treat it as { parser: “babel
Azure Functions と LINE Notify の組み合わせ(Node.js を利用、ポータルで開発)
この記事は、[Azure Functions](https://azure.microsoft.com/ja-jp/services/functions/) に HTTPリクエストを送ると、LINEアプリに通知が来る([LINE Notify](https://notify-bot.line.me/ja/) を利用)という仕組みを軽く試したものです。
Azure Functions周りの開発や設定は、[Azure のポータル上](https://portal.azure.com/)で行いました。
## 手順の概要
今回の手順は、おおまかには以下のとおりです。– LINE Notify のトークンを取得
– Azure のポータル上で Azure Functions を使えるようにする
– Azure Functions でのコーディング前の準備
– [axios](https://www.npmjs.com/package/axios) をインストール
– 環境変数を設定
– Azure Functions でのコーディング## 実際に進めていく
### LINE
Node.jsのバリデーター「Ajv」で独自formatを作る(カスタムバリデーション)
# 概要
ある時、typescriptで作成する入力フォームのバリデーションをしていて困ったことになった。
入力した値を、どうしても文字列の状態で上限値チェックしなければならなくなった。
具体的には、unixtimeが上限を超えないかどうかをチェックしなければならないのだが、値は文字列の状態で受け取り、また文字列の状態でレスポンスしなければならない。使用していたバリデーション用のライブラリがAjvで、色々と調べたら独自のバリデーションができることを見つけたので、備忘録として残しておく。
# 標準の文字列判定
普通に文字列判定をしたいだけであれば、以下で事足りる。“` typescript
import Ajv from “Ajv”const ajv = new Ajv()
// 検証スキーマを定義
const schema = {
type: ‘object’,
properties: {
timestamp: {
type: ‘string’,
},
},
};const timestamp = “2147483647”
nodejsのバージョン管理ツールVoltaを使ってみた
# Nodejsのバージョン管理ツール
googleトレンドを見ると、最近voltaが来ている感じ、、。
![スクリーンショット 2021-10-25 23.47.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/712534/d480bf2d-79dd-f536-5b85-825027ee4687.png)**githubのスター数比較**
– [Node.js管理ツールの更新頻度とスター数を比較してみた](https://qiita.com/tora_oba/items/8f8b7d3e5fb62bc96a3f)# Voltaとは
>- Speed ⚡
– Seamless, per-project version switching
– Cross-platform support, including Windows and all Unix shells
– Support for multiple package managers
– Stable tool installa
detaにNodeJSで入門(ほぼ自分用メモ)
# deta (baas)
なんかこれが欲しかったけど今まではなかったもの感が否めない最高なBaas(?)。
無料&クレカなし&簡単。満足。最高。– データベース(NoSQL)
– Faas (lambdaとかFirebase functions みたいなやつ)
– ストレージこれらが**本当にお手軽に**使える。
大切なことなのでもう一度言う。
**本当にお手軽に**使える。
## インストールもろもろ
### CLIインストール
“`
# Windowsの方 (PowerShellで実行してください!)
iwr https://get.deta.dev/cli.ps1 -useb | iex# macの方
curl -fsSL https://get.deta.dev/cli.sh | sh“`
自分はWindowsユーザなのでmacは試せていません。エラーなどあったらごめんなさい。
### パッケージインストール
“`
npm init -y
yarn add deta
“`## 共通部分
いろいろインポートしておく。
“`
TeamViewer IoTのAPIをNode.jsから触ってみたメモ #iotlt
LTネタとして1時間くらい調べたくらいの雑観です。時間かけてないので間違いが多いかもしれません。
[TeamViewer IoT](https://teamviewer-iot.com/)ってサービスがあるんですね、TeamViewerは学生時代にリモートデスクトップで使ったことあった気がする。そのソフトのIoT…?ほうほう。
[IoTLTのグループでコメントをもらった](https://www.facebook.com/groups/IoTLT/posts/1914940855343686/)ので触ってみました。
> ちなみに次回のIoTLTは11/16です!
> https://iotlt.connpass.com/event/228734/また、こんなの作ったよー話はこちらのスライドに載ってます。
> ![](https://i.gyazo.com/e3733fff50250ba675d26c7f25465348.png)
> https://speakerdeck.com/n0bisuke2/teihuaruwang-rewen-ti-number-iotl
npmでモジュールと同時にTypeScriptの型情報もインストールする
#準備
– `typesync`をインストールする“`bash
$ npm i -D typesync
“`– `package.json`のscriptsに以下を記述する
“`json
“scripts”: {
“postinstall”: “typesync”
},
“`
Firebase Authのカスタムクレームをターミナルから簡易に設定する
サービスの管理者でも、全権限がある人や、アルバイトで一時的に入った人など、細かく権限を設定したいものです。
Firebase Authのカスタムクレームという機能を使えば、細かい権限設定が行えます。https://firebase.google.cn/docs/auth/admin/custom-claims?hl=ja
しかし、その登録はAdmin SDKを介するので、**NodeのRepl環境で行うのは、認証情報の初期化がややこしい**です。
個人的にかなりつまづいたので、共有させていただきます。
# localのfunctionsディレクトリでNodeを起動
まず、ターミナルで`functions/`のディレクトリに移動してNode Replを起動します。
“`bash
cd XXX/functions/
node
“`
# サービスアカウントの秘密鍵を作成1. Firebase Consoleのプロジェクトの設定に移動する
Reactのcreate-react-appの後npm startでエラー
# 結構しょーもないことに時間食ってしまったので・・・
全く仕組みを理解していない自分が悪く、調べ方も悪かったので起動するまでの段で時間を食ってしまってテンションが下がったので恥を書き込んでおく反省投稿です・・・。Windows上でReactの勉強をしようとNode.jsの最新版をインストールし、本を見ながら、
“`
npx create-react-app my-app
“`
とかした後、“`
npm start
“`したらエラーが出て起動できなかったと。
エラーはこんなのです。
“`
:\Users\user\reacttest\my-app>npm start> my-app@0.1.0 start c:\Users\user\reacttest\my-app
> react-scripts startThere might be a problem with the project dependency tree.
It is likely not a bug in Create React App, but something you n
GoogleAPIライブラリを使わずにGoogleアカウントでログインできるようにする
Google Photosの画像をESP32のLCDに表示するのが最終目標ですが、まずは、Googleアカウントでログインできるようにするところを先行して投稿します。
前回の投稿 [Instagramにアップロードした画像をランダムにESP32に表示する]( https://qiita.com/poruruba/items/c25caeb77bbd1074c986) では、日ごろ定期的に上げているInstagramの画像を、ESP32に接続したLCDにフォトフレームとしてランダム表示していました。
今回は、Google Photosのアルバムをフォトフレームにします。
Google Photosにすると、スマホと同期できますし、Google Nest Hubにも表示できるため、都合がよかったためです。思いのほか、手間取ったので、手順を書き留めておきました。皆様の参考になれば幸いです。
2回に分けて説明していきます。* その1:Googleアカウントでログインできるようにします。
* その2:Google Photosからランダムな1枚の画像を取得できるようにします。以下
【基礎】discord.js v13 でボットを作る ~コマンド発展~
## 前書き
[前回](https://qiita.com/hitori_yuu/items/3b6c02fac5c610f0615a) はコマンドを作成しました。
今回はそのコマンドに情報を入れたり、コマンドを個々のファイルに分けたりしたいと思います。##開発環境
[前回](https://qiita.com/hitori_yuu/items/3b6c02fac5c610f0615a) と変わりません* Windows10
* npm 7.6.3
* node 17.0.1 (最小要件:16.6.0)
* discord.js 13.2.0## コーディング
[前回](https://qiita.com/hitori_yuu/items/3b6c02fac5c610f0615a) 作成したファイル(`deploy-commands.js`)の`commands`の部分を下記のものに書き換え + 書き加えます。“`diff_javascript:deploy-commands.js
– const { SlashCommandBuilder } = require(‘
React-Native でBlockchain SymbolのSDKを利用する
https://jp.symbolplatform.com/
iOS,Androidアプリにブロックチェーンの機能を追加したいと思い、ブロックチェーンSymbolを選定し開発を開始しました。SymbolのSDKはJavascript/Typescriptが用意されていますが、そのままではReactNative環境では動かすことが出来ず、以下に対応したことを纏めます
モバイルアプリにブロックチェーンを組み込んでいきましょう
# 環境
– ReactNative@0.64.2
– Expo@43.0.0
– Symbol-SDK@1.0.1
– Windows10(Macの方は適宜読替下さい)https://github.com/symbol/symbol-sdk-typescript-javascript
# Expoでプロジェクトを作成(or React-Native-CLI)
Expoでプロジェクトを作成し、Ejectします。EjectせずにExpoのまま実行しようとしても、linkが実行出来ないので失敗します。“`console
expo init symbol_
【基礎】discord.js v13 でボットを作る ~コマンド作成~
前回の記事 -> [【基本】discord.js v13 でボット作成](https://qiita.com/hitori_yuu/items/02eae8b14dc6a9c91c0d)
[2021年10月23日時点]
## 前書き
[前回](https://qiita.com/hitori_yuu/items/02eae8b14dc6a9c91c0d) はコーディングから起動までを行いました。
今回はさっそくコマンドを作成していきます。
今回参考にさせていただいたサイト -> [Creating commands](https://discordjs.guide/creating-your-bot/creating-commands.html#registering-commands) – Discord.js Guide## 開発環境
[前回](https://qiita.com/hitori_yuu/items/02eae8b14dc6a9c91c0d) と変わりません
* Windows10
* npm 7.6.3
* node 17.0.1 (最小要件:16.6.0)
*
【基本】discord.js v13 でボット作成
初投稿です。あたたかい目で見てくださると嬉しいです。
[2021年10月23日時点]
## 開発環境
* Windows10
* npm 7.6.3
* node 17.0.1 (最小要件:16.6.0)
* discord.js 13.2.0## v13の主な変更内容
* `Node.js` のv16.6.0を前提
* `Discord APIv9` に接続
* `discord.js` 本体と `@discordjs/voice` が分割(個々にインストールしなければならない)
* スラッシュコマンドをサポート
* `ClientOptions` の必須
* `message` が非推奨になり、 `messageCreate` が推奨される
* タイマー関連のメソッドが削除
* Intetnsを指定する際の `ALL`、`PRIVILEGED`、`NON_PRIVILEGED`は削除
* `Channel#startTyping`、`stopTyping` 等は削除
など…
詳しくは下記のサイトへ
[v13の主な変更箇所](https://scrapbox.i