Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Github Codespace で始めるリモート開発

Avatar for tsuzuki tsuzuki
August 27, 2022

Github Codespace で始めるリモート開発

Avatar for tsuzuki

tsuzuki

August 27, 2022
Tweet

More Decks by tsuzuki

Other Decks in Technology

Transcript

  1. 2 自己紹介 名前  : 都筑 友昭 出身地 : 千葉県 趣味  : 広く浅く色んな事が好き 他   :

    2児の父 新卒で半導体の会社に就職 ソーシャルゲームの開発やコンサルティング会社を経て 2019 年より株式会社 DROBE の CTO
  2. リモート開発の困りごと • ⏳ 開発環境のセットアップに時間が掛かる • 🤓 新しく参加される方がセットアップにハマった際に、サポートの負荷が割と高い • 📑 セットアップのドキュメントを整備していくコストが高い

    ◦ もし windowns なら XXX をしてください、など環境などに合わせた注釈が必要になってくる • 󰠁 リモートであるがゆえに席に来てもらって開発中の画面を触ってもらう、が出来ない ◦ 例えばアニメーションの確認 ◦ 例えばローカル環境の構築でハマっている時に一緒に見る
  3. リモート開発の困りごと • ⏳ 開発環境のセットアップに時間が掛かる • 🤓 新しく参加される方がセットアップにハマった際に、サポートの負荷が割と高い • 📑 セットアップのドキュメントを整備していくコストが高い

    ◦ もし windowns なら XXX をしてください、など環境などに合わせた注釈が必要になってくる • 󰠁 リモートであるがゆえに席に来てもらって開発中の画面を触ってもらう、が出来ない ◦ 例えばアニメーションの確認 ◦ 例えばローカル環境の構築でハマっている時に一緒に見る
  4. リモート開発の困りごと • ⏳ 開発環境のセットアップに時間が掛かる • 🤓 新しく参加される方がセットアップにハマった際に、サポートの負荷が割と高い • 📑 セットアップのドキュメントを整備していくコストが高い

    ◦ もし windowns なら, もし M1 mac なら、など環境などに合わせた注釈が必要になってくる • 󰠁 リモートであるがゆえに席に来てもらって開発中の画面を触ってもらう、が出来ない ◦ 例えばアニメーションの確認 ◦ 例えばローカル環境の構築でハマっている時に一緒に見る
  5. リモート開発の困りごと • ⏳ 開発環境のセットアップに時間が掛かる • 🤓 新しく参加される方がセットアップにハマった際に、サポートの負荷が割と高い • 📑 セットアップのドキュメントを整備していくコストが高い

    ◦ もし windowns なら, M1 mac なら、など環境などに合わせた注釈が必要になってくる • 󰠁 リモートであるがゆえに席に来てもらって開発中の画面を触ってもらう、が出来ない ◦ 例えばアニメーションの確認 ◦ 例えばローカル環境の構築でハマっている時に一緒に見る
  6. お品書き
 • GitHub Codespaces とは • Codespaces のセットアップ • 画面の共有

    / Port forwarding • Laravel に特有の設定 • Codespaces を使う事による開発体験の変化

  7. GitHub Codespaces とは?
 GitHub Codespaces はクラウド開 発環境です
 
 今まで Mac

    や Windows で行って いたような開発を全てクラウドで行 う事が出来るようになります 
 https://docs.github.com/en/codespaces/overview
  8. GitHub Codespaces の特徴
 ブラウザでプレビュー可能 
 
 VSCode で動かしている場合は Port Forward

    によって localhost で開発中のページにアクセス可能 
 
 開発中のサービスを公開、もしくはチーム内に公開する も可能で、その場合は個別の url が発行される 
 https://github.co.jp/features/codespaces
  9. GitHub Codespaces の特徴
 複数の Codespaces 環境を同時に立ち上げる事も簡単 に出来る
 複数の repo の

    codespaces 環境を同時に保持できる 同時に実行する事ももちろん可能
  10. GitHub Codespaces の特徴
 ツールや環境をパーソナライズできる 
 github で公開している repo を設定 install.sh

    install bootstrap.sh bootstrap script/bootstrap setup.sh setup script/setup repo の中に以下のファイルがあると codespaces の立ち上げ時に実行される
  11. GitHub Codespaces の特徴
 アクティブな状態とインアクティブな状態がある 
 
 課金はアクティブ状態のインスタンスの CPU 時間と、全 ての

    Codespace のストレージ使用量に対して行われる 
 
 インスタンスで作業していた内容はインアクティブになっ ても消える事はなく、保持される 

  12. 立ち上がった 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 以下のようなコマンドが全て実行済みの状態になります
  13. 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
  14. devcontainer の内容
 devcontainer.json Feature の定義 ここに書いた feature はDockerfile には書か なくても

    devcontainer で使える VSCode の settings.json に書く内容をここに 記載しておける VSCode で使う extension の設定 prebuild 時に叩くコマンドの定義
  15. 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)
  16. ここまでで、codespace を使えるようになるが、前述の prebuild を使うとさらに便利になります 通常 Laravel などの開発環境だと git clone 後に

    php artisan migarte などを叩くと思い ますが、そういったセットアップ系のコマンドが全て完了した状態で codespaces を起動出来るよう になります
  17. localhost:80 127.0.0.1:59091 local machine の port が forward されて Codespace

    の localhost:80 に接続出来るようになる forward される port は再起動する度に変わるので注意が必要 codespaces に繋いだ VSCode によって port forward される
  18. codespace の localhost で動いている全ての port が forward されている local マシンのこの

    port を叩くと codespace に繋がる この例では codespace の port 80 に繋ぎたければ local machine の 127.0.0.1:59091 を見に行けば良い
  19. チームで URL を共有する場合
 Visibiliy を Private to Organization にすると、同じ GitHub

    organization に属しているユーザーに codespace で動いている port をシェア出来るようになる Local Address に url が発行され、port forwarding していない環境からでも接続可能になる
  20. 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/
  21. 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