Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
div 上にコメントを流す技術
sadnessOjisan
January 31, 2022
Programming
0
84
div 上にコメントを流す技術
2022年1月の日本大学文理学部、Webプログラミングの最終発表会(おのうえ研新春隠し芸大会)に、乱入した時の資料です。
https://danmaku.ojisan.dev/videos
sadnessOjisan
January 31, 2022
Tweet
Share
More Decks by sadnessOjisan
See All by sadnessOjisan
Rust でパーソナルカラーを診断できる CLI を作った
sadnessojisan
0
51
サーバーアーキテクチャと非同期ランタイムいろいろ
sadnessojisan
0
440
SSG is a compiler
sadnessojisan
6
4.2k
不用品掲示サイトをMicroCMS + NextJS + vanilla-extract で作った話
sadnessojisan
3
740
preactの仕組みを理解する軽量版教育用preactを作ってる話
sadnessojisan
4
2.3k
Node.jsの非同期とI/Oについて調べてみた
sadnessojisan
2
660
TypeScriptのDIはどうすればいいの?
sadnessojisan
10
2.3k
簡単には届かなかったweb push/web-push-is-difficult#pwanight
sadnessojisan
2
300
gatsby-imageをやめたいから勉強した話 -gatsbyをamp化したい-
sadnessojisan
0
740
Other Decks in Programming
See All in Programming
言語処理ライブラリ開発における失敗談 / NLPHacks
taishii
1
420
Jakarta EE 10 and Beyond
ivargrimstad
0
1.6k
Baseline Profilesでアプリのパフォーマンスを向上させる / Improve app performance with Baseline Profiles
numeroanddev
0
220
GoogleI/O2022 LT報告会資料
shinsukefujita1126
0
230
Keeping your team in top shape with the Gradle Enterprise API
runningcode
3
120
What's new in Jetpack / I/O Extended Japan 2022
star_zero
1
170
RFC 9111: HTTP Caching
jxck
0
150
Seleniumでイキってたらサーバを絞め落としかけてた話
kenfujita
0
360
ISUCON12 事前講習
rosylilly
3
3.8k
Gitlab CIでMRを自動生成する
forcia_dev_pr
0
110
開発速度を5倍早くするVSCodeの拡張機能を作った
purp1eeeee
2
130
競プロのすすめ
uya116
0
650
Featured
See All Featured
Designing the Hi-DPI Web
ddemaree
272
32k
Robots, Beer and Maslow
schacon
152
7.1k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
15
940
Rebuilding a faster, lazier Slack
samanthasiow
62
7.2k
Art Directing for the Web. Five minutes with CSS Template Areas
malarkey
196
9.4k
Faster Mobile Websites
deanohume
294
28k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
236
1M
Fontdeck: Realign not Redesign
paulrobertlloyd
73
4.1k
Raft: Consensus for Rubyists
vanstee
126
5.4k
A designer walks into a library…
pauljervisheath
196
16k
What's in a price? How to price your products and services
michaelherold
229
9.4k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
181
15k
Transcript
div の上に コメントを流す技術 おのうえ研名誉ゼミ生 @sadnessOjisan
自己紹介 - sadnessOjisan - 尾上研究室名誉ゼミ生 - #times_seriousness_ojisan - 日大にいたことない -
JAIST卒 - 教育心理学、オントロジー工学 - 地域コミュニティの共助意識についての研究 - 初等教育者のメンタリング知識の語彙の整理
Webプロ最終成果発表会? - Webプロ最終成果発表会 - 新春おのうえ研隠し芸大会
実は2回目 - 去年は無限メルカリレシート - メルカリの商品をバーコードでクリックできるChrome拡張、 - クリックした結果をレシートして出力 - 無限に長いレシートを作って遊ぶ -
その場にメルカリ社員がいたことを忘れていたポカを犯す
今年作ったもの
今年作ったもの きしめええええええ きしめええええええええん きしめええええええええん きしめええええええええん きしめええええええええん きしめええええええええん
つまりニコ動? - ニコ動ではない - 無断で、動画の上にコメントを流すと怒られる - なので <div></div> の上にコメントを流せるサービスを作った -
marquee タグでコメント流せば終わり https://danmaku.ojisan.dev/
DEMO https://danmaku.ojisan.dev/
できること - 背景を投稿 - リアルタイムにコメントを投稿 - プレミアム会員になるとAPI経由でコメントを投稿できる - つまり弾幕を作りやすい! https://danmaku.ojisan.dev/
技術的な話 - 真面目な話は面白くないので割愛 - 構成 - Client: NextJS, NextUI, CloudRun,
Firestore, zod - Trigger/API: CloudFunctions, NodeJS, zod - IaC: Terraform CDK - 挑戦ポイント - Firebase を GCP 側から Terraform 経由で建てる - CloudFunctions, CloudRun のパイプラインを GitHub で握る - Firestore のトリガーを GCP の CloudFunctions から行う
ハマったところ - marquee タグが使えなくなっている - って今の若い子たちは marquee タグを知らないっか〜〜〜 ^^
marquee とは - <marquee>左に流れまーーーす</marquee> https://qiita.com/sadnessOjisan/items/51bb949466fdd065a5a6
marquee が使えない - marquee は HTML5 で deprecated になった -
が、ブラウザが勝手に実装して使えていた - Chrome で amount オプション(繰り返し回数)が効かなくなっていた
CSSアニメーション
サービスに込めた想い - 0年代は著作権ガン無視で動画がアップロードされていた - 久々にログインしたら全部消えていた - 弾幕も全部消えていた -> 寂しい -
弾幕を保全したい - 著作権を違反しない形で弾幕を楽しめるサービスを作ろう! https://danmaku.ojisan.dev/
皆さんも弾幕を作ってください!
皆さんも弾幕を作ってください!
皆さんも弾幕を作ってください!
皆さんも弾幕を作ってください!
皆さんも弾幕を作ってください!
_人人人人人人人人人人_ > ボーナスステージ <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
この演出やってみたかった Thanks Oden君......
スロット スロット楽しいよな!!!!!!
スロットゲームをCLIで作った - 元ネタはGoで作るファイルパーミッションスロット - チャネルとGoroutineがあるとできるらしい https://qiita.com/jiro4989/items/2530c4f789916521a47a
hekopanda-cli-tools - Rust製CLI - スロットゲーム - グラビアモード https://github.com/sadnessOjis an/hekopanda-cli-tools
DEMO https://github.com/sadnessOjisan/hekopanda-cli-tools
なぜ Rust - Rustに channel と Goroutine 相 応のものがある -
mpsc - native thread - CLI を作るための環境が揃ってい る - clap: CLI option parser - cross: cross compile https://speakerdeck.com/sadnessojisan/rust-depaso narukarawozhen-duan-dekiru-cli-wozuo-tuta
シングルバイナリで配布 - Homebrew でも配布 - brew tap sadnessOjisan/hekopanda - brew
install sadnessOjisan/hekopanda - src: https://github.com/sadnessOjisan/hekopanda-cli-tools
チャネルとスレッド - スロットは無限ループ - スロットを止める命令を入力できない - スロット描画は別スレッドに切り出す - 停止命令をチャネルで送りつける
マルチスレッドプログラミングの常套手段 https://speakerdeck.com/sadnessojisan/sabaakitekutiyatofei-tong-qi-rantaimuiroiro
困ったこと - コンパイル - TUI の作成
コンパイル - Win/Linux向けコンパイルでは C 側で怒られる - build.rs に依存を足せばできるかも(?) - めんどくさいので
Mac だけサポート https://blog.ojisan.io/rust-ffi-cpp-wakaran/
TUIの作成 - Go の人が使っていたtermboxがRustでは動かない - 仕方ないので C実装の nurcess の Rust
バインドを使う。歴史が長いので安 定してるはず。 - threadセーフでなく、スロットを止められない
TUIがなくてもスロットは作れる - 結局普通の標準出力で作った - 先頭に \r をつけると出力結果を書き換えられる - スロットの描画が可能
想定される質問 - Q: どうやってへこぱんだのAAを作ったのですか?
想定される質問 - Q: どうやってへこぱんだのAAを作ったのですか? - A: 公式サイトから画像を持ってきて、AA変換ツールに食わせた
おしまい vdslab org に寄贈したい