Node.js関連のことを調べてみた2022年12月31日

Node.js関連のことを調べてみた2022年12月31日
目次

python-shell備忘録

# 初めに
NodejsからPythonを実行えきるライブラリ,python-shellを使い,詰まった点とその解消法を紹介します.
## インストール
“`
npm install –save-dev python-shell
“`
## 基本・仕様
基本的な使い方はこちらを参考に.
公式ドキュメントは[こちら](https://www.npmjs.com/package/python-shell).
[Python-shellの使い方 – Qiita](https://qiita.com/NT1123/items/09aed7b23388190cba23)
[Pythonのprint出力をNode.jsが認識できない問題について – Qiita](https://qiita.com/7315_t/items/aa435464b5b42df90822)

“`javascript:main.js
// PythonShellの宣言
let options ={
“mode”:”text”,
pythonOptions:[‘-u’],
// args:[

元記事を表示

GraphQL サーバー構築(その3. GraphQLスキーマを外部ファイル化する)

id: 72e2f090

## 前回
https://qiita.com/ponchuchu/items/97b119304c6c912ad0bf

## 今回やること
– [x] GraphQLスキーマを外部ファイル化する
– [x] スキーマ読み込み

### GraphQLスキーマを外部ファイル化する

* .graphqlファイルを読み込むのに必要な依存をインストールします。

“`sh:bash
$ yarn add @graphql-tools/graphql-file-loader @graphql-tools/load @graphql-tools/schema
“`

* src/schema.graphqlファイルを作成

“`graphql:schema.graphql
type Book {
title: String
author: String
}

type Query {
books: [Book]
}

type Mutation {
addBook(title: String, author: String): Book
}

元記事を表示

若手エンジニア向け:フルスタックエンジニアになろう

CTO歴20年、10社技術顧問20社以上 CTO社数10社、技術顧問社数20社以上と数々のCTOを歴任してきた森川からの若手エンジニア向けとしての記事です。

# 森川がエンジニアになった経緯
僕は、小学生の頃にプログラミングを始めました。人に話すと凄いとか、変わってるとか言われます。その時の僕は、ゲームが好きでゲームを作ってみたいと思いプログラマーになると心に決めました。今から考えるとゲームがプログラミングによって出来上がってるという事をどうやって知ったのか不思議です笑
父親は、壁塗りの左官屋さんです。母親は、美容師です。プログラミングに関しては全く知りません。当時はインターネットもありませんでしたので本当に不思議です。
ただゲームがやりたくて、自分で作ってみたくて、新聞配達してお金をためてパソコンを買いプログラミングを始めました。
好きなので小学生でも色々と調べてパソコンにたどり着いたんだと思います。その結果、CTOを20年もやれる様なエンジニアに成長する事が出来ました。
そんな僕からするとプログラミングは、日常でもあり難しさ等感じた事はありません。

# 未経験からエンジニアなれ

元記事を表示

GraphQL サーバー構築(その2. Mutation の実装)

# Mutation の実装
## 前回
[ローカルでGraphQL サーバー構築(その1. Apolloを利用したgraphqlサーバー立ち上げまで)](https://qiita.com/ponchuchu/items/93a23d08161e45bfc77f)

## 今回やること
– [x] mutation typeスキーマの定義
– [x] リゾルバの定義
– [x] playgroundでテスト

### mutation typeスキーマの定義
“`ts:index.ts
const typeDefs = `#graphql

(略)

type Mutation {
addBook(title: String, author: String): Book
}

`;
“`

### リゾルバの定義
“`ts:index.ts
const resolvers = {
(略)

Mutation: {
addBook(parent, args: {title:string, author: string}){

元記事を表示

ローカルでGraphQL サーバー構築(その1. Apolloを利用したgraphqlサーバー立ち上げまで)

# やること:
– [ ] graphqlのスキーマの定義
– [ ] データセットの用意
– [ ] graphqlのリゾルバの定義
– [ ] apolloサーバー立ち上げ
– [ ] playgroundでテスト

## graphqlのスキーマの定義
参考: [APOLLO DOCS](https://www.apollographql.com/docs/apollo-server/getting-started)

**Step 1: Create a new project**
“`sh:bash
$ mkdir graphql-server-example
$ cd graphql-server-example
“`

“`sh:bash
$ npm init –yes
Wrote to /home/yuki-kitazawa/practice/graphql-server-example/package.json:

{
“name”: “graphql-server-example”,
“version”: “1.0.0”,
“descript

元記事を表示

AWS CDK – Node.js 18 TypeScript での Lambda 実装

# 前提条件

– IaC は CDK(CDK v2)
– Lambda のランタイムは Node.js 18(拡張子は.mjs)
– Lambda の実装は TypeScript(AWS SDK for JavaScript v3)

# ファイル 構成

`cdk init`で自動生成される構成から多少変更している。
[実践!AWS CDK #7 ファイル分割](https://dev.classmethod.jp/articles/cdk-practice-7-split-file/)を参考に、AWS リソースごとにリソース定義ファイルを分割している。
Lambda のコンパイル用に別途`tsconfig.json`を用意する。

“`
├─ src/
│ ├─ lib/
│ │ ├─ api-gateway/
│ │ │ ├─ handlers/
│ │ │ │ └─ sample-api/
│ │ │ │ └─ index.ts // Lambdaコード

元記事を表示

フロント開発で役に立つ、JavaScriptの関数についてのあれこれ

## はじめに
日々フロント開発やコードレビューを行うなかで、「JavaScriptの関数について改めて復習、整理しておこう」と感じたので、まとめてみました。
フロント開発に関わっている方や、フロント開発を勉強中の方に読んでいただけたらと思います。

## JavaScriptの関数の様々な仕組みや使用方法

### アロー関数

従来の“function“ではなく、“=>“を用いた関数宣言。

– 匿名関数
– 引数が一つの場合は“()“が省略可能
– 単一式の場合は、“{}“や“return“を省略できる

“`js
// 従来の関数
function (a, b){
return a + b + 100;
}

// アロー関数
(a, b) => a + b + 100;
“`

:::note warn
**注意点**
thisやsuperへの結びつけを持たないので、メソッドとして使用することができなかったり、コンストラクターとしても使用することは出来ません。
:::

### オブジェクトのプロパティに関数を入れる

関数はオブジェクトのプロパテ

元記事を表示

サブディレクトリでhuskyを使用する

## TL;DR

– huskyの実行ファイルはGitの`core.hooksPath`で設定される
– Gitにはそもそもhooks機能があり、huskyはその実行ファイルを可視化しているだけ

## 前置き

`husky`と呼ばれる、Gitのあらゆるアクションに付随してコマンドを実行してくれる便利な存在があります。代表的なものはpre-commitでlint等を動かしてくれるものでしょうか。lintはついつい実行し忘れてしまうので、commit前に自動で実行してくれると便利ですよね。

huskyはnpmモジュールなので、基本的にはnodeを使用するディレクトリでinstallすればよしなに使えるようになるのですが、`package.json`と`.git`を別階層に存在させたい、そんなときもあると思います。例えば、下記のようなディレクトリ構成を持つときです。

“`bash
$ tree
.
├── back
├── front
│   └── package.json
└── .git

“`
このようなときに、`front`ディレクトリで`husky`をインストールす

元記事を表示

Electron備忘録(for Windows)

# 初めに
NodeJS+HTML+CSSでアプリを作る,Electronの備忘録です.
アプリ作成中の詰まったポイントと,その解決策を記録します.
**※この記事は,私の体験に基づいた解決策を記載しています.
公式ドキュメントの見落としや仕様の勘違いによる,間違えた箇所や効率の悪い書き方があると予想されます.
使用する前に公式のドキュメントや他の方のQ&Aを参照し,正確な情報を得ることをお勧めします.**
## 実行環境
Windows
Electron 22.0.0

# Main⇔Rendererの通信
Electron バージョン14でremoteモジュールが削除されて以来,レンダラープロセスでメインプロセスの関数をそのまま使うことは非推奨にんった.
preloadを介してメイン⇔レンダラーのやり取りを行う必要がある.
## 返り値のない送受信
メインからレンダラーへ,あるいはレンダラーからメインへ,メッセージを送るのみ.
返り値はなく,await,async等で待つことはできない.

|通信の方向 |main.js|preload.js|備考|
|—–|—–|-

元記事を表示

Node.js 外部APIを実行してレスポンスをコンソールに出力する

# 概要

– Node.jsにて外部APIを実行してレスポンスをコンソールに出力する方法をまとめる。

# 情報

– 下記サービスを用いてコードの動作確認を実施した。
– [https://codesandbox.io/s/node-playground-forked-8zdskb?file=/src/index.js](https://codesandbox.io/s/node-playground-forked-8zdskb?file=/src/index.js)

# 使用する外部API

– Qiitaのユーザー情報を取得するAPIを実行してみる。
– [https://qiita.com/api/v2/docs#get-apiv2usersuser_id](https://qiita.com/api/v2/docs#get-apiv2usersuser_id)
– どうやら`https://qiita.com/api/v2/users/ユーザーid`とすることでユーザーの公開されている基本情報を取得する事ができるっぽい。
– 筆者の場合`https://q

元記事を表示

TypeScript: ESモジュールのTypeScriptをNodeで直接動かす方法

TypeScriptをコンパイルのステップなしに、Node.jsで動かす方法として、よく知られているものに[ts-node]があります。ts-nodeはnodeコマンドのようなノリでTypeScriptファイルを実行できます。

“`shell
# JavaScriptファイルの実行
node hoge.js

# TypeScriptファイルの実行
npx ts-node hoge.ts
“`

ts-nodeがサポートしているのは、モジュールシステムがCommonJSのTypeScriptのみです。ES Modules(ESM)のTypeScriptはうまく動きません。

## tsxならESM版TypeScriptを動かせる

ts-nodeの競合ツールに、[tsx]というものがあります。これを使うと、ES ModulesのTypeScriptが楽に実行できます。

[tsx]: https://github.com/esbuild-kit/tsx

“`shell
npx tsx hoge.ts
“`

ts-nodeで苦労して動かしていたESMが嘘のように簡単に動きま

元記事を表示

twitter-api-sdkを使ってツイートの画像を日次で自動取得する

## はじめに
Twitterに上がっている推しの画像を保存したい!好きな絵師さんのイラストを毎回保存するのが面倒・・・
そんな悩みを持つ皆さんに朗報です。
TwitterAPIを使えば毎日自動で推しの画像を保存してくれるスクリプトを簡単に組めてしまうんです!

## 1. TwitterAPIの申請
~~TwitterAPIは無料で始めることができますが、利用するには申請を行う必要があります。~~
Twitter API V2が標準となった今は申請不要、サインアップのみで利用を開始することができます。
既に利用可能なTwitterAPI開発者アカウントを持っている方はこのセクションは飛ばして大丈夫です。

### 必要なもの
* Twitterアカウント
いわゆる鍵垢ではないパブリックなアカウントが必要です。
また、メールアドレス、電話番号の登録も必須となっています。
* やる気
~~申請周りは割と面倒なので頑張りましょう!~~

### ~~いざ、申請~~ Let`s サインアップ!
まずは[Twitter 開発者プラットフォーム](https://developer.twitt

元記事を表示

【Node.js】Expressのroutesをいい感じにする(ディレクトリ・ファイルを追加するだけでrouteに登録されるようにする)

## はじめに

Expressで実装する際、以下のようにrouterの実装を`src/routes`などに分けて実装する事はままあると思う。ただこの実装だと、`routes`を増やすたびに`app.user()`も必要になり、手間かつ冗長に思える。

“`js:./src/index.js
import express from ‘express’;

// 省略
import router from ‘./routes/index’;
import shopsRouter from ‘./routes/shops’;
import searchRouter from ‘./routes/search’;
import accountRouter from ‘./routes/account’;

// 省略
const app = express();

// 省略
app.use(‘/account’, accountRouter);
app.use(‘/search’, searchRouter);
app.use(‘/shops’, shopsRouter);
app.us

元記事を表示

AWS SDK V3 のDynamoDBで、いくつか動作確認した話(AWS SDK V2 → V3 移行Tips)

# はじめに

https://qiita.com/Syoji_Yonemoto/items/e619d8199b7c8354248f

V3移行の動作確認の初手に、Firehoseを選んだせいかもしれないですが、V2で使ってたメソッドの互換があるか保証がないことが分かったので、普段、Lambdaで利用するAPIについては一通り、動作確認をしていっています。

今回は、DynamoDB編です。

# 結論

DynamoDBに関しては、私が普段使うメソッド群については、問題ありませんでした。

# V2 と同じ使い方で問題なく動作確認できたメソッド

+ putItem
+ batchGetItem
+ query
+ updateItem
+ updateTable

# 余談
性能試験や、TTL未実装の時などには、createTableやdeleteTableも実行していた時もありましたが、日常的に使う物でもなく、その時がきたら追試をします。

# まとめ
DynamoDBくらい主要どころになると、しっかり下位互換もされているようです。
引き続き、小ネタシリーズとして、

元記事を表示

Deno を使って Node でも Deno でも動くライブラリを作る

Deno アドベントカレンダー 24日目の記事です。

今日は Deno を使って Node でも Deno でも動くライブラリ(もしくはツール)を作成する方法を紹介します。

Deno 界隈では最近 npm 互換性機能がリリースされて、Deno から使えるツールが一気に増えたということで話題になっていますが、逆に Deno で作ったツールを Node/npm に対応させるという逆向きの互換性についても開発が進んでいます。

この記事では、Deno が公式で提供している [dnt](https://github.com/denoland/dnt) というツールを使う方法を紹介します。

https://github.com/denoland/dnt

dnt を使った場合の、Node と Deno 両対応の主な流れは次のようになります。

– まずは Deno で動くようにツールを作る (Deno に対応)
– dnt を設定して、ツールのエントリーポイントを Node 用に変換出来るように準備する
– dnt を実行して Node 用モジュールを指定のディレクトリに書き出す
– 書き

元記事を表示

誰でも作れるBetterJSONトランスパイラを作ってみる

# 概要

(厳密な)JSONはイメージとは裏腹に手で書くには思ったより不便な仕様になっています。

– コメントが書けない。
– Trailing comma(末尾のカンマ) は認められていない。(=手で追加する際にカンマを意識する必要が出て面倒)
– (ダブルコーテーションの代わりに)シングルコーテーションは使えない。
– キー名もダブルコーテーションで囲む必要がある。

などなど・・・

というわけで、JavaScriptのオブジェクト表記のようにゆるく書けてなおかつそのままJSONに変換できるトランスパイラを作ってみる。

# 誰でも作れる

ちょこっとコードを付けて`eval(new Function)`して`JSON.stringify`で出力するだけです。

node.jsなら追加のモジュール一切不要で実現できます。

“`bjson.js
const fs = require(‘fs’);

if(process.argv.length < 3) { const path = require('path'); jsfile = path.basenam

元記事を表示

TypeScriptでサーバーもフロントも書いてGraphQLするやつアドカレ25記事書ききった

[Next.js + サーバーサイドTypeScript + 関数フレーバーでクリーンなアプリを作ったので実装意図とか書く Advent Calendar 2022](https://qiita.com/advent-calendar/2022/shwld)
の**25日目**。[株式会社mofmof](https://www.mof-mof.co.jp/)に生息している[shwld](https://twitter.com/shwld)です。

前日は[Next.jsとgraphile-workerをRailwayにデプロイする](https://qiita.com/shwld/items/49a310aadc0a34e2a721)について書きました
# TypeScriptでサーバーもフロントも書いてGraphQLするやつアドカレ25記事書ききった

25記事を書ききったので、ふりかえって感想を書きます。

## 良かったこと
学んだ内容を無理やりアウトプットできた。
アドベントカレンダー25日分最初に埋めたので後戻りできないなという気持ちに
普段アウトプットあんまりしてないのでい

元記事を表示

ゆるやかにオンプレAPIをNestJS on ECSに移行して

この記事はアイスタイル [Advent Calendar 2022](https://qiita.com/advent-calendar/2022/istyle) 25日目の記事です。

# はじめに
じゃんたま 雀士★1になりました。
はじめまして、アイスタイルT&C部に所属している[okashitay](https://qiita.com/y_okasuke)というものです。

今回の記事では、こないだまでNestJSどころかNode.jsアプリケーションでの開発実績も特別ない者でしたが、ここに実体験を元に知見をいくつか残していこうと思います。

# NestJS採択の経緯
商品データ基盤APIは何らかの事情でPHP版とGO版が存在しています。
両方とも言語・フレームワークともEOL(End Of Life)に近い状態…2つのAPIのバージョンアップしつつAWSへ移行する労力、2種類の言語のAPIに機能追加・メンテナンスしていくことは開発者の負荷とAWS移行コスト&運用コストも高まるという状況を解消するため1つの言語に統一する方針へ、言語とフレームワークの最終的な決め手は公式ド

元記事を表示

Yarnのバージョンによってnode_modulesが作成されない件について(voltaを使用)

## 起こった現象
* voltaでNext.jsの環境構築をした時、自動で作成されるindex.tsxで、import部分にエラー
* 「対応する型が見つかりません」ってずっと出る?
* node_modulesフォルダではなく、**「.yarn」フォルダが作成される**

## 早速ですが結論から
エラーが起きた原因は、やはり**node_modulesが作成されていないから**みたいです

すごくシンプル

本来は作成されるはずなんですが、なぜ作成されなかったか追っていきましょう!

## yarnのバージョンを確認
まずはyarnのバージョンを確認してみました

yarn -v
// 3.3.0

バージョンは3.3.0と確認できました

yarnは、Home Brewで既にinstall済みの状態です

今回使用したかったバージョンは「1.22.19」だったので、voltaでyarnのバージョンを指定してみました

エラーが起こる段階でyarn installした時は、voltaにyarnのバージョンはしてしてなかったです

“`package.js

元記事を表示

キャンパス内の独自通貨をオンライン化した話

# はじめに
この記事は、[N・S高等学校 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/n-s-highschool)の25日目です。
はじめまして、N中等部通学コース4期生のTakuといいます。
今回は、キャンパス内で使われている独自通貨「吉」をオンライン化してみた話を書きまとめてみました。
ぜひご覧ください。
# 独自通貨とは
まず最初に、キャンパス内で実装されている独自通貨について説明していきます。
test.jpeg
上の画像が紙幣の独自通貨で、一ヶ月に一回紙幣のデザインが変わっています。
# 完成品
できたものについて紹介します。
## Web UI
ys.png

  • OTHERカテゴリの最新記事