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.4k
マージンを使わずに Webサイト構築してみた
kandai
0
3.2k
Jamstackの実案件で躓いたことや工夫したこと
kandai
0
1.5k
OpenAPIを使ってAPIドキュメントとモックサーバーを良い感じにした話
kandai
3
3.4k
WordPressサイトをNuxt.js × microCMSのJAMstack構成にリニューアルした話
kandai
1
1.6k
ブラウザの新しいAPIで遊んでみる
kandai
1
1.5k
Gridsome × Headless CMSでJAMstackなWebサイトを作る
kandai
1
1.1k
Media Session APIを使ってPWAの音楽プレイヤーを作る
kandai
0
550
CSS組版で技術書を作った話
kandai
0
420
Other Decks in Programming
See All in Programming
Startups on Rails in Past, Present and Future–Irina Nazarova, RailsConf 2025
irinanazarova
0
300
チームのテスト力を総合的に鍛えて品質、スピード、レジリエンスを共立させる/Testing approach that improves quality, speed, and resilience
goyoki
6
1.2k
AI コーディングエージェントの時代へ:JetBrains が描く開発の未来
masaruhr
2
220
顧客の画像データをテラバイト単位で配信する 画像サーバを WebP にした際に起こった課題と その対応策 ~継続的な取り組みを添えて~
takutakahashi
4
1.4k
MySQL9でベクトルカラム登場!PHP×AWSでのAI/類似検索はこう変わる
suguruooki
1
220
Jakarta EE Meets AI
ivargrimstad
0
290
코딩 에이전트 체크리스트: Claude Code ver.
nacyot
0
990
Google I/O Extended Incheon 2025 ~ What's new in Android development tools
pluu
1
140
AWS Summit Japan 2024と2025の比較/はじめてのKiro、今あなたは岐路に立つ
satoshi256kbyte
1
250
Claude Code で Astro blog を Pages から Workers へ移行してみた
codehex
0
150
構文解析器入門
ydah
7
1.8k
変化を楽しむエンジニアリング ~ いままでとこれから ~
murajun1978
0
170
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Why Our Code Smells
bkeepers
PRO
337
57k
Typedesign – Prime Four
hannesfritz
42
2.7k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
A better future with KSS
kneath
238
17k
What's in a price? How to price your products and services
michaelherold
246
12k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Making the Leap to Tech Lead
cromwellryan
134
9.4k
Automating Front-end Workflow
addyosmani
1370
200k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
21k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.9k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
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で検索 • 見本を持って来てるので読みたい人は
声かけてください
ご静聴ありがとうございました