プログラミング

Go言語ソース覗き見〜slicesパッケージ〜

Go言語のバージョン1.21で標準ライブラリに新たに追加された、slicesパッケージのソースコードをざっと読んでみました。 slicesパッケージではスライスを操作するのに便利な様々な関数が用意されています。 この記事ではソースコードに触...
プログラミング

Go言語 – ジェネリクスで型引数を分解するというテクニック

Go言語の1.21ではslices、mapsパッケージが追加され、スライスやマップに対する操作が格段にシンプルにできるようになりました。 本記事ではそんなslicesパッケージのClone関数を手本に その実装の詳細説明と、そこから導けるジ...
プログラミング

Go言語のプロジェクト構成 – 公式のススメ

有名なGoのプロジェクト構成のパターンとしては、以下のgolang-standardsが有名です。 このパターンは賛否両論ありつつも長い間多くのプロジェクトで採用されてきたのですが、Go公式のものではありません。 そして Goの公式はこれま...
プログラミング

全てにおいてYAMLはXMLに劣っている…らしい

色々と議論を呼びそうなタイトルですが、とあるポッドキャストの会話の一部を文字起こしした記事の内容です。 原文はこちら スピーカーの体験を元にした話によると、 「XMLは場合によって使いづらいこともあるし、適していることもある。 一方、YAM...
プログラミング

Gopls v0.12

Go言語のLanguage ServerであるGoplsが今夏アップグレードされ、v0.12がリリースされました。 前バージョンに比較してメモリ効率がレベルアップされています。 またファイルベースでのキャッシュで各パッケージの情報を保持する...
プログラミング

Go1.21でのコンパイル最適化

Go言語では、コンパイルをより最適化するための仕組みでPGO(Profile-Guided Optimization)というものがあります。 Go1.20ではユーザにテストしてもらうためのプレビュー機能としてリリースされましたが、Go1.2...
プログラミング

【Go1.21】ループ処理の新機能

8月にリリースされたGo1.21のループ処理の新仕様についての記事です。 Go1.21のリリースノートはこちら Go言語のループでは for i := range ~~~ や for i := 0; i < MAX; i++ { といったよ...
プログラミング

User-Agent Client Hints – ユーザーエージェント削減の代替策

本記事は、こちらのドキュメントを一部翻訳して執筆しています。 従来のユーザーエージェントはアクセス元のデバイスやOSバージョンなどの情報を持ちます。 多くのシステムではユーザーエージェント文字列を元に、特定デバイスやOSからのリクエストを制...
プログラミング

gRPC触ってみた(4)

↓前回記事たち↓ gRPC触ってみた gRPC触ってみた(2) gRPC触ってみた(3) 本記事では、双方向ストリーミングを扱います。 双方向ストリーミング 双方向ストリーミングとは、複数リクエストに対して複数レスポンスを返す通信形式のこと...
プログラミング

gRPC触ってみた(3)

※前回記事: ※前前回記事: grpcのストリーム通信について 今回の記事では、grpcのストリーム通信を扱います。 grpcでは1リクエスト1レスポンス方式のUnary通信に加え、ストリーム通信を実装することができます。 ストリーム通信は...