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
930
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
370
DeepCluster 論文の紹介
hoto17296
7
2.5k
最新論文を追う技術 / Technology to follow the latest paper
hoto17296
2
270
Other Decks in Technology
See All in Technology
MCPで変わる Amebaデザインシステム「Spindle」の開発
spindle
PRO
3
3.2k
大「個人開発サービス」時代に僕たちはどう生きるか
sotarok
20
10k
Android Audio: Beyond Winning On It
atsushieno
0
850
エラーとアクセシビリティ
schktjm
1
1.3k
DDD集約とサービスコンテキスト境界との関係性
pandayumi
3
280
BPaaSにおける人と協働する前提のAIエージェント-AWS登壇資料
kentarofujii
0
140
Generative AI Japan 第一回生成AI実践研究会「AI駆動開発の現在地──ブレイクスルーの鍵を握るのはデータ領域」
shisyu_gaku
0
270
職種の壁を溶かして開発サイクルを高速に回す~情報透明性と職種越境から考えるAIフレンドリーな職種間連携~
daitasu
0
170
AWSを利用する上で知っておきたい名前解決のはなし(10分版)
nagisa53
10
3.1k
AI開発ツールCreateがAnythingになったよ
tendasato
0
130
いま注目のAIエージェントを作ってみよう
supermarimobros
0
280
Language Update: Java
skrb
2
300
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.4k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.5k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.6k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.1k
Git: the NoSQL Database
bkeepers
PRO
431
66k
GitHub's CSS Performance
jonrohan
1032
460k
A better future with KSS
kneath
239
17k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Gamification - CAS2011
davidbonilla
81
5.4k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Fireside Chat
paigeccino
39
3.6k
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 エンジニア 積極採用中です!!!