はじめにGoのエラー処理Goのエラー処理に何かライブラリを利用していますか? この質問はGo 1.0のリリースから10年以上経つ今でも、日本のGoコミュニティでよくされる質問です。筆者(tenntenn)もよく他社の方からされます。 pkg/errorsやgolang.org/x/xerrorsがデファクトスタンダードだった頃と比べ、近年(2025年)はあまりデファクトスタンダードと呼べるライブラリが無いのが現状です。 また、言語仕様やerrorsパッケージについても徐々にアップデートされてきました。Go 1.13でエラーのラップやerrors.Is、errors.Asがリリースされ、pkg/errorsが作ったエラーをラップする文化が標準にも導入されました。同様にGo 1.20でerrors.Joinが入り、hashicorp/go-multierror やgo.uber.org/
はじめに 先月のGoCon 2014 Autumn のキーノートスピーチで Rob Pike 先生が、「Simplicity is Complicated」というタイトルで講演を行いました( @tenntenn さんによるレポート記事 )。 その中で、「Go の定数は、裏では非常に複雑なことをやっている」という話をされていました。そのときに触れられていた、TheGoblog の "Constants" という記事を読んだので、それについてまとめます。 TL;DRGo では、異なる型を混ぜた式は禁止し明示的な変換を要求する しかし、定数を毎回変換するのは面倒なので、定数は型を持たないことが可能になっている これによって、Go の定数は、実際の数字のように扱うことができる 参考文献 参考というか、そのままなので、下記を読めば、本記事を読む必要はありません。また、本記事を読んで興味を持っ

はじめにこんにちは!syumaiです。 久しぶりの投稿となりますが、2025年11月号として、9月上旬〜10月末頃に見かけて気になった、JavaScript/TypeScript(以下、JS/TS)、Go周辺の話題についてご紹介させていただきます! まず、JS/TS関連の話題から紹介させていただくので、Goの話題が気になる方はページ下部の方からご覧ください! JS/TSライブラリ・フレームワークHono CLIWebフレームワークのHonoが、なんとCLIツールをリリースしました。 このCLIツールは、Honoの使い方を調べたり、Honoアプリケーションのデバッグ、最適化などの機能を持っています。 なぜこのようなCLIツールをリリースしたのかというと、なんと、人だけではなくAIにも使ってもらうためとのことでした。 もちろん人が使っても便利なのですが、Honoの使い方を詳しく知らないコーディ

お試しで、Goのエラーハンドリングを省略するための try というライブラリを作っているので紹介します(最後にちょっとした告知があります)。github.com これを使うと、よくある iferr != nil を次のように記述できます。 // HandleとCheckは必ず同じスコープに書いて下さい cp,err := try.Handle() iferr != nil { // 下のCheckでエラーが発生したらここに飛ぶlog.Fatalln("Error:",err) } s := try.Check1(os.ReadFile("/tmp/xxx"))(cp) u := try.Check1(url.Parse(string(s)))(cp) fmt.Println(u.Path) try パッケージのAPIデザインはError Handling — Problem O
前書き 黒魔術のざっくり概要 黒魔術をどうやって使うか 黒魔術の副作用 黒魔術に対する防衛術 ~Defence Against theGo's dark Arts~ インターフェース適合アサーション 標準的な構文 動作メカニズム 主な用途 実装例 配列長アサーション 標準的な構文 動作メカニズム 主な用途 実装例 定数演算と型定義によるアサーション 標準的な構文 動作メカニズム 主な用途 実装例 マップキー重複アサーション 標準的な構文 動作メカニズム 主な用途 実装例 リンカエラーアサーション 標準的な構文 動作メカニズム import "C" の副作用 コンパイラの定数評価とデッドコード除去 (DCE) リンカのシンボル解決 主な用途 実装例 まとめ 前書き ソフトウェアエンジニアリングの世界では、一見すると動作原理が不可解でありながら、言語仕様の巧みな(あるいは強引な)解釈によって

「Goで静的解析ツールを作ってみたいけど、何から始めればいいの?」と思ったことはありませんか?Goは「静的解析がやりやすいように設計しよう」という背景を持って作られたプログラミング言語なので、go/astやgo/typesといった解析用の標準ライブラリがとても充実しています。 しかし、いざ作ろうと思っても「skeletonで雛形は作れたけど、その先のgo/astパッケージやgo/typesパッケージを使って自分がやりたい解析ロジックをどう書いていけばいいのか全く分からない」という壁にぶつかる方も多いと思います。 この本では、そんな「静的解析ツールを作りたいけれど、最初の一歩が踏み出せない」という方のために、ASTや型情報の基礎知識から実践的な解析ロジックの書き方まで、実際に動くサンプルコードとともに解説します。 読み終わる頃には「自分でも静的解析ツールが書けそう!」という状態になっている

こんにちは、リアーキテクチャ&イネーブルメント部のjunです。 普段はフレームワーク寄りの機能やライブラリの開発、パフォーマンスチューニング、リファクタリングなどなどプロダクトの土台を支える役割を担当しています。 今回は、運用品質向上のために開発した、Go言語のエラーハンドリングライブラリ「go-errorsx」の設計思想と活用方法をご紹介します。 ※go-errorsxはまだ発展段階のライブラリです。APIの変更や機能追加が行われる可能性があります。また、ValidationErrorは開発中の機能で、将来的にcontribとして別パッケージに分離する可能性があります。 なぜ新しいライブラリが必要だったのか 既存の素晴らしいGoエラーライブラリ(pkg/errors、eris、cockroachdb/errorsなど)はそれぞれ優れた特徴を持っていますが、運用品質を向上させる機能をもう

この話は、goccy/go-yaml 作者のgoccyさんと、YAMLの話を…止めない!という私のポッドキャストエピソードでも話した内容だが、口頭では説明が難しかったり、上手くまとまってなかった部分もあったので、補足的にエントリーを書いた。ポッドキャストでは裏話的な話やgoccyさんの生の意見も聞けるので、そちらも是非聞いてみて欲しい。GoのYAMLライブラリとそのアーカイブ事件GoのメジャーなYAMLライブラリには大きく以下の2つがある。gopkg.in/yaml.v3 (gopkg.in/yaml) 7k starsgithub.com/go-yaml/yaml が開発リポジトリgithub.com/goccy/go-yaml (goccy/go-yaml) 1.7k stars 他にもYAMLライブラリはいくつかあるが、実態は、gopkg.in/yaml のラッパーであるこ

TheGoBlog [ On | No ] syntactic support forerror handling Robert Griesemer 3 June 2025 One of the oldest and most persistent complaints aboutGo concerns the verbosity oferror handling. We are all intimately (some may say painfully) familiar with this code pattern: x,err := call() iferr != nil { // handleerr } The test iferr != nil can be so pervasive thatit drowns out the rest of the cod
![[ On | No ] syntactic support for error handling - The Go Programming Language](/image.pl?url=https%3a%2f%2fcdn-ak-scissors.b.st-hatena.com%2fimage%2fsquare%2f61955b2029cca886435bd7bb93b949e8f18ae48d%2fheight%3d288%3bversion%3d1%3bwidth%3d512%2fhttps%253A%252F%252Fgo.dev%252Fdoc%252Fgopher%252Frunningsquare.jpg&f=jpg&w=240)
👋 This page was last updated ~3 years ago.Just so you know. In the two years since I’ve posted I want off MrGolang’s Wild Ride,it’s made the rounds time and time again, on Reddit, on Lobste.rs, on HackerNews, and elsewhere. And every time,it elicits the same responses: You talk aboutWindows: that’s not whatGo isgood at! (Also, who cares?) This is very one-sided: you’re not talking about th

I’ve leftGoogle after working there for 19 years. For most of that time I’ve been fortunate in being able to work on theGoprogramming language.Go was started by Rob Pike, Ken Thompson, and Robert Griesemer in the fall of 2007. Ijoined the team in June, 2008, about the same time as Russ Cox. I’ve been very lucky to be able to work with such remarkable people on such an interesting project. I a
Model Context Protocol (MCP) 概要 MCPは、Claudeの開発元であるAnthropicによりLLMとローカル環境を接続するための標準プロトコル この規格で実装されたMCPサーバーを使うことで、LLMにローカルファイルの読み取りやAPIへのアクセスなどの機能を拡張できる JSON-RPC の仕様が規格化されているだけなので、様々なプログラミング言語で実装可能 Claude DesktopやCursor、Clineなどでは既にMCPサーバーの利用がサポートされている 仕様(Draft)はこちらGoのMCP開発ライブラリPython,TypeScript,Java,Kotlin は公式からSDKが提供されていますが、(2025-03-21時点)Goでライブラリを使ってMCPサーバーを実装する場合は、自前で実装するか、サードパーティライブラリに頼ることに

Language choice is always a hottopic! We extensively evaluated many language options, both recently and in prior investigations. We also considered hybrid approaches where certain components could be written in a native language, while keeping core typechecking algorithms inJavaScript. We wrote multiple prototypes experimenting with different data representations in different languages, and did
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く