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
明日業務で役立たない Web 開発 TIPS
Search
Yuki Ishikawa
January 26, 2023
Technology
0
180
明日業務で役立たない Web 開発 TIPS
2022.11.19 フロントエンドカンファレンス沖縄
Yuki Ishikawa
January 26, 2023
Tweet
Share
More Decks by Yuki Ishikawa
See All by Yuki Ishikawa
第3回 Snowflake 中部ユーザ会- dbt × Snowflake ハンズオン
hoto17296
4
890
ORM と向き合う
hoto17296
14
11k
クソ bot 実装ライブコーディング
hoto17296
0
220
DeepGBM 論文の紹介
hoto17296
0
580
試行錯誤のための Docker 活用術
hoto17296
4
3k
Hive 集計テクニック
hoto17296
0
500
データ分析と Docker / Data Analysis with Docker
hoto17296
0
360
DeepCluster 論文の紹介
hoto17296
7
2.5k
最新論文を追う技術 / Technology to follow the latest paper
hoto17296
2
270
Other Decks in Technology
See All in Technology
Telemetry APIから学ぶGoogle Cloud ObservabilityとOpenTelemetryの現在 / getting-started-telemetry-api-with-google-cloud
k6s4i53rx
0
160
20250807 Applied Engineer Open House
sakana_ai
PRO
2
630
UDDのススメ - 拡張版 -
maguroalternative
1
630
あとはAIに任せて人間は自由に生きる
kentaro
3
680
生成AI活用のROI、どう測る? DMM.com 開発責任者から学ぶ「AI効果検証のノウハウ」 / ROI of AI
i35_267
4
130
家族の思い出を形にする 〜 1秒動画の生成を支えるインフラアーキテクチャ
ojima_h
3
1.4k
ABEMAにおける 生成AI活用の現在地 / The Current Status of Generative AI at ABEMA
dekatotoro
0
390
Cloud WANの基礎から応用~少しだけDeep Dive~
masakiokuda
4
130
薬屋のひとりごとにみるトラブルシューティング
tomokusaba
0
390
Amazon Bedrock AgentCoreのフロントエンドを探す旅 (Next.js編)
kmiya84377
1
160
20250807_Kiroと私の反省会
riz3f7
0
270
リモートワークで心掛けていること 〜AI活用編〜
naoki85
0
190
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
Site-Speed That Sticks
csswizardry
10
770
Music & Morning Musume
bryan
46
6.7k
The Cult of Friendly URLs
andyhume
79
6.5k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
Why Our Code Smells
bkeepers
PRO
338
57k
Balancing Empowerment & Direction
lara
2
570
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
How GitHub (no longer) Works
holman
314
140k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
890
How STYLIGHT went responsive
nonsquared
100
5.7k
Git: the NoSQL Database
bkeepers
PRO
431
65k
Transcript
明日業務で役立たない Web 開発 TIPS 2022.11.19 フロントエンドカンファレンス沖縄 © 2020 Chura DATA
inc. PROPRIETARY & CONFIDENTIAL.
hoto / @hoto17296 • ちゅらデータ株式会社 • “Web ギルド” ギルドマスター •
スタートアップなんでも屋 • Web / 機械学習 / データ基盤 / XR / インフラ / 情シス / etc… • 今日はオンライン登壇 • 昨年まで沖縄に住んでいたけど今は愛知からフルリモート勤務
最近やっていること 「データ」の会社 → データに関わるなら「分析」でも「基盤構築」でも「アプリ開発」でも何でもやる → コンテンツ制作とかは基本やっていない なんか Web で AR
やる案件きました!!!!! hoto さんどうですか!!???
「どうですか?」ではない • Web 屋は長くやってきたが XR (VR/AR) 領域はまったくの未知 • Unity?ってやつで3Dモデリングとかやるのだろうか、難しそう ※
Unity はモデリングツールではない • そもそも5年前に「Web の次は機械学習か XR 開発やろ」と思い立って 「でも XR 開発は酔うから機械学習にしよ」とちゅらデータを 選んだにも関わらず、なぜ今更 XR を? まぁ 面白そうだし やるかーーーーーー (勢い
というわけで (?) ここ1年半くらい なぜか Web で AR をやっています
Web AR について、詳しくは 同じチームの bayes さんが色々話してくれるはず! (しらんけど
本題にはいります スポンサートークなら何でも好きなことを喋っていいと聞きました
課題 Web AR 開発の難しさのひとつに「実機じゃないと検証しづらい」がある カメラへのアクセス ジャイロセンサへのアクセス 位置情報 (GPS) へのアクセス Web
AR アプリを動かすにはさまざまな ハードウェア・センサを利用する必要がある ※ しかも一部の Web API は HTTPS が必須 → PC だけで Web AR 開発するのはしんどい
プロジェクト開始当初の開発環境 都度ビルドして rsync で送ってからスマホから確認するという あたたかみのある開発フロー 開発用マシン 開発用スマホ どっかにあるサーバ (Global IP
アドレスとドメインがついている) Nginx example.com:443 開発環境 コードベース • TypeScript • React • Three.js ビルド 済み アプリ ビルド 済み アプリ ビルド 済み アプリ ビルド 済み アプリ ビルド 済み アプリ ビルド 済み アプリ 都度 手作業で rsync ビルド シンプルにめんどくさい Vite 使ってるのに HMR できない ブラウザキャッシュちゃんと消さないと ハマる (特に iOS Safari)
実現したいこと 開発用の public HTTPS エンドポイントにアクセスすると、謎のパワーで ローカルで動いている Vite dev server につながって欲しい
開発用マシン 開発用スマホ Docker Compose webapp (コンテナ) Vite dev server webapp:5173 開発環境 コードベース (コンテナ内にマウント) 謎のパワー
どうする?
補足:やらなかった方式 • ngrok 使う案 • 今回は IP 制限したい要件があったので ngrok だと有料プランが必須だった
• 後述する手法で作ってしまったほうが簡単そうだったので使わなかった • (類似ケースで) ngrok で事足りるケースはあると思う • 自己署名証明書使ってローカルネットワーク内で動くようにする案 • 新メンバーの環境構築が手間がかかる • 自己署名証明書を開発メンバー全員の PC にインストールしたくない • リモートワークしていると開発中画面の共有がしづらい (ペアプロしづらい) • 一人だけで開発するならこれでもよさそう 他にもいくつか案はあったが不採用に
とりあえず SSH Remote Port Forwarding これだけでできるっちゃできるが… 開発用マシン 開発用スマホ Docker Compose
webapp (コンテナ) どっかにあるサーバ (Global IP アドレスとドメインがついている) SSH Remote Port Forwarding localhost:8100 Nginx example.com:443 Vite dev server localhost:5173 開発環境 コードベース (コンテナ内にマウント) ssh -R 8100:localhost:5173 example.com proxy_pass http://localhost:8100; ※ WebSocket を通す設定も必要だが割愛 base = “/” // ここはよしなに server.host = true server.hmr.clientPort = 443 時間経つと接続が切れててストレス 開発環境を動かすたびに 長いコマンドを打つの面倒
余談: 開発環境はコマンド一発で動かせるべき (過激派) • 複数のプロジェクトに関わっていると「このアプリはどうやって動かすのだ っけな」と開発環境の切り替えのたびに README を読むのが面倒 • 開発環境の動かし方が複雑だと、新メンバーのオンボーディングや
引き継ぎのコストが高い • 初回だけは多少の初期設定 (環境変数書くとか) はあるとしても、 基本的には docker compose up だけで必要なサービスがすべて自動で 起動してくれるのが幸せでは??? • フロントエンドだけなら npm start でもいいが、たいてい DB とかも動かしたいので 開発環境って docker compose up だけで動くべきだと思いませんか???
続・SSH Remote Port Forwarding では、この部分を Docker 化しましょう 開発用マシン 開発用スマホ Docker
Compose webapp (コンテナ) どっかにあるサーバ (Global IP アドレスとドメインがついている) SSH Remote Port Forwarding localhost:8100 Nginx example.com:443 Vite dev server localhost:5173 開発環境 コードベース (コンテナ内にマウント) ssh -R 8100:localhost:5173 example.com
SSH クライアントの Docker 化 SSH クライアントを入れるだけの Dockerfile を書く SSH クライアントの設定を色々と書く
(Keep Alive とか known_hosts 無効化とか) リモートフォワードする起動スクリプトを書く 環境変数で接続先の設定 秘密鍵をコンテナ内にマウントする (ちょっとこわい) 秘密鍵は Docker Compose の Secrets を使ってホストからマウントする
できあがったものがこちら
できあがったものがこちら 開発用マシン 開発用スマホ Docker Compose webapp (コンテナ) ssh_client (コンテナ) どっかにあるサーバ
(Global IP アドレスとドメインがついている) SSH Remote Port Forwarding localhost:8100 Nginx example.com:443 Vite dev server webapp:5173 開発環境 コードベース (コンテナ内にマウント)
まとめ:結局何ができたの? • ローカル端末で動く Web サーバに、インターネット経由で 開発用スマホから HTTPS アクセスできるようにした • HMR
ができる! • docker compose up コマンド一発でこの開発環境が起動できるようにした • 環境構築が簡単!
この話は何に役立つの? • Web AR アプリ開発には役に立つかもしれない • Web AR アプリを開発していこう!(?) •
SSH クライアントをコンテナ内で起動したいことがあれば • そんなユースケースはない さぁ…
お問い合せ先 (?) 今日は会場にいないので、気になることがあった方はインターネットで Twitter • フォローしてください!!!(直球) • メンション飛ばして質問投げてくれてもいいです Meety •
なんでも雑に話しましょう • 「ちゅらデータ Meety」とかでググると出てきそう
@churadata 月に一度開催の ライブ配信番組 ちゅらコラボ 最新のイベント情報は 毎回異なるテーマで様々な企業様とTechトークをする でも随時発信しています 日々の情報発信 技術ブログ 採用情報
カジュアル面談
© 2022 Chura DATA inc. PROPRIETARY & CONFIDENTIAL. データ分析・AI 開発だけじゃな
い! 社内の Web アプリエンジ ニアに入社経緯やプロジェクト のことを聞いてみた (ブログ記事) 結局どっちがいいの? 自社開発 vs 受託開発 〜ちゅらデータの Webエンジニアが語る受託開発企 業の赤裸々トーク (YouTube)
Web エンジニア 積極採用中です!!!