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
670
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
プロダクト内で混在するUIと技術スタック、コーディングエージェントで整理できるか?
kandai
0
150
◯◯◯◯◯◯◯◯◯◯を使って簡単なゲームを作ってみた
kandai
0
2k
マージンを使わずに Webサイト構築してみた
kandai
0
3.5k
Jamstackの実案件で躓いたことや工夫したこと
kandai
0
1.6k
OpenAPIを使ってAPIドキュメントとモックサーバーを良い感じにした話
kandai
3
3.5k
WordPressサイトをNuxt.js × microCMSのJAMstack構成にリニューアルした話
kandai
1
1.7k
ブラウザの新しいAPIで遊んでみる
kandai
1
1.5k
Gridsome × Headless CMSでJAMstackなWebサイトを作る
kandai
1
1.2k
Media Session APIを使ってPWAの音楽プレイヤーを作る
kandai
0
580
Other Decks in Programming
See All in Programming
CSC307 Lecture 02
javiergs
PRO
1
740
PC-6001でPSG曲を鳴らすまでを全部NetBSD上の Makefile に押し込んでみた / osc2025hiroshima
tsutsui
0
200
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
11
4.9k
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
330
AI Agent Tool のためのバックエンドアーキテクチャを考える #encraft
izumin5210
6
1.5k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
620
안드로이드 9년차 개발자, 프론트엔드 주니어로 커리어 리셋하기
maryang
1
150
Grafana:建立系統全知視角的捷徑
blueswen
0
270
DevFest Android in Korea 2025 - 개발자 커뮤니티를 통해 얻는 가치
wisemuji
0
180
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
200
生成AI時代を勝ち抜くエンジニア組織マネジメント
coconala_engineer
0
37k
Graviton と Nitro と私
maroon1st
0
160
Featured
See All Featured
Information Architects: The Missing Link in Design Systems
soysaucechin
0
730
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.4k
Become a Pro
speakerdeck
PRO
31
5.8k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
100
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.1k
KATA
mclloyd
PRO
33
15k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
180
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
300
For a Future-Friendly Web
brad_frost
180
10k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.9k
How to train your dragon (web standard)
notwaldorf
97
6.5k
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で検索 • 見本を持って来てるので読みたい人は
声かけてください
ご静聴ありがとうございました