並び順

ブックマーク数

期間指定

  • から
  • まで

81 - 120 件 / 307件

新着順 人気順

golangの検索結果81 - 120 件 / 307件

  • 自動化するならちゃんとエラーを出せ。想定しろ。不安になれ。 - じゃあ、おうちで学べる

    はじめに 自動化やツール開発において、通常時に上手くいくのは当たり前です。大切なのは失敗を想定することです。自動化したツールがエラーも出さずに実行結果的にも成功してるので動いていると思っていたら、実は問題が発生していて泣いた経験は、多くの人にあるのではないでしょうか。エラーを出力し、適切に失敗させて、ログに記録することで、問題の早期発見と迅速な対応が可能になります。また、エラーが発生する可能性のある箇所を事前に想定し、適切に処理することで、ツールの信頼性と安定性が向上します。 しかし、エラーハンドリングができていても、それだけでは不十分です。優れた自動化ツールは、環境の変化に柔軟に対応できるようにコードが設計されているべきです。 また、自動化ツールの完成度を高めるには、エラーハンドリングだけでなく、保守性、拡張性、ユーザビリティなども考慮する必要があります。 自動化ツールを開発する際は、常

      自動化するならちゃんとエラーを出せ。想定しろ。不安になれ。 - じゃあ、おうちで学べる
    • Rust Vs Go: A Hands-On Comparison

      Matthias Endler - Consultant at Corrode.dev  • 27 September 2023 Oh no, not another 'Is Rust better than Go?' article. Seriously, haven't we all had our fill of these comparisons by now? But before you sigh in exasperation, hear us out! Many comparisons between Go and Rust emphasize their differences in syntax and the initial learning curve. However, ultimately, what matters is the ease of use for

        Rust Vs Go: A Hands-On Comparison
      • 50 Shades of Go: Traps, Gotchas, and Common Mistakes for New Golang Devs

        50 Shades of Go: Traps, Gotchas, and Common Mistakes for New Golang Devs 50 Shades of Go in Other Languages Chinese Translation: blog post, segmentfault (by wuYin) - needs updates Another Chinese Translation: blog post (by Shadowwind LEY) - needs updates Russian Translation: blog post (by Ilia Ozhereliev, Mail.Ru Group Blog) - needs updates Overview Go is a simple and fun language, but, like any o

        • Amazon Verified Permissionsとgolangで認可処理を実装してみた - Techtouch Developers Blog

          Amazon Verified Permissions とは 従来の認可処理 Cedar 言語の使い方 基本的な記述方法 RBAC の例 ABAC の例 golang で動かしてみる 1. ポリシーストアを AWS コンソールから作成する 3. サンプルアプリケーションの実装 最後に こんにちは、2023年5月にバックエンドエンジニアとしてジョインした yamanoi です。 最近は Cloudflare スタックに注目しており、新機能を触ったりアップデートを眺めたりしています。 今回は先日 GA (一般利用可能)になった AWS のサービス Amazon Verified Permissions を、 golang で実装した簡単なサンプルを交えて紹介したいと思います。 Amazon Verified Permissions とは Amazon Verified Permissions

            Amazon Verified Permissionsとgolangで認可処理を実装してみた - Techtouch Developers Blog
          • Go 1.21 リリース連載 contextパッケージに追加されるWithoutCancelでクライアントとの切断に備えてみる | フューチャー技術ブログ

            Go 1.21 リリース連載 contextパッケージに追加されるWithoutCancelでクライアントとの切断に備えてみる はじめにこんにちは。TIG DX ユニット所属、金欠コンサルタントの藤井です。先日、Google Pixel 7aを購入しました。これまでiPhone 7 Plusを使っていたので、使用スマホの時代が7年ほど進みました。Googleは検索エンジンからAI、スマホまで作っていてすごいですね。 ということで今回は、Google発のプログラミング言語であるところのGoの1.21がリリースされることを記念した、Go 1.21 連載 の記事を書きます。 本記事では、いくつか変更の入った、contextパッケージについて記載していきます。 contextそのものについては、フューチャー技術ブログにおいても数多く解説されていますので、詳細な説明は割愛します。数例記載しますので、

              Go 1.21 リリース連載 contextパッケージに追加されるWithoutCancelでクライアントとの切断に備えてみる | フューチャー技術ブログ
            • ウォンテッドリーのバックエンド領域を支える言語の歴史を読み解く | Wantedly Engineer Blog

              こんにちは、ウォンテッドリー株式会社でインフラエンジニアをやっている @fohte です。 筆者はウォンテッドリーに join して 1 年が経過しようとしており、ようやくウォンテッドリーが採用しているアーキテクチャについて全貌が掴めてきました。そこで改めてウォンテッドリーの技術スタックを考え直してみると、ウォンテッドリーのバックエンド領域において利用している言語はなぜ採用されているのかが気になりました。今回はそれを読み解くべく、過去から現在までに利用されている言語の比率から、その背景と歴史を追っていきます。 ウォンテッドリーで採用している言語とアーキテクチャの歴史まずはじめに、ウォンテッドリーでは下図の技術およびアーキテクチャを選定しています。 (参考: 技術とアーキテクチャ - Wantedly Engineering Handbook) 本記事では、この図での "The System

                ウォンテッドリーのバックエンド領域を支える言語の歴史を読み解く | Wantedly Engineer Blog
              • 次なる`pkg/errors`を探して - カンムテックブログ

                エンジニアの宮原です。 今回はGoでスタックトレースを取得するライブラリ選定についての記事です。 この記事は 【Gophers Talk】スポンサー4社による合同LT & カンファレンス感想戦で発表したものです。 発表スライドはこちらから確認できます。 この記事の目的 この記事ではpkg/errorsからの移行先を探すための参考情報を提供することを目的とします。 Goのエラーハンドリングのやり方等についてこの記事では触れないこととします。 pkg/errors とはなにか pkg/errorsとは、githubのREADMEを引用すると Package errors provides simple error handling primitives. とあり、直訳すると、「エラーハンドリングの基礎を提供するパッケージ」となります。 pkg/errorsを利用することで、Go本体にはないスタ

                  次なる`pkg/errors`を探して - カンムテックブログ
                • マイクロサービス化するならリビルドで!ビジネスロジックをGoで書き直してわかったこと - MonotaRO Tech Blog

                  この記事では モノタロウがGoとprotobufで進める爆速マイクロサービス開発とそれを支えるプロセス - MonotaRO Tech Blog のうち、主にアーキテクチャにおける詳細について紹介します。 自己紹介 マイクロサービス化について 課題を認識する スコープと技術選定 ゴールイメージを共有する 既存コードから分かった問題点 曖昧なデータ構造 処理フローの混在 アドホックなデータ取得 効果的な改善を行う 処理フローを分割する N+1問題とロジックの独立性を考慮した設計 安全に移行する 実行時のデータを取る 新旧比較による検証 まとめ 自己紹介 藤本 洋一 プラットフォームエンジニアリング部門 CTO-Officeグループ AVLチーム 楽天、SaaSベンチャーを経て、モノタロウに入社してマイクロサービス化にとりくむエンジニアの話 2019年5月入社。商品検索基盤のマイクロサービスと

                    マイクロサービス化するならリビルドで!ビジネスロジックをGoで書き直してわかったこと - MonotaRO Tech Blog
                  • Goで実践 アクターモデル vol.1 Hello Actor - ytake blog

                    Hello Actor 細かい機能の解説はあとの回として、 まずはアクターシステムを使ったプログラミングを体験してみましょう。 Goではアクターシステムが商用でも十分利用できるものは、 下記のProto Actorとergoがあります。 github.com github.com Proto.Actorは、Akka.NET のオリジナル作成者 Roger Johansson によって開発されているもので、 Akka/Pekko と基本の部分がある程度似た形になっています。 あくまで似ている程度で、現在のAkka/Pekkoほど強力なツールが揃っているわけではありませんが、 Proto Actorで概念や作り方を覚えると、少ない労力でAkk/Pekkoにも移行などもができるようになります。 細部は異なりますが、概念などはかなり似ていますのですんなり理解できるはずです。 ergoは Erlan

                      Goで実践 アクターモデル vol.1 Hello Actor - ytake blog
                    • GraphQLサーバーは、本当にGoがTypeScriptより早いのか。Flutterからの呼び出しで検証する。

                      3秒まとめ GoのパフォーマンスはNestJS(TypeScript)の2倍以上!? GraphQLのエコシステムはGo, TSともに充実 GitHub Copilotで、GoのAcceptance Rateが40%を超える体験をした GraphQL全盛の時代に、どの言語を使って開発すべきか 2015年にFacebookにより公開されたGraphQL。日本でもYahooやメルカリなどバックエンドをマイクロサービス化している多くの企業で採用され、近年はフロントエンド開発者にとって魔法の弾丸のように扱われることも多くなりました。 メルカリShopがGraphQL Client Architecture Recommendation社外版を公開していることからもわかる通り、GraphQLの利用に関する知見はかなり蓄積されてきています。 上記Recommendationによれば、BackendはG

                        GraphQLサーバーは、本当にGoがTypeScriptより早いのか。Flutterからの呼び出しで検証する。
                      • 【Go/GCP】ライブゲーム「あてっこ!ぷにまるず」を支えるバックエンド技術 - Mirrativ Tech Blog

                        バックエンドエンジニアの makino です。本日は、先日リリースしたライブゲーム「あてっこ!ぷにまるず」のバックエンド技術について紹介します。 ライブゲーム「あてっこ!ぷにまるず」について ライブゲームとは、Mirrativアプリ上で遊べるゲームであり、配信中のゲームに視聴者が介入できることが特徴です。 「あてっこ!ぷにまるず」では、配信中に視聴者を招待して一緒にGvGバトルを楽しむことができます。 開発スタッフがプレイした動画をご紹介📺✨ バウンド数に注目👀⁉ こんなに連鎖できたら気持ちよさそう…🐰💕 動画を参考にレッツ❗チャレンジ💁 SNSスタッフは2回バウンドできました🙌 まだまだ道のりは険しい…🏔 pic.twitter.com/YdZMRKxbgv— 【公式】あてっこ!ぷにまるず (@punimals_jp) 2023年7月18日 Mirrativのライブゲームは

                          【Go/GCP】ライブゲーム「あてっこ!ぷにまるず」を支えるバックエンド技術 - Mirrativ Tech Blog
                        • はてなのサービスを支えるGo / hatena.go #1 maku693

                          hatena.go #1の登壇資料です。

                            はてなのサービスを支えるGo / hatena.go #1 maku693
                          • GoエンジニアがReactにチャレンジして驚いた5つのこと

                            はじめに こんにちは。Magic Momentでエンジニアをしている伊藤です。 いつもはMagic MomentのプロダクトであるMagic Moment Playbookの開発に携わっています。 元々はGo言語エンジニアとしてMagic Moment Playbookのバックエンド開発に参加し始めました。 ですが、今回フロントエンドエンジニアとしてフロント側の開発に参加することとなりました。 Go言語を使っていたエンジニアがReactを使い始めて驚いたこと、理解しづらかった部分などを書いていこうと思います。 これからフロントをやってみたいと思うバックエンドエンジニアの方の参考になれば幸いです。 そもそもReact.jsとは Magic Moment PlaybookのフロントエンドはReact.jsを使って構築されていますが、そもそもReactとはなんなのでしょうか。 ReactはFac

                              GoエンジニアがReactにチャレンジして驚いた5つのこと
                            • Goで非推奨(Deprecated)や撤回(Retracted)を明示する方法 - Plan 9とGo言語のブログ

                              最近のGoには、関数やパッケージを非推奨と扱う方法があります。まとまっていると便利かなと思うので、種類ごとにまとめてみました。GoDocコメントを多用するので、GoDocを書き慣れていない場合は以下も参考にしてください。 blog.lufia.org 関数と型を非推奨にする 関数コメントに、// Deprecated: ではじまる段落を追加します。 // Parse parses a string of the form <status>=<status>. // // Deprecated: Use ParseStatusMap instead. func Parse(src string) (map[Status]Status, error) { ... } 型の場合も同様に。 // Error is the interface that wraps Error method. //

                                Goで非推奨(Deprecated)や撤回(Retracted)を明示する方法 - Plan 9とGo言語のブログ
                              • PostgreSQL LISTEN/NOTIFY, Goを利用したリアルタイム配信

                                はじめに 本記事では、PostgreSQLのLISTEN/NOTIFY機能とGoを組み合わせた、メッセージをリアルタイム配信するための仕組み・実装を紹介します。 私たちが開発しているMiROHA eConsentでは本記事で紹介する仕組みを利用して、ユーザが見ている文書のページをリアルタイムに知らせる機能をリリースしました。 MiROHA eConsentは、治験業務支援サービス MiROHAのシステムの一部で 、治験の同意取得プロセスをオンラインのみで完結させることができるプロダクトです。医師とCRC[1]・被験者が同じルームに入室し、ビデオ通話を繋ぎながら治験に関する説明から同意署名、署名した文書のダウンロードまで一気通貫で行うことができます。 MiROHAシステムの全体図。医師/CRCと被験者の間で同意取得ができる機能を提供しているのがMiROHA eConsentになります。 プロ

                                  PostgreSQL LISTEN/NOTIFY, Goを利用したリアルタイム配信
                                • net/http/httptest.Server のアプローチをテスト戦略に活用する / Go Conference 2023

                                  https://gocon.jp/2023/sessions/A13-S/ https://github.com/k1LoW/httpstub https://github.com/k1LoW/grpcstub https://github.com/k1LoW/smtptest https://github.com/k1LoW/runn

                                    net/http/httptest.Server のアプローチをテスト戦略に活用する / Go Conference 2023
                                  • 今日から始めるGo / Starting Go from Today

                                    次のセミナーの登壇資料です。 2023/06/15 Go言語/最新情報・活用事例セミナー https://tech-street.connpass.com/event/283689/ 雑談はこちらでお待ちしております。 https://jobs.layerx.co.jp/b5e09accdac74482b8a7ebc33824e7df スライド内で紹介しているコンテンツです。 - Gopher道場の動画コンテンツを完全に公開しました - https://zenn.dev/gophersjp/articles/834d6382991674

                                      今日から始めるGo / Starting Go from Today
                                    • GoでgRPCのAPIテスト環境を構築する - enechain Tech Blog

                                      はじめに JCEXで実践しているAPIテストについて 単体テスト 負荷テスト なぜAPIの単体テストを行っているのか API単体テストで使用するパッケージ 実例によるAPI単体テストの環境構築 前提 ステップ1: テストしたいAPIの定義 ステップ2: テストの作成 ステップ3: APIの実装 ステップ4: DBを使ったテスト ステップ5: ヘルパー関数化 ステップ6: テーブル駆動テストに変える ステップ7: フィクスチャを使ったテスト まとめ おわりに はじめに こんにちは、enechainのGXデスクでエンジニアをしている@ejiです。 GXデスクは、『日本気候取引所 - Japan Climate Exchange』 (以下 JCEX) のサービス開発を担当しており、 私は主にBFFとバックエンドのAPIをGoで開発しています。バックエンドのAPIは gRPC を使用しています。

                                        GoでgRPCのAPIテスト環境を構築する - enechain Tech Blog
                                      • Govulncheck v1.0.0 is released! - The Go Programming Language

                                        Julie Qiu, for the Go security team 13 July 2023 We are excited to announce that govulncheck v1.0.0 has been released, along with v1.0.0 of the API for integrating scanning into other tools! Go’s support for vulnerability management was first announced last September. We have made several changes since then, culminating in today’s release. This post describes Go’s updated vulnerability tooling, an

                                          Govulncheck v1.0.0 is released! - The Go Programming Language
                                        • つくってまなぶ静的解析のすすめ - LayerX エンジニアブログ

                                          はじめに こんにちは、LayerXの id:convto です。 そしてこれは LayerX アドベントカレンダー (概念) の1日目の記事です。 アドベントカレンダー盛り上げていくぞ〜ということで11月から始まるらしいです。だいぶフライングしてるけど枠もかなり埋まっててすごい。 せっかくなのでお祭り参加したいぞ〜ということで一発目です。よろしくお願いします。 静的解析つくろうとしたきっかけ ちょうどつい最近記事になった下記の輪読会がきっかけでした。 tech.layerx.co.jp このなかで、mapのrange accesssについて、元mapのcopyを取らないから破壊するとループ挙動が壊れる可能性がある旨が言及されていました。 そのときは雑談で「range accessしてるmapに再代入してたら怒る!みたいな考え方で整理したら静的解析できそうっすよね〜」みたいな話をしたんですが

                                            つくってまなぶ静的解析のすすめ - LayerX エンジニアブログ
                                          • Goで関数の引数に、union型っぽくstruct Aもしくはstruct Bのどちらかを受け取れるようにしたい - $shibayu36->blog;

                                            Goで関数の引数に、struct Aという型もしくはstruct Bのどちらかを受け取るということをしたかった。interfaceをちゃんと切ってそれに必要なメソッドをAとBに実装することで実現できることを知った上で、あまり丁寧にそういうことをせずにやりたい。 色々調べると、genericsを使うとできるようだ。 package main import "fmt" type A struct { Field1 int } type B struct { Field2 string } type AorB interface { A | B } func PrintAorB[T AorB](s T) { // Tで受け取ったものをそのままs.(type)とは出来ないので、一旦anyへキャスト switch v := any(s).(type) { case A: fmt.Println(v.

                                              Goで関数の引数に、union型っぽくstruct Aもしくはstruct Bのどちらかを受け取れるようにしたい - $shibayu36->blog;
                                            • bmf-tech.com - Goでオレオレ証明書がほしいときの一手

                                              GoでHTTPサーバーを書いているときなどオレオレ証明書がほしいときに役立つワンライナー。 go run $(go env GOROOT)/src/crypto/tls/generate_cert.go -rsa-bits 2048 -host localhost cert.pemとkey.pemが用意できる。 openssl使ったりmkcert使ったりしていたけどGo使っていたらこれで良さそう。 cf. Source file src/crypto/tls/generate_cert.go

                                              • リアルタイム検索最適化:Reactアプリにdebounce処理を組み込む - Techtouch Developers Blog

                                                はじめに そもそも debounce 処理って? 本題 今回作りたかったもの 検討したこと useDebounce useDebouncedValue 実装したもの 最後に はじめに テックタッチのフロントエンドエンジニアの ozaan (@shzawa) です。関西 (兵庫県姫路市) 在住のため、普段はフルリモートのメンバーとしてサービス開発に取り組んでいます。 最近はスクラム開発の一環でバックエンドのコード (golang) を触らせてもらっていました。golang だと書き方が統一されているためか GitHub Copilot の補完機能がかなり効くので書いていて面白かったです。 そもそも debounce 処理って? 対象のイベントが発生してから指定した時間が経過するまでは、同じイベントの発生を抑制する仕組みです。 input 要素の onChange イベントのような短い間隔で連

                                                  リアルタイム検索最適化:Reactアプリにdebounce処理を組み込む - Techtouch Developers Blog
                                                • Go製バイナリを配布するためのGitHubワークフロー - Plan 9とGo言語のブログ

                                                  前置き 以前、BuildInfoからバージョンを取得する方法を紹介しました。 blog.lufia.org go installで正規の公開されたバージョンをインストールした場合は、以下の出力においてmodの行が示すように、sum.golang.orgでチェックサム等が検証されてバイナリのメタデータに埋め込まれます。 $ go version -m dotsync dotsync: go1.22.2 path github.com/lufia/dotsync mod github.com/lufia/dotsync v0.0.2 h1:JWm92Aw8pSKJ4eHiQZIsE/4rgwk3h5CjEbJ/S30wiOU= build -buildmode=exe build -compiler=gc build -trimpath=true build DefaultGODEBUG=ht

                                                    Go製バイナリを配布するためのGitHubワークフロー - Plan 9とGo言語のブログ
                                                  • 【Go】time.Time.AddDateの注意点と対策 - Mirrativ Tech Blog

                                                    こんにちは、バックエンドエンジニアの藤井脩紀です。 今回の記事では日付計算に潜む罠についてお話しさせていただきます。 なお今回はGoでの事例をご紹介しますが、原理的には他の言語やライブラリでも同様の事象が発生する可能性があります点にご注意ください。 time.Time.AddDateの注意点 突然ですがここでクイズです。 来月が何月か知りたいので以下のようなコードを書きました。 このコードを実行したのは10月だとします。 結果は何になるでしょう? // AddDateの引数は順に年、月、日でそれらの値を加算したtime.Timeを返してくれます fmt.Printf("%d月\n", time.Now().AddDate(0, 1, 0).Month()) 「え、11月でしょ?」と思う方もいらっしゃるかもしれませんが正確には異なります。 焦らさずに書きますが答えは「11月か12月のどちらか

                                                      【Go】time.Time.AddDateの注意点と対策 - Mirrativ Tech Blog
                                                    • Google Cloud Operations Suite で実現する "頑張らないオブザーバビリティ" - KAYAC engineers' blog

                                                      SRE チームの市川恭佑です。 先日、CloudNative Days Tokyo 2023 のプロポーザルを提出したのですが、残念ながら採択に至らなかったので、今回は宇宙最速の(?)供養エントリになります。 シェア・投票など、ご応援をくださった皆様にはこの場でお礼を申し上げます。ありがとうございました。 event.cloudnativedays.jp 背景とか、経緯とか 筆者は、カヤックの SRE チームにちょうど2年ほど在籍しています。とは言っても半年ぐらいは学生アルバイトだったので、正社員としては1年半ほどです。カヤックに入る前も、いくつかの会社で IT エンジニアとしてインターンやアルバイトをしていました。 という訳で、何だかんだ仕事で使うプログラムを書き始めてトータル4年半ほどになりますが、そのうち3年半ほどは全て Amazon Web Services(AWS)でホストされる

                                                        Google Cloud Operations Suite で実現する "頑張らないオブザーバビリティ" - KAYAC engineers' blog
                                                      • freeeカードチームの開発(Go)から得た学びベスト5 - freee Developers Hub

                                                        この記事はfreeeアドベントカレンダー2023の19日目の記事です。 こんにちは!freeeカードチームのmattsunです。freeeカードUnlimitedの開発運用をしています。私は1年前にfreeeに入社しfreeeカードチームに所属しています。これまでの自分のエンジニアとしてのキャリア(10年強)を通してみても、今のチームではPRレビューやリファクタなどからの学びが多いなぁと感じます。個人的に学びがあったことやチームとしての知見が深まったもののうち、ベスト5(私の主観)をまとめます。 freeeカードシステムは、フロントエンド(TS,React)・BFF(RoR)・Backend(Go)で構成されており、Goでの開発比率が多いことから、本記事はGoのコードに関する言及が多いです。freee社全体をみるとRailsで開発されたシステムも多いですが、Goで開発しているサービスもある

                                                          freeeカードチームの開発(Go)から得た学びベスト5 - freee Developers Hub
                                                        • 最近のGoのOpenAPI Generatorの推しはogen - ぷらすのブログ

                                                          はじめに OpenAPI の yaml ファイルから Go のコードを生成する OSS ツールは何種類か存在します。 よく使われるのはOpenAPITools/openapi-generatorやdeepmap/oapi-codegenでしょうか。 ググると日本語の記事もたくさん出てきます。 こんにちは、バクラク事業部 バクラクビジネスカード開発チームでEMとTechLeadを担当している高江 @shnjtk です。 今回は、openapi-generator を使ってOpenAPI定義ファイル(OpenAPI Specification)からGoのコードを生成する方法と、運用時のTipsについてご紹介します。 背景 バクラク事業部では、スキーマ駆動開発によりDBやGraphQLのスキーマ定義、OpenAPI定義ファイルなどから自動生成されたコードを積極的に利用する開発スタイルが採用されて

                                                            最近のGoのOpenAPI Generatorの推しはogen - ぷらすのブログ
                                                          • More powerful Go execution traces - The Go Programming Language

                                                            The Go Blog More powerful Go execution traces Michael Knyszek 14 March 2024 The runtime/trace package contains a powerful tool for understanding and troubleshooting Go programs. The functionality within allows one to produce a trace of each goroutine’s execution over some time period. With the go tool trace command (or the excellent open source gotraceui tool), one may then visualize and explore t

                                                              More powerful Go execution traces - The Go Programming Language
                                                            • ユニットテストで避けるべき罠: 最適な品質保証のために落とし穴を避ける - Qiita

                                                              はじめに 新卒として、実務に入って3ヶ月目のお話。なぜかテストコードの正式な導入の動きにより、先輩から、「テストコードの規約かいて〜〜〜」と超ラフに言われ、「ん?」となりつつ、作りました。そんな中で、テストコードの作成やお試し実装などをしている時に、みんなこれハマるよな...というものをざっと上げてみます。 ユニットテストにおけるテスト自動化は、システムのテストにおいて最も難易度が高いと言われているそうです。その要因の1つとして、やはり注意すべき点や陥りやすい罠が多いことが挙げられます。この記事では、テストコードの一般的な罠に焦点を当ててみました。 対象の読者 今後、会社にユニットテストを導入しようと考えている人 品質管理をしているエンジニア テストコードに興味があるエンジニア 1. Over-Testing と Under-Testing テストをする上で、テストシナリオとして必要なもの

                                                                ユニットテストで避けるべき罠: 最適な品質保証のために落とし穴を避ける - Qiita
                                                              • Go を Wasm にビルドして Google Apps Script で動かす

                                                                Go のコードで文字列の変換をする関数があり、これが Google スプレッドシート上の関数としても利用できれば検証[1]に便利かもしれないと思いました。 Google スプレッドシートでは Apps Script の関数をセル上で実行できるので、Go のコードを Wasm にビルドして JavaScript から呼び出すことができれば良いのではないかと考え、実際に試してみることにしました。 動作環境 Go 1.22.2 Apps Script の設定 Chrome V8 ランタイムを有効にする その他 macOS の pbcopy コマンド[2]を利用した手順を記載していますが、Linux 環境でも pbcopy を他の手段に置き換えることで同様に動作しました。 事前調査 Go を Wasm にビルドして GAS で動かす事例は見当たりませんでしたが、Rust を Wasm にビルドして

                                                                  Go を Wasm にビルドして Google Apps Script で動かす
                                                                • Google Cloud での Go アプリケーションの作成をシンプルに | Google Cloud 公式ブログ

                                                                  ※この投稿は米国時間 2023 年 8 月 2 日に、Google Cloud blog に投稿されたものの抄訳です。 Go はクラウドベースの開発のために世界的に採用されている主要なプログラミング言語です。クラウド アプリケーションやビジネス クリティカルなクラウド インフラストラクチャを構築、スケーリングする目的で何百万人もの開発者に利用されています。CLI、ウェブ アプリケーション、クラウド サービス、ネットワーク サービスなど、どのようなものを構築するにしても、Go は習得するのも保守も容易で、組み込みの同時実行性や堅牢な標準ライブラリをはじめとする便利な機能が満載です。 このたび、Go を Google Cloud で使い始める際のハードルを少し下げることが可能になります。Go は最近、事前定義されたテンプレートを使用して新しいプロジェクトを Go でインスタンス化できる、gon

                                                                    Google Cloud での Go アプリケーションの作成をシンプルに | Google Cloud 公式ブログ
                                                                  • Goの標準のutf8.RuneStart関数がエレガントすぎる

                                                                    先日以下の記事を書きました。 ここでUTF-8の最初の文字かどうかの判定を以下の自作した関数で実装していました。 const ( t1 = 0b00000000 tx = 0b10000000 t2 = 0b00000110 t3 = 0b00001110 t4 = 0b00011110 ) func isUTF8LeadByte(tmp byte) bool { if tmp&tx == t1 { return true } tmp >>= 3 if tmp == t4 { return true } tmp >>= 1 if tmp == t3 { return true } tmp >>= 1 if tmp == t2 { return true } return false }

                                                                      Goの標準のutf8.RuneStart関数がエレガントすぎる
                                                                    • Goのテスト安定性向上のためにFlakyなテストを再試行する機能を導入する提案 - tomato3713’s blog

                                                                      Go言語にFlakyなテストへのサポートを追加する提案が面白かったので紹介します。 概要 Flakyなテストとは、コードに変更がないにもかかわらずテストが成功したり失敗したりと不安定な実行結果になるテストのことです。 テスト結果は本来なら全て成功ならリリース可能、1つでも失敗すればバグがあるのでリリース不可のようにリリースの可否を判断するための情報です。 そのため、不安定なテストは書かないようにすることが大前提です。 しかし、実際にはflakyであるとわかっていても修正が難しかったり、修正するための時間がないのでそのまま残すという判断をすることもあります。 Flakyなテストは削除するというのも手ではありますが不安定であってもテストが無いよりはマシとして残すこともあると思います。 github.com この提案では、Flakyなテストを扱うための機能を追加するものです。 初めの提案内容は、

                                                                        Goのテスト安定性向上のためにFlakyなテストを再試行する機能を導入する提案 - tomato3713’s blog
                                                                      • Go言語1.21で、WebAssembly System Interface(WASI)の実験的サポートへ

                                                                        Go言語1.21で、WebAssembly System Interface(WASI)の実験的サポートへ Googleが中心となってオープンソースで開発されているGo言語の次期バージョン「Go 1.21」では、WebAssembly System Interface(WASI)が実験的にサポートされることが明らかになりました。 これによりGo言語で簡単にファイルアクセスなどOSの主要なAPIを呼び出しつつ、特定のOSに依存しないポータブルな実装のWebAssemblyアプリケーション開発の実現が期待されます。 Go 1.21 Release Candidate 3 is released! Run it in dev! Run it in prod! File bugs! https://t.co/Ul1xGhvlkf Announcement: https://t.co/5Ncs1od

                                                                          Go言語1.21で、WebAssembly System Interface(WASI)の実験的サポートへ
                                                                        • Go 1.21連載始まります&slogをどう使うべきか | フューチャー技術ブログ

                                                                          Go 1.21は久々の新しいライブラリが大量追加だったり、既存のパッケージへの改良の多数行われたり、あたらしい組み込み巻数が追加されたりで記事などが書きやすいリリースです。残念ながら、フューチャーで一番Goを使っているプロジェクトが山場で今回はちょっと書き手が少ないのですが、今回もお付き合いいただけるとうれしいです。 1.21の更新内容のまとめダイジェスト 1.18の時に入るといって直前にキャンセルになった、ジェネリクスのためのパッケージslices/mapsの復活 新しい組み込み巻数のmin/max/clearの追加 言語仕様の強化 パッケージの初期化順序が仕様化 型推論ちょっぴり強力に 次期バージョンで入る予定のループ変数が共有されちゃうバグ対策が実験実装 ランタイムの性能改善(いつもの) 深いスタックオーバーフロー時のトレースが見やすく(最新100ではなく、最新50と一番外側の50表

                                                                            Go 1.21連載始まります&slogをどう使うべきか | フューチャー技術ブログ
                                                                          • リンカを変えてgo buildを 速く出来るか

                                                                            hatena.go 5分LTの発表資料 https://hatena.connpass.com/event/307931/

                                                                              リンカを変えてgo buildを 速く出来るか
                                                                            • OpenTelemetry Go Deep Dive

                                                                              はじめに この記事はGo 言語 Advent Calendar 2023及びOpenTelemetry Advent Calendar 2023 8 日目の記事です。 今まで OpenTelemetry に関する記事をいくつか書いてきました(App Runner にデプロイしたアプリからトレースを X-Ray や Jaeger で可視化する記事やコンテナでデプロイした Lambda から X-Ray に OpenTelemetry でトレースを送る記事など)。今までの記事はどちらかというとインフラ観点のものが多く、アプリのサイドカーで OpenTelemetry Collector を動かしてマネージドサービスや OSS のツールにトレースを送る設定だったり、コンテナで動かして docker compose でローカルでも動かせるようにするだったりにフォーカスした内容が多かったです。一方で

                                                                                OpenTelemetry Go Deep Dive
                                                                              • Fixing For Loops in Go 1.22 - The Go Programming Language

                                                                                David Chase and Russ Cox 19 September 2023 Go 1.21 includes a preview of a change to for loop scoping that we plan to ship in Go 1.22, removing one of the most common Go mistakes. The Problem If you’ve written any amount of Go code, you’ve probably made the mistake of keeping a reference to a loop variable past the end of its iteration, at which point it takes on a new value that you didn’t want.

                                                                                  Fixing For Loops in Go 1.22 - The Go Programming Language
                                                                                • カジュアルに使えるスタブサーバとしてhttpstubとgrpcstubを作って使っている - Copy/Cut/Paste/Hatena

                                                                                  このエントリは Go Advent Calendar 2023 12 日目の記事です。 Goのテスティングパッケージで一番好きなパッケージは net/http/httptest です。 テスト実行時に実際にHTTPサーバを立ててHTTPリクエストを受けるというシンプルかつ強力なアプローチが良いです。 クライアント側にエンドポイントを変える仕組みさえあればクライアントのリクエストを受け付ける形でテストを構築することができるので、選択肢に入れておきたいテスト構成です。 ところで、私たちは runn (ランエヌ)というシナリオテスティングツールを開発しています。 github.com runnはHTTPクライアントでありgRPCクライアントでもあるのですが*1、そのrunn自体のテストのためにhttpstubとgrpcstubを作って使用しています。 httpstub github.com ht

                                                                                    カジュアルに使えるスタブサーバとしてhttpstubとgrpcstubを作って使っている - Copy/Cut/Paste/Hatena