SlideShare une entreprise Scribd logo
1  sur  26
Télécharger pour lire hors ligne
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実装できました!

Contenu connexe

Similaire à node.js入門

120512 metro styleapp_javascript
120512 metro styleapp_javascript120512 metro styleapp_javascript
120512 metro styleapp_javascript
Takayoshi Tanaka
 
PHP on Windows Azure
PHP on Windows AzurePHP on Windows Azure
PHP on Windows Azure
Microsoft
 

Similaire à 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
 

Plus de risa buto

無償ケア労働図鑑 〜これって愛なの?搾取なの?〜
無償ケア労働図鑑 〜これって愛なの?搾取なの?〜無償ケア労働図鑑 〜これって愛なの?搾取なの?〜
無償ケア労働図鑑 〜これって愛なの?搾取なの?〜
risa buto
 
手作りのものが食べたい
手作りのものが食べたい手作りのものが食べたい
手作りのものが食べたい
risa buto
 

Plus de 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で強化学習
 
料理はじめました
料理はじめました料理はじめました
料理はじめました
 

Dernier

Dernier (11)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 

node.js入門