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
530
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
47
k1LoW/deckのすすめ
anatofuz
2
740
Perl1.0 Deep Drive 0.01
anatofuz
0
230
Rubyの国のPerlMonger
anatofuz
3
1.9k
Pythonで爆速でHello, World!する
anatofuz
0
130
思いつきで推しの誕生日記念コンテンツを2日で作る技術
anatofuz
0
200
令和最新版 Perlコーディングガイド
anatofuz
5
11k
rakulangで実装する! RubyVM
anatofuz
6
5.4k
沖縄の大学で育った学生がエンジニアになるまで
anatofuz
2
7k
Other Decks in Programming
See All in Programming
Foundation Models frameworkで画像分析
ryodeveloper
1
140
【やさしく解説 設計編 #1】「ドメイン駆動」と「実装駆動」ってなに? 〜設計の考え方を、たとえ話で学ぼう〜
panda728
PRO
1
130
継続モナドとリアクティブプログラミング
yukikurage
3
640
アルゴリズムは何を圧縮しているのか ─ Haskell から育った「圧縮代数」というメンタルモデル
naoya
16
3.6k
ここ半年くらいでAIに作らせたR用ツール
eitsupi
0
230
FDEが実現するAI駆動経営の現在地
gonta
2
220
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
shibuchaaaan
0
140
Apache Hive: そしてCloud Native Lakehouseへ
okumin
1
170
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
17
9.3k
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1.7k
関数型プログラミングのメリットって何だろう?
wanko_it
0
190
AIエージェントで 変わるAndroid開発環境
takahirom
2
720
Featured
See All Featured
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
910
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
220
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
220
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
The Curious Case for Waylosing
cassininazir
1
440
Producing Creativity
orderedlist
PRO
348
40k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.3k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Being A Developer After 40
akosma
91
590k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
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サーバーで処理すればよ かったのでは!?
まとめ