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月10日

Last updated at Posted at 2025-11-09

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

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

ポッドキャスト版


プログラミング

Go言語

Google ADKがGoに対応しました。

Googleの「ADK-Go」は、Go言語向けのオープンソース・ツールキットで、柔軟かつ高度なAIエージェント開発・運用を可能にします。Geminiに最適化されつつも、モデルや環境に依存せず、複数エージェントの統合やクラウドネイティブな展開に対応。Goの並行処理や高性能性を活かし、エージェントロジックやツールをコードベースで記述・テストでき、拡張性や保守性に優れています。主要機能として、豊富なツール連携、モジュール式構成、容易なクラウド展開などがあります。

感想他:

簡単なサンプル。


要約:

このページは、Go 1.25で新たに追加されたWaitGroup.Go()メソッドについて、従来の並行処理コードからの書き換え方法と注意点を、具体的な例や実践パターンとともに解説した技術記事です。

主なポイントは以下の通りです:

  • WaitGroup.Go()の概要
    Go 1.25からsync.WaitGroupにGo()メソッドが追加され、goroutineの生成と管理がより簡潔に記述可能に。Add(1)defer Done()が不要になり、ボイラープレートの削減に貢献します。

  • 従来との書き方の違い・注意点
    Go()に渡せるのは「引数なしの関数(func())」のみ。引数付き関数を渡す従来の書き方はコンパイルエラーになるため、クロージャの使い方やコードの移行方法に注意が必要です。

  • Go 1.22のループ変数仕様変更
    Go 1.22からはforループの各イテレーションごとに変数のアドレスが分離されるようになり、goroutine内でループ変数を安全に参照できるようになりました。これにより、WaitGroup.Go()を使った書き方も安全に移行できます。

  • 実践的な移行パターンと例
    実用的なコード例(URL複数取得やインデックス利用時など)を使いながら、どのように書き換えると安全で簡潔な並行処理ができるかを説明しています。

  • 注意すべき特殊ケース
    ・Go 1.21以前をサポートする場合は従来の書き方を推奨
    ・パニックリカバリや条件付きでDone()を呼ぶような特殊な並行処理には、独自実装が必要

  • まとめと推奨

    • Go 1.25のWaitGroup.Go()によって並行処理コードが簡単・安全に
    • わかりやすくするためにコードのテストやgo test -raceによるデータ競合のチェック推奨

Goの最新版で本格的に並行処理を取り入れたい開発者向けの内容となっています。


AIや機械学習の研究ではPythonが主流ですが、実サービスの運用現場ではGo(Golang)が静かに普及しています。Pythonは探索やモデルの訓練に優れていますが、並列処理の制約やレイテンシ、高いメモリ使用率などが障害になります。一方、Goは軽量なゴルーチンによる並行処理、低レイテンシ、メモリ効率の良さ、クラウドやKubernetesとの親和性を強みとし、スケールや信頼性、コスト効率が求められる場面で真価を発揮します。このためPythonで訓練しGoで推論サービスを実装するハイブリッド構成が多く、UberやPayPal、TikTokなどもGoをMLパイプラインに導入しています。今後、AIサービスの現場適用ではスピードや安定運用が鍵となり、Goの役割はさらに重要となるでしょう。


Go言語によるグレースフルシャットダウンの実装方法を解説した記事です。新規のトラフィック受け入れ停止後に既存処理を安全に完了させ、OSシグナルを一箇所で受けて統一的なコンテキスト管理で漏れなく全てのゴルーチンやワーカーを終了させます。http.Serverへ明確なタイムアウトを設定し、ワーカーにはDone通知を伝搬、チャンネルのクローズもオーナーが一元管理します。/healthへの状態反映などで前工程を整理し、5xx減少やリソースリーク防止、安定したローリングデプロイを実現できます。


ヘキサゴナルアーキテクチャ(Ports and Adapters)は、Go言語のサービス開発で安定性と拡張性を高める設計手法です。フレームワークへの依存を排除し、外部システム(DB・API・ログ等)とコアロジックを明確に分離します。実装例では、ユーザー登録の業務ロジックとデータ保存処理を分離し、テストやDB交換も容易になります。過度な抽象化やフレームワーク依存を避け、コアにビジネスルールを集中させることで、開発・保守・拡張が効率化されます。素早い機能追加、安定したスケール、簡単なオンボーディングが実現できます。


「SwiftlyGo」は、Go言語のみで宣言的なWebAssembly UIを構築できる軽量なツールキットです。JavaScriptやNode.js、フレームワークを使わず、観測可能な状態や宣言的なUIツリー、Goのsyscall/jsによるDOM操作を特徴とします。デモではカウンターやToDoリスト、ライフゲーム実装例があり、CLIツールによる自動ビルド・ライブリロードもサポート。今後はダークモード、再利用可能なコンポーネントやフォーム要素なども検討中です。Goでもフロントエンド開発が可能であることを示しています。


GoによるサービスのスケーラブルなDB運用のために、コネクションプール制御やコンテキストタイムアウト、pgx採用、クエリのプリペアやリトライ・バッチインサート・Read/Write分離・キャッシュ・コネクションのクリーンな終了・DBヘルスチェックなど10種類の実践的パターンを紹介。小さな工夫が大規模障害を防ぐ鍵になると強調。


Python

Python 3.14では、例外処理に関する2つの安全性向上が導入されました。1つ目は、except節で複数の例外クラスを列挙する際に、これまで必要だったかっこ「()」が不要になり、より簡潔に記述できるようになったこと(ただしasを使う場合は従来どおりかっこが必要)。2つ目は、finally節でreturn、break、continue文を使うとSyntaxWarningが出るようになり、例外や値の意図しない握りつぶしを防ぎやすくなった点です。これにより、より安全で可読性の高いコードが書けるようになります。


設計

「予防に勝る防御なし(2025年版)」は、PHPの堅牢なコード設計の最新動向を紹介する講演です。本講演では、PHP8.4(および8.5)における誤りにくい設計、すなわち「予防」の視点から堅牢なコードを実現する手法が解説されています。アジェンダは型宣言、列挙型、静的解析、型のモデリング、不変性、完全性、責務の配置の7つ。具体例やコードを交えながら、仕様ミスやバグを未然に防ぐための工夫や、実装において「間違えようがない」構造を目指す重要性が説かれています。さらに、近年のPHPの進化を活かし、不変(immutable)なデータ構造やenum、型付けによるモデリングに取り組むことで、安全性・保守性の高い設計に導けることが示されています。


本プレゼンテーション「品質は設計でつくり込む」では、ソフトウェア開発において品質を後工程のテストに頼るのではなく、設計段階からバグを生まない構造を意識することの重要性が説かれています。トヨタ生産方式の「品質は工程でつくり込む」に倣い、要件定義や設計、実装それぞれの段階で責任を持ち、決定性を高め、分岐やエッジケースを減らすことで、テスト工数や複雑性を抑えられることが強調されます。YAGNI原則(いま必要でない機能は作らない)を意識し、無駄な機能や条件を削ることで、品質と生産性の両立を目指します。設計時からチーム全員が品質を仕組みとして作り込む姿勢が、長期的な運用コストやバグ修正コストを大幅に下げ、より価値のあるプロダクト開発へとつながります。


開発者が知っておきたい「複雑さの正体」は、システムを理解・変更することを妨げる全ての要素を指します。複雑さは主観的であり、「分かりにくい」と感じた時点で存在しますが、循環的複雑度・結合度・凝集度など、数値で測定可能な側面もあります。複雑なコードは、要件追加や仕様変更、設計や実装時の選択など、すべての開発工程で発生しうるもので、事業成長や外部環境変化、明確でない設計方針、技術力不足などが要因として挙げられます。複雑さを予防するには、越境した学習、コミュニケーション、システム思考、フィードバックループの意識が重要です。しかし初手で防ぎきることは難しいため、要件・設計に視野を広げ、少しずつ改善し続ける姿勢が大切とまとめられています。


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

Chrome DevTools MCPとPlaywright MCPの比較記事です。Chrome DevTools MCPはUID指定で要素を確実に操作でき、パフォーマンス分析が可能。一方、Playwright MCPはAIによる自動セレクター生成で手軽さがあるが、AIの推測に依存します。どちらもアクセシビリティツリーを利用しますが、要素識別方法に違いがあります。デバッグやパフォーマンス重視ならChrome DevTools MCP、標準UIやシンプル操作ならPlaywright MCPがおすすめ。用途に応じて使い分けが重要です。


AI

OpenAI

概要:

このブログ記事「GPT-5 in Action: Why App Design Matters as Much as the Model」では、2025年8月にリリースされたOpenAIの最新モデル「GPT-5」と、それを実際のアプリケーションに組み込む際の重要性について解説しています。

主なポイントは以下の通りです:

  • GPT-5の登場と実装
    GPT-5はコーディングや複雑な作業向けに大幅に性能向上した最先端モデルとしてリリースされ、Azure AI、GitHub Copilot、Microsoft 365 Copilotにも即座に統合されました。
    ベンチマーク上でも優れており、RAG(Retrieval-Augmented Generation)性能やファクトチェック機能も改善されています。

  • モデルの実力だけでなく、アプリ実装が体験を左右
    単純なベンチマーク指標だけでなく、実際のアプリやツールに組み込んだ時のユーザー体験がより重視されつつあります。たとえばGPT-5は従来よりも慎重な応答を返すため、質問によっては「わからない」と答える場面も増加。しかし、アプリ側がこれに対応していないと体験が損なわれることがあります。

  • アプリ開発者へのベストプラクティス

    • プロンプト(指示文)は明確かつ具体的に書く
    • GPT-5の新しいパラメータ(出力の詳細度や推論深度)を活用する
    • 提供するコンテキストを最小限にする(修正したい箇所だけ渡す等)
    • 望まれるフォーマットやコメント維持を明示・または後処理する
    • ユーザーフィードバックを重視し、漸進的な導入・調整を行う
    • モデルのサイズ(gpt-5-miniなど)やAzure AI Foundryの新機能も適材適所で使う
  • まとめ
    新しいAIモデルのパワーを最大限活かすには、アプリ側の設計や最適化も重要。モデルの進化を受け入れつつも、自身のシステムやユーザー体験も継続的に調整することが必要だと説かれています。


Google

GoogleのAgent Development Kit(ADK)に「User Simulation」機能が追加されました。これは、会話エージェントの多段階会話テストを手作業で作る手間や保守負担を軽減するためのものです。LLMベースのユーザーシミュレータが、目標達成のための会話を自動生成。開発者は従来の厳密なスクリプト作成から、簡単な目的設定と設定ファイル作成に切り替えられます。これにより、テスト作成時間が大幅に短縮され、エージェントの意図を評価する柔軟かつ回復力のあるテストやリグレッション判定の自動化が可能です。


GitHub Copilot

このスライドは、「CI/CDに続く概念」としてGitHub Universeで注目された「Continuous AI」とGitHub Nextのプロジェクト、そしてAgentic Workflowsについて紹介しています。Continuous AIは、AIを活用してソフトウェア開発やコラボレーションを自動化しようという新しい取り組みで、GitHub Actionsを用いてAIエージェントが業務プロセスを自動化できる点が特徴です。代表的な自動化例として、コード品質の自動チェックや修正、リポジトリやチーム状況の分析、Issueのトリアージ、テストカバレッジ分析、ドキュメント自動更新などが挙げられ、それらのサンプルが公式サイトで公開されています。GitHub CopilotユーザーであればこのAgentic Workflowsも利用可能で、自然言語からAI自動化のワークフローを作成できることが強みです。今後のソフトウェア開発プロセスにおいて、CI/CD+Continuous AIによる自動化は大きな価値をもたらすと期待されています。


論文・その他


本記事は、最新AI研究のダイジェストを通じて、AIと人間の思考・社会との接点およびAI設計の要点を解説しています。LLM(大規模言語モデル)を使うと別の文章を自然に埋め込む技術や、人間の思考過程がAIに近づいている傾向、詐欺調査に使われる“なりきり被害者”AI、言語を超えた感情マップの発見、会話の裏の意味を理解させるプロンプト手法、AIエージェント市場では「速さ」が品質選びを阻害してしまう問題など、多角的に議論。さらに、AIの自信と実力は一致しないという研究も紹介されました。

まとめとして、AIの実力は単なる知識量より「使い方の設計」に依存し、翻訳や多数決、複数出典でのチェック、人の最終判断の重要性といった、バイアスを抑える工夫が必要だとしています。実例を交えつつ、今後もこの知見を磨き続けることが提案されています。


MITの研究チームは、AI時代のソフトウェア開発における「バイブコーディング」(雰囲気での実装)の危うさを指摘し、「概念(Concepts)」と「同期(Synchronizations)」を核とした新しい構造パターンを提案しました。概念は機能を自己完結した独立モジュールとして定義し、同期はそれらの相互作用を宣言的なルールで管理します。これにより人間とAI双方にとって可読性・保守性・信頼性が高まることが証明され、LLMによるコード生成やバグ修正でも有効性が実証されています。今後は「コンセプトカタログ」を活用した高レベルな開発が期待されます。


クラウド

Azure

2025年11月8日時点で確認されたMicrosoft Azure関連の最新情報をまとめた記事です。主な内容は、Azure Database for PostgreSQL Flexible Serverが日本西リージョンの3つの可用性ゾーン対応開始、Azure Data ExplorerでKQLグラフセマンティクスのlabels()関数が一般提供、openCypher対応のパブリックプレビュー開始。その他、TerraformとCSVによるAzureネットワーク管理や、Go 1.25.4-2/1.24.10-1のMicrosoftビルド提供など、技術ブログやコミュニティで紹介されたニュースも掲載されています。


MicrosoftはNSGフローログの新規作成を2025年6月末で停止し、2027年9月末で完全廃止します。今後はVirtual Network(VNet)フローログへの移行が推奨され、Terraformを使った実装方法や、そのメリット(広範な可視化やTraffic Analyticsとの統合)が紹介されています。移行方法はスクリプト、Azure Policy、Terraformなど複数提案され、コストはNSGと同等。Traffic Analyticsの活用でセキュリティ分析やトラブルシュートも効率化できます。


OS・アプリケーション

Affinity

Affinityアプリが永久無料化され話題となっていますが、日本語組版やタイポグラフィ機能はAdobeアプリより劣るため、乗り換えには注意が必要です。特に文字詰めは手作業となり、縦書きやルビも非対応です。写真やイラスト中心の作業なら代替可能ですが、紙媒体や日本語テキスト中心の作業をする人には向きません。乗り換える場合は「えのころ明朝」「えのころ角ゴシック」フォントの導入がおすすめ。無料なので一度試して、用途に合えば継続利用が良いとのことです。



macOS

macOS 26.1 TahoeではApple Virtualization Framework(AVF)の不具合により、仮想マシンのシリアルナンバーが「0」となり、iCloudや関連アプリが利用できなくなる問題が発生しています。macOS 26.0.x以下で作成した仮想マシンは影響を受けませんが、修正されるまで注意が必要です。


Notion MailのMac用アプリがv0.0.42にアップデートされ、macOS 26 Tahoeで発生していたElectronフレームワークによるGPU使用率上昇・パフォーマンス低下の不具合が修正されました。また、Notion Calendarは引き続き古いElectronを利用しています。


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?