ほぼ週間Go言語 2026年5月7日
今週もプログラミング雑記からGo言語の話題を中心に気になった話題を取り上げていきます。
ほぼ週間でも無くなってきていますが、まぁGo言語の話題が少ないからしょうがないね。
Go言語
本スライドは、Go のテストで引数として渡される t *testing.T がどこから来るのかを、go test コマンドの内部実装から解説した資料です。 go test はテスト対象のファイルを分類し AST でテスト関数を収集し、Go Template を使って _testmain.go を自動生成して main 関数内でテストを実行するコードを生成します。 その生成コードから testing.MainStart(...).Run() が呼ばれ、その中で各テスト用の t *testing.T が生成されてテスト関数に渡されることで、開発者は意識せずに t を利用できていることを示しています。
感想:
わかりやすいと思います。
感想:
sqlmockは便利なのだけど、結局何をテストしているのか解らないみたいなことにもなり、実DBを使うのが大変な例外処理のテストなどに留めておくべきで、できるだけ実際のRDBMSを使うのが望ましいと思いますね。
Go 1.27にuuidパッケージが標準で入る事がほぼ決まった模様。マージされたコードを見ると、仕様的にはuuid v4, v7のみに対応し、機能的にもミニマムな実装、ただしSQLには対応するみたい。
Go 1.24以降では、サーバーとモダンブラウザが耐量子暗号(PQC)に対応していれば、特別な設定なしにTLS通信が自動的にML-KEM-768による安全な暗号化で守られるようになったことを、実装例を交えながら解説しており、性能面でも従来の暗号方式より高速であることを実証しています。
著者がMiyazaki.goという勉強会に参加し、Go言語のテスト駆動開発(TDD)を実践しました。TDDはテストを先に書き、次に実装、その後改善するRED・GREEN・REFACTORの3段階で進めます。複数のスライスの総和を返す関数を題材に、テストの失敗から実装、コードの改善までを学びました。ヘルパー関数を使った重複処理の共通化も実装しました。初心者でも参加しやすい雰囲気のイベントだと評価しています。
感想:
Goは実際にテストが書きやすいので、TDDをはじめるには良い言語・環境だと思う。
Go言語で構築したサーバーを負荷テストツール「hey」を使用して性能試験を行い、適正な負荷範囲内での安定性と、OS側のリソース限界によるシステム崩壊のポイントを明らかにした実験記事です。
Goの主要な5つのWebフレームワーク(net/http、chi、Echo、Gin、Fiber)を同じ処理で書き比べ、書き方そのものよりエラーハンドリングの思想の違いが大きいことを考察した記事です。
Goの並行処理とバッチ処理を活用することで、100万件のトランザクションを1秒以下で処理するシステムを構築する手法を紹介しており、パイプライン化、ワーカープール、ワーカーローカルな集約を組み合わせることで、単一の大型ループでは達成できない高速処理を実現できることを解説しています。
Go開発者の46%がウェブサイトやウェブサービスの構築にGoを使用しており、ウェブフレームワークの選択は重要なテーマです。標準ライブラリのnet/httpは堅牢で依存関係がなく、完全なコントロールが可能ですが、ボイラープレートコードの記述が多くなります。
現在最も人気なフレームワークはGin(48%)で、GitHub上で88,000以上のスターを獲得し、大規模なコミュニティを持っています。Ginはパフォーマンスが高く拡張性に優れ、初心者にも導入しやすいです。次にGorilla(17%)、Echo(16%)、Fiber(11%)が続きます。
Echoはミニマリスト設計で、高性能なHTTPルーターと自動TLS対応を備え、エラーハンドリングが優れています。Chiはnet/httpとの完全な互換性を保ちながら軽量なルーターを提供し、標準ミドルウェアとの互換性があります。Fiberはexpress.jsに似た設計で高性能ですが、別のHTTPエンジンを使用するため、他のフレームワークへの移行はより多くのリファクタリングが必要です。
どのフレームワークを選ぶかは、チームのニーズ、パフォーマンス要件、既存のエコシステムとの互換性によります。Goには支配的なフレームワークが存在しないため、標準ライブラリとフレームワークのトレードオフを考慮して判断する必要があります。
Go + gRPCサーバーをコンテナ化する際、Dockerfileでは前提知識や複雑な設定が多く必要となりますが、Go専用のコンテナビルドツールである「ko」を使用することで、バイナリの配置やstatic buildなどの複雑な部分をツール側に任せられ、開発者はGoのコードに集中できるメリットがあることを紹介しています。
Go言語で古い管理画面システムをリプレースする際にドメイン駆動設計(DDD)を導入し、その概念理解と実装のギャップを乗り越えるための課題解決策と、具体的なコード例を交えてDDDの基本概念やDI/DIPの実装方法を実践的に解説しています。
その他プログラミング
.NET
.NET 11のプレビュー3がリリースされました。
C# 1.0からC# 14までの進化を振り返りつつ、Roslyn以降の高速な言語拡張、Visual Studio 2026やDirectory.Build.props/central package management/分析モードなどのプロジェクト構成・品質向上機能、raw string literal・switch式・records・static abstract interface members・IParsable・source generator・新しいextensionキーワードなど、実務で役立つモダンC#機能をデモを通して紹介し、AI時代でも言語機能を理解して使いこなす重要性を強調するセッションです。
CSharpierはPrettierに影響を受けた高速で強力なC#フォーマッタであり、Prettierのようにカスタマイズを最小限に抑えて意見の強いフォーマットを行い、デフォルトのdotnet-formatよりも優れた整形性能を提供します。
感想:
最小限の設定で良い感じにしてくれるのは良い。
TypeScript
TypeScript 7.0 Betaは、Goへの完全な移植により従来比約10倍の高速化を実現し、複数チェッカーやビルダーによる並列処理にも対応した新バージョンのベータリリースです。
Java
Microsoftは2026年4月のOpenJDKパッチとセキュリティアップデートをリリースし、複数のバージョン(25、21、17、11)で修正と改善を提供しています。
JavaScript
Node.js 26.0.0がリリースされました。このバージョンは現在のリリース版として、10月に長期サポート版になるまで今後6ヶ月間利用できます。主な機能追加としまして、Temporal APIがデフォルトで有効になりました。これは従来のDateオブジェクトに代わる、より堅牢で機能豊富な現代的な日時APIです。また、JavaScriptエンジンのV8が14.6にアップデートされており、Chromium 134に含まれるバージョンとなっています。HTTP クライアント実装であるUndiciも8.0.2へアップデートされています。
複数の非推奨機能が廃止されました。例えば、http.Server.prototype.writeHeader()は完全に削除されましたので、writeHead()を使用してください。従来の_stream_*モジュールも廃止されています。さらに、GCC要件が13.2以上に引き上げられ、Python 3.9のサポートも終了しました。
このバージョンでは多くのセキュリティ関連の改善とバグ修正が含まれており、開発者に新機能の活用と既存アプリケーションへの影響を評価することが推奨されています。
Git
Git 2.54のリリースについて、GitHub開発チームが重点的に紹介している新機能をまとめています。最も注目される機能は、より簡単なコミット履歴の書き直しができる実験的な「git history」コマンドで、タイプミスの修正やコミット分割が従来より直感的に実行できます。また、設定ファイルでGitフックを定義できるようになったことで、複数のリポジトリ間でのフック共有が効率化されます。メンテナンス時にジオメトリックリパッキング戦略がデフォルト採用され、リポジトリ管理がより効率的になりました。その他にも、HTTP 429エラーハンドリング改善、git logの拡張オプション、リベースに関する新機能など、多数の改善が加えられています。137人以上の貢献者による機能追加やバグ修正が含まれており、開発者の作業効率向上に貢献しています。
Git for Windows v2.54.0.windows.1がリリースされました。このバージョンではgit svnが削除され、主要なコンポーネントがアップデートされています。具体的には、Git v2.54.0、Bash v5.3.9、Git Credential Manager v2.7.3が含まれます。複数のバグ修正も実施されており、Kerberos認証の問題やNTLMのセキュリティ改善、Secure Channelのタイムアウト延長などが行われています。
GitHub
GitHubは新たにGitHub CLIに「gh skill」コマンドを追加し、パブリックプレビューで公開しました。このコマンドはAIエージェント向けのスキル管理を行うものです。スキルはGitHub Copilot、Claude Code、Cursorなど複数のエージェントホストで利用できます。gh skillは検索、プレビュー、インストール、更新、公開といった機能を備えており、GitHub上のスキルリポジトリやローカルのスキルディレクトリからの管理が可能です。インストール先はホストとスコープで決定され、特定バージョンへのピン留めにも対応しています。自作スキルの公開時には仕様に照らして検証され、リモートリポジトリの設定確認も行われます。
GitHub CLI v2.90.0で新たに追加された「gh skill」コマンドは、AIエージェント用のAgent Skillsをパッケージマネージャのように管理できる機能で、search・preview・install・update・publishの各機能により、スキルの検索・確認・導入・更新・公開がターミナルから簡単に行えるようになりました。
GitHub Copilot
GitHubは、信頼性のあるサステナブルなCopilotの体験を確保するため、GitHub FreeおよびGitHub Teamプランの組織向けに、GitHub Copilot Businessの新規セルフサーブサインアップを一時停止すると発表しており、既存顧客は通常通り利用を継続できます。
感想:
やはり課金方法変更の準備ですかね。AI定額制は終わるのか。
Claude Code
Claude Code v2.1.83で追加されたCLAUDE_CODE_SUBPROCESS_ENV_SCRUB機能による環境変数の漏洩防止について検証し、secretlintやgitleaksと組み合わせた多層防御の構成を紹介しています。
ツール
Zedのバージョン1.0がリリースされました。Zedはビデオゲームのようにアプローチした新しいコードエディタで、Webtechnologyの制限を超えるため、RustでGPUI UIフレームワークを一から構築しています。数百万行のコードを書き、複数の言語とエコシステムに対応し、AI機能も統合されています。AI機能はClaudeやCursorなどのエージェントと連携でき、エディタの基盤に組み込まれています。さらにビジネス向けの機能も提供開始予定です。1.0はゴールではなく、開発者が快適に使用できる地点に到達したことを意味します。将来はCRDTベースの同期エンジン「DeltaDB」の開発を進め、人間とAIエージェントが同じコードスペースで協働できる環境を目指しています。
感想:
私は、少しずつVS Codeから移行しようとしています。
Mozillaは、AI セキュリティ脅威に対抗するツール「0DIN AI Security Scanner」をオープンソースで公開しました。このスキャナーは、脆弱性研究者のバグバウンティプログラムから得られた実際の攻撃手法を基にした179個のプローブを搭載しており、プロンプトインジェクションやジェイルブレイクなど35の脆弱性ファミリーに対応しています。誰でも利用でき、新しい脅威が発見されるたびにアップデートされます。企業向けには無料のセキュリティ評価と有料のエンタープライズ版も提供されており、AIシステムのセキュリティ強化を支援します。
Microsoftが開発したCLIテキストエディター「Edit」v2.0.0がリリースされ、待望の構文ハイライト機能が追加されるとともに、行の移動や複数行のインデント操作などの便利なキーボード機能も実装されました。
感想:
実はARM版Mac用のバイナリもGitHubでは公開されている。現状一度起動したあと、コンソールのバッファが少しおかしくなることは確認しているが、大きな問題は自分の環境では出ていない。
論文・その他
RAGとAgentic Searchの対立は、用語の定義が曖昧で、発信時にコンテキストが省略されたことが原因です。RAGは「外部データを参照して生成する」という広い概念であり、ベクトル検索に限定されません。一方、Agentic Searchは「LLMが結果を吟味しながら何度も検索する」アプローチです。ファイルシステム探索はコード検索に有効で、ベクトル検索は自然言語ドキュメント向けです。結局、対象データの性質やタスクに応じて、最適な検索手法を選び分けることが重要となります。
本発表では、ソフトウェアエンジニアの仕事が「コードを書く」だけではなく、守るべき品質を決める点を紹介しています。非機能要件(アーキテクチャ特性)である速さ、正しさ、止まりにくさが相互に引っ張り合うため、設計では大きな事故を小さな不便に変える判断が重要です。分散システムは能力を増やしますが、不明と調整コストが増えるため、トレードオフを理解して最適な設計を選択することが大切になります。
エンジニア
AIとお仕事
テスト駆動開発の専門家・和田卓人氏が、AI時代のエンジニアリングについて語った動画です。AI疲れの2つのタイプ、ジュニアエンジニア育成の課題、バイブコーディングの是非、モブプログラミングによるチーム開発など、AI依存時代における開発手法とエンジニア教育の問題点を深掘りしています。AIが便利さを提供する一方で、人材育成や教える経験の喪失が課題であることを指摘しています。
感想:
ジュニアエンジニアよりも教える機会が失われるミドルエンジニアの危機という和田さんの指摘は興味深いです。
プログラマーの三大美徳として語られる「怠惰」「短気」「傲慢」の中で、特に怠惰は単なる努力回避ではなく、将来の時間を節約するための高度な抽象化を生み出す推進力です。この本質的な美徳は、システムを単純かつ強力にし、後世のプログラマーに利益をもたらします。しかし近年のソフトウェア開発の民主化により、この美徳の本来の意味が失われつつあります。LLMs(大言語モデル)の登場がこの傾向を加速させています。LLMsは無制限に出力を生成でき、人間の怠惰がもたらす時間の制約を持たないため、必然的にシステムを単純化するのではなく複雑化させてしまいます。著者が批判するのは、LLMsを用いて一日当たり数万行のコードを生成することへの盲目的な信仰です。優れたエンジニアリングは制約の中から生まれるものです。人間の有限な時間こそが、認知負荷を最小限に抑えた洗練されたシステムを生み出す原動力となります。LLMsは強力なツールですが、人間の本来の怠惰という美徳に奉仕する形で活用されるべきであり、技術的負債の解消など現実的な課題の解決に向けられるべきです。
銀の弾丸は無い
本記事は、組織の人員数とアウトプット品質の関係を論じています。人を増やしても減らしても品質は向上しません。人数増加時はコミュニケーションパスと知識のエントロピーが拡大し、減少時は1人あたりの負荷が増加します。自律的な存在の導入でも一貫性喪失、ナレッジ劣化、人材の過負荷が残ります。重要なのは、「何を許し何を禁じるか」を自動検出可能な少数の規範として明文化し、生成的な組織文化を維持することです。
本
シニアエンジニアリングリーダーとして成功するために必要な能力、ツール、時間管理、コミュニケーション、組織戦略、予算管理といった実践的な知識を体系的に解説する書籍です。
Stripe、Uber、Calmなどの大手テック企業での実践経験をもとに、複雑な技術的・組織的課題に対して実行可能なエンジニアリング戦略を構築するためのプロセスと手法を、シニアエンジニアからエンジニアリングマネージャー、アーキテクトまで幅広い職種の人に向けて解説した書籍です。
AI
Anthropic
Anthropicは、2026年4月16日にAIモデル「Claude Opus 4.7」を一般公開しました。このモデルはOpus 4.6から大幅に改善されており、特に高度なソフトウェアエンジニアリングとコーディングタスクにおいて顕著な性能向上を実現しています。
Opus 4.7の主な特徴としては、まず指示への従順性が大幅に向上しており、ユーザーはより正確に意図通りの結果を得られます。ビジョン機能も強化され、高解像度の画像処理に対応し、従来の3倍以上のピクセル数を扱うことができるようになりました。このため、スクリーンショート読取りや複雑な図表分析など、視覚的な詳細を必要とする作業に活用できます。
コーディング面では、複雑で長時間実行されるタスクを高い一貫性と厳密さで処理し、自らの出力を検証してから報告する能力を備えています。ベンチマークテストでは複数の分野で前バージョンを上回る性能を示しており、多くの企業がこのモデルの利用を開始しています。
サイバーセキュリティに関しては、Anthropicは慎重なアプローチを採用しており、高リスク利用を自動検出・ブロックするセーフガードを実装しています。正規のセキュリティ専門家向けには「Cyber Verification Program」が提供されています。
Opus 4.7はすべてのClaudeプロダクト、API、およびAmazon Bedrock、Google Cloud Vertex AI、Microsoft Foundryを通じて利用可能です。価格はOpus 4.6と同じで、入力トークン100万個あたり5ドル、出力トークンは2500万個あたり5ドルに設定されています。
Claudeが、Blender、Adobe、Autodeskaなどの主要なクリエイティブツールと連携できるコネクタを発表し、デザイナーや音楽プロデューサーなどのクリエイティブ専門家が、既に使用しているソフトウェアの中でClaudeの機能を直接活用できるようになることを紹介しています。
Vertex AI の Lyria 3 モデルで音楽生成をアプリに組み込む | Google Cloud 公式ブログ
Google CloudがVertex AIで公開した「Lyria 3」と「Lyria 3 Pro」という音楽生成モデルを使用することで、テキストプロンプトや画像から高品質なステレオ音声を生成でき、アプリケーションに直接スタジオ品質の音楽制作機能を組み込むことができるサービスについて紹介しています。
Googleが新しいテキスト音声変換モデル「Gemini 3.1 Flash TTS」を発表しました。このモデルは音声品質が大幅に改善され、70以上の言語に対応しており、自然で表現力豊かな音声生成が可能です。オーディオタグという新機能により、テキストに自然言語コマンドを埋め込むことで、音声のトーン、ペース、スタイルを細かく制御できます。開発者はGoogle AI Studioで音声パラメータを調整し、設定をエクスポートして複数のプロジェクトで一貫性のある音声を使用できます。すべての音声出力にはSynthIDという透かしが埋め込まれており、AI生成音声の検出を可能にして、偽情報の防止に役立てることができます。
Googleは、Chromeに搭載されたAIアシスタント「Gemini」をアジア太平洋地域に拡大することを発表しました。オーストラリア、インドネシア、日本、フィリピン、シンガポール、韓国、ベトナムなどの市場において、デスクトップとiOSユーザーに対して段階的にロールアウトが開始されています。Gemini in Chromeは、長文コンテンツの要約やタブ間での情報比較などが可能です。さらに、Googleアプリとの統合により、Chromeを離れることなくカレンダーの予定設定、Mapsでの位置情報確認、Gmailでのメール作成が可能です。新しい「Nano Banana 2」機能では、テキストプロンプトで画像を変換できます。「パーソナルインテリジェンス」により、過去の会話の文脈を記憶し、パーソナライズされた回答が得られます。セキュリティも重視されており、プロンプトインジェクションなどの脅威を認識し、機密アクションの実行前に確認を求める仕様です。
Googlegが、第8世代となるTPUを公開。モデルを作るための学習用に性能最適化されたTPU 8Tと、推論実行に最適化し、モデルの実行向けに設計されたTPU 8iの2種類が発表されました。僕にはこの作りわけは非常に合理的に見えます。
GoogleはコンスタントにAIチップの開発を進め、独自にAIチップ、サーバーの調達エコシステムを構築することで、NVIDIAのGPUやSupermicroのサーバーのような外部リソースにそれらを頼るライバルに比べて、AIの学習や実行に必要なリソースの調達性や実行時のエネルギー効率が優れていると考えられています。
Googleが新しく「Gemini Enterprise Agent Platform」を発表し、エージェントの構築、スケーリング、ガバナンス、最適化を統合的に行えるプラットフォームを提供することで、企業が信頼性の高い自律型AIエージェントを大規模に導入できるようになることを紹介しています。
感想:
MSへの対抗プラットフォームですね。
OpenAI
OpenAIが開発者向けツール「Codex」の大幅な更新をリリースしたもので、コンピュータ操作、画像生成、メモリ機能などの新機能により、ソフトウェア開発のライフサイクル全体にわたってより強力なサポートを提供するようになったことを紹介しております。
OpenAIは、ChatGPTのデフォルトモデルを「GPT-5.5 Instant」に更新しました。このモデルは、より正確で信頼性の高い回答を提供し、前のバージョンと比べて幻覚的な主張を52.5%削減しています。応答がより簡潔で自然な会話調になり、不要な冗長性が減少しました。また、ユーザーの過去のチャットやファイル、Gmailなどのコンテキストを活用して、より個人的で関連性の高い提案ができるようになりました。新しく「メモリソース」機能が導入され、ユーザーはどの情報が回答をカスタマイズするために使用されたかを確認し、管理することができます。有料ユーザーにはこれらの高度なパーソナライゼーション機能が段階的に展開されています。
Xiaomi
Xiaomiが開発した新型AIモデル「MiMo-V2.5-Pro」がオープンソースとして公開され、同社独自ベンチマークではClaude Opus 4.6に迫る高い性能を示すとともに、特にコーディングやエージェント性能で優れた能力を発揮しています。
本
生成AIアプリケーション開発において直面するハルシネーション、非決定的な出力、知識の欠落、コスト削減などの共通課題に対して、32のデザインパターンを提示し、本番運用に耐える高品質で低コストな製品開発のためのベストプラクティスを紹介しています。
OS
macOS
Macのネットワークスタックに32ビット整数オーバーフローの脆弱性が存在します。49日17時間2分47秒の連続稼働後、TCP内部クロックが停止し、新規ネットワーク接続ができなくなります。既存接続は生存しますが、新規接続は確立不可となり、再起動のみが解決策です。RFC 7323標準が無視されていることが原因で、Appleは対応パッチ未発表の状況です。
感想:
macOSよお前もか。この32ビット整数オーバーフローでTCPの新しい接続が作れなくなる問題は、WindowsでもOSの問題や、NICのドライバーの問題で何度も発生しているし、Windowsの場合は大騒ぎにもなったが、Macはあまりサーバー運用されないので、問題が表面化しにくかったのが、最近の何とかクローブームでMacをサーバー運用する人が増えてきたから、表面化してきたのだろう。
Linux
Linux 7.0がリリースされました。メジャーバージョンのアップデートは2022年10月のLinux 6.0以来、約2年半ぶりとなります。今回のバージョンでは、Intelの新しいCPUやGPUのサポート強化、ファイルシステムのエラー報告機能の改善、Clangやio_uringの新機能、Btrfsの論理リマッピング機能などが追加されています。特筆すべきは、カーネル開発にAIツールが本格的に導入されたという点です。Linusはリリース時にAIによるレポート作成やレビューが数多く行われたことを明かし、この新しいAI活用が今後の開発の「ニューノーマル」になる可能性があると述べています。次のLinux 7.1は6月下旬の公開を目指して開発が進められます。
Ubuntu 26.04 LTS「Resolute Raccoon」が4月23日にリリースされました。Rustベースの実装がsudo、core-utils、ntpdに導入され、システム要件が引き上げられています。cgroup v1とSystem Vベースのinitスクリプトのサポートが終了し、古い暗号化技術も非対応になります。アップグレード前には必ずリリースノートを確認し、バックアップを取ることが推奨されます。次のリリース「Ubuntu 26.10」は2026年10月にリリース予定です。LTSの長期利用を検討する場合は、2038年問題への対応やハードウェアの更新計画、暗号化技術の進化への対応など、多くの要素を事前に検討する必要があります。
WSL2+Docker環境でLinuxカーネルの権限昇格脆弱性「Copy Fail」に対して、Dockerのアップデートと.wslconfigでのモジュール無効化という2段階の対策手法をまとめた記事です。
Windows
Microsoftが公開したサポート文書において、Windows 11に組み込まれたセキュリティ機能が基本的な保護を実現するため追加のソフトウェアが不要であると述べ、その一方でバックグラウンド処理の増加を懸念し、必要に応じたツール選択の重要性を指摘しています。
感想:
うん。知ってた。
Windows 11の新しいRun ダイアログはモダンなデザインと94msという高速な応答時間を実現し、PowerToys Run の技術を活用しながら、キーボード操作を中心とした使いやすさを追求した機能強化版となっています。
Windows Insiderプログラムの担当者が、3月以来の改善状況として、Windows Insider Program の簡素化、Windows Update の頻度削減、AI 体験の整理、File Explorer の高速化、ウィジェット・フィード機能の静穏化、システムパフォーマンスの向上など、複数の品質改善の取り組みを報告しています。
クラウド
Azure
Azure Developer CLI(azd)の2026年4月版では、Python、JavaScript、TypeScript、.NETでのフック記述に対応し、セキュリティ強化、AI機能の改善、カスタムプロビジョニングプロバイダーのサポートなど、5つのリリースで複数の新機能と修正が提供されます。
Discussion