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

並列開発を支援するツールを作った話

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for harachan harachan
September 16, 2025

 並列開発を支援するツールを作った話

Avatar for harachan

harachan

September 16, 2025
Tweet

More Decks by harachan

Other Decks in Technology

Transcript

  1. 2 ࣗݾ঺հ ϩϦϙοϓϜʔϜʔυϝΠϯࣄۀ෦ 2020೥ ৽ଔೖࣾ ݪ ܛ࢜ Keishi Hara •

    ϗεςΟϯάαʔϏεΛ࡞ͬͯ·͢ • ઃܭͷ࿩Λ͢Δͷ͕޷͖Ͱ͢ • Go, Rails Λओʹ৮͍ͬͯ·͢ • GoͰcliπʔϧΛ࡞Δͷ͕޷͖Ͱ͢ • ࠷ۙ whris ͕100star΋Β͍خ͍͠ • ϒϩά: yaserarenai.dev • X : @harachan_02206
  2. AIίʔσΟϯάΤʔδΣϯτศརʂʂ 4 ϝΠϯλεΫ ςετ࡞੒ ↓ ࣮૷ ↓ ςετ αϒλεΫ طଘίʔυͷௐࠪ

    & υΩϡϝϯτԽ αϒλεΫ খ͞Ίͷ मਖ਼λεΫ αϒλεΫ ࣍ͷλεΫͷ༧උ ௐࠪ ˍ جຊઃܭॻͷ࡞੒
  3. AIίʔσΟϯάΤʔδΣϯτศརʂʂ 5 git worktree # ϝΠϯ։ൃσΟϨΫτϦ $ cd path/hoge #

    work1 ༻ͷϒϥϯνͱ࡞ۀσΟϨΫτϦΛ௥Ճ $ git worktree add ../hoge.work1 -b feature/work1 # work2 ༻ $ git worktree add ../hoge.work2 -b feature/work2 # work3 ༻ $ git worktree add ../hoge.work3 -b feature/work3 # ͦΕͧΕͷϫʔΫεϖʔε͕Ͱ͖͍ͯΔ $ ls -la ../ hoge hoge.work1 hoge.work2 hoge.work3
  4. ฒྻ։ൃͷ΍Γํ 6 • ϙʔτόΠϯσΟϯάͷিಥ ◦ ྫ: ෳ਺ͷAPIαʔόʔ͕ಉ͡ :8080 Λୣ͍߹͏ •

    ωοτϫʔΫઃఆͷিಥ ◦ ಉ໊͡લͷωοτϫʔΫ͕࡞ΒΕࣦͯഊ͢Δ docker compose Ͱෳ਺؀ڥΛ্ཱͪ͛Δͱ…
  5. gopose is ͳʹʁ • ϙʔτিಥͷࣗಈղܾ ◦ γεςϜͰطʹ࢖༻தͷϗετϙʔτͱɺCompose಺ͷॏෳϙʔτΛݕग़͠ɺۭ͍͍ͯΔ ϙʔτ΁ࣗಈஔ׵ɻ • DockerωοτϫʔΫিಥͷճආ

    ◦ طଘDockerωοτϫʔΫͷαϒωοτ΍ωοτϫʔΫ໊ͱিಥ͢ΔComposeωοτϫʔΫ Λݕग़͠ɺ҆શͳ୅ସαϒωοτ΁ࣗಈஔ׵ɻ • ඇഁյతͳద༻ ◦ ݩͷ docker-compose.yml ͸มߋͤͣɺࠩ෼ͷΈΛ docker-compose.override.yml ͱͯ͠ग़ྗ 10
  6. # ϝΠϯ։ൃσΟϨΫτϦ $ cd path/hoge # ϝΠϯͷ։ൃ؀ڥΛ্ཱͪ͛ $ docker compose

    up -d # αϒλεΫͷϫʔΫεϖʔεʹҠಈ $ cd ../hoge.work1 # goposeͰিಥճආͷoverride.ymlΛ࡞੒ $ gopose up # αϒλεΫͷ։ൃ؀ڥ্ཱͪ͛ $ docker compose up -d goposeͷ࢖͍ํ 11
  7. # Docker Compose Override File # Generated by gopose (Go

    Port Override Solution Engine) name: hoge.work1 services: frontend: ports: !override - "8000:80" networks: hoge_net: ipv4_address: 10.20.0.16 backend: ports: !override - "8001:80" networks: hoge_net: ipv4_address: 10.20.0.12 mysql: ports: !override - "8006:3306" networks: hoge_net: ipv4_address: 10.20.0.10 networks: hoge_net: ipam: config: - subnet: "10.20.0.0/24" override.yml͜Μͳײ͡Ͱ͢ 12
  8. • ϙʔτিಥͷࣗಈղܾ a. compose.ymlͷத਎Λղੳ b. netstat -an ͷ݁ՌΛղੳ c. িಥΛݕ஌͠ɺoverride.ymlʹॻ͖ग़͠

    • DockerωοτϫʔΫিಥͷճආ a. docker network ls/inspect ͰωοτϫʔΫ໊ͱαϒωοτΛऩू b. ComposeͷωοτϫʔΫ͝ͱʹɺ࣮ࡍʹੜ੒͞ΕΔωοτϫʔΫ໊ʢ-p/--project-name Ͱ෇͘ ઀಄ࣙʣͱαϒωοτΛٻΊɺ໊લিಥͱαϒωοτিಥΛݕग़ c. ඞཁ͕͋Ε͹)ݻఆIP࠶ׂ౰ େ·͔ͳಈ࡞಺༰ 13