SlideShare a Scribd company logo
node.js入門
武藤 梨沙
勉強会の参加ありがとうございます!
10/12 node.jsとは&環境構築
11/9 文法基礎
12/14 APIを作る
node.js入門スケジュール
この勉強会ではこちらのUdemy講座をもとに
進めていきます
振り返り時には動画を見るのがおすすめです!
参考〜Udemy講座
10/12 node.js入門①
node.jsとは
環境構築
インターネットが利用できる個人PC
社用PCはアクセス制限の可能性があるので注意!
必要なもの
node.jsとは
サーバサイドで動くJavaScriptのこと
(正確にはJSをサーバサイドで動作させるプラット
フォーム)
大量アクセスに強い、リアルタイム処理が可能とい
うメリットからサーバサイド言語に選択されるよう
になった
node.js活用例
BFF(Backend For Frontend)
AWS Lambda
フロントエンド(クライアント)のAPI呼び出しを
まとめてあげるバックエンド
https://techblog.zozo.com/entry/zozo-aggregation-api-bff
サーバレス構成でよく使われるLambdaでは
初動が早いnodeがよく使われます
(pythonもよく使われます)
node.js環境構築
node.jsインストール
https://nodejs.org/ja/
推奨版をダウンロード
インストーラーに従ってインストール
ターミナルからnode --version実行
VSCodeインストール
https://code.visualstudio.com
stableをダウンロード
1.
a.
b.
c.
d.
2.
a.
b.
node.jsを実行してみる
ターミナルで「node」と入力しEnter
定数を宣言する
const key = value
keyでEnter
変数を宣言、上書きする
let flag = false
flag = key ? false : true
環境変数を取得する
process.env.PATH
1.
2.
a.
b.
3.
a.
b.
4.
a.
11/9 node.js入門②
node.js文法基礎
Expressインストール&Webサーバ起動
インターネットが利用できる個人PC
社用PCはアクセス制限の可能性があるので注意!
必要なもの
ワークスペースを作る
これからnode.jsファイルを作成する
ワークスペースのディレクトリを作成しましょう
ディレクトリ名は英字でお願いします
例:~/node-handson
const today = () => {
const date = new Date();
return
`${date.getFullYear()}/${date.getMonth()}/${date.getDate()}`;
}
console.log(`今日は${today()}です`);
jsファイルを作成して実装
簡単なプログラムを書いてみよう
const formatDate = (date) => {
return
`${date.getFullYear()}/${date.getMonth()}/${date.getDate()}`;
}
const today = new Date();
console.log(`今日は${formatDate(today)}です`);
関数に引数を渡す
今日の日付と日付を整形する部分に分けます
Expressインストール&サーバ起動
expressインストール
npm init
npm install express
expressページにあるコードをコピペ
https://www.npmjs.com/package/express
node main.jsでサーバ起動!
今日の日付を返すようにする
formatDateをエクスポート
module.exports = formatDate
コントローラーで上記をインポート
const formatDate = require('./date')
今日の日付をコントローラーから返却
res.send(`今日は${formatDate()}です`)
12/15 node.js入門③
mysqlインストール&テーブル作成
Node.jsからDB接続するAPI作成
インターネットが利用できる個人PC
社用PCはアクセス制限の可能性があるので注意!
必要なもの
mysqlインストール
mac
brew install mysql
windows
インストーラーをダウンロードする
https://dev.mysql.com/downloads/installer/
インストールされていることを確認する
mysql --version
mysqlログイン〜テーブル作成
mysqlにログインする
mysql -u root -p
スキーマを作成する
create database node_handson;
show databases;
use node_practice;
テーブルを作成する
https://prog-8.com/docs/mysql-database-
setup
DBユーザー作成&権限付与
ユーザーを作成する
create user 'nodeapi'@'localhost'
identified by 'password'
権限を付与する
grant select on node_practice.users to
nodeapi@localhost;
grant insert on node_practice.users to
nodeapi@localhost;
Node.jsからDBに接続&API作成
まずはmysqlコマンドでデータを登録する
insert into users values(0, 'admin');
nodeプロジェクトにライブラリをインストール
npm install mysql2 body-parser
DB接続生成コードを書く
データ取得処理とControllerを書く
ブラウザから動作確認する
データ登録処理とControllerを書く
curlやpostmanで動作確認する
var mysql = require('mysql2/promise');
let client
/**
* DB接続生成
*/
const createConnection = async() => {
client = await mysql.createConnection({
host: "localhost",
port: 3306,
user: "user",
password: "password",
database: "dbname"
})
}
DB接続生成コード
/**
* ユーザー一覧取得
* @returns ユーザー情報
*/
const getUserList = async() => {
await createConnection()
const [rows, fields] = await client.execute("select * from users")
await client.end()
return rows
}
データ取得処理
/**
* @Controller
* ユーザー一覧取得API
*/
app.get('/users', async(req, res) => {
const result = await getUserList()
res.send(JSON.stringify(result))
})
データ取得Controller
// リクエストボディ取得準備
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.json());
リクエストボディ受取処理
/**
* ユーザー登録
*/
const registerUser = async(userName) => {
await createConnection()
const result = await client.query(
`INSERT INTO users VALUES (0, '${userName}')`
)
await client.end()
return result
}
データ登録処理
/**
* @Controller
* ユーザー登録API
*/
app.post('/users', async(req, res) => {
const result = await registerUser(req.body.name)
res.send(result ? "ユーザー登録に成功しました" : "ユーザー登録に失敗しました")
})
データ登録Controller
以上でハンズオン終了になります!!
Node.jsでAPI実装できました!

More Related Content

Similar to node.js入門

第1回鹿児島node.jsの会資料_内村
第1回鹿児島node.jsの会資料_内村第1回鹿児島node.jsの会資料_内村
第1回鹿児島node.jsの会資料_内村
Koichi Uchimura
 
Web matrix2とvisual studio
Web matrix2とvisual studioWeb matrix2とvisual studio
Web matrix2とvisual studio
Tadahiro Ishisaka
 
120512 metro styleapp_javascript
120512 metro styleapp_javascript120512 metro styleapp_javascript
120512 metro styleapp_javascriptTakayoshi Tanaka
 
Couch DB in 15minutes
Couch DB in 15minutesCouch DB in 15minutes
Couch DB in 15minutes
Yohei Sasaki
 
Dbtechshowcasesapporo mysql-turing-for-cloud-0.9.3
Dbtechshowcasesapporo mysql-turing-for-cloud-0.9.3Dbtechshowcasesapporo mysql-turing-for-cloud-0.9.3
Dbtechshowcasesapporo mysql-turing-for-cloud-0.9.3
infinite_loop
 
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)
Hiroyuki Kusu
 
Dexiejs
DexiejsDexiejs
Dexiejs
Ryota Suzuki
 
配布用Supervisordによるnode.jsの運用
配布用Supervisordによるnode.jsの運用配布用Supervisordによるnode.jsの運用
配布用Supervisordによるnode.jsの運用
yut148atgmaildotcom
 
大阪Node学園 七時限目 「ゼロからはじめるnode.js」
大阪Node学園 七時限目 「ゼロからはじめるnode.js」大阪Node学園 七時限目 「ゼロからはじめるnode.js」
大阪Node学園 七時限目 「ゼロからはじめるnode.js」
Shunsuke Watanabe
 
Node redをはじめてみよう
Node redをはじめてみようNode redをはじめてみよう
Node redをはじめてみよう
rina0521
 
Node.js Hands-On
Node.js Hands-OnNode.js Hands-On
Node.js Hands-On
Akinari Tsugo
 
PHP on Windows Azure
PHP on Windows AzurePHP on Windows Azure
PHP on Windows AzureMicrosoft
 
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
 
ASP.NET Core のお気に入りの機能たち (docker向け)
ASP.NET Core のお気に入りの機能たち (docker向け)ASP.NET Core のお気に入りの機能たち (docker向け)
ASP.NET Core のお気に入りの機能たち (docker向け)
Takayoshi Tanaka
 
Mvc conf session_5_isami
Mvc conf session_5_isamiMvc conf session_5_isami
Mvc conf session_5_isami
Hiroshi Okunushi
 
Introduction to web development 1
Introduction to web development 1Introduction to web development 1
Introduction to web development 1
hideaki honda
 

Similar to node.js入門 (20)

第1回鹿児島node.jsの会資料_内村
第1回鹿児島node.jsの会資料_内村第1回鹿児島node.jsの会資料_内村
第1回鹿児島node.jsの会資料_内村
 
ZendStudioのご紹介
ZendStudioのご紹介ZendStudioのご紹介
ZendStudioのご紹介
 
Web matrix2とvisual studio
Web matrix2とvisual studioWeb matrix2とvisual studio
Web matrix2とvisual studio
 
120512 metro styleapp_javascript
120512 metro styleapp_javascript120512 metro styleapp_javascript
120512 metro styleapp_javascript
 
Couch DB in 15minutes
Couch DB in 15minutesCouch DB in 15minutes
Couch DB in 15minutes
 
Dbtechshowcasesapporo mysql-turing-for-cloud-0.9.3
Dbtechshowcasesapporo mysql-turing-for-cloud-0.9.3Dbtechshowcasesapporo mysql-turing-for-cloud-0.9.3
Dbtechshowcasesapporo mysql-turing-for-cloud-0.9.3
 
120517 cf tour_london
120517 cf tour_london120517 cf tour_london
120517 cf tour_london
 
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)
 
Dexiejs
DexiejsDexiejs
Dexiejs
 
配布用Supervisordによるnode.jsの運用
配布用Supervisordによるnode.jsの運用配布用Supervisordによるnode.jsの運用
配布用Supervisordによるnode.jsの運用
 
大阪Node学園 七時限目 「ゼロからはじめるnode.js」
大阪Node学園 七時限目 「ゼロからはじめるnode.js」大阪Node学園 七時限目 「ゼロからはじめるnode.js」
大阪Node学園 七時限目 「ゼロからはじめるnode.js」
 
Node redをはじめてみよう
Node redをはじめてみようNode redをはじめてみよう
Node redをはじめてみよう
 
Node.js Hands-On
Node.js Hands-OnNode.js Hands-On
Node.js Hands-On
 
Case study puppet
Case study puppetCase study puppet
Case study puppet
 
PHP on Windows Azure
PHP on Windows AzurePHP on Windows Azure
PHP on Windows Azure
 
PHP on Windows Azure
PHP on Windows AzurePHP on Windows Azure
PHP on Windows Azure
 
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
 
ASP.NET Core のお気に入りの機能たち (docker向け)
ASP.NET Core のお気に入りの機能たち (docker向け)ASP.NET Core のお気に入りの機能たち (docker向け)
ASP.NET Core のお気に入りの機能たち (docker向け)
 
Mvc conf session_5_isami
Mvc conf session_5_isamiMvc conf session_5_isami
Mvc conf session_5_isami
 
Introduction to web development 1
Introduction to web development 1Introduction to web development 1
Introduction to web development 1
 

More from risa buto

無償ケア労働図鑑 〜これって愛なの?搾取なの?〜
無償ケア労働図鑑 〜これって愛なの?搾取なの?〜無償ケア労働図鑑 〜これって愛なの?搾取なの?〜
無償ケア労働図鑑 〜これって愛なの?搾取なの?〜
risa buto
 
電子工作で猫との暮らし改善
電子工作で猫との暮らし改善電子工作で猫との暮らし改善
電子工作で猫との暮らし改善
risa buto
 
座禅入門 by佐谷さん
座禅入門 by佐谷さん座禅入門 by佐谷さん
座禅入門 by佐谷さん
risa buto
 
20230108_AWS試験山張り会
20230108_AWS試験山張り会20230108_AWS試験山張り会
20230108_AWS試験山張り会
risa buto
 
20230107_AWS試験山張り会
20230107_AWS試験山張り会20230107_AWS試験山張り会
20230107_AWS試験山張り会
risa buto
 
20221231_資格もくもく会
20221231_資格もくもく会20221231_資格もくもく会
20221231_資格もくもく会
risa buto
 
エンジニアとして生き残るには
エンジニアとして生き残るにはエンジニアとして生き残るには
エンジニアとして生き残るには
risa buto
 
汗っかき問題と対策
汗っかき問題と対策汗っかき問題と対策
汗っかき問題と対策
risa buto
 
terraform基礎
terraform基礎terraform基礎
terraform基礎
risa buto
 
手作りのものが食べたい
手作りのものが食べたい手作りのものが食べたい
手作りのものが食べたい
risa buto
 
Invitation of Musical
Invitation of MusicalInvitation of Musical
Invitation of Musical
risa buto
 
画面テスト自動化
画面テスト自動化画面テスト自動化
画面テスト自動化
risa buto
 
発声練習
発声練習発声練習
発声練習
risa buto
 
ミュージカル入門
ミュージカル入門ミュージカル入門
ミュージカル入門
risa buto
 
Javaキャッチアップ(SE9-12)
Javaキャッチアップ(SE9-12)Javaキャッチアップ(SE9-12)
Javaキャッチアップ(SE9-12)
risa buto
 
Androidの非同期
Androidの非同期Androidの非同期
Androidの非同期
risa buto
 
about me
about meabout me
about me
risa buto
 
Pixel game creation
Pixel game creationPixel game creation
Pixel game creation
risa buto
 
pygame+gymで強化学習
pygame+gymで強化学習pygame+gymで強化学習
pygame+gymで強化学習
risa buto
 
料理はじめました
料理はじめました料理はじめました
料理はじめました
risa buto
 

More from risa buto (20)

無償ケア労働図鑑 〜これって愛なの?搾取なの?〜
無償ケア労働図鑑 〜これって愛なの?搾取なの?〜無償ケア労働図鑑 〜これって愛なの?搾取なの?〜
無償ケア労働図鑑 〜これって愛なの?搾取なの?〜
 
電子工作で猫との暮らし改善
電子工作で猫との暮らし改善電子工作で猫との暮らし改善
電子工作で猫との暮らし改善
 
座禅入門 by佐谷さん
座禅入門 by佐谷さん座禅入門 by佐谷さん
座禅入門 by佐谷さん
 
20230108_AWS試験山張り会
20230108_AWS試験山張り会20230108_AWS試験山張り会
20230108_AWS試験山張り会
 
20230107_AWS試験山張り会
20230107_AWS試験山張り会20230107_AWS試験山張り会
20230107_AWS試験山張り会
 
20221231_資格もくもく会
20221231_資格もくもく会20221231_資格もくもく会
20221231_資格もくもく会
 
エンジニアとして生き残るには
エンジニアとして生き残るにはエンジニアとして生き残るには
エンジニアとして生き残るには
 
汗っかき問題と対策
汗っかき問題と対策汗っかき問題と対策
汗っかき問題と対策
 
terraform基礎
terraform基礎terraform基礎
terraform基礎
 
手作りのものが食べたい
手作りのものが食べたい手作りのものが食べたい
手作りのものが食べたい
 
Invitation of Musical
Invitation of MusicalInvitation of Musical
Invitation of Musical
 
画面テスト自動化
画面テスト自動化画面テスト自動化
画面テスト自動化
 
発声練習
発声練習発声練習
発声練習
 
ミュージカル入門
ミュージカル入門ミュージカル入門
ミュージカル入門
 
Javaキャッチアップ(SE9-12)
Javaキャッチアップ(SE9-12)Javaキャッチアップ(SE9-12)
Javaキャッチアップ(SE9-12)
 
Androidの非同期
Androidの非同期Androidの非同期
Androidの非同期
 
about me
about meabout me
about me
 
Pixel game creation
Pixel game creationPixel game creation
Pixel game creation
 
pygame+gymで強化学習
pygame+gymで強化学習pygame+gymで強化学習
pygame+gymで強化学習
 
料理はじめました
料理はじめました料理はじめました
料理はじめました
 

Recently uploaded

Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
harmonylab
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
t m
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 

Recently uploaded (8)

Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 

node.js入門