• 日本語
    • English (英語)
Avinton JapanAvinton JapanAvinton JapanAvinton Japan
  • サービス
    • Avinton Data Platform
    • エッジAIカメラ
      • 自動車ナンバープレート自動認識システム
    • プライベートクラウド
    • AIサービス開発
    • AIカメラ/画像解析無料体験版
  • 最新情報
    • ニュースリリース&イベント情報
    • 技術ブログ&インタビュー
  • アカデミー
    • Avintonアカデミー
    • Academy on Campus
    • Academy with Platform
  • 採用情報
    • Avintonジャパン 採用ページ
    • 求人一覧
    • よくある質問
    • 新卒採用
  • 企業情報
    • 会社概要
    • 代表からご挨拶
    • SDGsへの貢献
  • お問い合わせ

NodeJSでWebアプリケーション開発 – React編

  • ルーティング
  • データベースの命名規則
  • 三目並べ – 2.〇×を交互にゲーム盤に入るようにしよう
  • 三目並べ – 3.勝敗がつくようにしよう
  • クリーンコード(Clean Code)
  • 三目並べ – 4.「スタート」「リセット」ボタンをつけよう
  • 三目並べ – 5.先攻後攻を決めて、コンピュータ対戦にしよう(前編)
  • インフラストラクチャー(サーバー、コンポーネント、RAID)
  • 機械学習入門者向け Support Vector Machine (SVM) に触れてみる
  • YOLOv8を用いた物体検出
  • 正規表現とパイプ
  • 機械学習エンジニアに必要なスキル
  • 軽量版Kubernetesディストリビューション – k0s クラスターの構築
  • ファイル操作コマンド
  • グループとユーザー
  • 困った時に使うコマンド
  • 一般グループのユーザーとグループ
  • プライバシーポリシー
  • 三目並べ – 6.先攻後攻を決めて、コンピュータ対戦にしよう(後編)
  • フロントエンド開発のための環境構築
  • ファイル検索コマンド
  • 質問
  • 仮想化環境のディスク容量を拡張する
  • ユーザー権限とアクセス権
  • データ分析基礎 – Part1
  • 三目並べ – 0.導入
  • テキスト処理
  • データベースへのデータロード
  • 機械学習概要1
  • 機械学習入門者向け Naive Bayes(単純ベイズ)アルゴリズムに触れてみる
  • ファイル管理
  • SSHを使用してホストOSからゲストOSに接続する
  • 機械学習入門者向け ChainerRLでブロック崩しの学習
  • 機械学習入門者向け ランダムフォレストによる Kaggle Titanic生存者予測
  • 機械学習概要2
  • データ分析基礎 – Part 2
  • 機械学習入門者向け 分類と回帰の違いをプログラムを書いて学ぼう
  • フロントエンドのWeb開発について
  • ダイナミックルーティング
  • 三目並べ – 1.ゲーム盤を作ろう
  • 【Python入門】Python Numpy チュートリアル
  • Amazon EC2 インスタンスの初期設定をしよう
  • AmazonEC2とVPCでネットワークとサーバーを構築しよう
  • Apache NiFi Exercise
  • Apache NiFi データパイプライン基礎
  • Apache NiFiの環境設定
  • Apache Spark 基礎
  • Apache SparkとApache Zeppelinの概要と環境構築
  • Apache Superset maptoolの使い方
  • Apache Superset 基礎
  • Apache Superset 概要と環境構築
  • Apache Zeppelin 基本機能
  • APIのデモンストレーション
  • Avinton Academy コンテンツガイド
  • AWS CLIをインストールしてコマンド操作しよう
  • AWS CLIを使ってEC2のファイルをS3へアップロードしよう
  • AWS Route 53を使って独自ドメインのWebページを表示させてみよう
  • AWSアカウントの作成と必ずやるべきセキュリティ対策
  • AWSのEC2インスタンスでWordPressブログを公開してみよう
  • AWS入門者向け 初心者が最初に理解すべきEC2とVPCの基本的な用語解説
  • CCNA
  • Certbotを使ってSSL証明書を発行し、HTTP通信を暗号化しよう
  • CISCO 1800ルータセットアップ
  • CSV import & export – Node.js, mySQL – 1
  • CSV import & export – Node.js, mySQL – 2
  • Docker Compose(Nginx + Flask + MySQL)演習
  • Docker Engineのubuntu上へのinstall
  • Docker 概要とセットアップ
  • Docker, Kubernetesの学び方について
  • Dockerコンテナイメージの最適化/ベストプラクティス
  • DockerとApacheを使ってWebサーバーを構築しよう
  • EC2からS3へ自動でぽいぽいアップロードするスクリプトの作成
  • ESP32-CAMのサンプルアプリケーションを実行する
  • 01 – Sparkfun Inventor’s Kit の準備
  • 02 – Sparkfun Inventor’s KitでLチカ
  • 03 ポテンショメータでLEDの点滅間隔をアナログ入力する
  • 04 フォトレジスタで明るさに反応するシステムをつくる
  • 05 LCDに文字列を表示する
  • 06 – BME280とLCDを組み合わせて温度計をつくる
  • ESP32とArduino IDE/PlatfromIOでHello Worldアプリケーションの実行
  • ESP32と超音波センサー HC-SR04 で物体の距離を計測する
  • ESXi – Switchの追加とVLAN
  • ESXi – VyOS
  • ESXi – 小規模ネットワーク 構築
  • Gitとは
  • VS CodeでGitHub Copilotを設定する
  • VSCode リモート開発環境
  • GNS3のセットアップ
  • Kubernetesクラスター上へのOpenVINOモデルサーバーを使用したサンプルアプリケーションのデプロイ
  • Linuxとは
  • NAT
  • NodeJSでWebアプリケーション開発 – React編
  • NodeJSでWebアプリケーション開発 – React編
  • NodeJSでWebアプリケーション開発 – React編
  • NodeJSでWebアプリケーション開発 – Socket.IO編
  • NVIDIA Cumulus VX + GNS3でBGPネットワークのシミュレーション
  • OpenCVのテストプログラム
  • PacketTracerのセットアップ
  • Pandasによる構造化データ分析
  • PCからルータ、スイッチへのSSH接続設定
  • PostGIS exercise
  • PostgreSQL – Python – Apache – Bootstrap
  • MySQLとMySQL Workbench のセットアップ
  • PostgreSQL Setup
  • PostgreSQL – インデックスを利用したパフォーマンス改善方法
  • PostgreSQL – パーティショニングを利用したパフォーマンス改善方法
  • PostgreSQLによるデータ分析
  • postgreSQLへのshp fileのimport
  • Python2.7とOpenCVのインストール
  • Python3.8 と OpenCV のインストール (Ubuntu20.04LTS)
  • Pythonでデータベースを操作する
  • Pythonで画像を分類するプログラムを作成する
  • Pythonによるマルチスレッドプログラミング実践
  • Raspberry Pi 4B のセットアップ
  • Raspberry PiとBME280を使用して温度と湿度、気圧を読み取る
  • REDIS
  • Redux基礎 – 主要な概念と用語
  • Ruby on Rails を MySQLでセットアップ
  • Ruby on Railsによる簡単なウェブアプリケーション
  • SampleアプリケーションのKubernetes上へのデプロイ
  • Scala 基礎
  • scikit-learnとは
  • Spark SQL エクササイズ
  • SparkMLによるKaggle Titanic生存者予測
  • KNIME, AutoMLライブラリによる住宅価格予測
  • SparkMLによる住宅価格予測
  • SQL 便利な関数
  • Ubuntuの基本設定
  • uhubctlでUSBデバイスのオンオフをコントロール
  • Terraform入門 2 – Terraformのstate管理
  • Terraform入門 1 – TerraformでAWS上にEC2インスタンスを作成する
  • Virtualisation and Container (仮想化とコンテナ) – Ansible, Docker and Kubernetes
  • viエディタ
  • VLAN
  • VMware ESXi サーバー構築
  • Webアプリ開発に欠かせないGoogle Chrome DevToolsの基本
  • Windows Server 2012 R2 Hyper-V
  • Object Detection with YOLOv8
Home Avintonアカデミー NodeJSでWebアプリケーション開発 – React編

今回はNodeJS環境での簡単なTodoを管理するWebアプリケーションをReactで作成します。

環境

Ubuntu 18.04.2 LTS

NodeJS: 10.16.0

npm: 6.10.3

Reactアプリケーションの立ち上げ

1
2
3
4
sudo npm install -g create-react-app
create-react-app academy-react-app
cd academy-react-app
npm start

下の画面が表示されれば成功です。

コンポーネントの編集

Reactのアプリケーションを立ち上げることができました。

それでは画面を編集していきます。

src/App.js の中身を以下のコードに置き換えてください。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import React from 'react';
 
import './App.css';
 
function App() {
 
  return (
 
    <div className="App">
      <h5>Sample Component</h5>
          <p> Text Before Changed </p>
          <button >
            Press Here!
          </button>
 
      </div>
  );
}
 
export default App;

下のように表示されるはずです。

コンポーネントライブラリ

ここに今回はMaterial-UIというReactのコンポーネントライブラリを使って少しだけ見た目を整えます。

Reactでコンポーネントを使う時こういったライブラリを使うと便利です。

まずは必要なモジュールをインストールします。

一度コンソールでCtrl+Cでアプリを終了し、下のコマンドを入力・実行してください。

1
2
3
npm install @material-ui/core
 
npm install @material-ui/styles

App.jsの内容を以下に書き換えてください。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import React from 'react';
import { makeStyles } from '@material-ui/core/styles';
 
import Paper from '@material-ui/core/Paper';
import Typography from '@material-ui/core/Typography';
 
import Button from '@material-ui/core/Button';
 
import './App.css';
 
function App() {
  const useStyles = makeStyles(theme => ({
    root: {
      padding: theme.spacing(3, 2),
    },
  }));
 
  const classes = useStyles();
 
  return (
    <div className="App">
      <Paper className={classes.root}>
        <Typography variant="h5" component="h3">
          Sample Component
        </Typography>
        <Typography component="p"> Text Before Changed </Typography>
 
        <Button variant="contained" color="primary" >
 
          PRESS HERE!
 
        </Button>
 
      </Paper>
    </div>
  );
}
 
export default App;

保存して再度以下のコマンドを実行しましょう。

1
npm start

ブラウザで下のように表示されていれば問題ありません。

クリックイベント処理

さらにボタンのクリック時の動作を追加します。

1
<Button variant="contained" color="primary" >

となっているところを以下のように書き換えてください。

1
<Button variant="contained" color="primary" onClick={() => alert("Button Pressed!")} >

保存してブラウザ上でボタンをクリックすると「Button Pressed!」と表示されるはずです。

フックによるステート管理

ボタンで画面のコンポーネントを編集できるようにします。

まず、App.jsのReactをインポートしてる部分をuseState関数をインポートできるように以下のように変更してください。

1
import React, { useState } from 'react';

そしてreturn関数の前に下の一行を追加してください。

1
const [text, setText] = useState("Text Before chenged")

続いてボタンのクリック時の動作を

1
alert("Button Pressed!")

から

1
setText("Button Pressed!")

にしてください。

最後に

1
<Typography component="p"> Text Before Changed </Typography>

となっている部分を以下のように変更してください。

1
<Typography component="p">{text}</Typography>

App.jsは以下のようになっているはずです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import React, { useState } from 'react';
import { makeStyles } from '@material-ui/core/styles';
 
import Paper from '@material-ui/core/Paper';
import Typography from '@material-ui/core/Typography';
 
import Button from '@material-ui/core/Button';
 
import './App.css';
 
function App() {
  const useStyles = makeStyles(theme => ({
    root: {
      padding: theme.spacing(3, 2),
    },
  }));
 
  const classes = useStyles();
  const [text, setText] = useState("Text Before chenged")
 
  return (
    <div className="App">
      <Paper className={classes.root}>
        <Typography variant="h5" component="h3">
          Sample Component
        </Typography>
        <Typography component="p"> {text}</Typography>
 
        <Button variant="contained" color="primary"
          onClick={() => setText("Button Pressed!")}
        >
          PRESS HERE!
 
        </Button>
 
      </Paper>
    </div>
  );
}
 
export default App;

保存してブラウザ上でボタンをクリックし「Text Before chenged」が「Button Pressed!」に変れば問題ありません。

ここではReactのフックを使ってtextというステートをsetText関数で変更し、

textに関連している全てのコンポーネントを自動で更新しています。

詳しくはReact公式: ステートフックの利用法を参照してください。(Languagesから言語を日本語にできます)

JavaScriptの関数は非同期に処理される点について注意してください。(前の関数の終了を待たずに次の関数が実行されます。)

アクテビティ

    1. インプットフォームを置いて、入力した内容が下のスペースに表示されるようにしましょう。

    (インプットフォームのonChangeの関数にステートフックを指定してテキストの変数を管理しましょう)

    参考:https://material-ui.com/components/text-fields/

    2. ボタンを押したらインプットフォームに入力された内容が下に追加されていくようにしましょう。

    javascriptのmap関数を使うと便利です。

    参考:https://reactjs.org/docs/lists-and-keys.html

    3. 一行ごとにラジオボタンを表示させましょう。

    参考:https://material-ui.com/components/radio-buttons/

    下ようになっていれば今回のアクティビティは完了です。

    参考リンク:

    React公式チュートリアル

    React公式:フックの導入

    Material UI公式

    あなたも、Avintonでこのような最先端技術を習得し活用してみませんか?

    社員の成長を導きながら、AIやビッグデータなどの最先端技術をプロジェクトに活用していくことが私たちのビジョンです。Avintonの充実した技術研修でスキルアップを図り、あなたのキャリア目標を一緒に達成しませんか?

    採用情報

    採用情報

    採用情報

    Categories

    • 相互学習
    • 採用
    • 社員インタビュー
    • 学習&資格取得
    • 技術解説
    • イベント告知
    • 学内説明会&講義
    • 産学連携
    • 就職活動
    • イベントレポート
    • その他
    • 技術ブログ&インタビュー
    • mainpage
    • New Graduates Interviews
    • 中途エンジニア
    • カテゴリーなし
    • ニュースリリース&イベント

    Avinton SDGs

    SDGsへの貢献

    Search

    タグ

    AI時代の経営 AvintonAcademy on Campus AWS Docker DQN FINOLAB Git IoT James Cauchi LPIC LPIC-2 PM&PMO Predictive Maintenance Raspberry Pi Sound Analysis SSD イベントレポート インターン インフラ エッジコンピューティング エリクソン クラウトネイティブ セミナー ディープラーニング データ生成 データ解析 ファンダフルリレーマラソン モブワーク リスキリング リードエンジニア 中瀬幸子 企業説明会 勉強会 大学&専門学校 帰社日 強化学習、機械学習 技術ブログ 採用 掲載告知 未経験 田中 研之輔 画像分類 社員紹介 第一級陸上特殊無線技士 観光データ
    © 2023 Avinton | All Rights Reserved | プライバシーポリシー
    • サービス
      • Avinton Data Platform
      • エッジAIカメラ
        • 自動車ナンバープレート自動認識システム
      • プライベートクラウド
      • AIサービス開発
      • AIカメラ/画像解析無料体験版
    • 最新情報
      • ニュースリリース&イベント情報
      • 技術ブログ&インタビュー
    • アカデミー
      • Avintonアカデミー
      • Academy on Campus
      • Academy with Platform
    • 採用情報
      • Avintonジャパン 採用ページ
      • 求人一覧
      • よくある質問
      • 新卒採用
    • 企業情報
      • 会社概要
      • 代表からご挨拶
      • SDGsへの貢献
    • お問い合わせ
    • 日本語
      • English (英語)
    Avinton Japan