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
自分用趣味アプリを作っている話
Search
TAKAyukiatkwsk
December 21, 2024
Programming
0
110
自分用趣味アプリを作っている話
Kanazawa.rb meetup #148 のLightning talk資料です。
TAKAyukiatkwsk
December 21, 2024
Tweet
Share
More Decks by TAKAyukiatkwsk
See All by TAKAyukiatkwsk
Claude Codeと共に構成図を作る
takayukiatkwsk
0
46
argo-rolloutsにコミットした話
takayukiatkwsk
0
48
EnvoyのWasm filterを体験する
takayukiatkwsk
0
48
zoxideのご紹介
takayukiatkwsk
0
100
Kanazawa.rbに参加してからのふりかえり
takayukiatkwsk
0
51
git-secretsとgitフックをざっと理解する
takayukiatkwsk
0
350
計測プラットフォームSREチームとシステム障害対応 / measurement platform SRE team's incident response
takayukiatkwsk
0
1.2k
Flutterに入門して体重グラフアプリを作る / Get started Flutter and build a weight graph app
takayukiatkwsk
0
430
リモートワークを振り返る / Look back on remote-working
takayukiatkwsk
0
140
Other Decks in Programming
See All in Programming
私はどうやって技術力を上げたのか
yusukebe
43
18k
「ちょっと古いから」って避けてた技術書、今だからこそ読もう
mottyzzz
10
6.4k
CSC305 Lecture 03
javiergs
PRO
0
240
CSC509 Lecture 03
javiergs
PRO
0
330
高度なUI/UXこそHotwireで作ろう Kaigi on Rails 2025
naofumi
4
3.8k
overlayPreferenceValue で実現する ピュア SwiftUI な AdMob ネイティブ広告
uhucream
0
170
CSC509 Lecture 06
javiergs
PRO
0
260
iOSアプリの信頼性を向上させる取り組み/ios-app-improve-reliability
shino8rayu9
0
160
CSC509 Lecture 05
javiergs
PRO
0
300
Advance Your Career with Open Source
ivargrimstad
0
440
バッチ処理を「状態の記録」から「事実の記録」へ
panda728
PRO
0
140
Railsだからできる 例外業務に禍根を残さない 設定設計パターン
ei_ei_eiichi
0
410
Featured
See All Featured
Making Projects Easy
brettharned
119
6.4k
The World Runs on Bad Software
bkeepers
PRO
71
11k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
51k
How GitHub (no longer) Works
holman
315
140k
Agile that works and the tools we love
rasmusluckow
331
21k
A Modern Web Designer's Workflow
chriscoyier
697
190k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
114
20k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
610
The Straight Up "How To Draw Better" Workshop
denniskardys
237
140k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
It's Worth the Effort
3n
187
28k
Transcript
自分用趣味Webアプリを 作っている話 Kanazawa.rb meetup #148 Takayuki Takagi
自己紹介 • Takayuki Takagi (髙木貴之 / ニボシーニョ) • @TAKAyuki_atkwsk /
takayukiatkwsk • SRE @ ZOZO • AWS, Kubernetes, Scala, Ruby, Go, etc. • ビール、餃子、サッカー観戦が好き 2
自分用趣味Webアプリに ついてゆるく話す 3
どんなWebアプリか? • Nidera score viewer(限定公開) ◦ beatmania IIDX(弐寺)の過去スコアをさくっと確認できるもの ◦ ゲーセンにいるときにスマホから見る想定
• 機能一覧 ◦ 楽曲検索 ◦ 楽曲のスコア表示 ◦ 楽曲に対するメモの保存・表示 ◦ 楽曲スコアCSVファイルのアップロード 4
雰囲気を紹介 5
技術要素 • Webフレームワーク: Remix (v2) • CSSフレームワーク: Tailwind CSS •
実行環境: Cloudflare Workers • データベース: Cloudflare D1 6
なぜ作っているのか? • 技術面 ◦ Cloudflareを使ってみたい ◦ Remixを使ってみたい • 実用面 ◦
公式サイトでもスコアの確認はできるが、過去作を通しては不可 ▪ CSVダウンロードできるので、これを保存して集計することになる ◦ 需要を満たすサイトは既にいくつか存在する ◦ 車輪の再発明になるけど、技術的な興味含め作ってみることに 7
作ってみた感想 • Remixのお作法に慣れてきた ◦ loaderとactionを抑えれば良い ▪ loader: ページ描画時にデータを渡すための関数 ▪ action:
データを操作するための関数(例:フォームのsubmit時) ▪ どちらもサーバーで動く ◦ URLに対応するファイルの配置 ▪ /music/search -> app/routes/music.search.tsx ▪ /music/:id -> app/routes/music.$id.tsx ◦ シンプルな規約があると考えることが減ってありがたい ▪ (課題外在性の)認知負荷が下がるとも言えそう ▪ Ruby on Railsにも当てはまる ▪ 選択肢が多すぎるのは難しい 8
作ってみた感想 • ブラウザでJavaScript無効にしても機能する ◦ 普通のWebサイトとして振る舞う ◦ 実装を変えているわけではない ▪ イベントハンドラやReactで状態遷移を伴う何かを実装していれば、それ は機能しないと思われる
◦ Progressive Enhancement | Remix ▪ > JavaScript なしで動作する方法でアプリを構築し、その後 JavaScript を重ねてエクスペリエンスを強化できるということです 9
作ってみた感想 • 1ページに何でも詰め込まない方がいい ◦ 楽曲ページ (/music/:id) の例 ◦ 当初は楽曲のスコアとメモを同居させていた ▪
メモの保存のルーティングとページ再描画がどうにもうまくいかなかっ た(やりようはあるかもしれないが) ◦ ナビゲーションタブを設置して両者を分離した 10
before after 11
作ってみた感想 • 1ページに何でも詰め込まない方がいい ◦ 楽曲ページ (/music/:id) の例 ◦ 当初は楽曲のスコアとメモを同居させていた ▪
メモの保存のルーティングとページ再描画がどうにもうまくいかなかっ た(やりようはあるかもしれないが) ◦ ナビゲーションタブを設置して両者を分離した ◦ 結果 12 ▪ データの流れがシンプルになった ▪ 操作が分かりやすくなった(主観)
さいごに • Remixの良さが少しだけ分かったかもしれない ◦ loaderとactionさえ気にしておけばひとまず良いという安心感 • フルスタックで開発するのは大変だけどおもろい ◦ ページ設計やコンポーネント書くのが新鮮 •
今後やりたいこと ◦ UIの拡充やスコア推移のグラフなど実装したい ◦ デプロイ自動化したい ◦ React Router v7にアップデートしたい 13
以上 ありがとうございました! 14