- 投稿日:2020-07-10T23:15:54+09:00
Azure Functions for Goの歴史
Azure Functionsは、関数単位で処理を実行するAzureサービスです。
2020年6月現在、Azure Functionsは
- C#, JavaScript, F#, Java, PowerShell, Python, TypeScript
を正式サポートしてしますが、残念ながらココにGoはありません。
Azure/azure-sdk-for-goにAzure Functions for Goに関するイシューがあります。
このイシューを読み進めると、Azure Functions for Goの歴史を垣間見ることができます。
2017年12月、当初、Private Preview版への招待が開始されました。
2018年頃は、開発が停滞したり再開したりしました。
2019年10月、開発担当者がマイクロソフト社を辞められていました。
2019年12月、別の実装方法が模索されることになりました。
2020年5月、その答えが「Azure Functions custom handlers」でした。
私もリアルタイムにその流れを目撃していたのですが、azure.microsoft.comに一瞬ブログ記事が掲載されたのですが、すぐに取り消されてしまいました。
現在「Azure Functions custom handlers」はPublic Previewであり、正式リリースされた暁には、公式サイトにも再度アナウンス記事が掲載されることでしょう。
Goなサンプル
- 投稿日:2020-07-10T19:25:14+09:00
SonarqubeのGolang対応
https://qiita.com/fake-deli-ca/items/dd21a5b86b5dfdd7cb0a
元々上記でなんでSonarqubeのVerUp対応をしたかというと、golang対応が6.4では対応していないからである。
https://docs.sonarqube.org/latest/analysis/languages/go/というわけで対応。sonar-scannerは元々対応済み前提。
sonar.properties################################################################## # Properties file for sonar-scanner # See https://docs.sonarqube.org/display/SONAR/Analysis+Parameters ################################################################## # Server sonar.host.url=https://sonarqube.foo.jp/ # Required metadata #FIXME ここから sonar.projectKey=golang sonar.projectName=golang Project sonar.projectVersion=0.0.1 sonar.sources=. sonar.exclusions=**/*_test.go,**/vendor/** sonar.tests=. sonar.test.inclusions=**/*_test.go sonar.test.exclusions=**/vendor/** #FIXME ここまで sonar.sourceEncoding=UTF-8 # sonar.language=py sonar.go.coverage.reportPaths=reports/coverage.out sonar.go.tests.reportPaths=reports/test.jsonこんな感じのpropertiesファイルを作成して
.PHONY: test test: go test ./... -coverprofile=reports/coverage.out -json > reports/test.jsontest時にこんな感じで出力すればOK
- 投稿日:2020-07-10T13:48:44+09:00
GoでOpenWeatherMapAPI叩いてみた
前提
もくもく会で作成したOpenWeatherMapのAPIをGoから叩いてみたものです。
とりあえず、GoからAPIを叩くというのをやりたかったので、エラー処理を考慮していませんのでご承知おきください。環境
OS:maOS Catalina 10.15.5
Go:go version go1.14.4 darwin/amd64つくったもの
main.gopackage main import ( "encoding/json" "fmt" "io/ioutil" "log" "net/http" "os" "strconv" ) type WeatherData struct { Coord struct { Lon float64 `json:"lon"` Lat float64 `json:"lat"` } `json:"coord"` Weather []struct { ID int `json:"id"` Main string `json:"main"` Description string `json:"description"` Icon string `json:"icon"` } `json:"weather"` Base string `json:"base"` Main struct { Temp float64 `json:"temp"` FeelsLike float64 `json:"feels_like"` TempMin float64 `json:"temp_min"` TempMax float64 `json:"temp_max"` Pressure int `json:"pressure"` Humidity int `json:"humidity"` } `json:"main"` Wind struct { Speed float64 `json:"speed"` Deg float64 `json:"deg"` } `json:"wind"` Clouds struct { All int `json:"all"` } `json:"clouds"` Dt int `json:"dt"` Sys struct { Type int `json:"type"` ID int `json:"id"` Message float64 `json:"message"` Country string `json:"country"` Sunrise int `json:"sunrise"` Sunset int `json:"sunset"` } `json:"sys"` Timezone int `json:"timezone"` ID int `json:"id"` Name string `json:"name"` Cod int `json:"cod"` } func main() { url := "https://api.openweathermap.org/data/2.5/weather?id=1850144&appid=" + os.Getenv("OPEN_WEATHER_API_KEY") res, _ := http.Get(url) // レスポンスを取得 defer res.Body.Close() body, _ := ioutil.ReadAll(res.Body) var data WeatherData // 返却されたJSONをパース if err := json.Unmarshal(body, &data); err != nil { log.Fatal(err) } // 取得したものを出力(一部) fmt.Println("Main:" + data.Weather[0].Main) fmt.Println("Description:" + data.Weather[0].Description) fmt.Println("Temp:" + strconv.FormatFloat(data.Main.Temp, 'f', 4, 64)) fmt.Println("TempMax:" + strconv.FormatFloat(data.Main.TempMax, 'f', 4, 64)) fmt.Println("TempMin:" + strconv.FormatFloat(data.Main.TempMin, 'f', 4, 64)) fmt.Println("Humidity:" + strconv.Itoa(data.Main.Humidity)) fmt.Println("Humidity:" + strconv.Itoa(data.Main.Pressure)) }参考
- Go で Qiita API を叩いてみる
- JSON-to-Go
- JSONを貼り付けると対応するGoの構造体を表示してくれるツール。