SlideShare a Scribd company logo
1 of 31
Download to read offline
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

SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介MITSUNARI Shigeo
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるpospome
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するYoshifumi Kawai
 
Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話torisoup
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門Fixstars Corporation
 
組み込みLinuxでのGolangのススメ
組み込みLinuxでのGolangのススメ組み込みLinuxでのGolangのススメ
組み込みLinuxでのGolangのススメTetsuyuki Kobayashi
 
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かすドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす増田 亨
 
Unityでオニオンアーキテクチャ
UnityでオニオンアーキテクチャUnityでオニオンアーキテクチャ
Unityでオニオンアーキテクチャtorisoup
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説murachue
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean ArchitectureAtsushi Nakamura
 
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計増田 亨
 
ARグラスの自作と6DoF化
ARグラスの自作と6DoF化ARグラスの自作と6DoF化
ARグラスの自作と6DoF化emon 石川
 
Houdini Mantra レンダリングのチューニング
Houdini Mantra レンダリングのチューニングHoudini Mantra レンダリングのチューニング
Houdini Mantra レンダリングのチューニングKen Taki
 
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのかDDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのかKoichiro Matsuoka
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)mosa siru
 
3週連続DDDその3 ドメイン駆動設計 戦略的設計
3週連続DDDその3  ドメイン駆動設計 戦略的設計3週連続DDDその3  ドメイン駆動設計 戦略的設計
3週連続DDDその3 ドメイン駆動設計 戦略的設計増田 亨
 
IL2CPPに関する軽い話
IL2CPPに関する軽い話IL2CPPに関する軽い話
IL2CPPに関する軽い話Wooram Yang
 

What's hot (20)

SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
 
Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話
 
Riderはいいぞ!
Riderはいいぞ!Riderはいいぞ!
Riderはいいぞ!
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
 
組み込みLinuxでのGolangのススメ
組み込みLinuxでのGolangのススメ組み込みLinuxでのGolangのススメ
組み込みLinuxでのGolangのススメ
 
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かすドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす
 
[Track1-5] 製造業における最新AI適用事例のご紹介
[Track1-5] 製造業における最新AI適用事例のご紹介[Track1-5] 製造業における最新AI適用事例のご紹介
[Track1-5] 製造業における最新AI適用事例のご紹介
 
Unityでオニオンアーキテクチャ
UnityでオニオンアーキテクチャUnityでオニオンアーキテクチャ
Unityでオニオンアーキテクチャ
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
 
ARグラスの自作と6DoF化
ARグラスの自作と6DoF化ARグラスの自作と6DoF化
ARグラスの自作と6DoF化
 
WebRTCとSFU
WebRTCとSFUWebRTCとSFU
WebRTCとSFU
 
Houdini Mantra レンダリングのチューニング
Houdini Mantra レンダリングのチューニングHoudini Mantra レンダリングのチューニング
Houdini Mantra レンダリングのチューニング
 
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのかDDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
 
3週連続DDDその3 ドメイン駆動設計 戦略的設計
3週連続DDDその3  ドメイン駆動設計 戦略的設計3週連続DDDその3  ドメイン駆動設計 戦略的設計
3週連続DDDその3 ドメイン駆動設計 戦略的設計
 
IL2CPPに関する軽い話
IL2CPPに関する軽い話IL2CPPに関する軽い話
IL2CPPに関する軽い話
 

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 LinuxTakayoshi 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
 
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
 
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 LinuxTakayoshi 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でポートフォリオサイトをリプレイスした話