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
推しの VTuber の公式サイトを作った
Search
嘉音とんと
December 19, 2022
Technology
180
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
推しの VTuber の公式サイトを作った
嘉音とんと
December 19, 2022
More Decks by 嘉音とんと
See All by 嘉音とんと
CSSの歩き方
kanon_tonto
0
62
推しの VTuber の公式 Web サイトを作った Part.2
kanon_tonto
0
36
これまでに一番苦労したプロジェクト
kanon_tonto
0
30
ぼっちがリモートワークやってみた
kanon_tonto
0
98
Kanazawa.rbを振り返る
kanon_tonto
0
120
もう僕は勤怠を入力しなくても良い
kanon_tonto
0
55
Goで始めるWebsocketプログラミング
kanon_tonto
0
170
AWS Lambdaでファイルをこねくり回す
kanon_tonto
0
440
iOSアプリをリリースするまで
kanon_tonto
2
420
Other Decks in Technology
See All in Technology
[モダンアプリ勉強会]今更聞けないGit/GitHub入門
tsukuboshi
0
290
新アーキテクチャ「TiDB X」解説とDedicated比較 TiDB Cloud Premiumのゲーム運用活用を検証
staffrecruiter
0
120
2026.06.13_AI時代に事業会社が「SIer出身エンジニア」を求める理由 / Why Businesses Seek Engineers with a System Integrator Background in the AI Era
jumtech
0
570
AI フレンドリーなエラー監視を TypeScript で実現する
shinyaigeek
2
260
もりもり新機能を一挙紹介! AgentCoreに入門して、AWS上にAIエージェントを構築しよう
minorun365
PRO
6
840
Agentic Web
dynamis
1
160
protovalidate-es を導入してみた
bengo4com
0
130
ブロックチェーン / Blockchain
ks91
PRO
0
110
Claude Codeを組織で使いこなす— サーバサイドAIエージェント運用の実践知
techtekt
PRO
0
210
トークン数だけでは測れない — Claude Code 組織展開の効果検証から学んだこと
makikub
0
130
AI活用を推進するために ファインディが下した、一つの小さな決断
starfish719
0
250
Ruby::Boxでできること、Refinementsでできること
joker1007
3
400
Featured
See All Featured
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1.1k
Marketing to machines
jonoalderson
1
5.4k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
360
WENDY [Excerpt]
tessaabrams
11
38k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
It's Worth the Effort
3n
188
29k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
440
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
150
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Transcript
@27ma4_ton10 github.com/RyuseiNomi 推しの VTuber の 公式サイトを作った
とんと # Webエンジニア # マリオカート # VTuber(見る方) # Go /
Swift / React @27ma4_ton10
https://kiyubi-kokon.netlify.app/ 作成したもの
・React (Typescript) ・CSS ・Golang ・Node.js ・AWS Lambda ・AWS API Gateway
・AWS S3 ・AWS CloudFront 技術スタック
システム構成図
https://… 最新の 動画情報 JSON の返却 イベントの発火 JSONをポーリング API を叩く 動画情報
JSON の取得 ブラウザ JSON 画像の配布 画像の取得
・タイトルのロード画面 ・ハンバーガーメニュー ・スクロールに連動したアニメーション ・最新の配信を常に表示する 拘りポイント
拘りポイント1 ロード画面
ローディング画面とタイトル画面を 画像の読み込み状況によって出し分ける ✅
None
fetchImage が終わった後の処理 画像の読み込み処理
None
ロード中のぐるぐる タイトル
拘りポイント2 ハンバーガーメニュー
簡単な仕組み
半透明のボタン メニュー これをすることで メニューを開いた時に 背景を暗くすることができる 表示の制御は state で管理
スクロールの仕組み
None
移動対象の DOM の絶対位置を取得 window.scrollTo で移動させる
アニメーションの仕組み
None
右からふわっと出現するアニメーション アニメーションを適用させたボタン
拘りポイント3 スクロールと連動した アニメーション
スクロールの度に現在の X 座標を取得して 特定のコンポーネントと比較する ✅
None
これ注目
https://developer.mozilla.org/ja/docs/Web/API/EventTarget/addEventListener
つまり、スクロールが実行されるたびに toggleFadeIn メソッドが呼ばれるようになる
あとはメソッドを 実装するだけ
X軸の座標と ターゲットとなるコンポーネントのX座標を取得 2つの座標を比較して、特定の位置に達したら animation クラスを動的に追加する
拘りポイント4 最新の動画を YouTube から取得
最初にやろうとしたこと ブラウザ 動画情報 API を叩く YouTube API V3 の上限がかなり低く 約
100 リクエストほどで上限に達する
最初にやろうとしたこと ブラウザ 動画情報 API を叩く 独自のAPIサーバを作成して取得する
APIサーバ ポーリング Lambda 関数 ブラウザ JSON
ポーリング Lambda 関数 JSON
ポーリング Lambda 関数 YouTube API から動画情報を取得して S3 バケットにアップロードする ✅ JSON
AWS SAM Lambda周りの構成管理や デプロイなどを コマンド1つで実現出来る
None
こんな感じに yamlファイルで Lambdaのパラメータを管理
あとはコードを 書くだけ
あとはコードを 書くだけ 中でやっていること ・動画データの取得 ・temp 配下に空っぽの json ファイルを作成 ・取得したデータを作成したファイルに書込む ・書き込まれたファイルを
S3 にアップロード
None
APIサーバ
ブラウザ リクエストがあった際に S3 からファイルを取得して返す ✅ JSON
None
None
S3 のバケット情報 S3 のファイルを取得する処理 レスポンスを生成して返却
https://… ブラウザ
上限 100 リクエストから ある程度は耐えられるように!
TODO フロントエンド ・SEO 対策の強化 ・画像のレンダー処理をもっと快適にする バックエンド ・JSON を捌く処理のリファクタ(Lambda) ・失敗時にアラートを飛ばす仕組み作り インフラ
・リクエスト数の上限の最適解を探す ・発生するコストの見積もり
(=´∀`)人(´∀`=)
推しは推せる時に推しましょう