Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Blogを作った話 -Zli x DeNA-
Search
uzimaru0000
January 22, 2020
Programming
210
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Blogを作った話 -Zli x DeNA-
uzimaru0000
January 22, 2020
More Decks by uzimaru0000
See All by uzimaru0000
OGPを使いたい
uzimaru0000
0
180
git入門
uzimaru0000
1
360
Webフロントエンド入門
uzimaru0000
1
460
WebフロントエンジニアはOSの夢を見る
uzimaru0000
0
370
BrainFuckをつくった
uzimaru0000
0
580
Elmで作るCLI
uzimaru0000
0
140
Compression Vue App
uzimaru0000
0
130
好きなライブラリ_OSS
uzimaru0000
0
240
Other Decks in Programming
See All in Programming
LaravelLive Japan の裏方のすべて — 第188回 PHP勉強会@東京 (2026-06-24)
suguruooki
2
140
分散システム、なんですぐ死んでしまうん?耐障害性を高めたいあなたのためのレジリエンスパターン入門
mshibuya
2
610
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
180
AIエージェントで 変わるAndroid開発環境
takahirom
0
110
AI時代のUIはどこへ行く?その2!
yusukebe
22
7.7k
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
4.6k
SREの積み重ねがAI駆動開発のガードレールになった ― 7つの実践/SRE Guardrails The 7
tomoyakitaura
5
760
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
1
330
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
7
1.7k
AI 輔助遺留系統現代化的經驗分享
jame2408
1
1.1k
OS アップデート対応の取り組み方がもっと共有されてほしい
andpad
0
110
Even G2とAWSで推しのエージェントを召喚しよう!
har1101
1
140
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.7k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Producing Creativity
orderedlist
PRO
348
40k
Automating Front-end Workflow
addyosmani
1370
210k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
660
BBQ
matthewcrist
89
10k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
150
Test your architecture with Archunit
thirion
1
2.3k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
2
280
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
550
Transcript
Blogを作った話 うじまる (大庭 周士)
- 名前 - 大庭 周士 - 好きな物 - フロントエンド -
TS - Elm - SNS - uzimaru0000 自己紹介
突然ですが・・・
Blogを作りました
なんで作ったのか - 冬休み中に何か作りたかった - 自分のドメインのブログが欲しかった そうだブログを作ろう
構成 - フロントエンド - React + TypeScript - バックエンド -
Node.js + TypeScript - フレームワーク : Micro - データベース : FaunaDB - ホスティング先 - now.sh
Microって? - https://github.com/zeit/micro - ZEIT社が作ったサーバサイドフレームワーク - Simpleに書ける - (個人的に)使いやすい
FaunaDBって? - ACID特性を持ちつつスケーラビリティも備えた分散データ ベース - 標準でGraphQLに対応してる - ドキュメント指向のデータベース
now.shって? - https://now.sh - $ now でデプロイできる - HPに “World-Class
Static Hosting” とあるがServerもデプロ イできる - 独自のドメインも設定できる
なんでこの構成なの? - AWS, GCPよくわからない、now.shしか使えない - now.shにはDBサービスが無いので外部のDBサービスを使 わないといけない - TwitterのプロモーションでFaunaDBが出てきてて良さげだっ た
ディレクトリ構成 - now.json ← now.shの設定 - package.json - main/ ←
クライアントサイドのソースコード - public/ ← faviconとかrobots.txtとかの静的ファイル - api/ ← APIサーバーのソースコード - cli/ ← CLI(後述) のソースコード - common/ ← 型定義とか
now.json - どうルーティングするかなどを書いておく
API Client Static
API Client Static Client??
ひよこだってSSRしたい
SSRって? SSレア?
SSRって? SSレア ServerSideRendering サーバサイドでレンダリングして結果(HTML)を返却する Next.jsとかNuxt.jsを使うと楽に実装できる
CSR (クライアントサイドレンダリング) 鯖 HTML JS HTML, JSをクライアントに渡す
CSR (クライアントサイドレンダリング) 鯖 JS 動的にDOMを構成
CSR (クライアントサイドレンダリング) 鯖 JS データを取得
SSR (サーバサイドレンダリング) 鯖 HTML JS HTML, JSをクライアントに渡す
SSR (サーバサイドレンダリング) 鯖 HTML JS
どうしてサーバで描画できるの? - ブラウザでHTMLを表示しているのはDOM <h1>Title</h1> <img src=”...”>
どうしてサーバで描画できるの? - Reactさんが操作しているのは仮想DOM <h1>Title</h1> <img src=”...”>
どうしてサーバで描画できるの? - 仮想DOMをHTML文字列にすればOK
なんでSSRするの? - SEO対策 - クローラーがJSを解釈しないから - 初期描画を早くする - サーバでHTMLを生成しているから早い -
OGPを設定したい
なんでSSRするの? SEO対策 & 初期描画を早くする
ひよこはnow.shを推したい
なんで推したいのか - 使いやすい - 開発しやすい - 無料!
使いやすい - now.json の設定がそんなに複雑じゃない - 基本的に `$ now` を打てばデプロイしてくれる -
デプロイごとに一意なURLを発行してくれる - ドメインのaliasも `$ now alias` でできる
開発しやすい - `$ now dev` というサブコマンド - 実際の環境と同じようにサーバを立ててくれる - ファイルを更新したら再起動してくれる
- 環境変数を.envから勝手に読み取ってくれる File Watch
開発しやすい 今回の環境 Watch Watch Build Edit Parcel
開発しやすい 何が良かったか - サーバを複数立てなくていい - 今まではAPIとクライアントのサーバを別々で - URLが相対Pathで指定できる - DevとProdでPathを変えなくていい
ひよこはCLIで投稿したい
ディレクトリ構成 - now.json ← now.shの設定 - package.json - main/ ←
クライアントサイドのソースコード - public/ ← faviconとかrobots.txtとかの静的ファイル - api/ ← APIサーバーのソースコード - cli/ ← CLI(後述) のソースコード
なんでCLI - 長文書いてるとブラウザのエディタではUXが良くない - 結局ブラウザで書くよりローカルで書いたほうがいい - 別で管理画面を作るのが面倒 & そこまでいらない -
CLIがすき
使ったpackage - https://github.com/tj/commander.js/ - CLIのフレームワーク的なやつ - https://github.com/terkelg/prompts - 入力をいい感じにやってくれるやつ -
password入力 - セレクト - etc...
commander.js 自分なりにちょっとアレンジ こんな感じの 型定義を作成
commander.js - name - サブコマンドの名前 - args - 引数 -
`<>` で囲むと必須 - `[]` で囲むと任意 - description - コマンドの説明 - action - コマンドの内容
commander.js
prompts - Promiseで入力値を受け 取れる - 複数連続して入力を受け 付けれる - 入力値にメッセージがつ けれる
DEMO
まとめ - now.sh とてもいい - 開発モードもあるので開発がしやすい - Micro とてもいい -
ちょっとしたサーバならこれで十分 - Parcel とてもいい - webpack.config.js 書きたくないじゃん - SSR の勉強になった - フレームワークなしでSSRしたので勉強になった - prompts とてもいい - 簡単にインタラクティブな入力処理を書ける
Q&A
ありがとうございました