ほぼ週間Go言語 2025/10/20
今週もプログラミング雑記からGo言語に関する話題と、その他特に気になった話題をより抜きでお送りします。
Go言語
Go 1.25.3 and Go 1.24.9 are released.
Goは、Ruby on Railsがかつてウェブ開発で起こしたブームと似た現象を再現しています。Railsは「設定より規約」「生産性の高さ」で一世を風靡しましたが、Goもそのシンプルな構文、高速なパフォーマンス、並行処理の容易さ、マイクロサービスに最適な軽量性により、モダンなWeb開発で注目されています。Goは高負荷や大規模な分散システムで特に力を発揮し、シンプルなプロジェクト構造やメンテナンス性でも優れています。Goへの移行は性能やスケーラビリティの課題解決に効果的であり、新しい世代の開発者にとって重要な選択肢となっています。
Go公式ドキュメントを元に、コードフォーマット、命名規則、パッケージ設計、エラー処理、関数設計、並行処理、コメント・テスト規約、パフォーマンス最適化など、Go言語の標準的なコーディング規則とベストプラクティスを簡潔にまとめています。シンプルで一貫性あるコードを推奨します。
Goのメモリ最適化とガベージコレクタ管理について解説。ヒープとスタックの違い、変数配置の基準、GOGCやGOMEMLIMITでGC挙動制御、特にコンテナ環境でOOM対策としてメモリ制限設定の重要性が述べられている。
Go標準ライブラリのみでREST APIサーバーを構築する実践記事です。レイヤードアーキテクチャを採用し、依存性注入やRepositoryパターンで保守性とテスタビリティを重視しています。JWT認証やミドルウェア(認証・CORS・ロギング・レート制限)も独自実装し、テスト・外部依存性の少なさに配慮。バリデーションやエラーハンドリングも専用層を設け、モダンな設計・Goらしさ・現場での使いやすさに焦点をあてています。
ライブラリ・ツール
サイボウズのCloudPlatform部がGo言語で利用するdatabase/sql用OpenTelemetry計装ライブラリ3種(uptrace/opentelemetry-go-extra/otelsql、XSAM/otelsql、nhatthm/otelsql)を比較。XSAM/otelsqlは情報取得の柔軟性や粒度、メンテナンス状況から本番環境でも採用。どのライブラリもクエリやトランザクション操作をトレース可能で、パラメータのSpan追加時は情報漏洩・属性数増大に注意が必要です。導入は要件や運用体制次第で柔軟に選択すると良い、という結論です。
ArgusはGoアプリケーション向けの高性能な構成管理ライブラリです。ゼロアロケーション設計によりパフォーマンスに優れ、JSON、YAML、TOML、HCL、INI、Propertiesなど多様なフォーマットに対応しています。OrpheusとFlash-Flagsを利用した高速CLIを備え、分散構成管理やリモート/ローカル自動フェールオーバーもサポート。型安全なバインディングやリアルタイム監視、高度な監査記録やセキュリティ対策により、実運用環境でも安定した運用が可能です。
go-agent-development-kitは、Go言語でAIエージェントを開発するためのフレームワークです。言語モデル、ツール実行、RAG(検索拡張型生成)機能、サブエージェントやメモリエンジンなどを統合し、生産向けのエージェントを容易に構築できます。拡張性や再利用性を重視したAPI設計で、GeminiやAnthropicなど各種モデルに対応。PostgreSQL+pgvectorなどベクトルストア連携も可能で、CLIデモも用意されています。
その他
スキル
本記事は、読解力を「正確に読む・裏を読む・本質を読む」の3段階に分解し、各段階に応じた課題と訓練方法を考察しています。我々は仮説や感情に基づいて都合の良い情報だけ拾い読みしがちだが、読解力は複数スキルの集合体であり、生成AIの登場でその重要性はむしろ高まると主張。自分の持つスキーマを自覚し、「わかったつもり」にならず、失敗から学び改善を続けることが、本質的な成長につながると説いています。
「文章力を分解してちゃんと文章を書く」では、文章を読む力と書く力は表裏一体であり、両者を鍛えることで相乗的に成長できると説く。文章力は3段階で捉えられ、第1段階は「正確に書く」こと(主語・構造明示や冗長排除)、第2段階は「誤読されないように書く」技術(読み手のスキーマや認知バイアスを意識し、文脈を整える)、第3段階は「心を動かす」表現(読者を引きつける、具体的体験やエピソードで語る)とし、技術文書には特に第1・2段階が重要。書く訓練は読む力の向上にも直結し、両輪を回すことで文章力は指数的に伸びるとまとめている。
AI時代のエンジニアが生き残るためには、AIに代替されない4つの核心能力が重要とされています。それは「問題把握能力(課題を見つける力)」「解決能力(AIから適切な答えを引き出す力)」「プログラミングスキル(AIの誤りを修正する力)」「責任能力(最終的に責任を取る力)」です。特に変化に適応するアジリティが重要であり、AIをトレーニングツールとして活用し、付加価値を生み出す意識が不可欠です。最終的に、考え抜き、決断し、責任を持つことが人間エンジニアの価値であるとまとめています。
ITスクールSAMURAIの調査によると、プログラミング学習で97%が挫折を経験している 。主な原因は「不明点を質問できる環境がなかった」(27%)、「学習のモチベーションが続かなかった」(22%)、「エラーやバグ対処で心が折れた」(17%)。解決策として「気軽に不明点を聞ける環境」(37%)が最も求められている 。
まぁ、いろいろ理由はあると思うのだけど、結局続かないのはプログラミングが好きじゃないから。この仕事ぐらい「好きこそものの上手なれ」が当てはまる仕事も無い。
計算機科学
1970年代以降、計算機科学は急速に発展し、プログラミングやネットワーク技術の進歩に大きく貢献しました。しかし時代が進み、計算機はブラックボックス化し、誰もがツールとして日常的に利用するようになりました。専門家以外もプログラムを書く時代となり、計算機科学独自の役割は薄れていきました。今では計算機科学者は失業すると言われるほどですが、その分野が社会の進歩や便利な生活の実現を推進したことは確かです。AIやネット依存の進行、失われた能力への懸念もあるものの、元計算機科学者はその達成を誇ってよいと述べています。
Discussion