タグ

GoLangに関するSystemのブックマーク (139)

  • 【書評】小さく作って深く学ぶGo──『Learn Go with Pocket-Sized Projects』

    はじめに 社内の掲示板で名前が挙がっていた『Learn Go with Pocket-Sized Projects』が気になったので読んでみたところ、思いもよらず自分にとって読みやすいスタイルで、時間はかかったものの最後までじっくり読み切ってしまいました。 この記事では、いくつかの章を抜粋して紹介しつつ、このの学習体験の良さという観点から、全体の感想をまとめます。 どんな?: 11種類ものプロジェクトを用いて、各章ごとに Go プロジェクトの作成方法を伴走で教えてくれる 著者陣はエアバスグループで長らく Go を使ってきたフランスのシニアエンジニアたち 2025年5月に出版、日語訳版はまだ 以下の公式ページから、各章の詳しい概要が読めるのでのぞいてみてください。 書が対象にしている読者 の中では、「読者にプログラミング経験があることを前提としており、開発者のスキルを伸ばすことを

    【書評】小さく作って深く学ぶGo──『Learn Go with Pocket-Sized Projects』
  • 【Go言語】死なないジョブワーカー処理~数万並行処理でも落ちない設計~

    mattn 大学卒業後、ソフトウェアハウスやSIerなどでソフトウェア開発に携わる。vi派生のテキストエディタVimの日語化やプラグイン、Go言語などでOSS(オープンソースソフトウェア)の開発・コミュニティ運営に参加し、2019年からGoogle Developers Expert。2021〜2023GitHub Stars。著書に『みんなのGo言語』(2016年、2019年に改訂2版、技術評論社、共著)、『Go 言語プログラミングエッセンス』(2023年、2025年に改訂新版、技術評論社、単著)がある。関西在住。 X:@mattn_jp GitHub プログラミング言語の学習において、チュートリアルや書籍で基文法を押さえたあと、「手を動かして何かを作る」というのはよくあるステップです。しかし、基礎を終えたばかりのエンジニアにとって「何をつくればその言語の特性を深く理解できるのか

    【Go言語】死なないジョブワーカー処理~数万並行処理でも落ちない設計~
  • docker-buildのチューニングTips全部書く【Go×GitHubActions】

    docker の最新記法や、GitHubActions でのビルドチューニングについて網羅的に書かれている記事って意外と少ない! 主に Go*GitHubActions での image ビルドについて、実行時間を短く・レイヤーを小さくする Tips を共有します 🚀 はじめにQualiArts Advent Calendar 2025 の 4 日目の記事です! 最近 Go のビルド周りを改善するのが趣味で、情報が結構散らばっていて困った経験があるのでまとめます。 皆様の docker-build 改善のきっかけになれるような記事を目指します!どれか刺され!🔥 目次 1. .dockerignore を適切に設定するまずどのように docker がファイルを扱うのかを確認しましょう。 docker build時、docker デーモンに指定ディレクトリ配下のファイルを tar アーカイ

    docker-buildのチューニングTips全部書く【Go×GitHubActions】
  • goroutineを作ってみる。Rustで - エムスリーテックブログ

    この記事はエムスリー Advent Calendar 2025 2日目 兼 マネジメントチームブログリレー9日目の記事です。 こんにちは、エンジニアリンググループ General Manager 兼 基盤チームリーダーの横(@yokomotod)です。 今回はgoroutineについての自由研究です。 「軽量」「何万個も作れる」「並行処理が簡単に書ける」...そんなgoroutineの裏側はどうなっているんでしょうか。 なぜOSスレッドより「軽い」の? グリーンスレッドとは違うの? なぜパフォーマンスが高いと言われるの? この記事では、goroutineのようなランタイムをRustで自作することで、これらの疑問に答えることを目指しました。 ソースコードの全体は以下のリポジトリで公開しています。 github.com なぜRust? OSスレッドは重い、のおさらい グリーンスレッドを作って

    goroutineを作ってみる。Rustで - エムスリーテックブログ
  • Go1.25 リリース連載 net/http - CSRF対策 | フューチャー技術ブログ

    はじめにこんにちは。ペンギンになりたいエンジニアの島ノ江です。 現在は FutureVuls という脆弱性管理サービスの開発・営業などを担当しています。 Go 1.25リリース連載の4目、マイナーアップデートnet/http での CSRF 対策の強化について触れます。 この記事では、以下の内容について触れていきます。CSRFについて既知の場合はリリースの実装内容の項目を参照してください。 今回のリリースの概要 CSRFの概要 issue提案の背景 リリースの実装内容 関連する issue はこちらです(issue) 今回のリリースの概要新たに net/http に CrossOriginProtection が実装され、安全でない Cross-Origin ブラウザリクエストを拒否することで、CSRF から保護するようになりました。これまでの Go では、標準ライブラリの net/

    Go1.25 リリース連載 net/http - CSRF対策 | フューチャー技術ブログ
  • 【海外記事紹介】Go言語から離れる開発者が増えている?その理由とは

    5月14日、海外技術メディアAIMが「Why Developers are Quietly Quitting Golang」と題した記事を公開した。この記事では、Go開発者が同言語を静かに離れつつあるという現状について述べられている。以下に、その内容を簡単に紹介する。 Go に今逆風が吹いている 記事の冒頭では、フィンテック系スタートアップのエンジニア Yash Batra が半年で Go から Kotlin へ全面移行した体験を取り上げている。Batra は「 私たちはツールを作るためにツールを作っていた 」と述べ、Go の最小主義がプロダクト開発の速度を著しく低下させたと回顧する。 また、長年 GoogleGo を率いてきた Ian Lance Taylor が 2025 年 4 月に退職したことも、コミュニティに衝撃を与えた。Taylor は「Go は“単なる一言語”の段階に

    【海外記事紹介】Go言語から離れる開発者が増えている?その理由とは
    System
    System 2025/05/15
    Zigの最新バージョンではasync/awaitは除かれているんじゃなかったっけ? 遠からず再実装されそうだけど。
  • Go Optimization Guide

    Patterns and Techniques for Writing High-Performance Applications with Go¶ The Go App Optimization Guide is a long-form series about making Go services faster in ways that actually translate to production. No folklore. No “best practices” without numbers. The focus is on understanding what the runtime is doing, where the costs come from, and how to reduce them without turning your codebase into a

  • Go 1.24 で map が30%以上高速化!Swiss Tableとは? - カンム テックブログ

    Go1.24 がついに公開されましたね。その中でとても興味深い改善内容がありました。 1/14 Go's new map implementation in 1.24 is powered by Swiss Tables, a cutting-edge hash table design that significantly boosts performance. Let's break down why this matters and how @CockroachDB's implementation played a key role. 🧐🚀— Peter Mattis (@petermattis) 2025年2月10日 9/14 Performance gains? Benchmarks show Go's new maps are 30%+ faster in many wo

    Go 1.24 で map が30%以上高速化!Swiss Tableとは? - カンム テックブログ
  • Go1.24 New Features

    Go1.24 が2月11日にリリースされ、リリースノートやブログが公開されています。この記事では前回の Go1.23 New Features に引き続き、Go1.24 の新機能の中から気になった機能を紹介していきます。 spec Generics版のtype alias(generic type alias)がサポートされるようになります。type alias自体はGo1.9から存在し、主に型を別のパッケージに移行するリファクタリングのために利用されていましたが、Genericsでも同様の機能が必要となり今回追加されました。 type aliasを使うのは容易ですが、Genericsが導入されたGo1.18(2022年のwinter release)からgeneric type aliasが導入されるのに時間がかかった背景としては、静的解析に用いるパッケージgo/typesやコンパイラに

    Go1.24 New Features
  • GoのHTTPサーバー:Gin、Echo、muxの比較と選び方

    Go言語でWebアプリケーションを開発する際、HTTPサーバーを構築するためのフレームワーク選びは、プロジェクトの成功を左右する重要な要素です。しかし、「どのフレームワークを選べば良いか分からない」「似たようなフレームワークが多くて比較が難しい」と感じる方も多いのではないでしょうか? そこで記事では、Go言語の主要なHTTPフレームワークであるGin、Echo、muxを取り上げ、それぞれの特徴や使い方を解説します。また、特に人気の高いGinとEchoについては、具体的な比較を行い、選択の指針となるポイントを示します。 この記事を書くにあたっての背景として、筆者自身がプロジェクトの要件に合ったフレームワークを選ぶ際に苦労した経験があります。同じような悩みを持つ方々の助けとなるよう、具体例を交えながら分かりやすく解説していきます。 主要なGoのHTTPフレームワーク 1. mux Goの標準

    GoのHTTPサーバー:Gin、Echo、muxの比較と選び方
  • Go WebサーバーへのOpenTelemetry計装から学んだ手動計装の関心事

    こんにちは。sumirenです。 この記事は、OpenTelemetry Advent Calendar 2024 22日目の記事です。 イントロダクション 先日、筆者はSREingの技術顧問として、Go言語で書かれたアプリケーションにOpenTelemetryを導入するプロジェクトを担当しました。Webサーバーとバッチスクリプトを対象に計測を行ってオブザーバビリティを大幅に向上し、パフォーマンス改善を開始することができました。 筆者はオブザーバビリティとOpenTelemetryの専門家ですが、Goの経験は浅く、Goでの計装も初めてであったため、プロジェクト内のGoの専門家とコミュニケーションを取り、リサーチを重ねながら計装することになりました。自動計装を検討したもののGoでは選択肢が限られており、結果的に手動計装を採用しましたが、この過程で多くの学びを得ることができました。 (当然なが

    Go WebサーバーへのOpenTelemetry計装から学んだ手動計装の関心事
  • パーサージェネレーターで柔軟な記述式フィルタを実装した話 - enechain Tech Blog

    はじめに この記事はenechain Advent Calendar 2024の19日目の記事になります。 enechainでSWEをしている神楽坂です。 業務では、電力の取引仲介をするブローカーが正確・高速にお客様の注文(ナンバー)を管理するための社内ツールを開発しています。 電力という商品は株式などと比較して、どのエリア・時間帯のものか、どのように電力を受渡するか、燃調はあるか、ある場合の具体的な式は何かといった、多種多様な属性が付随します。 そのようなナンバーを素早く正確に管理するためには、特定の属性を持つものをフレキシブルにフィルタリングできる機能が求められます。 そこで price>10 のような記述式のクエリを使ってナンバーをフィルタリングできる機能を実装したので、記事ではその実現方法について述べます。 なお、実際に業務で扱っている電力ドメインを例にしてしまうと、題とは異な

    パーサージェネレーターで柔軟な記述式フィルタを実装した話 - enechain Tech Blog
  • Go 言語の context を基礎から実践まで解説 - Qiita

    はじめに こんにちは、エンジニアの清水です。 私は業務で Go を書いているのですが、context についての理解が浅いことでエラーに遭遇したので、勉強のために記事を書いてみました。 この記事では、実際のコード例を交えながら Go 言語の context パッケージの基から実践的な使用方法まで解説していきます。 また実際に私が遭遇したエラーの例も交えて context の陥りやすい落とし穴についても解説します。 context の基 context とは何か contextは、Go の標準ライブラリに含まれるパッケージで、API やプロセス間でリクエストスコープの値、キャンセル信号、デッドラインなどを伝播するための仕組みを提供します。 なぜ context が必要なのか リソースの適切な管理:不要になった処理を適切にキャンセルし、メモリや CPU などのリソースを解放できます。 タイ

    Go 言語の context を基礎から実践まで解説 - Qiita
  • The 4-chan Go programmer

    PRODUCTSDoltDoltgresDoltliteHosted DoltDoltHubDoltLabDolt Workbench KEYWORDSAIUse CaseReferenceFeature ReleaseGolangIntegrationPerformanceTechnicalWebDataset Introduction# We’re using Go to write Dolt, the world’s first version-controlled SQL database. Like most Go codebases, we use channels and goroutines to implement concurrent execution. Usually we use these constructs in the most boring and st

    The 4-chan Go programmer
  • DMMのGo言語5daysインターンが最高すぎた! - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 初めて企業のインターンに参加しました。DMMさんのGo言語5daysのインターンです。今回はこのインターンの内容、またGo言語でのAPI開発で学んだTipsを中心に記事を書きます。 温かい目で見てくださると嬉しいです。記事の内容に誤りがあった場合は、いつでもご指摘ください 🙇‍♂️ インターン概要 今回のインターンは8月5日から8月9日の5日間にわたって行われました。最終日はオフィス開催で、4日間はオンライン開催でした。 初日と2日目は主にライブラリの使い方を学び、残りの3日間はハンズオンでAPIのエンドポイントを実装しました。このイ

    DMMのGo言語5daysインターンが最高すぎた! - Qiita
  • Go の iter パッケージを使ってみよう

    はじめに Go 1.23 で iter パッケージが導入されました。この iter は抽象化されたイテレータを示す仕組みと実装です。未だどの様に活用して良いか分からない方もいると思いますので、使い方を簡単に解説しようと思います。 概念 iter パッケージは、現状は for-range でのみ利用可能です。スコープにコンテキストを持ったロジカルな列挙可能オブジェクトと、それを別のスコープにて for-range でイテレートする際に便利です。 これまでであれば、こういった実装は goroutine と channel を使いスコープを分割させる事で実装してきました。 package main func iter1[T any](a []T) func() (T, bool) { ch := make(chan T) go func() { defer close(ch) for _, v

    Go の iter パッケージを使ってみよう
  • Go でマルチスレッドプログラミングする際に最低限知っておくべきこと - Cybozu Inside Out | サイボウズエンジニアのブログ

    この記事は、CYBOZU SUMMER BLOG FES '24 (クラウド基盤 Stage) DAY 10 の記事です。 こんにちは。クラウド基盤部の野島です。Gogoroutine やチャネルなどの仕組みが備わっており、簡単にマルチスレッドなプログラムを書くことができる言語だと言われています。しかし、マルチスレッドプログラミングには独特の罠があり、何も知らない人が雰囲気でコードを書くとわかりにくいバグを仕込んでしまうリスクが非常に高いです。 この記事では、マルチスレッドプログラミングに詳しくない人に向けて、そのような罠を避けるための方法を紹介します。この記事は Go の基的な使い方を知っていることを前提としています。 這い寄るデータ競合の恐怖 まずは以下のようなプログラムを考えてみましょう。これは複雑な計算を行って結果を返すような HTTP サーバーのコードです。 // 複雑

    Go でマルチスレッドプログラミングする際に最低限知っておくべきこと - Cybozu Inside Out | サイボウズエンジニアのブログ
  • Makefile覚書: Goアプリ開発に役立ちそうな基礎知識 | フューチャー技術ブログ

    はじめにTIG真野です。育休明けです。 フューチャー社内のタスクランナーはmakeやTaskなど複数の流派があり、チームによって使い分けられています。個人的にはmakeで良いんじゃないかと思っていますが、Taskも良いですよね。 makeは細かい記法をいつも忘れる+調べるとC言語向けの情報が出てきて脳内変換に手間を感じたため、makeを用いてWebバックエンドアプリをGoで開発するということをテーマに、役立ちそうな情報をまとめます。 なお、今記事におけるmakeは、GNU Makeを指します。バージョンは以下で動かしています。 MakefileのためのEditorConfigMakefileのインデントはハードタブである必要があります。誤りを防ぐためにもEditorConfigを設定しておくと良いでしょう。 makeは通常、Makefileという名称をデフォルトで認識しますが、同一フォルダ

    Makefile覚書: Goアプリ開発に役立ちそうな基礎知識 | フューチャー技術ブログ
  • Go で使う Makefile の育て方

    Go を使ってプロダクトを作る時、Makefile を使ってビルドを指定することが多いです。 理由としては、 バージョン情報などを埋め込むのに都合がいい 複数のバイナリを吐き出す時に都合がいい Go のビルドオプションを指定するのにいろいろあって整理しておきたい 事前にコードジェネレータで書き出す部分があり、それを考えると Makefile などで整理したい などなどです。なので今回はプロジェクトが大きくなっていく中でどういう Makefile の書き方をしているか、というのをご紹介しようと思います。 サンプルとして、今回のプロジェクトでは gRPC を使ったチャットサービスのサーバーとクライアントを作ることにします。リポジトリは https://github.com/rosylilly/gochat に置いておきました。 Step 1. バージョン情報を埋める 今回はサーバーとクライアン

    Go で使う Makefile の育て方
  • 検索エンジン自作入門 Go Conference 2021 Spring

    Go Conference 2021 Springの登壇資料です アウトライン 1. 検索エンジンとは ~ 一般的な検索エンジンの仕組みと構成要素 2. 自作した検索エンジンの紹介 ~ 具体的に自作した検索エンジンの構成要素と動作例 3. 自作した検索エンジンの実装 ~ アルゴリズムとデータ…

    検索エンジン自作入門 Go Conference 2021 Spring