【大阪 / 横浜 / 徳島】インフラ / サーバーサイドエンジニア募集中!

【大阪 / 横浜 / 徳島】インフラ / サーバーサイドエンジニア募集中!

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【WordPress 専用】クラウドサーバー『ウェブスピード』

【WordPress 専用】クラウドサーバー『ウェブスピード』

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【予約システム開発】EDISONE カスタマイズ開発サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【200ヶ国以上に対応】グローバル eSIM「ビヨンドSIM」

【200ヶ国以上に対応】グローバル eSIM「ビヨンドSIM」

【中国への旅行・出張・駐在なら】中国SIMサービス「チョコSIM」

【中国への旅行・出張・駐在なら】中国SIMサービス「チョコSIM」

【グローバル専用サービス】北米・中国でも、ビヨンドのMSP

【グローバル専用サービス】北米・中国でも、ビヨンドのMSP

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

Viteとは?ビルドツールとは?Docker上でReact×TypeScript環境を構築する手順

お疲れ様です。

ついさっき年が明けたと思ったらもう2月の下旬で驚愕しているシステム開発部のえいたです。

今回は業務の中で使用していた「Vite」というものに関してまとめようと思います。

ソースコードを触っていて頻繁に目にするわけではないですが、たまにViteを使用する機会があり、機能や仕組みなどほとんど理解しないまま使用していたため、改めての学びも込めてブログに残させていただきます。

Viteとは

2020年に初リリースされており、高速で無駄のない開発エクスペリエンスを提供することを目的としたビルドツールで発音は「ヴィート」というみたいです。(公式サイト参照)

(ビルドツールに関して後ほど説明するためそんなものがあるんだくらいで読んでください)

高速な開発環境を提供しており、モジュールをオンデマンドで読み込むため、ソースコードに変更を加えた際にすぐブラウザに反映されます。

また更新の際にはページ全体のリロードではなく、変更部分だけを更新することができます。

特にJavaScriptアプリケーションのために設計されたビルドツールのようです。

ビルドツールとは

まず、近年の比較的規模の大きいWEB開発では、手動でJavaScriptファイルを1つずつHTMLに読み込ませるようなことはしません。(昔は読み込ませる必要があったのか、感謝感謝)

また、開発のプロジェクトが大きくなるにつれて、JavaScriptやCSSのファイルが増え、開発中はそれらのファイルを役割ごとに分割することで再利用性が高まり、可読性も向上します。

しかし、分割した状態だとブラウザ側はあるモジュールが他のモジュールに依存している場合は、実行順序を正しく読み込む必要があり、またそれらのファイルを読み込むためのHTTPリクエストを発行し、表示速度が遅くなる可能性があります。

これらをうまくやって解決してるのがビルドツールです。

役割としては、バンドル圧縮トランスパイルがあります。

  1. バンドル(結合):複数のファイルを一つにまとめることで、HTTPリクエストの数を減らし、読み込み速度を改善する
  2. 圧縮:ファイルサイズを小さくするために、不要なスペースやコメントを取り除く
  3. トランスパイル(変換):TypeScriptなどの言語は、そのままではブラウザが理解できないためこれらをJavaScriptに変換する

ほかの人気のビルドツールとしては、Webpack、tsc CLI esbuildなどのビルドツールがあるようです。

他ビルドツールとの違い

  • ネイティブES Moduleを使用しており、モジュールを個別に管理することでファイルを分割して必要な時に読み込むことができる
  • ブラウザからリクエストされたときに必要なモジュールだけを変換するオンデマンド処理を行っており、特に開発環境での利便性が高い
  • 従来のビルドツールでは、開発サーバー起動時にプロジェクト全体をバンドルするが、Viteでは行っていない

実際にViteをインストールして表示してみる

今回はDocker上で React×TypeScript 環境を構築します。

1.プロジェクトディレクトリを作成し、配下にsrcディレクトリを作成

2.Dockerfileとdocker-compose.ymlを定義(※最初はdoker-compose.ymlファイルのvolumesはコメントアウトしておく)

Dockerfile

FROM node:22.13.1

# 作業ディレクトリの設定
WORKDIR /app/src/viteapp

# viteアプリケーションの基本設定
RUN npm install -g create-vite && \
create-vite . --template react-ts --yes

# 依存関係インストール
RUN npm install

# サーバーの起動
CMD ["npm", "run", "dev"]

docker-compose.yml

networks:
  vite-net:
    driver: bridge
services:
  vite:
    build: 
      context: .
      dockerfile: ./docker/node/Dockerfile 
    # volumes:
    #  - ./src/viteapp:/app/src/viteapp
    networks:
      - vite-net
    ports:
      - 5173:5173
    tty:
      true

3.「docker compose build」を実行しイメージを作成「docker compose up -d」を実行する

4.srcディレクトリに移動し「docker cp blog-vite-1:/app/src/viteapp/ .」を実行(ホスト側にコンテナ内のディレクトリのコピーが作成される)

5.docker-compose.ymlのvolumesのコメントアウトを外し、改めて「docker compose up -d」を実行しボリュームの設定を適用させる

該当のurlにアクセスで 完!!!と思ったら、、、接続できませんと怒られました

調べてみるとViteの公式ドキュメントにデフォルトでは「localhost」のみをリッスンすると記載してあり、 パブリックアドレスをリッスンするには「vite.config.ts」ファイルに下記の記述を追加する必要がありました。
参照資料:https://ja.vite.dev/config/server-options.html#server-host

export default defineConfig({
  # 下3行を追記
  server: {
    host: true
  },
  plugins: [react()],
})

上記を追加したうえで改めてurlにアクセスを行うと、、、無事表示できました!

以上になります。

今回はviteの概要と環境の構築に関して行いましたが、機会があればCRUD処理の実装も行って記事にできたらと思います。

ありがとうございました。

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
3
読み込み中...
3 票, 平均: 1.00 / 13
362
X facebook はてなブックマーク pocket
【ウェビナー】マルチクラウド入門 ~あなたのビジネスに最適なクラウドとは?主要8クラウド最新情報をお届け!~

【ウェビナー】マルチクラウド入門 ~あなたのビジネスに最適なクラウドとは?主要8クラウド最新情報をお届け!~

【ウェビナー】運用体制から具体的な手順まで!クラウドサーバー運用保守の全貌を大公開

【ウェビナー】運用体制から具体的な手順まで!クラウドサーバー運用保守の全貌を大公開

この記事をかいた人

About the author

えいた

1年目のエンジニア
とりあえず外に出たい