Share
Embed
Transcript
59 slides
-
2 自己紹介 名前 : 都筑 友昭 出身地 : 千葉県 趣味 : 広く浅く色んな事が好き 他 :
2児の父 新卒で半導体の会社に就職 ソーシャルゲームの開発やコンサルティング会社を経て 2019 年より株式会社 DROBE の CTO -
リモート開発の困りごと • ⏳ 開発環境のセットアップに時間が掛かる • 🤓 新しく参加される方がセットアップにハマった際に、サポートの負荷が割と高い • 📑 セットアップのドキュメントを整備していくコストが高い
◦ もし windowns なら XXX をしてください、など環境などに合わせた注釈が必要になってくる • リモートであるがゆえに席に来てもらって開発中の画面を触ってもらう、が出来ない ◦ 例えばアニメーションの確認 ◦ 例えばローカル環境の構築でハマっている時に一緒に見る -
リモート開発の困りごと • ⏳ 開発環境のセットアップに時間が掛かる • 🤓 新しく参加される方がセットアップにハマった際に、サポートの負荷が割と高い • 📑 セットアップのドキュメントを整備していくコストが高い
◦ もし windowns なら XXX をしてください、など環境などに合わせた注釈が必要になってくる • リモートであるがゆえに席に来てもらって開発中の画面を触ってもらう、が出来ない ◦ 例えばアニメーションの確認 ◦ 例えばローカル環境の構築でハマっている時に一緒に見る -
リモート開発の困りごと • ⏳ 開発環境のセットアップに時間が掛かる • 🤓 新しく参加される方がセットアップにハマった際に、サポートの負荷が割と高い • 📑 セットアップのドキュメントを整備していくコストが高い
◦ もし windowns なら, もし M1 mac なら、など環境などに合わせた注釈が必要になってくる • リモートであるがゆえに席に来てもらって開発中の画面を触ってもらう、が出来ない ◦ 例えばアニメーションの確認 ◦ 例えばローカル環境の構築でハマっている時に一緒に見る -
リモート開発の困りごと • ⏳ 開発環境のセットアップに時間が掛かる • 🤓 新しく参加される方がセットアップにハマった際に、サポートの負荷が割と高い • 📑 セットアップのドキュメントを整備していくコストが高い
◦ もし windowns なら, M1 mac なら、など環境などに合わせた注釈が必要になってくる • リモートであるがゆえに席に来てもらって開発中の画面を触ってもらう、が出来ない ◦ 例えばアニメーションの確認 ◦ 例えばローカル環境の構築でハマっている時に一緒に見る -
お品書き • GitHub Codespaces とは • Codespaces のセットアップ • 画面の共有
/ Port forwarding • Laravel に特有の設定 • Codespaces を使う事による開発体験の変化 -
Disclaimer (免責事項) 皆様におかれましては PhpStorm をお使いの方も多いのではと思っておりますが、現時点では Codespace を PhpStorm で使う方法を把握しておりません IDE
は VSCode を使う事を前提としたセッションとなりますのでご注意ください -
GitHub Codespaces とは? GitHub Codespaces はクラウド開 発環境です 今まで Mac
や Windows で行って いたような開発を全てクラウドで行 う事が出来るようになります https://docs.github.com/en/codespaces/overview -
GitHub Codespaces の特徴 クラウドで実行 開発に必要なマシンのスペックを簡単に変更出来る 2022年8月現在、最大で 32-core 64GB
メモリのマシン を従量課金で利用可能 https://github.co.jp/features/codespaces -
GitHub Codespaces の特徴 ブラウザでプレビュー可能 VSCode で動かしている場合は Port Forward
によって localhost で開発中のページにアクセス可能 開発中のサービスを公開、もしくはチーム内に公開する も可能で、その場合は個別の url が発行される https://github.co.jp/features/codespaces -
GitHub Codespaces の特徴 複数の Codespaces 環境を同時に立ち上げる事も簡単 に出来る 複数の repo の
codespaces 環境を同時に保持できる 同時に実行する事ももちろん可能 -
GitHub Codespaces の特徴 ツールや環境をパーソナライズできる github で公開している repo を設定 install.sh
install bootstrap.sh bootstrap script/bootstrap setup.sh setup script/setup repo の中に以下のファイルがあると codespaces の立ち上げ時に実行される -
GitHub Codespaces の特徴 アクティブな状態とインアクティブな状態がある 課金はアクティブ状態のインスタンスの CPU 時間と、全 ての
Codespace のストレージ使用量に対して行われる インスタンスで作業していた内容はインアクティブになっ ても消える事はなく、保持される -
立ち上がった Codespaces はどういう状態かと言うと $ git submoudle update –init $ docker-compose
build $ docker-compose up -d $ docker-compose exec app-container-name composer install $ docker-compose exec app-container-name php artisan key:generate $ docker-compose exec app-container-name npm ci # Frontend を Laravel mix で build する $ docker-compose exec app-container-name npm run dev $ docker-compose exec app-container-name php artisan migrate $ docker-compose exec app-container-name php artisan db:seed # 開発に便利なデータを入れる独自コマンド $ docker-compose exec app-container-name php artisan dev:setup-user 以下のようなコマンドが全て実行済みの状態になります -
devcontainer のセットアップのしかた devcontainer.json は Codespacess の設定ファイル devcontainer.json で指定された Dockerfile を使って
build したコンテナが開発環境となります { ... "build": { "dockerfile": "Dockerfile" }, ... } https://docs.github.com/ja/codespaces/setting-up-your-project-for-codespaces/introduction-to-dev-containers 最もシンプルな devcontainer.json -
devcontainer の内容 devcontainer.json Feature の定義 ここに書いた feature はDockerfile には書か なくても
devcontainer で使える VSCode の settings.json に書く内容をここに 記載しておける VSCode で使う extension の設定 prebuild 時に叩くコマンドの定義 -
devcontainer と docker-in-docker devcontainer で docker-in-docker を使うにはいくつか方法がある - Microsoft が提供する
Development Container Scripts を使う - Dev Container Features を使う DROBE では Development Container Script を使っていますが、Dev Container Features を使う方がお手軽かもしれません devcontainer の定義の詳しい設定についてはブログを書いたのでそちらを参照してください ! (https://info.drobe.co.jp/blog/engineering/github-codespaces) -
ここまでで、codespace を使えるようになるが、前述の prebuild を使うとさらに便利になります 通常 Laravel などの開発環境だと git clone 後に
php artisan migarte などを叩くと思い ますが、そういったセットアップ系のコマンドが全て完了した状態で codespaces を起動出来るよう になります -
Codespaces では http://localhost:PORT or http://127.0.0.1:PORT のような localhost で起動している port は自動的に
forward されます Port forwarding とは -
localhost:80 127.0.0.1:59091 local machine の port が forward されて Codespace
の localhost:80 に接続出来るようになる forward される port は再起動する度に変わるので注意が必要 codespaces に繋いだ VSCode によって port forward される -
codespace の localhost で動いている全ての port が forward されている local マシンのこの
port を叩くと codespace に繋がる この例では codespace の port 80 に繋ぎたければ local machine の 127.0.0.1:59091 を見に行けば良い -
チームで URL を共有する場合 Visibiliy を Private to Organization にすると、同じ GitHub
organization に属しているユーザーに codespace で動いている port をシェア出来るようになる Local Address に url が発行され、port forwarding していない環境からでも接続可能になる -
localhost:80 https://n-org-repo-hash-80.gith ubpreview.dev/ https://n-org-repo-hash-80.gith ubpreview.dev/ 開発者のマシン localhost:8080 例えば docker-compose で
phpmyadmin などをセットアップしておけ ば、開発者の環境の DB を覗いたりも出来る https://n-org-repo-hash-8080.git hubpreview.dev/ -
Laravel 固有の設定として気をつけないといけない事 // こんな感じで定義されたルートを Route::get('/welcome', 'WelcomeController@welcome')->name('welcome'); // こんな感じで呼び出す route(‘welcome’); https://localhost/welcome
上記コードの出力結果 https://n-org-repo-hash-80.githubpreview.dev/welcome Private to Organization にしている場合はこうなって欲しい -
PR のレビュー たとえば composer.json に diff があった際などに、実際に意図した動きになっているかを確認 するのは手間だったりする // 場合によっては
stash などする git stash // checkout する git checkout -b feature/hogehoge remotes/origin/faeture/hogehoge // composer install して動作確認 composer install // 確認がおわったらブランチを元にもどして composer install しなおす git checkout -b feature/foobar composer install -
We are hiring!! 59 採用情報 https://info.drobe.co.jp/jobs エンジニアリング資料 https://info.drobe.co.jp/engineering 少しでも気になった方、お気軽にご連絡ください!!
カジュアルにお話するだけでも大歓迎です! Twitter Meety