Skip to content

Commit

Permalink
Merge pull request #1377 from future-architect/feature
Browse files Browse the repository at this point in the history
Software Design
  • Loading branch information
ma91n authored Aug 27, 2024
2 parents fd59a6a + dd67cbe commit 80d229e
Show file tree
Hide file tree
Showing 3 changed files with 85 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
---
title: "Software Design 2024ๅนด9ๆœˆๅท Goใฎใ‚จใƒฉใƒผใƒใƒณใƒ‰ใƒชใƒณใ‚ฐใจๅ‘ใๅˆใ† ใƒ™ใ‚นใƒˆใช่จญ่จˆๆˆฆ็•ฅใ‚’ๅพนๅบ•่งฃๅ‰–ใ‚’ๅฏ„็จฟใ—ใพใ—ใŸ"
date: 2024/08/27 00:00:00
postid: a
tag:
- SoftwareDesign
- Go
- ๅฏ„็จฟ
category:
- Programming
thumbnail: /images/20240827a/thumbnail.png
author: ๅพŒ่—ค็Žฒ้›„
lede: "2024ๅนด8ๆœˆ17ๆ—ฅใซ็™บๅฃฒใ•ใ‚ŒใŸใ€[Software Design 2024ๅนด9ๆœˆๅท]ใฎ็ฌฌไบŒ็‰น้›†ใงใ‚ใ‚‹ใ€ใ€ŒGoใฎใ‚จใƒฉใƒผใƒใƒณใƒ‰ใƒชใƒณใ‚ฐใจๅ‘ใๅˆใ† ใƒ™ใ‚นใƒˆใช่จญ่จˆๆˆฆ็•ฅใ‚’ๅพนๅบ•่งฃๅ‰–ใ€ ใฎ2็ซ ใ‚’ๅพŒ่—คใ€3็ซ ใ‚’ๆธ‹ๅทใงๅŸท็ญ†ใ—ๅฏ„็จฟใ•ใ›ใฆใ„ใŸใ ใใพใ—ใŸใ€‚"
---

## ใฏใ˜ใ‚ใซ

2024ๅนด8ๆœˆ17ๆ—ฅใซ็™บๅฃฒใ•ใ‚ŒใŸใ€[Software Design 2024ๅนด9ๆœˆๅท](https://gihyo.jp/magazine/SD/archive/2024/202409)ใฎ็ฌฌไบŒ็‰น้›†ใงใ‚ใ‚‹ใ€**ใ€ŒGoใฎใ‚จใƒฉใƒผใƒใƒณใƒ‰ใƒชใƒณใ‚ฐใจๅ‘ใๅˆใ† ใƒ™ใ‚นใƒˆใช่จญ่จˆๆˆฆ็•ฅใ‚’ๅพนๅบ•่งฃๅ‰–ใ€** ใฎ2็ซ ใ‚’ๅพŒ่—คใ€3็ซ ใ‚’ๆธ‹ๅทใงๅŸท็ญ†ใ—ๅฏ„็จฟใ•ใ›ใฆใ„ใŸใ ใใพใ—ใŸใ€‚

ใ“ใฎใ‚ˆใ†ใช่ฒด้‡ใชๆฉŸไผšใ‚’ใ„ใŸใ ใ„ใŸๆ —ๆœจใ•ใ‚“ใ‚’ใฏใ˜ใ‚ๆŠ€่ก“่ฉ•่ซ–็คพใฎๆ–นใ€…ใซใฏใ€ๅฟƒใ‹ใ‚‰ใŠ็คผ็”ณใ—ไธŠใ’ใพใ™ใ€‚

<img src="/images/20240827a/image.png" alt="" width="320" height="452" loading="lazy">

## ใฟใฉใ“ใ‚

Go่จ€่ชžๅˆๅฟƒ่€…ใ‹ใ‚‰็†Ÿ็ทด่€…ใพใงๆฅฝใ—ใ‚“ใงใ„ใŸใ ใ‘ใ‚‹ๅ†…ๅฎนใซใชใฃใฆใ„ใ‚‹ใจๆ€ใ„ใพใ™ใ€‚

Go่จ€่ชžใ‚’ๅˆฉ็”จใ™ใ‚‹ไธŠใงใ‚จใƒฉใƒผใƒใƒณใƒ‰ใƒชใƒณใ‚ฐใฏๅฟ…้ ˆใฎ็Ÿฅ่ญ˜ใซใชใ‚‹ใฎใงใ€ใœใฒใ”ไธ€่ชญใใ ใ•ใ„ใ€‚Goใซ้ฆดๆŸ“ใฟใฎใชใ„ๆ–นใงใ‚‚Go็‰นๆœ‰ใฎใ‚จใƒฉใƒผๅ‡ฆ็†ใฎๆ–นๆณ•ใ‚’็Ÿฅใ‚‹ใ“ใจใงใ€ๆ™ฎๆฎต่งฆใ‚Œใฆใ„ใ‚‹่จ€่ชžใฎ็†่งฃใ‚’ๆทฑใ‚ใ‚‹ใ“ใจใŒใงใใ‚‹ใจๆ€ใ„ใพใ™ใ€‚ไป–่จ€่ชžใจๆฏ”่ผƒใ—ใŸใ€Go่จ€่ชžใฎใ‚จใƒฉใƒผใฎ็‰นๅพดใ‚‚ใฟใฉใ“ใ‚ใฎไธ€ใคใงใ™ใ€‚

ใ€็ฌฌ2็‰น้›†ใ€‘Goใฎใ‚จใƒฉใƒผใƒใƒณใƒ‰ใƒชใƒณใ‚ฐใจๅ‘ใๅˆใ†
็ฌฌ1็ซ ใ€€Goใฎใ‚จใƒฉใƒผๅ‡ฆ็†ใ‚’็†่งฃใ™ใ‚‹๏ผmattn
็ฌฌ2็ซ ใ€€ๅคฑๆ•—ใ—ใชใ„Goใฎใ‚จใƒฉใƒผ่จญ่จˆๆˆฆ็•ฅ๏ผๅพŒ่—ค ็Žฒ้›„
็ฌฌ3็ซ ใ€€Goใฎใ‚จใƒฉใƒผใƒใƒณใƒ‰ใƒชใƒณใ‚ฐQ๏ผ†A๏ผๆธ‹ๅท ใ‚ˆใ—ใ

2็ซ ใงใฏGoใฎใ‚จใƒฉใƒผใฎๅŸบๆœฌ่ฆ็ด ใ‚’ๆจ™ๆบ–ใƒฉใ‚คใƒ–ใƒฉใƒชใฎๅฎŸ่ฃ…ใ‹ใ‚‰ไธๅฏงใซ่ชฌๆ˜Žใ—ใฆใ„ใพใ™ใ€‚ใ‚จใƒฉใƒผใฎๅˆ†้กžใ‚„ใ‚ขใƒณใƒใƒ‘ใ‚ฟใƒผใƒณใฎ็ดนไป‹ใ€Goๆตใฎใ‚จใƒฉใƒผใƒใƒณใƒ‰ใƒชใƒณใ‚ฐใฎๆ–นๆณ•ใชใฉใ€Goใงใ‚จใƒฉใƒผ่จญ่จˆใ‚’ใ™ใ‚‹ไธŠใงๅฟ…่ฆใชๆƒ…ๅ ฑใ‚’ใ‚ซใƒใƒผใ—ใฆใ„ใพใ™ใ€‚

3็ซ ใฏใ‚จใƒฉใƒผใƒใƒณใƒ‰ใƒชใƒณใ‚ฐใฎQ๏ผ†Aใงใ€ใ‚นใ‚ฟใƒƒใ‚ฏใƒˆใƒฌใƒผใ‚นใ‚„ไธฆๅˆ—ๅ‡ฆ็†ใชใฉไธ€ๆญฉ้€ฒใ‚“ใ Goใฎใ‚จใƒฉใƒผใƒใƒณใƒ‰ใƒชใƒณใ‚ฐใฎๆ–นๆณ•ใ‚„ใ‚จใƒฉใƒผใƒใƒณใƒ‰ใƒชใƒณใ‚ฐใจใฏไฝ•ใ‹ใจใ„ใฃใŸๆทฑใ„้ƒจๅˆ†ใฎ่งฃ่ชฌใŒใฟใฉใ“ใ‚ใงใ™ใ€‚Goใฎใ‚จใƒฉใƒผใƒใƒณใƒ‰ใƒชใƒณใ‚ฐใซ้–ขใ™ใ‚‹็–‘ๅ•ใ‚’่งฃๆฑบใ—ใฆใใ‚Œใ‚‹ใ“ใจ้–“้•ใ„ใชใ—ใฎๅ†…ๅฎนใซใชใฃใฆใ„ใพใ™ใ€‚

## Software Design ใจใฏ

ๆŠ€่ก“่ฉ•่ซ–็คพใŒๅ‡บ็‰ˆใ—ใฆใ„ใ‚‹ๆœˆๅˆŠใฎๆŠ€่ก“ๆƒ…ๅ ฑ่ชŒใงใ™ใ€‚Webใ‚ตใƒผใƒ“ใ‚นใ‚’้–‹็™บใ™ใ‚‹ใ‚ฝใƒ•ใƒˆใ‚ฆใ‚งใ‚ขๆฅญ็•Œใฎใ‚จใƒณใ‚ธใƒ‹ใ‚ขใซใจใฃใฆใฏ่ชฌๆ˜Žไธ่ฆใจ่จ€ใฃใฆใ„ใ„ใใ‚‰ใ„้‰„ๆฟใงใ™ใ€‚

ๆฏŽๆœˆๆง˜ใ€…ใชใƒ†ใƒผใƒžใซใคใ„ใฆ็‰น้›†ใ‚’็ต„ใ‚“ใงๅ–ใ‚Šๆ‰ฑใฃใฆใŠใ‚Šใ€ใƒ—ใƒญใ‚ฐใƒฉใƒŸใƒณใ‚ฐใ ใ‘ใงใชใใ€OSใ‚„ใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใพใงใ€ใใฎๅ†…ๅฎนใฏๅคšๅฒใซๆธกใ‚Šใพใ™ใ€‚ๅ…ฅ้–€่€…ใƒปๅˆๅฟƒ่€…ๅ‘ใ‘ใฎๅ†…ๅฎนใ‹ใ‚‰ๅฎŸ่ทต็š„ใชๅ†…ๅฎนใ‚‚ๅคšใๅซใพใ‚Œใฆใ„ใ‚‹ใฎใงใ€ๆ–ฐไบบใ‹ใ‚‰ใƒ™ใƒ†ใƒฉใƒณใพใงใ‚ใ‚‰ใ‚†ใ‚‹ใ‚จใƒณใ‚ธใƒ‹ใ‚ขใซใŠใ™ใ™ใ‚ใงใใ‚‹้›‘่ชŒใงใ™ใ€‚

[ๅฎšๆœŸ่ณผ่ชญ](https://www.fujisan.co.jp/product/1535/?tt=opt&gad_source=1&gclid=CjwKCAjwoJa2BhBPEiwA0l0ImNtJPU8-qPk3sAeCDs0DBF7p_5a5Do0DlzA_EwQ01jfqNWn-xcsG8hoCAJwQAvD_BwE)ใ‚’ใ—ใฆใ€ๆฅญ็•Œใฎๆœ€ๆ–ฐๆƒ…ๅ ฑใ‚’ใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใ™ใ‚‹ใฎใ‚‚ใŠใ™ใ™ใ‚ใงใ™๏ผ

## ๅŸท็ญ†ใฎใใฃใ‹ใ‘

ใ€Œ[ๅฎŸ็”จ Go่จ€่ชž](https://www.oreilly.co.jp/books/9784873119694/)ใ€ใฎ่‘—ไฝœใงใ‚ใ‚‹ๆธ‹ๅทใซใ€ๆŠ€่ก“่ฉ•่ซ–็คพใ‹ใ‚‰ใŠๅฃฐใ‹ใ‘ใ„ใŸใ ใ„ใŸใ“ใจใŒใใฃใ‹ใ‘ใซใชใ‚Šใพใ™ใ€‚ๆธ‹ๅทใŒใƒ•ใƒฅใƒผใƒใƒฃใƒผ็คพๅ†…ใงๅŸท็ญ†ๅธŒๆœ›่€…ใ‚’ๅ‹Ÿ้›†ใ—ใฆใŠใ‚Šใ€็งใฏๆ™ฎๆฎตๆฅญๅ‹™ใงGo่จ€่ชžใ‚’ๅˆฉ็”จใ—ใฆใ„ใ‚‹ใฎใงใ€ใ„ใ„ๆฉŸไผšใ ใจๆ€ใ„ๅŸท็ญ†ใซๆŒ‘ๆˆฆใ•ใ›ใฆใ‚‚ใ‚‰ใ„ใพใ—ใŸใ€‚

Software Designใจใ„ใ†ๆจฉๅจใ‚ใ‚‹้›‘่ชŒใธใฎๅฏ„็จฟใจใ„ใ†ใ“ใจใงใ€ไธๅฎ‰ใฏใ‚ใ‚Šใพใ—ใŸใŒใ€ๅŸท็ญ†ๆœช็ตŒ้จ“ใงใ‚ใฃใฆใ‚‚็คพๅ†…ๆœ‰ๆ•ฐใฎGo่จ€่ชžใฎๆœ‰่ญ˜่€…ใงใ‚ใ‚‹ๆธ‹ๅทใ€็œŸ้‡Žใ‹ใ‚‰ใƒฌใƒ“ใƒฅใƒผใ‚’ใ‚‚ใ‚‰ใˆใ‚‹ใจใ„ใ†ๅฎ‰ๅฟƒๆ„Ÿใ‚‚ใ‚ใ‚ŠๅŸท็ญ†ใ™ใ‚‹ใ“ใจใซใชใ‚Šใพใ—ใŸใ€‚ๆŒ‘ๆˆฆใ—ใฆใฟใŸใ„ใŒๅฐ‘ใ—ไธๅฎ‰ใŒใ‚ใ‚‹ใจ็œŸ้‡Žใซ็›ธ่ซ‡ใ—ใŸใจใ“ใ‚ใ€Œๆธ‹ๅทใ•ใ‚“ใซใƒฌใƒ“ใƒฅใƒผใ—ใฆใ‚‚ใ‚‰ใˆใ‚‹ใ‚“ใ ใ‹ใ‚‰ใ€ไธๅฎ‰ใซๆ€ใ†ใ“ใจใฃใฆใ‚ใ‚‹๏ผŸใ›ใฃใ‹ใใฎๆฉŸไผšใชใฎใซใ‚„ใ‚‰ใชใ„็†็”ฑใฃใฆใชใ„ใ‚ˆใญใ€ใจ่จ€ใ‚ใ‚Œใใฎ้€šใ‚Šใ ใจๆ€ใฃใŸไบ‹ใ‚’้ฎฎๆ˜Žใซ่ฆšใˆใฆใ„ใพใ™ใ€‚ใƒ•ใƒฅใƒผใƒใƒฃใƒผใงใฏ่‹ฅๆ‰‹ใงใ‚ใฃใฆใ‚‚ๆ‰‹ใ‚’ๆŒ™ใ’ใ‚Œใฐใ€้›ฃใ—ใ„ไบ‹ใงใ‚‚ไปปใ›ใฆใ‚‚ใ‚‰ใˆใ‚‹ๆฉŸไผšใŒๅคšใ„ใจๆ€ใ„ใพใ™ใ€‚

## ๅญฆใ‚“ใ ใ“ใจ

ไปŠๅ›žใฎๅŸท็ญ†ใงๅพ—ใŸๅญฆใณใ‚’็ฎ‡ๆกๆ›ธใๅฝขๅผใง็ดนไป‹ใ—ใฆใ„ใใพใ™ใ€‚

### ๆ–‡็ซ ใ‚’ๆ›ธใใƒ†ใ‚ฏใƒ‹ใƒƒใ‚ฏ

- ใŠ้กŒใซ้–ขใ—ใฆไผใˆใŸใ„ๅ†…ๅฎนใ‚’็ฎ‡ๆกๆ›ธใใงไธ€่ฆงใซๆ›ธใๅ‡บใ™
- ใพใจใ‚ใŸใƒˆใƒ”ใƒƒใ‚ฏไธ€่ฆงใซ้Žไธ่ถณใŒใชใ„ใ‹ๆœ‰่ญ˜่€…ใซใƒฌใƒ“ใƒฅใƒผใ‚’ใ—ใฆใ‚‚ใ‚‰ใ†
- ๆœ‰่ญ˜่€…ใซๆœ€ๆ–ฐใฎๅ‹•ๅ‘ใ‚„้ŽๅŽปใฎ้ข็™ฝใ„่ฉฑใ‚’่žใ‘ใ‚‹ใŸใ‚Šใ‚‚ใ™ใ‚‹ใฎใงใ€ๅ‘จใ‚Šใฎไบบใซ็ฉๆฅต็š„ใซ้ ผใ‚‹
- ๆง‹ๆˆใŒๆฑบใพใ‚Šใใฃใฆใ„ใชใ„ๆฎต้šŽใ‹ใ‚‰ใ€ใใ‚Œใžใ‚Œใฎใƒˆใƒ”ใƒƒใ‚ฏใซใคใ„ใฆๆ›ธใใŸใ„ไบ‹ใ‚’ๆ›ธใ
- ๆ–‡็ซ ใ‚’ๆ›ธใ„ใฆใ„ใ‚‹ใ†ใกใซใ‚ˆใ‚Š่‰ฏใ„ๆง‹ๆˆใ‚’ๆ€ใ„ๆตฎใ‹ใถใ“ใจใŒๅคšใ„
- ็ตŒ้จ“ใŒๆต…ใ„ใจ่‰ฏใ„ๆง‹ๆˆใ‚’่€ƒใˆใ‚‹ใ“ใจใฏ้›ฃใ—ใ„ใฎใงใ€็ฉๆฅต็š„ใซใƒ•ใ‚ฃใƒผใƒ‰ใƒใƒƒใ‚ฏใ‚’ใ‚‚ใ‚‰ใ†๏ผˆ็‰นใซ็›ธไบ’ไพๅญ˜ใ—ใฆใ„ใ‚‹ใƒˆใƒ”ใƒƒใ‚ฏใฎๆง‹ๆˆใฏ้›ฃใ—ใ„๏ผ‰
- ่จ˜ไบ‹ใ‚„ๆ›ธ็ฑใ‚’ๆ›ธใๆ…ฃใ‚Œใฆใ„ใ‚‹ๆ–นใ‚„็ทจ้›†่€…ใฎๆ–นใฎๆ–‡็ซ ๅŠ›ใ‚„ๆง‹ๆˆๅŠ›ใฏใ™ใ”ใ„๏ผˆไธ€ๅบฆๅผŸๅญๅ…ฅใ‚Šใ™ในใ๏ผ‰
- ๅฎš็พฉใ€ๅŽŸ็†ใ€ใใฎใ‚‚ใฎใŒ็”Ÿใพใ‚ŒใŸ่ƒŒๆ™ฏใ‚’็†่งฃใ—ใฆ่ชฌๆ˜Žใซ็››ใ‚Š่พผใ‚€ใจๅ…จไฝ“ๆ„ŸใŒไผใ‚ใ‚Šใ‚„ใ™ใ„
- ่ค‡้›‘ใชใ‚‚ใฎใฏ่กจใซใพใจใ‚ใฆ็‰นๅพดใ‚„่งฃ่ชฌใ‚’่จ˜่ผ‰ใ™ใ‚‹

### ๆŠ€่ก“่จ˜ไบ‹ใ‚’ๆ›ธใใ†ใˆใงๅฟ…่ฆใ ใจๆ„Ÿใ˜ใŸใ“ใจ

- [ๆŠ€่ก“ๆ›ธๅŸท็ญ†ใฎใ‚นใ‚นใƒก](https://future-architect.github.io/articles/20240403a/)ใ‚’่ชญใ‚€
- ๆ™ฎๆฎตใ‹ใ‚‰ๆƒ…ๅ ฑๅŽ้›†ใ‚’่กŒใ„ใƒใ‚ฟใ‚’ใ‚นใƒˆใƒƒใ‚ฏใ™ใ‚‹
- ๆ™ฎๆฎตใฎๆฅญๅ‹™ใงใ‚ˆใ‚Š่‰ฏใ„ๆ–นๆณ•ใ‚’ๆจก็ดขใ—ใฆๅฎŸ่ทตใ™ใ‚‹
- ่จ€่ชžใ‚„ๆŠ€่ก“ใฎ่ƒŒๆ™ฏใ‚„ๅŽŸ็†ใ‚’็†่งฃใ™ใ‚‹๏ผˆใ‚ฝใƒผใ‚นใ‚ณใƒผใƒ‰ใ‚’่ชญใ‚€๏ผ‰
- ใ‚ˆใ„ใŠๆ‰‹ๆœฌใ‚’่ฆ‹ใคใ‘ใ‚‹
- Goใฎใ‚จใƒฉใƒผใƒใƒณใƒ‰ใƒชใƒณใ‚ฐใ‚’ใ†ใพใ่กŒใฃใฆใ„ใ‚‹ใƒฉใ‚คใƒ–ใƒฉใƒชใ‚’่ชญใฟ่พผใ‚€ใชใฉ
- ๅบƒใ„่ฆ–้‡Žใ‚’ๆŒใค
- ๆ—ฅๆœฌ่ชžใฎ็‰นๅพดใ‚’่ชžใ‚‹ไธŠใงใฏใ€่‹ฑ่ชžใชใฉใใฎไป–ใฎ่จ€่ชžใฎ็‰นๅพดใ‚’็Ÿฅใ‚‹ๅฟ…่ฆใŒใ‚ใ‚‹
- Goใซใคใฆ่ชžใ‚‹ใŸใ‚ใซใฏใ€Javaใ‚„Pythonใชใฉใฎไป•็ต„ใฟใ‚„็‰นๅพดใ‚’็†่งฃใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚‹

## ๆœ€ๅพŒใซ

ใจใฆใ‚‚็ด ๆ™ดใ‚‰ใ—ใ„ๆฉŸไผšใ‚’ใ„ใŸใ ใใ‚ใ‚ŠใŒใจใ†ใ”ใ–ใ„ใพใ—ใŸใ€‚

ๆธ‹ๅทใ•ใ‚“ใ€็œŸ้‡Žใ•ใ‚“ใซใฏๆง‹ๆˆใฎ็›ธ่ซ‡ใ‹ใ‚‰ใƒฌใƒ“ใƒฅใƒผใพใงใจใฆใ‚‚ๆ‰‹ๅŽšใใ‚ตใƒใƒผใƒˆใ„ใŸใ ใใพใ—ใŸใ€‚ๅŸท็ญ†ๆœŸ้–“ใฎ็ด„3้€ฑ้–“ใ€ใปใจใ‚“ใฉๆฏŽๆ—ฅๅŽŸ็จฟใ‚’ไฟฎๆญฃใ—ใฆใ€ใใฎ้ƒฝๅบฆใƒฌใƒ“ใƒฅใƒผใ‚’ใ„ใŸใ ใใพใ—ใŸใ€‚ๅˆ่จˆใง100ไปถไปฅไธŠใƒฌใƒ“ใƒฅใƒผใ‚’ใ„ใŸใ ใ่‰ฏใ„่จ˜ไบ‹ใ‚’ๆ›ธใใ“ใจใŒใงใใพใ—ใŸใ€‚ๆœฌๅฝ“ใซใ‚ใ‚ŠใŒใจใ†ใ”ใ–ใ„ใพใ—ใŸ๏ผ
Binary file added source/images/20240827a/image.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added source/images/20240827a/thumbnail.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 80d229e

Please sign in to comment.