Go Module: forkããpackageãimportãå©ç¨ããæ¹æ³
ãããããã¨
github.com/someone/hogeã§github.com/forked/fugaãimportãã¦å©ç¨ãããã§ãã é¢ä¿æ§ã¯ä»¥ä¸ã§ãã

ã©ãããã
ä¾
https://github.com/elastic/cloud-sdk-goãforkãã¦https://github.com/kotaroooo0/cloud-sdk-goã®ãªãã¸ããªãããã¨ãã¾ãã 第ä¸ã®ãªãã¸ããªhttps://github.com/kotaroooo0/poc-validate-onlyããhttps://github.com/kotaroooo0/cloud-sdk-goãimportãã¦å©ç¨ãããã¨ãã¾ãã
æé
1.https://github.com/kotaroooo0/cloud-sdk-goã§Gitã®ã¿ã°æã¡ããã¾ãã
$ git tag v1.0.0 $ git push origin v1.0.0
2.https://github.com/kotaroooo0/poc-validate-only/blob/main/go.mod#L7ã®ããã«replaceã使ãã¾ãã
module github.com/kotaroooo0/poc-validate-only go 1.21.7 require github.com/elastic/cloud-sdk-go v1.16.0 replace github.com/elastic/cloud-sdk-go v1.16.0 => github.com/kotaroooo0/cloud-sdk-go v1.0.0
ããã ãã§ç¬¬ä¸ã®ãªãã¸ããªhttps://github.com/kotaroooo0/poc-validate-onlyããhttps://github.com/kotaroooo0/cloud-sdk-goãå©ç¨ã§ãã¾ãã
åè
https://github.com/kotaroooo0/poc-validate-onlyã§ã¯importã®é¨åã¯å¤æ´ããå¿ è¦ãªã
以ä¸ã®ããã«æ¢åã§importãã¦ããgithub.com/elastic/cloud-sdk-goã¯è§¦ããªãã¦ãèªåã§github.com/kotaroooo0/cloud-sdk-goãimportãåç §ãã¦ããã¾ãã
https://github.com/kotaroooo0/poc-validate-only/blob/main/main.go#L3-L15
originalã«åç §ãæ»ãæ¹æ³
以ä¸ãæ¶ãã°ã¾ãgithub.com/elastic/cloud-sdk-go ãåç §ããããã«æ»ãã¾ãã
replace github.com/elastic/cloud-sdk-go v1.16.0 => github.com/kotaroooo0/cloud-sdk-go v1.0.0
github.com/kotaroooo0/cloud-sdk-goã®go.modã«ã¤ãã¦
以ä¸ã®ããã«github.com/kotaroooo0/cloud-sdk-goã®go.modã¯Forkããæã®ã¾ã¾å¤æ´ããå¿
è¦ã¯ããã¾ããã
moduleåã夿´ããå¿
è¦ã¯ããã¾ããã
https://github.com/kotaroooo0/cloud-sdk-go/blob/update-deployment-validate-only-params/go.mod
åè
SolrCloud on AWS EKSãå©ç¨ããæ¤ç´¢åºç¤ã®å°å ¥
ãSolrCloud on AWS EKSãå©ç¨ããæ¤ç´¢åºç¤ã®å°å ¥ã
— æ ªå¼ä¼ç¤¾ãªã¯ã«ã¼ã ãã¼ã¿æ¨é²å®¤ (@Recruit_Data) 2023å¹´11æ10æ¥
æ¤ç´¢åºç¤ã®éçºäºä¾ã«ã¤ãã¦ãBlogã«ã¦ãç´¹ä»ãã¦ããã¾ãð»
ãã²ã覧ãã ããâ¨https://t.co/Kv8VB0iUoA#ãªã¯ã«ã¼ã #æ¤ç´¢åºç¤
æ¤ç´¢ã·ã¹ãã éçºã§ã®é£ãã
æ¬è¨äºã¯æ å ±æ¤ç´¢ã»æ¤ç´¢æè¡ Advent Calendar 2022ã®6æ¥ç®ã®è¨äºã§ãã
ã¯ããã«
æè¿ã¯ãããã¯ãã®æ¤ç´¢ã·ã¹ãã ãå ¨ææ¤ç´¢ã¨ã³ã¸ã³ãå©ç¨ãã¦éçºãã¦ãã¾ãã éå¸¸ã®æ©è½éçºã¨åãé£ãããããã°ãæ¤ç´¢æ©è½ç¬ç¹ã®é£ãããããã¨æãã¦ãã¾ãã æ¬è¨äºã§ã¯ã以ä¸ã®ãããããããªå ´é¢ãæ³å®ãã¦ã¿ã¾ãã
- éå¸¸ã®æ©è½éçºãè¡ããããã¯ããã¨ã®è·è½æ¨ªæã®ãã¼ã X
- æ¤ç´¢æè¡ãå°éã¨ãæ¤ç´¢APIã®ãããªãµãã·ã¹ãã ãæä¾ãããã¼ã Y
- ãã¼ã±ããã£ã¬ã¯ã¿ã¼ã®ãããªãã¸ãã¹ãµã¤ã

é£ãã
é£ããã«ã¯ãç¶æ³ã«ãããã¾ãã¾ããã¨æãã¾ãã ã¾ãããããã¯ãã§ã®èª²é¡ããããã®åå ã¸ã®æã¡æã¨ãã¦æ¤ç´¢æ©è½éçºãããã¨ããã®ãå ¨ä½åã ã¨æãã¾ãã ãã®æ¤ç´¢æ©è½éçºã«ããã¦ããã¼ã Xã¨ãã¼ã Yã飿ºãã¦éçºãã¦ããã¾ãã

æ¬è¨äºã§ã¯4ã¤ã®é£ããã«ã¤ãã¦è§¦ãã¾ãã
ä½ãã®ãé£ãã
- ããã¯ãã¼ã Yã«éãã話ã§ãæåéããã®ã¾ã¾ã§æ¤ç´¢ã·ã¹ãã ã¯è¨è¨å®è£ ããã®ãé£ããã¨ãããã¨ã§ãã
æ¤ç´¢ãã¸ãã¯ã®å¦¥å½æ§ã示ãã®ãé£ãã
- ããã¯ãã¸ãã¹ãµã¤ãã¨ã®åæå½¢æããã¼ã å ã®æ¤ç´¢ãã¸ãã¯ã®æ¹éãæ±ºå®ããéã®åé¡ã§ããä½ã/ä½ã£ãæ¤ç´¢ãã¸ãã¯ã«ã¤ãã¦å¦¥å½æ§ã示ãã®ãé£ãããæ°ããæ©è½ã追å ããéã«ãªã¿ã¼ã³ãæç¢ºã«ã§ãããªã¹ã¯ãåããã¨ãé£ãããã¨ãããã¾ãã
æã¡æãã課é¡ã¸ã¢ããã¼ãããã®ãé£ãã
- ããã¯ãã¸ãã¹ãµã¤ãã¨ã®éçºåã®åæå½¢æã®è©±ã§ã課é¡ããå ã«æè¡(How)ããã¹ã¿ã¼ããã¦ãããªã©ç¹æ®ãªããã»ã¹ãå¿ è¦ã«ãªãã¨ãããã¨ã§ããç¹ã«æ¤ç´¢æè¡ã¯ãã¸ãã¹ãµã¤ãã«ã¨ã£ã¦ã¯ãã©ãã¯ããã¯ã¹ã§ãããã¨ãããããã®å¿ è¦æ§ã大ããã¨æãã¾ãã
è£ çãé£ãã
- ããã¯ãã¼ã Xã¨ãã¼ã Yã®é£æºã®è©±ã§ããããããã§æ¤ç´¢ã¨ã³ã¸ã³ã¸ãã¼ã¿é£æºãAPI仿§ããã¸ãã¯ãã©ã¡ããæã¤ã®ããéæ©è½è¦ä»¶ã¯ã©ãããã®ããªã©è«ç¹ãå¤ãã§ãã
| é£ãã | ãªãé£ããã®ã | å ·ä½ä¾ |
|---|---|---|
| ä½ãã®ãé£ãã | APIéçºã«å ãã¦ãã¼ã¿åæã»æ¤ç´¢ã¨ã³ã¸ã³ã«é¢ããã¹ãã«ãå¿ è¦ã«ãªããã¨ãå¤ããããã¾ãããã¼ã¿åæã«ããå®éè©ä¾¡ã¨å®æ§è©ä¾¡âæ¤ç´¢ãã¸ãã¯æ½ç決ãâå®è£ ãç¹°ãè¿ãå¿ è¦ããããããã¸ã§ã¯ãéå§æã«ä½ãæ¤ç´¢ãã¸ãã¯ãæç¢ºã«æ±ºå®ã§ããªãå ´åãããããã | ElasticsearchãSolrã®ã¯ã¨ãªããã³ãã¬ã¼ããéç¨ç¥èãå¿ è¦ã«ãªãããããã¸ãã¯ãå°å ¥ããããRecallã¯ä¸ãã£ããPrecisonã¯ä¸ãã£ãã |
| æ¤ç´¢ãã¸ãã¯ã®å¦¥å½æ§ã示ãã®ãé£ãã | æ¤ç´¢ãã¸ãã¯ã®è©ä¾¡ãé£ããããããªãã©ã¤ã³å®æ§è©ä¾¡ã»å®éè©ä¾¡ãè¡ããæçµçã«ã¯ãªã³ã©ã¤ã³ABãã¹ãã§è©ä¾¡ãããã¨ãå¤ãã | æ£è§£ãã¼ã¿ããªããã¨ããã°ãã°ããå®éè©ä¾¡ãé£ããããã®ä¸ã§ããã¼ã å å¤åããåæå½¢æãã¦ãããªããã°ãªããªãã |
| æã¡æãã課é¡ã«ã¢ããã¼ãããã®ãé£ãã | 課é¡ããæã¡æãèããã ãã§ãªããæã¡æãã解決ã§ãã課é¡ãææ¡ãããã®æã¡æãæ¬å½ã«æé©ãªã®ã確ãããããã»ã¹ãå¿ è¦ã«ãªããããæ¤ç´¢æè¡ã¯ãã¸ãã¹ãµã¤ãã«ã¯ãã©ãã¯ããã¯ã¹ã§ãããã¨ãããã¨ã³ã¸ãã¢ãããã®ãããªããã»ã¹ã§ææ¡ãããã¨ãå¿ è¦ã«ãªããã | ã·ããã ã»è¾æ¸ç»é²ãå°å ¥ããã¨æ¤ç´¢å質ã¯åä¸ãããã課é¡ã¨ã»ããã§ãã¸ãã¹ãµã¤ãã«ææ¡ãã課é¡è§£æ±ºææ®µã¨ãã¦ã·ããã ã»è¾æ¸ç»é²ãæé©ã§ãããã¨ã説æããã |
| è£ çãé£ãã | ãã¼ã Yã®ãããªæ¤ç´¢æ©è½ãéçºãããã¼ã ã¯å°éæ§ã®é«ããµãã·ã¹ãã ã®éçºãæä¾ãè¡ããã¼ã ã§ãããã¨ãããããã®å ´åã«ãã¼ã Xã®ãããªä¸æ°é貫ãã¦ä¾¡å¤æä¾ãã¦ãããã¼ã ã¨ã¯ããããã¯ãã«å¯¾ããè§£å度ãéããã¨ãããããããã®ãããWANTè¦ä»¶ãMUSTè¦ä»¶ã§ããã¨åéãããªã¼ãã¼ã¨ã³ã¸ãã¢ãªã³ã°ãããããã | ãã¼ã Yã¯æãè¾¼ã¿ã§ééããåæãç½®ãéå°ã«æ¤ç´¢å質(ã¯ãªãªãã£)ãé«ããããã«ã³ã¹ãã»ããªããªã¼ãç ç²ã«ãããã¨ãããã |
対ç
ããããã®é£ããã«å¯¾ãã¦ã®å¯¾çã¯ãå ·ä½çãªç¶æ³ã«ããã±ã¼ã¹ãã¤ã±ã¼ã¹ã§æ¬è¨äºã§ã¯æ·±ãã¯è§¦ãã¾ããã ãä½ãã®ãé£ãããã¯å人ã®ã¹ãã«ã¢ããã§ã©ãã«ãã§ããå ´åãããã°ãéçºããã»ã¹ã»ä½å¶ã夿´ãããã¨ã§é£ãããæ¸ãããã¨ãã§ããã¨æãã¾ãã ãæ¤ç´¢ãã¸ãã¯ã®å¦¥å½æ§ã示ãã®ãé£ãããã¯ããããã¿ã¤ãã³ã°ã«ããå ·ä½çã«æ¤ç´¢ãã¸ãã¯ãä½é¨ãã¦ããããã¨ã§ã¹ãã¼ã¯ãã«ãã¼ãããã£ã¼ãããã¯ãå¾ããããè©ä¾¡ãããã¨ãã§ããããããã¾ããã ãæã¡æãã課é¡ã«ã¢ããã¼ãããã®ãé£ãããã¯ãç¾ç¶ã®ãããã¯ãã»ã·ã¹ãã ãUXã®çè§£ã¨ãã®èª²é¡ãçºè¦ããããã解決ã§ããæè¡ããªããã¨ããã®ã¨ããã®æè¡ã¯ãªãã®èª²é¡ã解決ãããã ããã¨ä¸¡é¢ããæ¥é ããèããã®ã大äºããããã¾ããã ãè£ çãé£ãããã¯ããã¼ã éã®è²¬åãå®ç¾©ã»å¤æ´ããããå¯ã«ãã¼ã éã§ã³ãã¥ãã±ã¼ã·ã§ã³ãåããã¨ã§è§£æ±ºã§ããããããã¾ããã
ãããã«
æ½è±¡çãªãã¼ãã«ã¤ãã¦è¨äºãæ¸ãã¦ã¿ããã¨æããã£ã¬ã³ã¸ãã¾ãããããã¾ããã¾ãæ´çã§ãã¾ããã§ãã...! ã¿ãªãããæãã¦ããæ¤ç´¢æ©è½éçºã§ã®é£ãããããã°ãç¥ãããã§ãã
ã¡ã¢: Elasticsearchã®Force Merge
åæ
Elasticsearchã¤ã³ããã¯ã¹
Elasticsearchã®ã¤ã³ããã¯ã¹ã¯ä»¥ä¸ã®æ§é ã«ãªã£ã¦ã¾ãã

Merge ã¨ã¯
ã¤ã³ããã¯ã¹ã®æ§é ã§ã® Segment 㯠Immutable ãªã®ã§ãDocument ãåé¤ã»æ´æ°ãããæã«ã¯ãSegment å ã®ããã¥ã¡ã³ãã¯ç©çåé¤ãããè«çåé¤ããã¾ãã ãªã®ã§ããã¼ã¿ãµã¤ãºãå¢ãã䏿¹ã§ãåé¤ã»æ´æ°ããã Document ãç©çåé¤ã㦠Segment ãçµ±åãããã¼ã¸å¦çã宿çã«è¡ãã¾ãã
é常ã¯ã«ã¼ã«ãã¼ã¹ã§ã¹ã±ã¸ã¥ã¼ãªã³ã°ããã¾ãã
Force Merge ã¨ã¯
ç¨é
ã»ã¤ã³ããã¯ã¹ã®ãµã¤ãºã®ç¸®å°
ã»æ¤ç´¢ããã©ã¼ãã³ã¹ã®åä¸
ã»æ°ãããã¼ã¿ã®ã¤ã³ããã¯ã¹ä½æã«ãããæé忏
åè
Elasticsearchã®Named queries
ãããããã¨
ããã¤ã ã¹ãã¼ã«ã¼ãã¨ããæ¤ç´¢ãã¼ã¯ã¼ãããã£ãå ´åã«ããã¤ãâãã©ã³ããã¹ãã¼ã«ã¼âååã«ãã´ãªã¨Elasticsearchã§åé¡ãããã(åæã¨ãã¦ãã©ã³ãåä¸è¦§ã®ã¯ã¼ãéåã¨ååã«ãã´ãªä¸è¦§ã®ã¯ã¼ãéåã¯ããã¨ãã) Elasticsearchã§åé¡ããã¡ãªããã¯ã¢ãã©ã¤ã¶ã«ããè¡¨è¨æºããå¸åã§ããç¹ã§ããNIKEãã§ãããã¤ããã§ããã©ã³ãã¨ãã¦ã®ããã¤ããã¨åé¡ã§ããã åç´ã«èããã¨ä»¥ä¸ã®ãããªElasticsearchã«ä»¥ä¸ã®ãããªã¯ã¨ãªãæããã¤ã¡ã¼ã¸ã
GET _search
{
"query": {
"bool": {
"should": [
{
"match": {
"field.analyzed": {
"query": "ãã¤ã"
}
}
},
{
"match": {
"field.analyzed": {
"query": "ãã«ã¼ãã¼"
}
}
}
]
}
}
}
課é¡
Elasticsearchããè¿å´ãããã®ã¯ãã¼ã¯ã¼ããã¢ãã©ã¤ã¶ãéã£ã¦ãããããããã¥ã¡ã³ããè¿å´ãããå ´åãããã
ãã®å ´åã«ããã¼ã¯ã¼ãã¨åé¡åãã®å¯¾å¿ã¥ããåãããªããªãã
ä¾ãã°ãã¯ã¼ãããã¤ããã§æ¤ç´¢ãã¦ããã¥ã¡ã³ããNikeããè¿å´ããã¦ããããã¤ããããã©ã³ããNikeãã¨åé¡ãããã¨å¼ã³åºãå´ã¯å¤æãããã¨ãã§ããªãã
ããã¯ãããã¤ããã ãã§æ¤ç´¢ããå ´åã§ããã°åé¡å¯è½ã§ããããshouldå¥ã§è¤æ°ã¯ã¼ãã§æ¤ç´¢ããå ´åã¯åãããªãã
ã¯ã¼ãæ°ã®åæ°ã¯ã¨ãªãæããã°åé¡å¯è½ã§ãããããã¯ããã©ã¼ãã³ã¹ãè² è·ã®è¦³ç¹ã§éå¹ççã§ããã

解決æ³
ãã®èª²é¡ã¯Named queriesã§è§£æ±ºã§ããã
Named queriesã¨ã¯
以ä¸ã®ããã«shouldå¥ã§ORæ¤ç´¢ãããéã«ãã©ã®ããã¥ã¡ã³ããã©ã®ã¯ã¼ãã§ãããããããElasticsearchã®ã¬ã¹ãã³ã¹ã§è¿å´ãããã
GET _search
{
"query": {
"bool": {
"should": [
{
"match": {
"field.analyzed": {
"query": "ãã¤ã",
"_name": "ãã¤ã"
}
}
},
{
"match": {
"field.analyzed": {
"query": "ãã«ã¼ãã¼",
"_name": "ãã«ã¼ãã¼"
}
}
}
]
}
}
}
Named queriesã®ä»ã®ã¦ã¼ã¹ã±ã¼ã¹
ãã¡ãã®è¨äºã§ä»ã®Named queriesã®å ·ä½çã¦ã¼ã¹ã±ã¼ã¹ã«ã¤ãã¦è§¦ãããã¦ãã¾ããã
Use case 1 â query debugging
Use case 2 â specific query logic
Use case 3 â diversifying search results
Use case 4 â logging
æ¤ç´¢æ¹åã¸ã®ãã³ããå¾ãããããç¥ãã¾ããã詳ããã¯ãªã³ã¯å ã¸ï¼
Elasticsearchã®ã¿ã¤ã ã¢ã¦ãè¨å®
Elasticsearchã®ã¿ã¤ã ã¢ã¦ãè¨å®ã¨ã¯
Elasticsearchå´ã§è¨å®ããã¿ã¤ã ã¢ã¦ãã§ãä¸å³â¡ã®æéã«å¯¾ããã¿ã¤ã ã¢ã¦ãè¨å®ã®ãã¨ã

ããã¥ã¡ã³ãã«ã¯ä»¥ä¸ã®ããã«ç¤ºããã¦ãã¾ãã ã¿ã¤ã ã¢ã¦ãæã¯ã¨ã©ã¼ãè¿å´ããããã§ãªãæéå ã«èç©ãããæ¤ç´¢ãããã§çµæãè¿å´ãã¾ãã
A search timeout, bounding the search request to be executed within the specified time value and bail with the hits accumulated up to that point when expired. Search requests are canceled after the timeout is reached using the Search Cancellation mechanism. Defaults to no timeout. See Time units.
å é¨çã«ã¯ä»¥ä¸ã®APIã«ãããã£ã³ã»ã«ãè¡ããã¦ããããã§ãã
ã¯ã©ã¤ã¢ã³ãå´ã§ã¯ã¬ã¹ãã³ã¹ã¿ã¤ã ã¢ã¦ããã³ãã¯ã·ã§ã³ã¿ã¤ã ã¢ã¦ããè¨å®ãããã¨ãããã¾ãã å³ã§â +â¡+â¢ã§ã¿ã¤ã ã¢ã¦ãå¤å®ããã®ãã¬ã¹ãã³ã¹ã¿ã¤ã ã¢ã¦ããå³ã§ã¯ç¤ºãã¦ããªããã³ãã¯ã·ã§ã³æ¥ç¶ã§ã®ã¿ã¤ã ã¢ã¦ãå¤å®ããã®ãã³ãã¯ã·ã§ã³ã¿ã¤ã ã¢ã¦ãã
ã¯ã©ã¤ã¢ã³ãå´ã§ã¬ã¹ãã³ã¹ã¿ã¤ã ã¢ã¦ããè¨å®ãã¦ããæã¯ããã®å¤ããå°ããå¤ãElasticsearchã®ã¿ã¤ã ã¢ã¦ãè¨å®ãããã¨è¯ãã§ãããã æ¤ç´¢çµæãæ¬ æããã®ã許容ã§ãã¬ã¹ãã³ã¹ã¿ã¤ã ã®99%ãã¼ã»ã³ã¿ã¤ã«ã®æ¹åã®éãªã©ã«æç¨ã§ãã
Elasticsearchã®ã¿ã¤ã ã¢ã¦ãè¨å®æ¹æ³
# request GET /twitter/_search { "timeout": "1s", // "500ms", "3s"ã¨ããå½¢å¼ "query" : { "term" : { "user" : "kimchy" } } } # response { "took": 1, "timed_out": false, // ã¿ã¤ã ã¢ã¦ããçºçãããã©ãã "_shards":{ "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits":{ "total" : { "value": 1, "relation": "eq" }, "max_score": 1.3862944, "hits" : [ { "_index" : "twitter", "_type" : "_doc", "_id" : "0", "_score": 1.3862944, "_source" : { "user" : "kimchy", "message": "trying out Elasticsearch", "date" : "2009-11-15T14:12:12", "likes" : 0 } } ] } }
WEB+DB Press Vol.126ã§ãä½ã£ã¦å¦ã¶æ¤ç´¢ã¨ã³ã¸ã³ã®ããã¿ââGoã§å®è£ ï¼ è¨å¤§ãªæ å ±ããã©ãé«éã«æ¢ãã®ããã¨ããè¨äºãå¯ç¨¿ãã¾ãã
ã¯ããã«
ã¿ã¤ãã«ã«ããããã«ã12æ24æ¥ã«è²©å£²ãããWEB+DB Pressã«è¨äºãå¯ç¨¿ãã¾ããã
å»å¹´ã®10æããããå¦ç¿ã®ããã«å ¨ææ¤ç´¢ã¨ã³ã¸ã³ãèªä½ãå§ããã®ã§ããããã®ãããªæ©ä¼ãããã ããã¨ã¯å ¨ãæ³åãã¦ãã¾ããã§ããã å»å¹´ã®ã¢ããã³ãã«ã¬ã³ãã¼ã®ããã°è¨äºã§å ¨ææ¤ç´¢ã¨ã³ã¸ã³èªä½ã«é¢ããã¢ã¦ãããããåãã¦ãã¾ããã ãã®å¾ãä»å¹´ã®4æã«Go Conferenceã§ç»å£ããä»åã¯WEB+DB Pressã«å¯ç¨¿ãããã¨ã«ãªãã¾ããã ã¢ã¦ãããããã¢ã¦ããããã«ã¤ãªããã¨ããçµé¨ããã¾ããã
è¨äºã«ã¤ãã¦
Goã§å ¨ææ¤ç´¢ã¨ã³ã¸ã³ãèªä½ããå 容ã«ãªã£ã¦ãã¾ãã è¨äºã®å 容ã¯Go Conferenceã§ã®ã¹ã©ã¤ããå ã«ãªã£ã¦ãã¾ãã ããã«å ãã¦è¨äºã§ã¯ããã®ã¹ã©ã¤ãããã詳細ã«èª¬æããå¹ åºãå 容ãåãæ±ã£ã¦ãã¾ãã
åå¦è ã®æ¹ã§ãçè§£ã§ããããã«å ¨ææ¤ç´¢ã¨ã³ã¸ã³ã®ä»çµã¿ã®èª¬æãå¤ãã«æ¸ãã¾ããã ã¾ããå®è£ ã«é¢ãã¦ãGoã§æ¸ãã¾ããã Goã¯ã·ã³ãã«ãªè¨èªä»æ§ã§ç¹æ®ãªææ³ãå°ãªãã®ã§ãGoã«è¦ªãã¿ã®ãªãæ¹ã§ãå¦çã®å 容ãçè§£ããããã¨æãã¾ãã
ã¾ããä»åã®èªä½æ¤ç´¢ã¨ã³ã¸ã³ã§ã¯ãè¨è¨é¢ã»å®è£ é¢ã¨ãã«æé©ã§ãªãé¨åãå¤ãããããããã¾ããã ææ³ããã£ã¼ãããã¯ãªã©ããã ããã°å¹¸ãã§ãã
æå¾ã«å·çã®ãã£ã³ã¹ãããã ãã¦æè¬ãã¦ãã¾ãã æè¡è©è«ç¤¾ã®æ¹ã ããããã¨ããããã¾ããã