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
AWSで雰囲気でつくる! VRChatの写真変換ピタゴラスイッチ
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
AnaTofuZ
April 04, 2025
Programming
550
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AWSで雰囲気でつくる! VRChatの写真変換ピタゴラスイッチ
2025/04/04のJAWS-UG山梨 【第5回】勉強会でのLTです
https://jaws-ug-yamanashi.connpass.com/event/346675/
AnaTofuZ
April 04, 2025
More Decks by AnaTofuZ
See All by AnaTofuZ
Perl GraphQL 高速化バトル 2026年5月版
anatofuz
0
66
k1LoW/deckのすすめ
anatofuz
2
760
Perl1.0 Deep Drive 0.01
anatofuz
0
240
Rubyの国のPerlMonger
anatofuz
3
2.4k
Pythonで爆速でHello, World!する
anatofuz
0
130
思いつきで推しの誕生日記念コンテンツを2日で作る技術
anatofuz
0
200
令和最新版 Perlコーディングガイド
anatofuz
5
11k
rakulangで実装する! RubyVM
anatofuz
6
6.1k
沖縄の大学で育った学生がエンジニアになるまで
anatofuz
2
7.8k
Other Decks in Programming
See All in Programming
PyConJP2026_wat_Python × Signal Processing: How to Draw Pictures with Sound Using Spectrogram Art
wat
0
650
LoopHub - ローカルで動く GitHub で、AI と共同開発
jugyo
0
350
[PyCon KR 2026] More Variants, More Diversity for AI Accelerators
achimnol
0
130
DroidKaigi 2026 「個人開発という実験場: Android エンジニアが手にする4つの自由」
slashnephy
0
200
PHPプロジェクトの結合バランスを可視化する #php_night
kajitack
0
200
My Marp Sample
sinoue0108
0
140
[DroidKaigi 26] How We Moved from Android Studio to Slack
thisaay
0
180
이 함수, 실패하면 어떻게 되나요? null부터 Rich Errors까지, Kotlin 에러 처리 15년
haeti2
0
120
AIと壁打ちしながら進めるコスト管理
fufuhu
2
1.9k
20260828_品質と開発生産性を両立させる、AI時代のE2Eテストの考え方
magicpod
0
120
不幸な GC
chencmd
0
870
業務時間外もAIに働いてもらう話
colorful12
3
9.9k
Featured
See All Featured
The Invisible Side of Design
smashingmag
301
52k
Being A Developer After 40
akosma
91
590k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
400
Odyssey Design
rkendrick25
PRO
2
800
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
How GitHub (no longer) Works
holman
316
150k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Tell your own story through comics
letsgokoyo
1
1.1k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Transcript
AWSで雰囲気でつくる! VRChatの写真変換 ピタゴラスイッチ 八雲アナグラ(@AnaTofuZ) 2025/04/04 JAWS-UG山梨 【第5回】勉強会
• 八雲アナグラ(@AnaTofuZ) • Webアプリケーションエンジニア ◦ 株式会社コードタクトで教育系のアプリケーションやってます • 1月から甲府でフルリモート ◦ 山梨出身ですがそれまでは沖縄とか京都にいました
◦ 5/31になんでもあり技術イベントHoutou.pmを甲府で開催予定 • 今日は趣味100%の話です 自己紹介
• 無料で遊べるVR SNS ◦ 別にVR機器なくても遊べる • Meta Questやスマホからも起動可能 ◦ 機能制限がちょっとあるのでゲーミングPCから接続が推奨
◦ つまり基本windows端末から起動する • テレワーク限界成人男性が会話機会を獲得できる貴重なサービス VRChat
• VRChatにはカメラ機能がある • 外カメ/内カメがあるので 自撮りも比較的簡単にできる カメラ https://metacul-frontier.com/?p=14064
• 撮影したデータは c://Users/<user>/Pictures/VR Chat 以下にyyyy-mmのディレクトリ が切られて保存される • VRChat_yyyy-mm-dd_hh:mm: dd_解像度.pngの命名規則で保存 撮影データ
• オフ会の時にVRChat上での写真をスマホ で表示したものをTwitterにあげる文化 • バックアップ用途としてもローカル以外 の場所で写真を管理したい ◦ Amazon Photosとかで管理したい 写真を外でみたい
• VRChatで撮影した写真のディレクトリをAmazon Photosでアップロード 対象に選択 • あとはAmazon Photosのwindowsアプリがいい感じにアップロードして くれる というわけで
• VRChatで撮影した写真のディレクトリをAmazon Photosでアップロード 対象に選択 • あとはAmazon Photosのwindowsアプリがいい感じにアップロードして くれる というわけで 勝ったッ!第1部完!
• VRChatで撮影した写真のディレクトリをAmazon Photosでアップロード 対象に選択 • あとはAmazon Photosのwindowsアプリがいい感じにアップロードして くれる というわけで 勝ったッ!第1部完!
• Amazon Photosにアップロードすると撮影日が設定されず順不同で表 示されてしまいアルバムとしては微妙な状態に • VRChat上ではカメラで撮影するものの、現実ただの画像出力で日付デー タがpngに書き込まれない仕様になっている ◦ 写真系のサービスにアップロードすると撮影日が不定いなる ◦
撮影日のメタデータを書き込んだ上でクラウド等に保存したい 撮影日順に並ばない ...
• 画像のメタデータの規格 • 一種のKVSと考えると早い • 撮影日はDateTimeOriginalというキーでYYYY:MM:DD HH:MM:SS形 式のvalueを設定すると認識される Exif ❯
exiftool PXL_20250127_001602781.jpg ExifTool Version Number : 13.00 File Name : PXL_20250127_001602781.jpg Directory : . File Size : 842 kB File Modification Date/Time : 2025:01:27 09:17:30+09:00 File Access Date/Time : 2025:02:16 21:11:33+09:00
• WindowsからVRChatの画像にExifの撮影日を書き込みたい • 個人的な理由であまりwindowsのプログラミングしたくない ◦ windows側の作業はローコストにしたい • 写真は大事なデータなのでクラウドでも保存したい • JAWS-UGがあるのでなんかAWSでやっときたい
やりたいこと
• WindowsからVRChatの画像にExifの撮影日を書き込みたい • 個人的な理由であまりwindowsのプログラミングしたくない ◦ windows側の作業はローコストにしたい • 写真は大事なデータなのでクラウドでも保存したい • JAWS-UGがあるのでなんかAWSでやっときたい
やりたいこと よっしゃじゃあ AWSでやるぞ!!
• WindowsからS3に画像アップロードが実は可能 ◦ aws cliを使う ◦ win scpを使う ▪ win
scpだといい感じの送信処理がすでに組み込まれてるので 楽 • 開発に関してはとりあえず手動でブラウザからアップロードして検証する windows から S3
• 最近の規格でPNGでもExifを書き込めるようになったがExif処理ライブラ リ側が未対応のものが現時点で多い ◦ コントリビュートチャンスとも言える • PNGではなくTIFFまたJPGEGに一度変換するとすんなりとExifを書き込 める • golangだと標準ライブラリPNGからJPEGに変換できる
◦ golangでlambdaをつくる PNGのつらみ
winscpで画像送信 lambdaでjpg変換しつつ EXIFを付与 winscpで画像取得
• lambdaのOS専用ランタイムをさっとつくる • golangのバイナリをbootstrapという名前でビルドする ◦ CGO_ENABLED=0 GOOS=linux go build -tags
lambda.norpc -o bootstrap ▪ CGO_ENABLED=0にしないとホストのglibcに依存して上手く起 動できない • zipで固めてアップロード!! lambdaアップロード
• 固めてアップロードする工程が面倒なのでlambrollを使う ◦ https://github.com/fujiwara/lambroll • lambroll init --function-name=anatofuz-XXX ◦ これですでに作成したlambdaリソースを引っ張る
• あとは生成されたfunction.jsonに設定を書き込む ◦ タイムアウト秒数の指定とか • バイナリを生成したらlambroll deployで全自動でアップロード lambroll
{ "Architectures": [ "x86_64" ], "EphemeralStorage": { "Size": 512 },
"FunctionName": "anatofuz-XXX", "Handler": "bootstrap", "LoggingConfig": { "LogFormat": "Text", "LogGroup": "/aws/lambda/anatofuz-XXX" }, "MemorySize": 128, "Role": "arn:aws:iam::.......", "Runtime": "provided.al2023", "SnapStart": { "ApplyOn": "None" }, "Timeout": 10, "TracingConfig": { "Mode": "PassThrough" } }
lambdaのトリガーで s3を指定
アップロードして ...
変換されてるつぽい
変換後の方に書き込まれてる !!
None
None
無事に日付順に!!! その結果
• windows起因で画像をaws ピタゴラスイッチでいい感じにした • lambrollでのデプロイ便利だった • 趣味でもAWSは便利!!! • あれこれローカルにNASしてミニPCのLinuxサーバーで処理すればよ かったのでは!?
まとめ