SlideShare a Scribd company logo
Denoで動くReactフレームワーク
Aleph.jsでポートフォリオサイトをリプ
レイスした話
全国学生エンジニア交流会 NSEEM
cistLT
0Yu @denham95173179
1
2
0Yu@denham95173179
● B3
● cistLT所属
Aleph.jsとは?
3
Aleph.jsとは?
https://alephjs.org/
● Next.jsにインスパイアされたDenoのフレームワーク
4
Aleph.jsとは?
● ビルド基盤はesbuild+swc
○ もともとtscを使っていた
○ v0.3 betaからesbuild+swcに移行
● WASMのswcを使ったコードをトランスパイルし、esbuildを
使ったモジュールをビルド時にバンドルする
● package.jsonとnode_modulesが不要
○ DenoではURLでモジュールをimportする
○ esmやunpkgなどのCDNからnpm packegaeを使える
5
Aleph.jsとは?
● 設定ファイル(package.jsonとnode_modules)が不要
● TypeScriptを標準サポート
● Denoのimport構文によりCDNからNPMを使える
● Import Maps に対応
● HMRでリフレッシュが高速
● ルーティングはパス名ベース
● SSRとSSGをサポート
● JSXで記述可能
● Plugins System に対応
6
使い方
7
使い方
$ deno run -A https://deno.land/x/aleph/install.ts
$ aleph init
$ aleph dev
$ curl http://localhost:8080/
8
使い方
$ aleph --version
aleph.js 0.3.0-beta.19
deno 1.19.3
v8 9.9.115.8
typescript 4.5.2
🎉
9
esbuildについて
10
そもそもモジュールバンドラについて
11
https://ics.media/entry/16511/ より
● Webpack、Rollup
など
● 複数のJSの依存関
係を解決し、すべ
てのモジュールを
バンドルファイル
にひとまとめにし
てくれるもの
ビルドパフォーマンスの問題
● モジュールバンドラは遅い
○ バンドルがビルドパフォーマンスを下げている
● めっちゃ早いバンドラを謳う(An extremely fast JavaScript
bundler)esbuildが登場した
12
esbuildとは
● Go言語で書かれたJS/TSのビルドツール
● 並列処理が得意なGoの恩恵により超高速
○ 公式READMEによると、three.jsのビルドが
webpack/rollup+terserの10-100倍
● 単体でトランスパイル/バンドル/Minifyを担ってくれる
13
https://github.com/evanw/esbuild より
esbuildがやらないこと
● 他のフロントエンド言語への対応(Elm、Svelte、Vue、
Angularなど)
○ VueはViteを使う
● TypeScriptの型チェック(tscを別途実行するだけでよい)
● カスタムAST操作のためのAPI
● Hot-module reloading
● Module federation(異なる JavaScriptアプリケーションから動
的にコードをロードするしくみ)
14
Plugin
15
Plugin
● Aleph.jsのランタイムを拡張するための機能
○ Marckdown LoaderやCSS Loader、JSON Loaderなどが対応
16
Plugin
// alph.config.ts
import windicss from "https://deno.land/x/aleph_plugin_windicss@v0.0.2/plugin.ts";
import type { Config } from "aleph/types";
export default <Config>{
plugins: [windicss],
};
17
MicroCMS
18
MicroCMS
● 公式SDK があるのでそれを使う
19
MicroCMS
// package.json
{
"dependencies": {
"microcms-js-sdk": "^2.0.0"
}
}
20
MicroCMS
// import_map.json
{
"imports": {
"microcms": "https://esm.sh/microcms-js-sdk"
},
"scopes": {}
}
21
MicroCMS
// microcmsClient.ts
import { createClient } from "microcms";
export const microcmsClient = createClient({
serviceDomain: "your-subDomain",
apiKey: `${Deno.env.get("X_MICROCMS_API_KEY")}`,
});
22
23
24
CSS Framework
25
CSS Framework
● WindiCSS
○ jie氏によりpluginが提供されている
● ChackraUI
26
Linter/Formater
27
Linter/Formater
// seting.json
{
"deno.lint": true,
"editor.defaultFormatter": "denoland.vscode-deno",
"editor.formatOnSave": true,
…
}
28
感想
29
感想
● ルーティングとかほぼNext.js
● プラグインはまだまだ非対応のものが多い
○ β版なので仕方ない
● esbuildの恩恵にあやかれるNo-bundlerビルドツールの選択肢
はいろいろ(Viteとかsnowpackとか)ある
○ Viteの爆速開発体験is良き。Webpackに戻れなくなる
30
ご清聴ありがとうございました🎉
31

More Related Content

What's hot

ChatGPTは思ったほど賢くない
ChatGPTは思ったほど賢くないChatGPTは思ったほど賢くない
ChatGPTは思ったほど賢くない
Carnot Inc.
 
複数台のKinectV2の使い方
複数台のKinectV2の使い方複数台のKinectV2の使い方
複数台のKinectV2の使い方Norishige Fukushima
 
リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介
Recruit Technologies
 
自然言語処理基礎の基礎
自然言語処理基礎の基礎自然言語処理基礎の基礎
自然言語処理基礎の基礎
Takashi Minowa
 
Python x ハードウェアの可能性
Python x ハードウェアの可能性Python x ハードウェアの可能性
Python x ハードウェアの可能性
karaage0703
 
【RSJ2021】LiDAR SLAMにおける高信頼なループ閉合の実装について
【RSJ2021】LiDAR SLAMにおける高信頼なループ閉合の実装について【RSJ2021】LiDAR SLAMにおける高信頼なループ閉合の実装について
【RSJ2021】LiDAR SLAMにおける高信頼なループ閉合の実装について
MobileRoboticsResear
 
Redmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみたRedmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみた
Kohei Nakamura
 
SSII2019企画: 点群深層学習の研究動向
SSII2019企画: 点群深層学習の研究動向SSII2019企画: 点群深層学習の研究動向
SSII2019企画: 点群深層学習の研究動向
SSII
 
2018/12/28 LiDARで取得した道路上点群に対するsemantic segmentation
2018/12/28 LiDARで取得した道路上点群に対するsemantic segmentation2018/12/28 LiDARで取得した道路上点群に対するsemantic segmentation
2018/12/28 LiDARで取得した道路上点群に対するsemantic segmentation
Takuya Minagawa
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
 
ITエンジニアのためのゼロから始める英語勉強法
ITエンジニアのためのゼロから始める英語勉強法ITエンジニアのためのゼロから始める英語勉強法
ITエンジニアのためのゼロから始める英語勉強法
Tsuyoshi Ushio
 
【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Dri...
【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Dri...【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Dri...
【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Dri...
Deep Learning JP
 
三次元点群を取り扱うニューラルネットワークのサーベイ
三次元点群を取り扱うニューラルネットワークのサーベイ三次元点群を取り扱うニューラルネットワークのサーベイ
三次元点群を取り扱うニューラルネットワークのサーベイ
Naoya Chiba
 
チケット駆動開発の解説~タスク管理からプロセス改善へ
チケット駆動開発の解説~タスク管理からプロセス改善へチケット駆動開発の解説~タスク管理からプロセス改善へ
チケット駆動開発の解説~タスク管理からプロセス改善へ
akipii Oga
 
[DL輪読会]Real-Time Semantic Stereo Matching
[DL輪読会]Real-Time Semantic Stereo Matching[DL輪読会]Real-Time Semantic Stereo Matching
[DL輪読会]Real-Time Semantic Stereo Matching
Deep Learning JP
 
[DL輪読会]High-Quality Self-Supervised Deep Image Denoising
[DL輪読会]High-Quality Self-Supervised Deep Image Denoising[DL輪読会]High-Quality Self-Supervised Deep Image Denoising
[DL輪読会]High-Quality Self-Supervised Deep Image Denoising
Deep Learning JP
 
20170419PFNオープンハウス インターンと採用 公開用
20170419PFNオープンハウス  インターンと採用 公開用20170419PFNオープンハウス  インターンと採用 公開用
20170419PFNオープンハウス インターンと採用 公開用
Preferred Networks
 
ビジネスパーソンのためのDX入門講座エッセンス版
ビジネスパーソンのためのDX入門講座エッセンス版ビジネスパーソンのためのDX入門講座エッセンス版
ビジネスパーソンのためのDX入門講座エッセンス版
Tokoroten Nakayama
 
動画認識における代表的なモデル・データセット(メタサーベイ)
動画認識における代表的なモデル・データセット(メタサーベイ)動画認識における代表的なモデル・データセット(メタサーベイ)
動画認識における代表的なモデル・データセット(メタサーベイ)
cvpaper. challenge
 
Machinationの紹介
Machinationの紹介Machinationの紹介
Machinationの紹介
Kazuhisa Minato
 

What's hot (20)

ChatGPTは思ったほど賢くない
ChatGPTは思ったほど賢くないChatGPTは思ったほど賢くない
ChatGPTは思ったほど賢くない
 
複数台のKinectV2の使い方
複数台のKinectV2の使い方複数台のKinectV2の使い方
複数台のKinectV2の使い方
 
リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介
 
自然言語処理基礎の基礎
自然言語処理基礎の基礎自然言語処理基礎の基礎
自然言語処理基礎の基礎
 
Python x ハードウェアの可能性
Python x ハードウェアの可能性Python x ハードウェアの可能性
Python x ハードウェアの可能性
 
【RSJ2021】LiDAR SLAMにおける高信頼なループ閉合の実装について
【RSJ2021】LiDAR SLAMにおける高信頼なループ閉合の実装について【RSJ2021】LiDAR SLAMにおける高信頼なループ閉合の実装について
【RSJ2021】LiDAR SLAMにおける高信頼なループ閉合の実装について
 
Redmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみたRedmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみた
 
SSII2019企画: 点群深層学習の研究動向
SSII2019企画: 点群深層学習の研究動向SSII2019企画: 点群深層学習の研究動向
SSII2019企画: 点群深層学習の研究動向
 
2018/12/28 LiDARで取得した道路上点群に対するsemantic segmentation
2018/12/28 LiDARで取得した道路上点群に対するsemantic segmentation2018/12/28 LiDARで取得した道路上点群に対するsemantic segmentation
2018/12/28 LiDARで取得した道路上点群に対するsemantic segmentation
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
ITエンジニアのためのゼロから始める英語勉強法
ITエンジニアのためのゼロから始める英語勉強法ITエンジニアのためのゼロから始める英語勉強法
ITエンジニアのためのゼロから始める英語勉強法
 
【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Dri...
【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Dri...【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Dri...
【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Dri...
 
三次元点群を取り扱うニューラルネットワークのサーベイ
三次元点群を取り扱うニューラルネットワークのサーベイ三次元点群を取り扱うニューラルネットワークのサーベイ
三次元点群を取り扱うニューラルネットワークのサーベイ
 
チケット駆動開発の解説~タスク管理からプロセス改善へ
チケット駆動開発の解説~タスク管理からプロセス改善へチケット駆動開発の解説~タスク管理からプロセス改善へ
チケット駆動開発の解説~タスク管理からプロセス改善へ
 
[DL輪読会]Real-Time Semantic Stereo Matching
[DL輪読会]Real-Time Semantic Stereo Matching[DL輪読会]Real-Time Semantic Stereo Matching
[DL輪読会]Real-Time Semantic Stereo Matching
 
[DL輪読会]High-Quality Self-Supervised Deep Image Denoising
[DL輪読会]High-Quality Self-Supervised Deep Image Denoising[DL輪読会]High-Quality Self-Supervised Deep Image Denoising
[DL輪読会]High-Quality Self-Supervised Deep Image Denoising
 
20170419PFNオープンハウス インターンと採用 公開用
20170419PFNオープンハウス  インターンと採用 公開用20170419PFNオープンハウス  インターンと採用 公開用
20170419PFNオープンハウス インターンと採用 公開用
 
ビジネスパーソンのためのDX入門講座エッセンス版
ビジネスパーソンのためのDX入門講座エッセンス版ビジネスパーソンのためのDX入門講座エッセンス版
ビジネスパーソンのためのDX入門講座エッセンス版
 
動画認識における代表的なモデル・データセット(メタサーベイ)
動画認識における代表的なモデル・データセット(メタサーベイ)動画認識における代表的なモデル・データセット(メタサーベイ)
動画認識における代表的なモデル・データセット(メタサーベイ)
 
Machinationの紹介
Machinationの紹介Machinationの紹介
Machinationの紹介
 

Similar to Denoで動くReactフレームワークAleph.jsでポートフォリオサイトをリプレイスした話

20170527 inside .NET Core on Linux
20170527 inside .NET Core on Linux20170527 inside .NET Core on Linux
20170527 inside .NET Core on Linux
Takayoshi Tanaka
 
XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用
Shinya Okano
 
ソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルドソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルド
Toru Tamaki
 
OWIN - .NETにおけるPSGI -
OWIN - .NETにおけるPSGI -OWIN - .NETにおけるPSGI -
OWIN - .NETにおけるPSGI -
将 高野
 
Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介
Makoto Nishimura
 
Asp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソAsp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソ
Yoshitaka Seo
 
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
Yukihiko SAWANOBORI
 
Nodejuku01 ohtsu
Nodejuku01 ohtsuNodejuku01 ohtsu
Nodejuku01 ohtsuNanha Park
 
継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキングTakayuki Kondou
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
Yu Nobuoka
 
About .Net vNext
About .Net vNextAbout .Net vNext
About .Net vNext
Kazunori Hamamoto
 
About .Net vNext
About .Net vNextAbout .Net vNext
About .Net vNext
Kazunori Hamamoto
 
Jenkins study jenkins build-cicdi
Jenkins study jenkins build-cicdiJenkins study jenkins build-cicdi
Jenkins study jenkins build-cicdi
昌桓 李
 
Eclipse xtext 紹介
Eclipse xtext 紹介Eclipse xtext 紹介
Eclipse xtext 紹介
Akira Tanaka
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejsTakayoshi Tanaka
 
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門
Narami Kiyokura
 
Grunt入門
Grunt入門Grunt入門
Grunt入門
Tsuyoshi Maeda
 
20170311 Developing & Deploying .NET Core on Linux
20170311 Developing & Deploying .NET Core on Linux20170311 Developing & Deploying .NET Core on Linux
20170311 Developing & Deploying .NET Core on Linux
Takayoshi Tanaka
 
静的サイトどこにする?
静的サイトどこにする?静的サイトどこにする?
静的サイトどこにする?
ogawatti
 
node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成
shigeki_ohtsu
 

Similar to Denoで動くReactフレームワークAleph.jsでポートフォリオサイトをリプレイスした話 (20)

20170527 inside .NET Core on Linux
20170527 inside .NET Core on Linux20170527 inside .NET Core on Linux
20170527 inside .NET Core on Linux
 
XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用
 
ソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルドソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルド
 
OWIN - .NETにおけるPSGI -
OWIN - .NETにおけるPSGI -OWIN - .NETにおけるPSGI -
OWIN - .NETにおけるPSGI -
 
Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介
 
Asp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソAsp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソ
 
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
 
Nodejuku01 ohtsu
Nodejuku01 ohtsuNodejuku01 ohtsu
Nodejuku01 ohtsu
 
継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
About .Net vNext
About .Net vNextAbout .Net vNext
About .Net vNext
 
About .Net vNext
About .Net vNextAbout .Net vNext
About .Net vNext
 
Jenkins study jenkins build-cicdi
Jenkins study jenkins build-cicdiJenkins study jenkins build-cicdi
Jenkins study jenkins build-cicdi
 
Eclipse xtext 紹介
Eclipse xtext 紹介Eclipse xtext 紹介
Eclipse xtext 紹介
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門
 
Grunt入門
Grunt入門Grunt入門
Grunt入門
 
20170311 Developing & Deploying .NET Core on Linux
20170311 Developing & Deploying .NET Core on Linux20170311 Developing & Deploying .NET Core on Linux
20170311 Developing & Deploying .NET Core on Linux
 
静的サイトどこにする?
静的サイトどこにする?静的サイトどこにする?
静的サイトどこにする?
 
node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成
 

Denoで動くReactフレームワークAleph.jsでポートフォリオサイトをリプレイスした話