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
Nuxt.jsとFirebaseで 2日間でWebアプリを作った話
Search
Daichi
May 13, 2019
Programming
1
660
Nuxt.jsとFirebaseで 2日間でWebアプリを作った話
2019年5月13日に行われたv-sendai #1で使用したスライドです。
Daichi
May 13, 2019
Tweet
Share
More Decks by Daichi
See All by Daichi
◯◯◯◯◯◯◯◯◯◯を使って簡単なゲームを作ってみた
kandai
0
1.2k
マージンを使わずに Webサイト構築してみた
kandai
0
3k
Jamstackの実案件で躓いたことや工夫したこと
kandai
0
1.4k
OpenAPIを使ってAPIドキュメントとモックサーバーを良い感じにした話
kandai
3
3.4k
WordPressサイトをNuxt.js × microCMSのJAMstack構成にリニューアルした話
kandai
1
1.6k
ブラウザの新しいAPIで遊んでみる
kandai
1
1.4k
Gridsome × Headless CMSでJAMstackなWebサイトを作る
kandai
1
1.1k
Media Session APIを使ってPWAの音楽プレイヤーを作る
kandai
0
540
CSS組版で技術書を作った話
kandai
0
400
Other Decks in Programming
See All in Programming
TypeScript Language Service Plugin で CSS Modules の開発体験を改善する
mizdra
PRO
3
2.4k
當開發遇上包裝:AI 如何讓產品從想法變成商品
clonn
0
2.5k
Practical Domain-Driven Design - Workshop at NDC 2025
mufrid
0
130
TSConfig Solution Style & subpath imports to switch types on a per-file basis
maminami373
1
180
What Spring Developers Should Know About Jakarta EE
ivargrimstad
1
590
AI Coding Agent Enablement in TypeScript
yukukotani
17
7.1k
抽象データ型について学んだ
ryounasso
0
210
MLOps Japan 勉強会 #52 - 特徴量を言語を越えて一貫して管理する, 『特徴量ドリブン』な MLOps の実現への試み
taniiicom
2
570
Reactive Thinking with Signals, Resource API, and httpResource @Devm.io Angular 20 Launch Party
manfredsteyer
PRO
0
130
❄️ tmux-nixの実装を通して学ぶNixOSモジュール
momeemt
1
120
JSAI2025 RecSysChallenge2024 優勝報告
unonao
1
370
Parallel::Pipesの紹介
skaji
2
870
Featured
See All Featured
Building an army of robots
kneath
306
45k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
The Cult of Friendly URLs
andyhume
78
6.4k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
12k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.6k
4 Signs Your Business is Dying
shpigford
183
22k
A Modern Web Designer's Workflow
chriscoyier
693
190k
For a Future-Friendly Web
brad_frost
178
9.7k
Transcript
2019.05.13 v-sendai meetup #1 Nuxt.jsとFirebaseで 2日間でWebアプリを作った話
TAM.inc フロントエンドエンジニア 菅家 大地 / Daichi Kanke 自己紹介 •
福島→宮城(6年)→東京と埼玉(10年)→宮城(New!) • デザイナー(異業種)→Webデザイナー→エンジニア • 普段はWebサイトやWebアプリのフロント全般 • v-sendai発起人 • PWA Night / Monaca UG運営 • フロントエンド仙台一緒にやる人いませんか?
• 世界7箇所(6ヶ国)に拠点を持つデジタルエー ジェンシー • 「勝手に幸せになりなはれ」という文化 • 「組織」ではなく「個人」にフォーカスした働き方。 菅家は東京のチーム所属で仙台のenspaceさん を借りてリモートワーク中 •
技術ブログのTipsNote見たことあるかも? TAM?
• 何を作ったか • 使っている技術と仕組み紹介 • 苦労ポイント • 作ってどうだったか アジェンダ
何を作ったか
宮城県といえば?
None
アラバキ2019のマイタイムテーブルの作成・共有ができるWebアプリ「タムテブ」 https://tamutebu-arabaki2019.firebaseapp.com/
なんで作ったか • 周るステージをメモれると便利なのでは? • フェス好きはきっとわかってくれる マイタイムテーブルを作るという楽しみ • さらにそれを共有したいという人はいそう • 新しい技術を試す機会として
• ためてぼ天国が息をしていなかったので • 今回のネタがほしい
リリースまでの道のり • 4月上旬にこういうの作ろうと思う • 1週間前くらいにリリースしようと思う • 現実はそんなにうまくいかない • 実際はフェス前に突貫で制作 •
なんとか2日間で制作・リリースまでできた (NuxtとFirebaseの知識はある程度あった)
技術紹介
Firebase Hosting Cloud Firestore 構成 フロントエンド バックエンド Vue.js Nuxt PWA
Nuxt.js? • Vue.js アプリケーション開発のためのフレームワーク • Vue.jsのサーバーサイドレンダリング用のフレームワークとして、React.jsベー スのSSR用フレームワークであるNext.jsに触発されて開発 • Vue.jsのアプリケーション開発をしやすいディレクトリ構造や、 ファイル構造に沿って自動的にルーティングしてくれる機能など、
開発するうえで便利な機能がたくさん入っています
Firebase? • Googleが提供するmBaaS。mBaaSとはモバイルアプリ開発の バックエンド側のインフラを提供するサービス。 • DB・ホスティング・ストレージ・認証など、 アプリ開発に必要な機能が豊富に揃っている • jsでアクセスするのでフロントのエンジニアでも実装しやすい •
無料で始めることが可能
ページテンプレート タイムテーブル作成画面 pages/index.vue 共有タイムテーブル pages/s/_id.vue
json 2日分の ・ステージ ・出演者 の情報をjsonで作成して、アプリ ケーションに渡すようにする (json作成は手作業…) タイムテーブルの表示
v-forでステージ・出 演者情報をループさ せてHTMLを生成 選択されてる日で データ切り替え computed template タイムテーブルの表示
json 出演者情報に開始時間とステージ の出演時間を持たせる position:absolute で配置。 上記のデータを使い計算してスタイ ルを付与。スタイルのバインディング めっちゃ便利。 (1時間のマスは90pxで実装) 位置の計算
methods
select という要素の状 態をクリックで切り替え る select が true なら、 isSelected のクラスが
付与されるように methods template 選択状態にする
選択時にローカルスト レージを更新する ローカルストレージに データがなければ用意 していたjsonをajaxで 取得しにいく ローカルストレージに保存する(初期 + データに変更があった時) mounted
methods
共有機能 • 「タイムテーブルを共有(更新)」のボタン押下でローカル ストレージのjsonごとFirestoreに保存する (まるごと保存するという雑な実装…) • IDが発行されるので、URL + ID で固有のURL作成。
Nuxtで /pages/s/_id.vue というファイルを作るだけで ルーティングしてくれる!簡単! • SNSの共有機能は各SNSのシェア用のURLを生成
共有機能
こだわりの全体表示 jsで無理やりviewportの値を変 更することで実現
PWA化する PWAとは… • ホームスクリーンに追加することで ネイティブアプリのようなUIを実現できる • 高速に起動する • オフラインでも動作可能 •
プッシュ通知利用可能(現状はAndroidのみ)
Nuxt.js の PWAモジュールを使ってPWA化 • Nuxt.jsにはNuxt PWAというモジュールが用 意されていて、これを有効化するだけで良い感 じにPWA化してくれる • タムテブも有効化してアプリ名などの
設定をしただけです
苦労ポイント
アプリのネーミング • 検索すると既にいろんな場面で使われていたり するので、とりあえず思いついたら検索してみる • 横文字への憧れが邪魔をする • 開発で一番時間を使ったかもしれない • 時間があれば何案か考えて周囲の人に聞いてみたりしたかった
デザインやUI • 見た目はどこまでもこだわれるので時間がかかってしまう • VuetifyなどのUIフレームワーク使う? • 今回は要素が少ないので必要なさそう • フレームワークは意外と学習コストかかる •
今回は最低限の見た目を整えてリリース
機能をできるだけ絞った • 個人で色々考えてると夢が広がりがち • 実際、色々考えていたしこれはやりたいって機能もあった • 目標が高すぎると挫折もしやすい • どーせそんなに使われないし(笑) •
一番怖いのはリリースしないで終わる
作ってどうだったか
自分がめちゃくちゃ使った • はじめに思った通り(思った以上に)便利だった • 夜までやってるけど暗くなっても見れる • 今回は1グループでパンフレット1部だった • 仲間内でも好評。UIの改善要望まで出てきた •
自分がほしいものを作れるって楽しい
他の人にどれくらい使ってもらえたのか • GAで見ると100人弱 • 直接リプライくれたり、作っ て共有してくれてる人も少 しいた • 当たり前だけど、 使ってもらえると嬉しい
今回のまとめ(感想) • Nuxt.jsを使うと環境構築の手間が少なく開発を始めるのが簡単 • Firebaseも無料で始められて組み込みやすいのでおすすめ • 自分が使うものを作るのは楽しい。使われるとさらに嬉しい • 最後までやりきるために締め切りとプレッシャーがあると良い
宣伝 • 実践PWAという本を書いて、 技術書典6で販売しました • 電子版はBOOTH or KindleでPWAで検索 • 見本を持って来てるので読みたい人は
声かけてください
ご静聴ありがとうございました