Reactの勉強1
React Hooks
useEffect
useEffect(() => { /* 第1引数には実行させたい副作用関数を記述*/ console.log('副作用関数が実行されました!') },[依存する変数の配列]) // 第2引数には副作用関数の実行タイミングを制御する依存データを記述
Reactのレンダリングまで関数の処理を遅らせる。
useRef
const refObject = useRef(initialValue) //例 const number = useRef(100); console.log(number.current); // 100
useRefで生成したオブジェクトは親classがアンロードされるまで同一オブジェクトを扱う。
useState
//const [状態変数, 状態を変更するための関数] = useState(状態の初期値); const [count, setCount] = useState(initialState) // ちなみにクラスコンポーネントでは、、、 this.state = { count: initialState }
initialstateが初期値で、初回レンダー時にstateが代入される。setstate関数を格納し、stateを更新する。
i18next
useTranslation
import React from 'react'; import { useTranslation } from 'react-i18next'; export const TestComponent = () => { const { t } = useTranslation(); return <div>{t('test.message')}</div>; }
VSCodeでNode.jsとJavascript、Typescriptを始める
他環境で同じ物を作るための備忘録として。
資材の用意
以下のものをインストールしておきます。
- Node.js
- VSCode
- Git
すべて最新バージョンでOK。インストールも推奨構成です。
Node.jsの確認
VSCodeのターミナルを開き、Node.jsのバージョンを確認。
$ node -v v16.14.0 $ npm -v 8.3.1 $ npx -v 8.3.1
以下のサンプルコードを走らせます。
const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello, World!\n'); }); server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); });
$ node hello-world.js Server running at http://127.0.0.1:3000/
localhost:3000に接続するとHello,World!と表示されます。
Typescript環境の導入
Gitコンソールで以下を実行します。
npm install typescript ts-loader webpack webpack-cli webpack-dev-server --save-dev
名称 | 説明 |
---|---|
typescript | TypeScriptコンパイラ |
ts-loader | TypeScript用のローダー。Webpackと連動してTypeScriptコンパイラを動作させる |
webpack | JavaScript用のビルドツール |
webpack-cli | コマンドプロンプトからWebpackを動作させるためのツール。 |
webpack-dev-server | Webpackのビルド、開発用Webサーバー、ソースコードの変更検知、ブラウザの自動リロードを一括して提供するサーバー |
package.jsonファイルに以下を追記します。
"scripts": { "build": "webpack --mode=development", "start": "webpack serve --mode=development" }
Apache Kafkaについて齧る
Apache Kafka
主な内容はRedHat社のドキュメント(Apache Kafka:基本的な 10 の用語と概念について (redhat.com))から読み解きます。
概要
Apache Kafka(以後Kafka)はOSSの分散型イベントストリーミングプラットフォーム、またはメッセージキューです。非同期通信システムの一種で、複数システムを疎結合で連携する場合や、ストリーミング処理が必要なサービスのバッファーとして利用されます。
kafkaのメッセージキューシステムは3つの役割から構成されます。
- Producer:メッセージの発行元、Publisherとも書きます。
- Broker:Publisherからのメッセージを保管し、Consumerからのリクエストに応じてメッセージの配信を行う非同期型メッセージキューイングを行う。
- Consumer:メッセージの受信・購読先。Subscriberとも書きます。
Kafkaは分散型MQシステムなので、Brokerもクラスタ構成になります。
処理の流れ
Producerから発行されたメッセージはBrokerクラスタ内でTopicという分散キューを構成します。このTopicはBrokerではなくProducerによってクラスタに分散配置されているPartitionに分配され、key-value形式でRecordとして保存されます。Consumerは受信するTopicに応じてBrokerに問い合わせを行い、Partitionそれぞれから受信します。kafkaは高速化とクラスタリングに優れたプラットフォームで、MQTT等の標準プロトコルではなく独自プロトコルによって分散配信と受信を行い、高速化を実現しています。
クラスタリング
それぞれのTopicは複数のPartitionに分かれています。Partition内ではLeader ReplicaとFollower Replicaとなるクラスターが1:Nの構造で存在し、Partition毎にどのクラスターがLeader Replicaであるかが異なります。ノードがダウンした際には適宜Follower ReplicaがLeaderに昇格する事でクラスタを保ちます。
このTopic-Partitionの割り当て管理を行うのがApache Kafka - ZooKeeperです。
参考:
1:Apache Kafkaの概要とアーキテクチャ - Qiita
2:Apache Kafka:基本的な 10 の用語と概念について (redhat.com)
3:Kafkaを利用した分散処理について (パーティション機能の座学) - Qiita