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
110
明日業務で役立たない Web 開発 TIPS
2022.11.19 フロントエンドカンファレンス沖縄
Yuki Ishikawa
January 26, 2023
Tweet
Share
More Decks by Yuki Ishikawa
See All by Yuki Ishikawa
ORM と向き合う
hoto17296
8
7.3k
Python をフル活用した工場への AI 導入 & データ活用基盤構築事例
hoto17296
0
2.5k
クソ bot 実装ライブコーディング
hoto17296
0
180
DeepGBM 論文の紹介
hoto17296
0
500
試行錯誤のための Docker 活用術
hoto17296
4
2.7k
Hive 集計テクニック
hoto17296
0
440
データ分析と Docker / Data Analysis with Docker
hoto17296
0
310
DeepCluster 論文の紹介
hoto17296
7
2.4k
最新論文を追う技術 / Technology to follow the latest paper
hoto17296
2
240
Other Decks in Technology
See All in Technology
社外コミュニティで学び社内に活かす共に学ぶプロジェクトの実践/backlogworld2024
nishiuma
0
240
サーバレスアプリ開発者向けアップデートをキャッチアップしてきた #AWSreInvent #regrowth_fuk
drumnistnakano
0
190
日本版とグローバル版のモバイルアプリ統合の開発の裏側と今後の展望
miichan
1
110
なぜCodeceptJSを選んだか
goataka
0
110
バクラクのドキュメント解析技術と実データにおける課題 / layerx-ccc-winter-2024
shimacos
2
880
[2024年12月版] Unity Catalogセットアップガイド / Unity Catalog Setup Guide
databricksjapan
0
130
KubeCon NA 2024 Recap: How to Move from Ingress to Gateway API with Minimal Hassle
ysakotch
0
190
【re:Invent 2024 アプデ】 Prompt Routing の紹介
champ
0
120
ずっと昔に Star をつけたはずの思い出せない GitHub リポジトリを見つけたい!
rokuosan
0
140
宇宙ベンチャーにおける最近の情シス取り組みについて
axelmizu
0
110
権威ドキュメントで振り返る2024 #年忘れセキュリティ2024
hirotomotaguchi
2
690
どちらを使う?GitHub or Azure DevOps Ver. 24H2
kkamegawa
0
350
Featured
See All Featured
How GitHub (no longer) Works
holman
311
140k
A designer walks into a library…
pauljervisheath
204
24k
The Invisible Side of Design
smashingmag
298
50k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
95
17k
Testing 201, or: Great Expectations
jmmastey
40
7.1k
Designing for humans not robots
tammielis
250
25k
A Philosophy of Restraint
colly
203
16k
Documentation Writing (for coders)
carmenintech
66
4.5k
A Tale of Four Properties
chriscoyier
157
23k
Automating Front-end Workflow
addyosmani
1366
200k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.8k
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 エンジニア 積極採用中です!!!