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
98
明日業務で役立たない 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
6.9k
Python をフル活用した工場への AI 導入 & データ活用基盤構築事例
hoto17296
0
2.4k
クソ bot 実装ライブコーディング
hoto17296
0
180
DeepGBM 論文の紹介
hoto17296
0
480
試行錯誤のための Docker 活用術
hoto17296
4
2.7k
Hive 集計テクニック
hoto17296
0
430
データ分析と 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
サイバーセキュリティと認知バイアス:対策の隙を埋める心理学的アプローチ
shumei_ito
0
340
AWS⼊社という選択肢、⾒えていますか
iwamot
2
1.1k
マルチモーダル / AI Agent / LLMOps 3つの技術トレンドで理解するLLMの今後の展望
hirosatogamo
14
4.4k
Lambdaと地方とコミュニティ
miu_crescent
2
280
AI機能の開発運用のリアルと今後のリアル
akiroom
0
250
なぜ今 AI Agent なのか _近藤憲児
kenjikondobai
1
670
Team Dynamicsを目指すウイングアーク1stのQAチーム
sadonosake
1
260
Microsoft Fabric OneLake の実体について
ryomaru0825
0
200
マルチモーダルデータ基盤の課題と観点
neonankiti
1
110
私はこうやってマインドマップでテストすることを出す!
mineo_matsuya
0
260
Redmine 6.0 新機能評価ガイド
vividtone
0
300
リンクアンドモチベーション ソフトウェアエンジニア向け紹介資料 / Introduction to Link and Motivation for Software Engineers
lmi
4
300k
Featured
See All Featured
Unsuck your backbone
ammeep
668
57k
Adopting Sorbet at Scale
ufuk
73
9.1k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
Code Review Best Practice
trishagee
64
17k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.2k
Designing the Hi-DPI Web
ddemaree
280
34k
Optimising Largest Contentful Paint
csswizardry
33
2.9k
Gamification - CAS2011
davidbonilla
80
5k
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 エンジニア 積極採用中です!!!