0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

プログラミング雑記 2025年11月17日

Last updated at Posted at 2025-11-16

本日も、ネットに流れるトピックから個人的に興味を引かれたものを拾っていきます。

この記事への感想等コメントで頂けるとありがたいです。

ポッドキャスト版

プログラミング

Go言語

GoによるAPI開発に使っているツールセットと環境を、用途別に紹介した記事です。主要な構成は、Go言語・PostgreSQL・ent ORM、ローカル開発はDocker/Docker Compose・Make・air、ObservabilityはOpenTelemetry・zap、API定義はprotobuf/gRPC/gRPC-Gatewayをbufで管理、品質管理はgofumpt・golangci-lint、DI・テスト補助はwire・go-cmp・mockを利用。エディタはVS Code+Go拡張+Copilot+Prettier SQLで整備。さらにMCP/SerenaによりCopilot Chatからリポジトリ全体の操作も可能で、実例として参考になるカタログ形式。


Go言語のバッファ無しチャネルは、送信と受信が同時に揃わないと進行できず、単一ゴルーチンのみのコードで送信後に受信する構造だとデッドロックが発生します。回避するには送信・受信を別ゴルーチンで行い、順番にも注意が必要です。バッファ付きチャネルなら順番に関係なく成立しますのでこの落とし穴を理解することが重要です。


Testcontainersは、Dockerコンテナを利用してリアルな依存サービス(例:データベース、Elasticsearchなど)をテスト時に立ち上げるためのオープンソースライブラリです。従来、外部環境の不具合や停止によってテストが失敗しがちでしたが、Testcontainersを使うことでテストコード内で必要な依存サービスをその場でコンテナ化し、本番に近い環境下で結合テストや機能テストが可能になります。そのメリットとしては、外部環境に依存しない安定したテスト、モックを減らして実際の動作検証ができる点、CI環境でも手軽にテスト環境を構築できる点が挙げられます。逆に課題としては、コンテナの起動によるテスト実行の重さや、起動画像や初期化に時間がかかりコストが増加する懸念があります。対策としては、テストジョブを分離したりタイムアウト設定を活用することが重要です。本番環境との差異も認識し、どこまでTestcontainersで再現するか判断したうえで導入を進めることが推奨されています。テストの品質向上のために積極的な活用がおすすめです。


Goの公式言語仕様書「The Go Programming Language Specification」を精読する意義と、その際に役立つ英語用語集を紹介した記事です。仕様書を読むことで細かな挙動やコンパイラ視点の理解が深まり、デバッグ力や特殊な動作に対処する力が身につきます。ただし、初心者の文法学習用というより発展的な知識の獲得に適しています。本文では仕様書内の章構成とGo特有の用語、よく登場する英単語も解説されており、例や検証を通じて理解を深める方法も提案しています。


go-keysetは、Goで型安全なKeyset Pagination(カーソルベースページング)を実現するためのツールキットであり、ORM非依存でGORMやdatabase/sql、Raw SQLにも対応しています。従来のOFFSET方式のページネーションはデータ量の増大や同時更新で問題が生じやすいですが、Keyset Paginationはソートキー(idやcreated_atなど)を基準に前回取得した最終レコード以降のデータを効率的に取得できます。本ライブラリはWHERE句やORDER句の自動生成、双方向ページング、カーソルのエンコードなど煩雑になりがちな処理を部品化し、base64urlで安全にカーソルを扱えるのが特徴です。GORM専用、Raw SQL向け両方のインターフェースが提供され、複合キーページングや表示順の統一にも対応。今後はentやsqlcのサポート、署名付きカーソル導入も予定されており、大量データや無限スクロールのGoアプリ構築において「安心でシンプル」な実装を目指しています。


この記事では、Goのgo.modは依存関係を列挙するだけでなく、プロジェクト構造自体を宣言する役割があると解説されています。依存の追加・削除時はgo mod tidyで全体の再整合を行い、不要な依存は削除しgo.sumも更新します。tidy実行前には単一モジュールであることを確認し、下位フォルダのgo.modは排除することが重要です。replaceは主に応急処置として短期的な差し替えに使い、恒常的な運用は避けるべきです。replaceを使う際は期限や撤去条件を明記し、コミットしない運用が推奨されています。安定したモジュール管理のためには、必要に応じて再整合と一時的なreplace対応を心がけることが重要です。


Go言語で作成するWindows用exeファイルに、アイコン・ライセンス情報・バージョン(gitタグ由来)などを埋め込む手法を解説。JSONでリソース指定し、josephspurrier/goversioninfoを活用。バージョン取得にはgitコマンド連携も可能。


SQL Server

SQL Database で読み取り可能なセカンダリレプリカに対してのクエリストアが使用できるようになっていました at SE の雑記

SQL Databaseで、読み取り可能なセカンダリレプリカにもクエリストアが利用できるようになりました。2025年10月以降、全サービスレベルで自動有効化されており、過去のセカンダリ実行クエリ分析や実行プランの強制が可能となり、運用性が大幅に向上しています。ディスク使用量増加に注意が必要ですが、不要な場合は無効化も可能です。


エージェンティックコーディング・仕様駆動開発

この動画は、Anthropic社のClaude CodeがレガシーCOBOLコードベースを近代化するプロセスを紹介しています。AWSのメインフレームモダナイゼーション用デモコードを使い、Claudeがビジネスロジックや依存関係、データフローを分析し、Javaへのリファクタと機能の保全を行います。コード解析後、自動でドキュメント作成、移行計画の立案、テストスイートの作成、移行後の検証まで実行可能です。Javaコードは単なる翻訳ではなく、モダンな設計やエラーハンドリングも行われ、短時間かつ高精度でレガシー資産をモダナイズできます。


Codex Cloudは、OpenAIが提供するクラウド型AIコーディングエージェントで、低コストかつ安全な環境で開発を進められるのが特徴です。実装前の計画立案やローカルとの連携がスムーズで、カスタム指示や同時並行モードなどを活用することで精度や効率が向上します。Plan(計画)作成と実装は分離して管理すること、要件をしっかり整理して並行開発を行うことが成功のポイントです。どこからでも柔軟にAI開発を始められるので、効率的な開発を目指すエンジニアにおすすめです。


Spec-Driven Development(SDD)は、コーディング前の詳細なドキュメント作成に重点を置く開発手法で、AIによるプログラミングを構造化する利点がある一方、アジャイル性を損なう危険も指摘されています。SDDではMarkdownによる仕様書作成が主となり、多数のドキュメント生成や二重レビューの必要性、過度な官僚的プロセスが生じ、本来の目的である「開発者不要」を実現できず、かえって開発効率を下げるケースが多いです。特に新規プロジェクト以外では、この手法は既存コードや複雑な要件に対応しづらくなります。著者は、Lean Startup流の「最小限の実験でリスク検証→順次改善」のアプローチこそ、AIエージェントと相性が良いと主張します。アジャイル的な小さな反復と自然言語による指示で、より柔軟で効率的な開発が可能になり、仕様書中心のウォーターフォールモデルへの回帰は時代に逆行すると結論づけています。


この記事は、AnthropicのModel Context Protocol(MCP)とコード実行を組み合わせた新しいエージェント設計思想について解説しています。​

従来のMCP実装では、全ツール定義をコンテキストに前詰めするため、エージェント化すると通常対話の最大15倍ものトークンを消費し、レイテンシとコストで破綻する問題が指摘されています。Anthropicが提示した解決策は「ツールを直接呼ぶのではなく、コードに変換して実行する」という設計転換です。​

具体的には、エージェントは必要時のみファイルを読み込み、LLMがTypeScriptやPythonでコードを生成し、その中でMCPツールをimportして使用します。中間処理はコード側で完結させ、LLMは意思決定のみに集中することで、トークン消費が98.7%削減された実例も報告されています。この「コード実行前提」の設計は、エージェントの肥大化に耐え、マルチモデル時代に相性が良く、今後のMCPサーバの標準になると結論づけています。


この記事は、GitHub Copilot CLIとVibe Codingを活用し、SQL Server Management Studio(SSMS)から安全にクエリを実行するための補助拡張機能の概念検証に関するものです。SSMS環境では誤ったクエリ実行による影響抑止が課題となっており、それに対しCopilot CLIとカスタムインストラクションを活用した拡張機能開発を着想。主な実装機能は、(1)クエリの影響分析と警告表示、(2)トランザクション分離レベルの自動設定、(3)危険なSQLステートメント検出と警告です。これらの仕様は「仕様駆動開発(SDD)」手法でドキュメント整備を中心に進行され、実装はVibe Codingのみで完結しています。最終的に特別なコーディング無しでもSSMSユーザーが安全にクエリを扱えることを確認し、今後もCopilotのモデル使い分けや機能追加の可能性について言及しています。


AI

この記事は、ChatGPTが「ダイモン」のような存在になる未来について考察しています。最新版GPT-5.1では、人間味のある受け答えや多様なコミュニケーションスタイルが選べる機能が試験的に導入され、将来的には各利用者に合わせた“Aiパートナー”のような存在になる可能性が示唆されています。その反面、営利企業によるAI提供の懸念や、AIが人間と深く結びつくことの課題も指摘。記事後半では、最新のAI・Web技術ニュースや話題も紹介されています。


エンジニア

図にする

「解法を図解する技術」は、Kaggleコンペなどで自分の解法を分かりやすく伝えるための図解手法をまとめたスライドです。まず、テキストで解法を項目ごとに分割し、その構成を考えることで、情報の流れや重要度を整理します。図解には「ブロック図」「図形」「アイコン」「画像」などを使い分け、見やすさや伝わりやすさを意識します。さらに、詳細化と簡略化を使い分けて、必要な部分だけを強調します。デザイン面では「近接」「整列」「反復」「コントラスト」「カラー」の五原則を意識することで、情報のまとまりや違いを視覚的に表現できます。これらの技術により、discussionやSNS投稿時に反応が得やすく、印象的な解法まとめが可能になります。また、ノンデザイナーズ・デザインブックなどの良書も参考にすると効果的です。


クラウド

Azure

2025年11月15日時点でのMicrosoft Azure関連の最新情報をまとめた記事です。AKSのeBPFホストルーティングやPod CIDR拡張のパブリックプレビュー、Windows Server 2022・Python 3.10のサポート終了情報、IPv6対応ウェブアプリ構築、Azure Virtual Network Managerの強化、GitHub Copilot導入手順動画などが紹介されています。


ハードウェア

量子コンピューター

ハーバード大、448量子ビットで「臨界点」を突破。量子コンピュータ実用化への最大の壁を破る歴史的成果

ハーバード大学の研究チームは448個の原子量子ビットを用い、量子誤り訂正の「臨界点」を初めて突破しました。これにより、量子コンピュータは「作れば作るほど壊れやすい」という従来の課題を解決し、大規模で実用的な量子計算機の実現へ大きく前進しました。この成果は、中性ルビジウム原子や量子もつれ、量子テレポーテーションなど複数の技術を統合したもので、医療・創薬や新素材開発、金融・AI分野など社会に広範な変革をもたらす可能性があります。今後もさらなる技術革新が期待されています。


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?