Open9

Golang関連記事の斜め読み Golang weekly 487

taitotaito

https://github.com/bracesdev/errtrace

Stack traceとは、ある時点における関数のコールスタックの状態を可視化したもの。
Return traceとは、関数がエラーを返した場所を可視化したもの。

このライブラリは、プログラミング言語ZigのReturn traceからインスパイアされたものであり、Return traceの実装。

なぜGolangにおいてReturn traceが有益なのか?超ざっくりと説明すれば、Stack traceは発散して読み難い。Return traceの方が読み易い。関数の呼び出し数が大きくなればなるほどに。

感想

これは便利そう。しかしながら、Return traceを実装したいだけなら、errorをラップする関数を自作すれば良いのでは?とも少し思う(簡単に実装できることは自作した方が良いんじゃね派なので・・・個人開発ライブラリは保守性の観点からあまり使いたくない職業病患者)

というのも、自分は趣味開発において偶然にもReturn traceを実装していた(ZigのReturn traceを知らなかったのに)。
https://github.com/suzuito/sandbox2-go/tree/v1.3.7/common/terrors

taitotaito

https://research.swtch.com/acmscored

Russ Coxの「Open Source Supply Chain Security at Google」という発表。

さらっと流し読みした程度だけど、Googleがサプライチェーンアタックに対してどう対処してきたか?という発表かと思いきや、Go言語がサプライチェーンアタックにどう対処しようとしているのか?みたいな発表だった印象。Go言語の話が多かった。

感想

勉強になった。

GoProxyとかChecksum周りの仕組みを理解することは、難しい話を抜きにして、単に結構面白そう。時間があれば詳しく調べてみたい。

taitotaito

https://medium.com/@ozoniuss/optimizing-go-string-operations-with-practical-examples-83df39b776fb

ヒープ領域への無駄なメモリ確保を防止することで、アプリケーションのパフォーマンスが向上します。という話。

記事の中では、文字列処理を具体例とし、Split関数の多用をやめることでアプリケーションのパフォーマンスが向上した、という話でした。

感想

記事を読んで、懐かしい感じがした。

というのも、7年ぐらい昔、自分は数TB/日のデータを扱うMapReduce(on Hadoop)を仕事で書いていました(MapReduceはJavaで書いていた)。当時、MapReduceの処理の中で文字列を扱う際、文字列コピーを極力避けるように(文字列を構成しているバイト列を使い回す)プログラムを書くことで、劇的にパフォーマンスが改善したことがありました(数TB/日のデータサイズを扱っていると、パフォーマンス改善策 or 悪化策の効果は顕著に出るもので、プログラムの書き方がマズければ処理時間が数時間改善される or 悪化される、というのはザラでした)。今回読んだ記事で紹介されているパフォーマンス改善施策と同じようなことを7年前にやっていました。

Sliceのunderlying arrayなどの知識は、割と頻繁に出てくるので、ちゃんと理解しておきたいですね。今まで、勉強をサボってきたのですが、そろそろきちんと理解したい。結構面白そうだから。

taitotaito

https://skarlso.github.io/2023/12/01/crd-to-yaml-as-wasm-website/

WASM in Golang
でアプリ作ってみた。
というお話。

感想

WASMも流行ってるというか・・・いつかちゃんと理解したい。面白そうなんだよな。これも。GoでWASMアプリ作れるなら、この上なくやってみたい。SPAなサービスを作るためにAngularやReactを使って書くのが最近辛くなってきたので(日々新しくなるので、GoとReactの両方についていけなくなってきた。歳もとったし)。

taitotaito

https://github.com/maxpaulus43/go-sweep

コマンドライン上で動くマインスイーパー(もちろんGo製)

Bubbleteaって知ってます?
Charmという会社が作ってるライブラリ。この会社は「コマンドラインをいい感じにするぜ!」と言ってるベンチャーなんだが、こんなわけわかめなこと言ってるベンチャーに金が集まるところが、すごいよね。シリコンバレー。

このマインスイーパーもBubbletea使って書かれているみたいです。

Bubbleteaも使ってみたい。面白そう。

taitotaito

https://ebitengine.org/

Ebitengineの2023振り返り。

感想

Ebitengineすごいな(2D Game engine)。iOS、Android、Nintendo switchのゲームまで作れちゃうんだ。
Goで書けるという。

Goで書けるならゲーム作りたくなっちゃうね(まぁこんな動機でゲーム作ってもろくなゲームにならん気はするが)

taitotaito

いくつか紹介してない記事がありますが、時間の都合上ここまで。

taitotaito

KPT

K

ほぼ全部の記事を読めたこと(2つの記事だけ途中で挫折した)。
Go言語界隈、面白そうなことがたくさんある。

P

Goの知識不足だなと思わせられることが多い。(Sliceのunderlying array周りの知識とか。いまだに知らんというのはどうなのか。Go好きとして)

taitotaito

やってみたいことが多くて困る。学生時代に戻りたいな。