Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Firebaseで ポートフォリオサイトを作ってみた / Make a portfolio s...
Search
Kentaro Matsushita
October 03, 2018
Programming
620
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Firebaseで ポートフォリオサイトを作ってみた / Make a portfolio site with Firebase
社内LT
Kentaro Matsushita
October 03, 2018
More Decks by Kentaro Matsushita
See All by Kentaro Matsushita
DMMブックスのNext.js化を加速させるAI活用 / Migrating DMM Books to Next.js with AI
kentarom
1
350
開発のアジリティ向上のためのシステムリプレイス ~DMM GAMESの事例~
kentarom
0
870
Denoで簡単なCLIツールを作ってみる / Try to make a simple CLI tool with Deno
kentarom
0
1.1k
GatsbyJSで作った個人ブログの構成を色々見直してみた / Improve my personal blog made with GatsbyJS
kentarom
1
470
Webサイトパフォーマンスを継続的に計測したい!!! / I want to continuously measure my website performance!!!
kentarom
2
620
Actions ToolkitではじめるGitHub Action開発 / Getting started creating a GitHub Action with Actions Toolkit
kentarom
2
2.1k
GitHub Gistを使って、アクティビティを可視化しよう / Let's try visualizing your activity using the GitHub Gist
kentarom
1
920
OGP画像を生成するNode.jsのライブラリを作ってみた / Create a Node.js module for generating Open Graph image
kentarom
1
7.6k
チームをよしなにする立場を経験して学んだこと / Things I have learned in leading the team
kentarom
0
860
Other Decks in Programming
See All in Programming
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
170
『寄り添うラジオ』をAIで作る 体験価値から逆算した、会話しないUXと品質設計
theoriatec2024
3
140
デプロイ直後のレイテンシスパイクを調べたら、 Railsの仕様にたどり着いた
nhsykym
0
110
LL言語やWebフレームワークのPostgreSQL対応 〜DBの機能がユーザーに届くまで〜
kentaroutakeda
0
140
tsc.rip を支える技術 / Kyoto.なんか #8
susisu
0
4.4k
PyO3 で既存 Python 評価器を Rust core 化する ー wasm-bindgen でブラウザにも配るための設計
kdash
1
560
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
3
380
Press start. Python's next generation.
willingc
PRO
3
320
Hello, Hiroshima Geospatial Data! — Exploring DoboX with Python
ra0kley
0
180
AIは賢い。でも実行環境は? CLIおじさんがAI時代に伝えたいこと ~ CLIおじさんがAI時代に伝えたいこと ~
curekoshimizu
1
220
typoなんかねぇよ
raspython3
0
680
AIエージェント時代のコードレビューを設計する
nogu66
6
2.6k
Featured
See All Featured
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
970
Skip the Path - Find Your Career Trail
mkilby
1
220
How to Think Like a Performance Engineer
csswizardry
28
2.8k
Building an army of robots
kneath
306
46k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
Google's AI Overviews - The New Search
badams
0
1.6k
Mobile First: as difficult as doing things right
swwweet
225
10k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Claude Code のすすめ
schroneko
67
230k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
450
Paper Plane (Part 1)
katiecoart
PRO
1
11k
Faster Mobile Websites
deanohume
310
32k
Transcript
Firebaseで ポートフォリオサイトを作ってみた Kentaro Matsushita 2018/10/03
⾃⼰紹介 • 2016年新卒⼊社 • プラットフォーム事業本部アカウントサービスチーム • アカウント基盤の開発・運⽤を担当しています • JavaScript /
TypeScript / AWS / React / Go • かゆいところに⼿が届くツールを開発するのが好きです Kentaro Matsushita @kentaro-m @_kentaro_m
アジェンダ • ポートフォリオサイトを作る理由 • ポートフォリオサイトを作る⽅法 • 困っている点と感想
アジェンダ • ポートフォリオサイトを作る理由 • ポートフォリオサイトを作る⽅法 • 困っている点と感想
エンジニアとして2年働いて できることも少しずつ増えてきた
ブログを書いたり、 LTをしたり、 個⼈開発をしたり…
成果物があるゆる場所に散らばっていた
⼀覧性が⾼い形式で成果物をまとめたい
ポートフォリオサイトを作る 解決⽅法
None
None
None
ポートフォリオサイトの概要 • 制作期間 8⽇(9⽉16⽇〜9⽉24⽇) • 制作費⽤ 0円(Firebase無料枠内) • 機能 QiitaやGitHub、Speaker Deckなどの表⽰ • 使⽤技術 Next.js、Firebase
ポートフォリオサイトの概要 • リポジトリをForkして、設定ファイルを変更、 デプロイでポートフォリオサイトが公開できます • https://github.com/kentaro-m/portfolio • 興味ある⽅はお試しください • 動作には料⾦プランをBlazeプラン
(従量課⾦) に変更が必要
アジェンダ • ポートフォリオサイトを作る理由 • ポートフォリオサイトを作る⽅法 • 困っている点と感想
まずは技術選定から!
使ったことがない技術で構築したい ReactでSSRするアプリケーションを 構築するためのフレームワーク アプリ開発のための便利サービスを 数多く提供 (認証、DB、etc ) (詳細はググってください)
Firebaseで構築する⽅法を 調査しました
アーキテクチャ ユーザー Firebase Hosting Cloud Functions for Firebase 外部サービスから データ取得
2 リクエスト 1 SSRする 3 結果を表⽰ 4 ユーザーにページが表⽰されるまでの流れ
Firebase Hosting • 静的コンテンツをホスティングするサービス • CDNを利⽤したキャッシュ配信に対応 • SSL証明書⾃動適⽤ • アクセス制限は不可
• AWSでS3とCloudFront、ACMを組み合わせて やっていたことがこれだけでできる
リクエストをCloud Functionsで処理させる すべてのリクエストをCloud Functionsで 処理させるように記述
Cloud Functions for Firebase • イベントドリブンで関数を実⾏するサービス • HTTPSリクエストトリガーで関数の実⾏が可能 • 200万回実⾏/⽉の無料枠がある
• 無料プランでは外部ネットワークにアクセスできない • AWSで⾔うところのLambdaのようなもの
リクエストをCloud Functionsで処理する
ポートフォリオサイト公開までの流れ 1. Next.jsアプリケーションを作成 2. Firebaseに新規プロジェクト作成 3. Firebase CLIでログイン 4. デプロイ実⾏
5. サイト公開
サンプルコードを動かしてみよう • next.js/examples/with-firebase-hosting at canary · zeit/next.js · GitHub •
Next.jsをFirebase Hostingで動作させるサンプルコード • https://github.com/zeit/next.js/tree/canary/examples/with-firebase-hosting • Next.js on Cloud Functions for Firebase with Firebase Hosting • サンプルコードを作成した開発者の記事 • https://codeburst.io/next-js-on-cloud-functions-for-firebase-with-firebase- hosting-7911465298f2
アジェンダ • ポートフォリオサイトを作る理由 • ポートフォリオサイトを作る⽅法 • 困っている点と感想
困っている点 • ページの表⽰速度が遅い • Cloud Functionsがローカル実⾏できない
ページの読み込み速度が遅い • 読み込み速度が8.2秒 (10⽉3⽇測定)
ページの読み込み速度が遅い • 初期データを取得するgetInitialProps()で外部APIにアクセスしている • API呼び出し結果をキャッシュしたい • キャッシュの設定 (Cache-Controlヘッダー) ができてない •
キャッシュの設定を追加したい • Cloud Functionsのロケーション (us-central1) になっている • tokyoリージョン (asia-northeast1) で動作するようにしたい
Cloud Functionsのローカル実⾏ができない • ⼿順通りに実⾏してもエラーが出る • Next.jsアプリケーションは単体で動作するので開発には⽀障なし
Firebaseを使ってみての感想 • 導⼊が⾮常に簡単 • サンプルコードは15分もあれば、デプロイまでできる • 運⽤⾯に関してはまだよくわからないです • ⾮常に多くのサービスがあり、開発者を助けてくれる •
アプリそのものの開発に集中できる
とりあえずFirebaseを 触ってみましょう!