- 1. LINE BotをBunで外部依存モジュールを使用せずに作ってみる – 2024年1月版
- 2. Lambda@EdgeをNode.js 14から18に上げるのに苦労したメモ
- 3. 【Nuxt3 + Python】独学でYouTubeのクローンを作ってみたら意外とうまくいった件
- 4. NodeJS入門: イベントループとlibuv編
- 5. Typescript Express 上で ES Module を使う
- 6. MusicBrainz APIと使ってアーティストの人気の曲名を返してもらう
- 7. Playwrightのコード生成機能がすごい
- 8. PlaywrightでJavaScriptの動的サイトをスクレイピング
- 9. SvelteKitにおいてストアを利用したセッション管理を行う svelte-kit-sessions
- 10. AWS EC2でNode.jsを自動起動
- 11. 指定したファイルに指定した文字列を追記するJavaScript
- 12. JestでCannot find module が出たら依存モジュールのexportsフィールドにdefaultフォールバックを書け
- 13. LINE BotをNode.jsで外部依存モジュールを使用せずに作ってみる – 2024年1月版
- 14. nodejsを最新にしよう(WSL)
- 15. asdf: No such file or directoryとなって、asdfが使えなくなった
- 16. Azure Functions Node.js Programming Modelでv3→4に移行してみた
- 17. ESModuleとCommonJSについてまとめてみた
- 18. アニメのデータが使いたくて外部APIを使う話
- 19. GCP Cloud Load Balancing機能
- 20. Node.js + Express で作ったアプリケーションに Node-RED を組み込んでみた話
LINE BotをBunで外部依存モジュールを使用せずに作ってみる – 2024年1月版
先日書いた記事をベースにBunのAPIに書き換えた版を作ってみます。
https://qiita.com/n0bisuke/items/0ab7b3b38557384370ed
## BunとNode.jsの互換性もあるけど
前提としてBunのランタイムはNode.js互換性があるので、何もしなくてもそのまま(少なくとも今回のコードは)Node.jsで書いたコードも動きます。
そんなに調べてませんが昔は互換性が微妙って話もちらほら聞いてましたけどv1.0になって良くなったのか、シンプルな内容だからなのかBunのネイティブAPIを使って書き換えられる部分を書き換えてみたいと思います。
## Bun.serve()とBun.CyptoHasher()
主にサーバー部分とHA256アルゴリズムでハッシュ化する部分の2箇所を書き換えてます。
### サーバー部分 – Bun.serve()
ドキュメントみるとこんな感じで書くみたいですね
“`js
Bun.serve({
fetch(req) {
const url = new URL(req.url);
Lambda@EdgeをNode.js 14から18に上げるのに苦労したメモ
# 概要
サポート終了の関係で既存のNode.js 14のLambda@Edge関数をNode.js 18にあげるにあたってランタイムを変えるだけでは上手くいかない場合があったので備忘します。# AWS SDKが読み込めない
`const aws = require(“aws-sdk”);`としていた部分が`Cannot find module ‘aws-sdk’`というエラーになってしまう。原因はAWS SDK v2がNode.js 18のランタイムには同梱されなくなり、v3をインポートする記述への変更が必要になったため。
この関数ではSSMを使っていたので、
`import { SSMClient, GetParameterCommand } from “@aws-sdk/client-ssm”;`
のように変更# ES modules構文に変更
上記のためES modules構文を有効にするため、拡張子も`index.js`から`index.mjs`に変更。https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/nod
【Nuxt3 + Python】独学でYouTubeのクローンを作ってみたら意外とうまくいった件
## はじめに
どうもこんにちは、Yamu(@yamu_studio )です。とある案件でNuxt3に触れる機会があり、主にVue2を扱ってきた自分をステップアップさせるために今回は、勉強としてYouTubeのクローンをつくってみました。
この記事では、
– Nuxt3でWebアプリの作り方
– ページ遷移やコンポなどの使い方
– PugとBulmaの使い方
– FastAPIの使い方
– APIでデータのあれこれを解説していますのでよかったらみていってください!
NuxtやTypeScript、フロントエンドエンジニアの方はぜひ読んでほしい
– 何かプログラミングで作ってみたいという人
– 勉強中の人
– 暇してるエンジニアさん
___## できるやつの概要
![スクリーンショット 2023-12-05 22.34.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515412/bcd85a66-4fe0-b248-bcf0-d9d339d12b5
NodeJS入門: イベントループとlibuv編
NOTE: この記事は、弊社内のオンボーディング資料を公開したものです。
* [他言語学習者向け:JavaScript/ECMAScript文法速習リファレンス](https://qiita.com/awa2/items/78c3619b6c418bcc107b)
* [他言語学習者向け:JavaScript/ECMAScriptプロトタイプ及びクラス入門](https://qiita.com/awa2/items/7858b72c683622323cdc)
* [NodeJS入門: イベントループとlibuv編](https://qiita.com/awa2/items/33920620041bad92f698)## NodeJSについて学ぶべき要素
この記事では、NodeJSに関してより具体的に学ぶ資料です。1. イベントループとlibuv
1. V8エンジンとメモリライフサイクル
1. コアモジュール# イベントループとlibuv
NodeJSの革新性は、従来、*シングルスレッドでwhileループを回してIO待ちを行っていた処理* を *JavaScriptの世界
Typescript Express 上で ES Module を使う
Node.js Express + Typescript へ ES Module を導入しようとした所、動かすのに随分手こずりました。正確にはある程度動かすのは簡単だったのですが型補完等を考慮すると推奨の方法だと warning は出るわでこだわった結果時間がかかりました(言い訳
Express + Typescript + ES Module で最終的に組んだ例を掲載します。
## 環境
* package.json の type に module は指定しない
* Express
* Typescript
* ES Module (今回は使おうとしていた [symbol-sdk@3](https://www.npmjs.com/package/symbol-sdk/v/3.1.0) を利用)package.json ですが、 type: “module” を指定するのが正攻法だと思いますが、既存のプロジェクトへの組み込みを想定してここでは指定せずの例で記載しています。
## 準備
“`shell
npm init -y
npm install express ty
MusicBrainz APIと使ってアーティストの人気の曲名を返してもらう
こんにちは、**ウエハラ シンペイ**です。
今回MusicBrainz APIとLINE botを使って
アーティストの人気の曲を教えてくれると作っていこうと思います。# MusicBrainz APIとは?
非営利団体であるMetaBrai
nzによって運営されいる、オープンな音楽データベースサービスだそうです。国内アーティストの情報を形成されていて、今回はこのAPIを試しに触ってみました。![MBlogo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3618353/f3a42471-cfea-7df9-a6ad-f5495870f77b.png)
# MusicBrainz APIは何ができる?
アーティスト、イベント、ジャンル、レーベル、作品など音楽に関係する情報が数多く検索可能でそれをXMLまたはJSON形式で返してくれるもののようです。特に金額は発生せず、API キーもいらないけど、リクエストに返される数には制限があり最大25個とのこと(多分)
[MusicBrain
Playwrightのコード生成機能がすごい
## 概要
今回は、Playwrightのコード生成機能についてご紹介します。
## 前回の記事
前回の記事では、Playwright の紹介と簡単なコード実行をしています。
こちらを前提に進めていきます。https://qiita.com/labeneko/items/a34eb67ad5dcaae94ef5
## コード生成機能
Playwrightを使ってのスクレイピングは、ログインが必要なページなど、一筋縄ではいかないページでもやりたい場合があると思います。
そういうときに、いちいち要素を調べてプログラミングしていては大変です。
Playwrightには、便利なコード生成機能があり、こういう時非常に役立ちます。例えば、ニコニコの自分のアカウントのフォロー数とフォロワー数を取ってみましょう。(他にいいものが思いつかなかった汗)
コード生成機能は、
“`
$ npx playwright codegen https://www.nicovideo.jp/
“`という形で、スクレイピングしたいページのURLを指定します。
そうするとブラウザが開きます
PlaywrightでJavaScriptの動的サイトをスクレイピング
## 概要
年末年始は、Playwrightを使って、JavaScriptの動的サイトをスクレイピングをやっていました。
JavaScriptの動的サイトというのは、ページ表示後にJavaScriptが実行されてページが完成するサイトのことです。
例えば、以下のようなサイトがあった場合
![スクリーンショット 2024-01-10 18.07.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61162/e59ea8c1-97a0-bbd5-eead-5ce908cfdcf7.png)
HTMLが、このようなものであれば、ツールを使わなくても簡単にスクレイピングできます。
(HTMLを取ってきて文字列処理するだけ)“`html
SvelteKitにおいてストアを利用したセッション管理を行う svelte-kit-sessions## はじめに
SvelteKitでのセッション管理のライブラリを探してみると、どうやらCookieにセッション情報を保存するようなものや、ストアがRedisに固定化されているものしかないようだった(探し方が悪いのかもしれないが…)。
個人的には[Express](https://expressjs.com/ja/)での開発経験があり、その時に利用していた[express-session](https://www.npmjs.com/package/express-session)のように自由にストアを選べ、セッション情報はストアに保存するようなセッション管理のモジュールで、SvelteKitでのセッション管理も実現されると望ましいのではと考えていた。
そこで、`svelte-kit-sessions`というストアの利用を前提としたセッション管理モジュールを開発・公開してみたので、今回はそれを利用してどのようにセッション管理を実装できるか?を取り上げたいと思う。
https://www.npmjs.com/package/svelte-kit-sessions
## [sve
AWS EC2でNode.jsを自動起動
# はじめに
Node.jsで作成したWebRTCのSignaling ServerをAWS EC2(Amazon Linux 2023)で自動実行する際に課題に直面しました。
その解決手順を以下にまとめました。
読んでいただいた方が少しでも参考になれば幸いです。# こんな人に読んでほしい
– EC2+Node.jsを使った環境を構築したい方
– AWSを学びたい方# 前提条件
– EC2+Node.js環境が作成済であること# やりたいこと
~~~php:Node.jsの手動実行の例
$ node signaling_server.js
~~~
これをEC2インスタンス起動時に自動実行する。# EC2のユーザーデータ作成手順
①EC2インスタンスを停止する。②EC2インスタンスから「アクション」-「インスタンスの設定」-「ユーザーデータを編集」を実行する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659381/2283633d-e7f1-b235-bc6c-
指定したファイルに指定した文字列を追記するJavaScript
# 指定したファイルに指定した文字列を追記するJavaScript
たくさんのHTMLファイルに、規定の文字列を差し込みたい要望があったので作成。
たとえば、ある注釈テキストのHTMLコードを、たくさんのHTMLファイルに差し込みたい、など。
数ページの対象のファイル数でのみテストしたので、大量だと動作保証できないです。
## 検証環境
* MacOS 13.5.1
* node v14.20.0## JS
“`index.js
const fs = require(‘fs’);
const readline = require(‘readline’);//
// ファイルの存在チェック
// 1: ファイルパス
const isExist = (filePath) => {
let ret = false;
try {
fs.statSync(filePath);
ret = true;
} catch(err) {
ret = false;
throw new Error(“ファイルが見つかりません ” + fil
JestでCannot find module が出たら依存モジュールのexportsフィールドにdefaultフォールバックを書け
## 先に結論だけ
Jestで、依存先のPure ESMモジュールを読み込んでテストしたら
“`bash:Log
FAIL __test__/SphericalRotor.spec.ts
● Test suite failed to runCannot find module ‘@masatomakino/threejs-spherical-controls’ from ‘__test__/SphericalRotor.spec.ts’
> 1 | import {
| ^
2 | SphericalController,
3 | SphericalParamType,
4 | } from “@masatomakino/threejs-spherical-controls”;at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Obje
LINE BotをNode.jsで外部依存モジュールを使用せずに作ってみる – 2024年1月版
Node.jsでLINE Botを作る際に普段は[@line/bot-sdk](https://www.npmjs.com/package/@line/bot-sdk)を使っていますが、外部のモジュールを使わずに書いてみます。
[6年前に書いていた記事](https://qiita.com/n0bisuke/items/56d7ace2193fbc106639)を自分で見ていて色々書き換えられそうな点が多かったので勉強がてら書き換えます。
## 環境
– Node.js v21.2.0
## 先にオウム返しBotの完成コード – コピペ用
ベースとしてLINE Botの作り方みたいな話はこちらの記事でやってる通りです。
https://qiita.com/n0bisuke/items/ceaa09ef8898bee8369d
今回は外部モジュールに依存していないので`npm i`は必要ないです。
通常だと`express`と`@line/bot-sdk`を使うのが一般的です。オウム返しでテキストを簡単に返す部分だけになります。
“`js
const crypt
nodejsを最新にしよう(WSL)
nodejsがv20を要求されているアプリを起動したいので、何も考えずapt-getでinstallしようとしたら
“`
sudo apt install nodejs
sudo apt install npm
“`
ってやっても
“`
node –version
v10.19.0
“`で、ダメだったんだけど、これ単純な手順じゃないのね…。
https://qiita.com/tora_oba/items/2761452fe8c2b0035ba0
に則って、`n`を利用したらいけましたね。ただ、最後に`node -v`を利用しても`bash: /usr/bin/node: No such file or directory`というメッセージがでて上手くいかなくて、VSCode再起動しないとダメだった。これに5分迷った。
## 参考
何故かMacばかりなのね。この界隈
https://www.trifields.jp/how-to-install-node-js-on-ubuntu1804-3544
asdf: No such file or directoryとなって、asdfが使えなくなった
## 背景
asdfを使って環境構築をしていたのだが、ある日、asdfが使えなくなり、`yarn start`などのnodeのコマンドが使えなくなった。## 原因
Homebreでasdfをバージョンアップしたことで、asdfはバージョンアップしたが、asdfのshimが古いパスを参照している可能性があったっぽい。“`terminal:エラー
/Users/hoge/.asdf/shims/node: line 7: /usr/local/Cellar/asdf/0.10.2/libexec/bin/asdf: No such file or directory
/Users/hoge/.asdf/shims/node: line 7: exec: /usr/local/Cellar/asdf/0.10.2/libexec/bin/asdf: cannot execute: No such file or directory
“`ただ、`asdf –version`を実行すると、`v0.13.1`だったので、古いasdfを実行してことがわかる。
## やること
as
Azure Functions Node.js Programming Modelでv3→4に移行してみた
# きっかけ
個人開発で以下の Azure Functions を開発・デプロイし、しばらくの間 GitHub で塩漬けしていました。
| 名称 | 値 |
| ——————————————————————————————————- | ————————- |
| OS | Windows |
| プラン
ESModuleとCommonJSについてまとめてみた
# 背景
現在開発しているPJはフロントエンドをAngular、バックエンドをNode.jsで実装している。Node.jsはTypeScriptで実装している。まだ勉強中の身なので環境構築時には意識したことがなかったが、同じTypeScriptなのにモジュールをインポートしたりエクスポートする際の記述の方法が異なっていたので気になって調べたところ、ESModulesとCommonJSというものに出会ったので、理解を整理するためにまとめる。# ESMoudlesとCommonJSの違い
それぞれの違いについてまとめる。
## 構文の違い
以下のような書き方の違いがある。### ESModules
“`typescript
// モジュールのエクスポート
// moduleA.mjs
export const add = (a, b) => a + b;// モジュールのインポート
// main.mjs
import { add } from ‘./moduleA.mjs’;
console.log(add(3, 5)); // 8
“`### CommonJS
“
アニメのデータが使いたくて外部APIを使う話
# はじめに
自分は10月よりAPPRENTICE SHIP(内定直結型エンジニア学習プログラム)のカリキュラムに2期生として参加しています。
その一環としてチーム開発を行っており、技術情報をまとめることで学習に役立てるよう、記事を作成しております。
# 概要
今回はチーム開発において外部のAPIサービスを利用する必要が出てきたので、情報をまとめております。
具体的には検索候補(オートコンプリート機能)をフロントエンドで実装する手順をまとめました。
## 今回使用させて頂くAPIサービス
### [ANNICT](https://annict.com/)
試聴中のアニメを記録してくれるwebアプリケーションサービスになります。
![スクリーンショット 2024-01-06 16.21.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954214/a6155567-6adc-b936-14d0-8fe4c0d9bf59.png)
(※サーバーの関係か画像が読み込まれなかった)### [Annic
GCP Cloud Load Balancing機能
# GCPのCloud Load Balancingの概要と機能
## 目次
1. [概要](#概要)
2. [機能/詳細](#機能/詳細)
3. [まとめ](#まとめ)## 概要
GCPのCloud Load Balancingは、Google Cloud Platform(GCP)上で提供される負荷分散サービスです。このサービスは、アプリケーションやウェブサイトへのアクセスを複数の仮想マシンやサーバーに均等に分散することができます。これにより、トラフィックの増減に柔軟に対応し、高可用性とパフォーマンスの向上を実現することが可能です。Cloud Load Balancingは、GCP内にデプロイされた複数のリソース間でトラフィックを分散するために使用されます。特定のリクエストに対して最適なリソースへのルーティングを行い、セッションの保持やヘルスチェックなどの高度な機能を備えています。
## 機能/詳細
次に、Cloud Load Balancingの主な機能とその詳細について説明します。### 1. HTTP(S) ロード バランシング
– HTTP(S)プロトコルを
Node.js + Express で作ったアプリケーションに Node-RED を組み込んでみた話
先日、Node.js + Express で作ったアプリケーションに Node-RED を組み込む機会がありましたので、その方法を紹介したいと思います。
Node-RED を触ったのは今回が初めてだったのですが、簡単に組み込むことができました。また、せっかく組み込むことができたので、Node-RED を使って簡単な REST API を作成してみます。
## バージョン
Ubuntu 22.04.3 LTS の中に全てをインストールしました。– Ubuntu `22.04.3 LTS` ※WSL2 を使用
– Node.js `18.18.0`
– Npm `9.6.7`
– PostgreSQL `14.10`
– Node-RED `3.1.3`
– node-red-contrib-postgresql `0.14.0`
– Express `4.18.2`## Node-RED を組み込む
まず最初に、`Node-RED` をインストールします。
“`bash
npm install node-red
“`次に、Node-RED