並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 317件

新着順 人気順

Go言語の検索結果1 - 40 件 / 317件

  • Go言語を嫌う6個の理由 - さめたコーヒー

    ある仕事でそれまでRubyで書かれていたサーバーサイドをGo言語ですべて書き直すことになって、それまでRubyのコードを書いていた僕はそのままGo言語を書くことになった。その仕事そのものはお客様(僕は外部委託のエンジニアとして参画していた)との関係も良好で素晴らしい仕事をさせてもらうことができたと思っているが、Go言語だけは好きになれなかった。 はじめは流行っている言語だから何か素晴らしい魅力があるのではないかと期待していた。しかし書き始めるうちにどうも自分には合わないなと思うようになり、2年ほど書いて案件の契約が終わる頃にはGo言語でサーバーサイドを書くことは危険だとさえ思うようになった。 あれから数年がたちますますGo言語の案件は増えている。サーバーサイドを書く選択肢としてGo言語を選択する会社も増えている。しかし本当にそれでいいのか?ただ流行っているからという理由だけで選択するにはあ

      Go言語を嫌う6個の理由 - さめたコーヒー
    • 結局、Go言語をやめる理由はなかった件 - Qiita

      この記事は Go 2 Advent Calendar 14日目の穴埋め記事です。 はじめに @okdyy75 さんによる Go 5 Advent Calendar 14日目の の記事「だから僕はGo言語を辞めた」 が「ベンチマークっていうのはこうやるんだよ」というのを説明するために反面教師的な意味で良い教材だと思ったので、反証記事を書きたいと思います。 ベンチマークを取りながらコードを改善して、最終的にGoは遅くないからやめる必要はないということ、そして、なぜ遅いという結論になってしまったのかを掘り下げていきたいと思います。 下準備 幸いなことに、ベンチマークのソースコードがGitHubにある ので、こちらを実行しながら問題点を改善していきましょう。 ちゃんとコードが上がっているのは素晴らしいですね! 一方で、元記事には測定環境が明記されていませんでしたので、同じ環境で測定することはできま

        結局、Go言語をやめる理由はなかった件 - Qiita
      • Go言語が好きな理由

        はじめに 私はGoが好きなので、disられている場面に遭遇すると心が痛みます。残念ながらプログラミング言語について深く語れるほどの知識や経験は持ち合わせていないため、世界が平和になることを祈るくらいしかできません。 (元ネタ)Go言語を嫌う6個の理由 - さめたコーヒー それはそれとして、Goが好きな理由を語る人はあまり見かけない気がします。この記事ではGoが好きな理由を視覚に障害のあるユーザーの視点から語ります。読み終えたところで得るものは何もありませんし、長いので覚悟して読んでください。 あなたは誰? 4年ほど業務でサーバーサイドのGoを書いています。また、業務で使いはじめる前から趣味でGoに触れていました。そのため無意識の内にひいきしているかもしれません。ただし、流行っているからといって理由もなくGoを勧めたりはしません。 視覚障害ならではのコーディング事情 Goが好きな理由と深く関

          Go言語が好きな理由
        • Re: 結局、Go言語をやめる理由はなかった件 - Hateburo: kazeburo hatenablog

          すみません、ISUCONのアレに火がついてしまったので..。 Advent Calendarとはとくに関係がありません。 qiita.com qiita.com こちらの記事をみて、気になってしまったので interpolateParams の追加とMySQLチューニングをしてベンチマークを回してみました。 ベンチマークの環境が公開されているのは素晴らしいですね。 github.com 8vCPU/16GB Memのc5a.2xlargeなEC2のインスタンスを起動して、以下の手順にしたがってdockerとdocker-composeをインストールしました。OSはUbuntu 20.04を使いました。 docs.docker.com docs.docker.com 上記のbenchmarkのrepositoryをgit cloneし、compose build && compose upし

            Re: 結局、Go言語をやめる理由はなかった件 - Hateburo: kazeburo hatenablog
          • 【悲報】ワイPythonプログラマー、Go言語が難しいすぎて咽び泣く : IT速報

            Go言語ってまじでゴミだよな 少しなにかしようとすると、馬鹿みたいに長ったらしいスペルで ライブラリインポート強要されるし

              【悲報】ワイPythonプログラマー、Go言語が難しいすぎて咽び泣く : IT速報
            • 【Go言語】自作コンテナ沼。スクラッチでミニDockerを作ろう - カミナシ エンジニアブログ

              初めまして。株式会社カミナシPMの@gtongy1です。 Dockerというツール。SRE, Backend, Frontendどの領域のエンジニアも馴染みのあるツールではないでしょうか。 コンテナを利用することにより、インフラの環境を一つの空間に梱包し、その内部で柔軟に様々な環境を作ることが出来ます。 コンテナの実体とはなんなのでしょう? 叡智が詰め込まれたそんな一つの宝箱のように見えます。 「 コンテナ作ってみたくなりませんか? 」 僕と同じように知的好奇心をくすぐられたそこのあなた!コンテナ沼の一歩目を一緒に踏み出してみましょう! 検証環境 Ubuntu 18.04 golang 1.15 Dockerの機能おさらい docs.docker.com まず、ドキュメント内を読み進めてDockerに対する知識を整理します。 DockerはDocker daemonを基幹とし、その呼び出し

                【Go言語】自作コンテナ沼。スクラッチでミニDockerを作ろう - カミナシ エンジニアブログ
              • Go言語でゲームボーイアドバンスのエミュレータを作った話

                CPUはなんとARMのCPUを採用しています。(そのおかげでLLVMのターゲットに指定できる) ゲームボーイとの違い CPU 最大の違いはCPUです。ゲームボーイ(以降、GB)ではZ80を独自カスタムしたLR35902というCPUを使っていますが、このCPUは8bitで動作するCPUです。つまり命令のサイズが8bit(1byte)しかありません! しかも、LR35902は掛け算命令など現代のCPUでサポートしている基本的な命令をサポートしていません。 これに比べてGBAに搭載されているARM7TDMIは32bit CPUです。つまり命令のサイズが4byteとGBの命令の4倍の大きさになります! このおかげでCPUの命令セットがさまざまな命令をサポートできるようになりました。(まあ後述の理由で実質16bit CPUですが...) またクロック数もGBの4MHzから16MHzに伸びました。 B

                  Go言語でゲームボーイアドバンスのエミュレータを作った話
                • Go言語プログラミングエッセンス

                  この本の概要 Go言語ユーザーとして,「もう一段レベルアップしたい」「開発に使いたい」と思っている方に向けた,Go言語の解説本です。関数やパッケージの使い方,並行処理,テストといった基本的なトピックにおいて,「こう書くと綺麗になる」「こう書くとパフォーマンスが上がる」といったエッセンスを紹介します。後半ではCLIアプリ/Webアプリの開発手順や,現場で使われている便利なパッケージなど,著者が業務やOSSの開発で培った技術をふんだんに紹介します。 こんな方におすすめ Go言語の入門を終え,さらに深く学びたい人 第1章 プログラミング言語Goとは 1.1 Goの簡単な歴史 1.2 Goの立ち位置 1.3 Goが利用される場面 標準でUTF-8をサポート マルチプラットフォーム 並行処理の扱いやすさ ストリーム指向 シングルバイナリ 1.4 教育用途としてのGo 1.5 なぜGoが使われるのか

                    Go言語プログラミングエッセンス
                  • 業務端末としてLinuxデスクトップを使うために設定したこと - Plan 9とGo言語のブログ

                    2021年の11月に、業務端末としてDELL XPS 13を購入して、Linuxデスクトップに移行しました。いまでは快適に使えるようになりましたが、Linuxデスクトップに慣れていないこともあって思ったように動かず困ったところがあったので、導入にあたって悩んだところをまとめました。 ディスクの暗号化 業務利用の要件にディスクの暗号化があるので、bootパーティションを除いて暗号化しました。手順は過去記事に追記しました。 blog.lufia.org GNOME KDE Plasmaの方がスタイルは好みですし、実際に業務端末でも2ヶ月ほど使っていましたが、Wayland環境ではタッチパッドの左右スワイプが動かないとか、XWaylandで動作するアプリケーションを4Kディスプレイで表示するとぼやけた表示になるなど厳しいなと思いました*1。個人で使うものなら、少し効率が悪い程度なら問題にしません

                      業務端末としてLinuxデスクトップを使うために設定したこと - Plan 9とGo言語のブログ
                    • Go言語+gRPCの解説 [ハンズオン] - Qiita

                      はじめに この記事は、海外サイトhttps://tutorialedge.net/golang/go-grpc-beginners-tutorial/ の内容をベースに一部修正を加えたものです。この記事を読み進めることでGoでシンプルなgRPCクライアントとサーバーを構築することができるようになります。 ※gRPC公式より抜粋(また、以下の説明でも一部参考にしています。) gRPCとは? gRPCはGoogleによって開発されたRPCフレームワークです。 RPCはRemote Procedure Callの略で、逐語的に訳すと「遠隔手続呼び出し」となります。これはすなわち、「あるプログラムがネットワーク上の異なる場所に配置されたプログラムを呼び出して実行すること」と読み取れます。 公式による定義 サービス定義 多くのRPCシステムと同様に、gRPCはサービスを定義するという考えに基づいてお

                        Go言語+gRPCの解説 [ハンズオン] - Qiita
                      • hugoの日付書式がクソすぎる(悪いのはgo言語です) - やってみる

                        yyyy-MM-dd HH:mm:ssのような書式ではなく2006-01-02 15:04:05である。この数値でなければ正しく表示されない。は? なにこれ? ひどくない? 手順 Go言語をインストールする hugoをインストールする プロジェクト作成&pulpテーマ適用 以下のように設定ファイルを編集する コード 日付の表示形式をyyyy-MM-ddに変更したい。以下のようにする。 config.toml [params] listPageDateFormat = "2006-01-02 15:04:05" singlePageDateFormat = "2006-01-02 15:04:05" 具体的な日時に見えるでしょ? これ、フォーマットなんだぜ……。 ハァ? と思うでよね? ふつうyyyy-MM-dd HH:mm:ssとか%Y-%m-%d %H:%M:%Sとか、そーゆー感じなのに

                          hugoの日付書式がクソすぎる(悪いのはgo言語です) - やってみる
                        • Goはクリーンアーキテクチャの思想を活かせるか? DMMのゲームプラットフォームにGo言語を選んだ理由 | ログミーBusiness

                          DMM GroupのGoの勉強会「DMM.go」。DMM Groupのエンジニアが現場で培った技術やトレンドについて発表していきます。 2回目の開催となる今回登壇するのは、合同会社EXNOA プラットフォーム開発本部の PFシステム部に所属する岡崎翔悟氏。「Goとクリーンアーキテクチャ」の内容で、実際の現場にいるからわかるGoの開発やクリーンアーキテクチャについて話していきます。関連資料はこちら。 合同会社EXNOAとは岡崎翔悟氏:今回「Goとクリーンアーキテクチャ」と題しまして、EXNOAの岡崎が発表いたします。 「EXNOAって何だ?」と思われた方が多数いらっしゃると思うので、まずはそちらの説明から。DMM GAMESは2020年4月10日付でEXNOAに社名を変更しました。ただし、一般作品のブランド名として「DMM GAMES」は残っています。一般作品の「DMM GAMES」とR18

                            Goはクリーンアーキテクチャの思想を活かせるか? DMMのゲームプラットフォームにGo言語を選んだ理由 | ログミーBusiness
                          • Go言語のジェネリクス入門

                            Go1.18は2022年3月にリリースされました。このリリースはGo言語へのジェネリクスの実装を含んでいます。 この記事ではできるだけ最新の仕様と用語法にもとづいてジェネリクスの言語仕様について解説していきます。 更新履歴 2024/01/03: Go1.21(2023-08-08)でcmpパッケージが標準ライブラリに追加されたことに対応しました。 2023/02/23: Go1.20(2023-02-01)のcomparableの仕様変更に対応しました。 次の関連資料があります: The Go Blog - All your comparable types Griesemer氏によるGo公式ブログです。 Go言語のBasic Interfaceはcomparableを満たすようになる(でも実装するようにはならない) 上記の内容に対する筆者の解説記事です。Go1.20リリース前に書いたの

                              Go言語のジェネリクス入門
                            • JavaScriptからGo言語に乗り換えた感想 - 新しいことにはウェルカム

                              JavaScript(TypeScript)で書かれたプログラムを、Go言語で書き直しました。 その動機や、書き換えた結果などを書こうと思います。 また、今回Go言語が初めてだったので、Go言語とはどういったものかや、Go言語をやってみた感想なども合わせて書こうと思います。 動機 メンテナンスしづらい 移植したプログラムは、JavaScript(TypeScript)で書かれた、データ処理関連のプログラムで、サーバーで動かしていました。 JavaScriptはポピューラーな言語ですが、フロントエンドをやらない人にはあまり馴染みがないようで、扱える人が限られていて何かあった時の対応が不安でした。 どのプログラム言語にも似たような文法があり、ちょこっと修正するくらいなら、一通り文法書に目を通せば何とかなりそうな気もするのですが、PromiseなどのJavaScriptの非同期プログラミング文法

                                JavaScriptからGo言語に乗り換えた感想 - 新しいことにはウェルカム
                              • Go言語が成功した理由

                                Go言語の作者であるRob Pike氏が「Go言語が成功した理由は何なのか?」というタイトルで2015年に発表をしてる動画を見つけたので、雑に和訳してみたいと思う ちなみに最近Go言語の好き嫌いに関する記事がいくつかバズっており、それに乗っかってるというのは言うまでもない Go言語を嫌う6個の理由 Go言語が好きな理由 良く挙げられる成功要因 Pike氏は以下がよく理由として挙げられると述べている コンパイルの速さ 実行の速さ デプロイの容易性 ツール ライブラリ しかしこれらは全て表面的であって、本質的な理由ではないとも述べている ではGo言語が成功に至った本質的な理由とは一体何なのか?彼は続いて説明している Go言語が成功に至った真の理由 彼は「Simplicity」、シンプルさがGo言語が成功に至った本質的な理由であると述べている そしてこのコンテキストにおける「シンプルさ」とは以下

                                  Go言語が成功した理由
                                • Go言語でのテストの並列化 〜t.Parallel()メソッドを理解する〜 | メルカリエンジニアリング

                                  この記事は、Merpay Tech Openness Month 2020 の6日目の記事です。 メルペイでBackendエンジニアをしている柴田(@yoshiki_shibata)です。この記事では、Go言語のtestingパッケージに用意されている並列化の機能について説明します。 Go言語では、テストコードを作成するためのtestingパッケージが用意されています。一般に開発するソフトウェアの規模が大きくなるに従って、作成されるテストコードの量も多くなり、すべてのテストが終了するまでの時間も長くなっていきます。特に、データベースへアクセスするようなテストでは、データベースへの通信時間がテスト時間の多く占めますので、テストコードを逐次実行するよりは並列実行することで、テスト時間を短縮できます(厳密には用語「並行」ですが、t.Parallel()メソッドの説明なので、この記事では用語「並列

                                    Go言語でのテストの並列化 〜t.Parallel()メソッドを理解する〜 | メルカリエンジニアリング
                                  • Go言語の不満 - まめめも

                                    ちょっとバイナリ配布したいツール↓があったので、Go言語と戯れました。 zenn.dev ほぼはじめてGoを使ったので、にわかほど語りたがる法則に従って、Go言語の感想を書きます。 新しい言語にふれたときは、できることには気づきにくく、できないことに気づきやすいので、不満が多めです。主な比較対象はRuby、C言語、JS/TS、Rustあたりです。 よかったところ ひとことで言えば「便利になったC言語」という感じでした。結構低レベルなAPIも揃っていてよかった(デーモン化が素直にできなかったこと以外)。 Rustと比べたらストレスフリーです。思った通りに書くだけでとりあえず動いてくれる。すばらしい。 見た目はあきらかに長くてダサいですが、こだわりを捨てて割り切って書けると言えなくもない。 配布しやすいシングルバイナリが作れるのはやはりよい。今回Goを選んだ理由がこれ。 細かいカプセル化がむず

                                      Go言語の不満 - まめめも
                                    • Go言語らしくGoコードを実装するための手法と思想 - かねしんショップ - BOOTH

                                      本書は、実践的なGo言語の開発方法や設計思想を解説した本です。対象読者は、Go言語でツールやライブラリの開発経験はあるが、「Go言語らしく実装するにはどのように記述したらいいんだろう」と悩んでいる初級者や中級者の方、Go言語のノウハウが貯まっていないチームを対象としています。 日本では、Go言語の本はあまり多く出版されておらず、また、「Go言語らしさ」という言葉を考えすぎて悩んでいる人も多いと思います。「Go言語らしさ」を意識している人はGo言語の公式の情報や設計思想から知識を得ていますが、世の中に拡散されている記事では、それらと紐づされてGoのコードを解説しているものは少ないです。Go言語で開発をしている方に「Go言語らしさ」を意識して開発をしてもらうためにはGo言語の設計思想や背景を深く理解することが重要です。本書では、この「Go言語らしさ」について深く吟味してGoのコードを解説をして

                                        Go言語らしくGoコードを実装するための手法と思想 - かねしんショップ - BOOTH
                                      • Go言語で基本的なCRUD操作を行うREST APIを作成 | DevelopersIO

                                        Javaのエンジニアだった私がGo言語でREST APIを作る上で学んだことをまとめています。 プロジェクト構成、単体テスト、Dockerイメージの作成など実際にREST APIを開発する上で必要だと思われる要素を盛り込みつつサンプルプロジェクトを作成していきます。 はじめに Javaのエンジニアだった私がGo言語でREST APIを作る上で学んだことをまとめています。 プロジェクト構成、単体テスト、Dockerイメージの作成など実際にREST APIを開発する上で必要だと思われる要素を盛り込みつつサンプルプロジェクトを作成していきます。 今回はできるだけ外部ライブラリやフレームワークを使わずにGo言語の標準機能のみで開発しました。 これからバックエンドにGo言語を使用することを検討されている方の参考になれば幸いです。 ※この記事は既にGo言語の開発環境をセットアップ済みで基本的な文法を学

                                          Go言語で基本的なCRUD操作を行うREST APIを作成 | DevelopersIO
                                        • 「詳解Go言語Webアプリケーション開発」という本を発売しました - My External Storage

                                          「詳解Go言語Webアプリケーション開発」という書籍を執筆し、2022/07/22にC&R研究所様より発売しました。 全国書店やAmazonで購入できます。本記事では本の内容の紹介や執筆経緯、執筆してみての感想など書きます。 https://www.c-r.com/book/detail/1462 本の内容について 本著は大きく分けて二部構成になっています。 第一部は次のようなテーマにまつわるトピックを中心にまとめました。 他の言語を経験していると不思議になるGoの言語仕様 最近Goを始めた方は知らない過去の経緯や歴史的背景 第二部ではGoを用いたWebアプリケーションのコードをハンズオン形式で解説しました。 テストコードを書き段階的な変更を繰り返しながらAPIサーバの実装を試みています。 Docker Composeを使ったローカル開発環境の構築 github.com/cosmtrek/

                                            「詳解Go言語Webアプリケーション開発」という本を発売しました - My External Storage
                                          • Vagrantが開発言語をRubyからGo言語へ切り替え、次のメジャーバージョンアップ「Vagrant 3.0」で。現バージョンとの互換性は維持

                                            Vagrantが開発言語をRubyからGo言語へ切り替え、次のメジャーバージョンアップ「Vagrant 3.0」で。現バージョンとの互換性は維持 HashiCorpは、仮想環境をプログラミングできるツール「Vagrant」の開発言語を、これまでのRubyからGo言語切り替えることを明らかにしました。 Learn more about the new features, capabilities, and improvements we’re making on our journey toward Vagrant 3.0. https://t.co/49scP0FdqW — HashiCorp (@HashiCorp) June 11, 2021 時期未定ながら、今後約1年のあいだに登場するVagrant 2.3、Vagrant 2.4を経て、Vagrant 3.0でGo言語への移行が完了

                                              Vagrantが開発言語をRubyからGo言語へ切り替え、次のメジャーバージョンアップ「Vagrant 3.0」で。現バージョンとの互換性は維持
                                            • Go関連の比較的新しいTips - Plan 9とGo言語のブログ

                                              READMEにpkg.go.devのバッジを貼る godoc.orgはpkg.go.devに移行していくことが告知されているので、新しいプロジェクトではREADME.mdに貼っているバッジを移行しましょう。pkg.go.devのURLやバッジは // バッジ https://pkg.go.dev/badge/<package path> // リンク https://pkg.go.dev/<package path> の形を取ります。例えばgithub.com/lufia/backoffの場合は以下のように書きます。 # Backoff ...summary... [![GoDev][godev-image]][godev-url] ...description... [godev-image]: https://pkg.go.dev/badge/github.com/lufia/back

                                                Go関連の比較的新しいTips - Plan 9とGo言語のブログ
                                              • Go言語を習得するために、Goちゃんねるを作った

                                                先週、A Tour of Go やってみた TIL というブログを書いてみた通り、Go言語を始めた。 で、ちまちま勉強をしていたのだが、つい最近たまたま ISUCON の過去問をやる機会があって Go のスコアを見たら初期値ですら、チューニング済みの他の言語のスコアを超えていて、絶対に習得するぞの気持ちにさせられた。 ちなみに私はどう言うわけかフロントエンドのソースコードをビルドしたら vite が走ってファイルハッシュが全部変わって、ベンチマークからアクセスできなくなって0点でした。対戦ありがとうございました。 なにはともあれ、本番は絶対にGoでやるぞの気持ちを新たに Go の習得に励んでいた。前のブログでは、文法が分かったから HTTPサーバー DB Connection / Migration 境界値チェックや型推論 テスト スキーマ駆動開発 コンテナデプロイ あたりをやってみたいと

                                                  Go言語を習得するために、Goちゃんねるを作った
                                                • 少しずつ育てるGo言語のプロジェクト構成

                                                  23/9/21追記:この記事を読む前に ついにGoチームから、プロジェクト構成に関するガイドが公開されました! 本記事を読んでくださることも大変嬉しいですが、ぜひこちらのガイドもご一読ください! この記事は何 Go言語を書いたことがある方も、興味はあるけど触ったことがない方もこんにちは。 Goに限った話ではないと思いますが、ガリガリコードを書いていて、あるタイミングで気になるのがプロジェクト構成(ここではディレクトリ構成の意図)ではないでしょうか? それを裏付けるかのように、Go界隈では以下のリポジトリが話題に上がることがあります。Star数すごいですね😇 リポジトリ名から公式感が漂いますが、そういう訳ではないのがミソです。 こちらのリポジトリ冒頭にも記載されていますが、次の点に留意する必要があるでしょう。 これは、Goアプリケーションプロジェクトの基本的なレイアウトです。これは、コアと

                                                    少しずつ育てるGo言語のプロジェクト構成
                                                  • Go言語低レイヤー入門 Hello world が 画面に表示されるまで (GoConforenceTokyo2021)

                                                    Go言語低レイヤー入門 Hello world が 画面に表示されるまで @DQNEO (ドキュネオ) Go Conference Tokyo 2021 2021-04-24

                                                      Go言語低レイヤー入門 Hello world が 画面に表示されるまで (GoConforenceTokyo2021)
                                                    • 実用 Go言語

                                                      業務プログラミングの現場でも採用されるようになってきたGo言語。文法はシンプルで学びやすいという特徴を持っていますが、複雑な要件を実現するには、プログラミング言語が提供する構成要素(文法やライブラリ)をさまざまに組み合わせる必要があります。 本書は、そんなGoを使う上でのポイントを単なる文法詳解ではなく「よりGoらしく書くには」「実用的なアプリケーションを書くには」といった観点から紹介します。 構造体やインタフェースの使い方からJSON、CSVファイル、Excel、固定長ファイルの扱い方、またログやテスト、環境構築など現場に即した幅広いトピックについて、「Goらしいプログラムの書き方」をその背景と共に教えてくれる先輩のような書籍です。 まえがき 1章 「Goらしさ」に触れる 1.1 変数やパッケージ、メソッドなどに名前を付けるには 1.1.1 変数名 1.1.2 パッケージ名 1.1.3 

                                                        実用 Go言語
                                                      • Go言語がGenericsを導入、過去最大の変更となる「Go 1.18」正式版リリース

                                                        Googleが中心となってオープンソースで開発されているGo言語の最新版となる「Go 1.18」正式版がリリースされました。 Go go1.18 is released! Release notes: https://t.co/UFumhMjcOL Download: https://t.co/fnDCVVhJXK#golang pic.twitter.com/uWNSy5V7nv — Go (@golang) March 15, 2022 ブログ「Go 1.18 is released!」によると、Go 1.18は、「massive release that includes new features, performance improvements, and our biggest change ever to the language.」(新機能、性能改善、そして過去最大の変更の変

                                                          Go言語がGenericsを導入、過去最大の変更となる「Go 1.18」正式版リリース
                                                        • Goでモンキーパッチするライブラリを作った - Plan 9とGo言語のブログ

                                                          Goで単体テストを実装する場合、動的な言語のように「テスト実行中に外部への依存を置き換える」といったことはできません。代わりに、 外部への依存を引数で渡す 外部への依存をインターフェイスで渡す のように、テスト対象をテスト可能な実装に変更しておき、テストの時は外部への依存をモック等に置き換えて実行する場合が多いのではないかと思います。 個人的な体験でいえば、テスト可能な実装に置き換えていく過程で設計が洗練されていく*1ことは度々あるので、面倒を強制されているというよりは設計を整理するための道具といった捉え方をしているのですが、そうは言っても動的な言語に比べると面倒だなと感じるときは少なからずあります。既存の実装がテスト可能になっておらず、変更するコストが高い場合は特にそうですね。 そんなとき、気軽にモンキーパッチできると嬉しいんじゃないかと思って、テストの時だけ関数を置き換えられるようなラ

                                                            Goでモンキーパッチするライブラリを作った - Plan 9とGo言語のブログ
                                                          • 【海外記事紹介】Go言語から離れる開発者が増えている?その理由とは

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

                                                              【海外記事紹介】Go言語から離れる開発者が増えている?その理由とは
                                                            • Go言語でポータブルなCI/CDパイプラインが定義可能に。「Dagger」がGo SDKを発表

                                                              CI/CDパイプラインをポータブルにする「Dagger」をGo言語に対応させる「Go SDK」が発表されました。これによりGo言語でどこでも動くポータブルなCI/CDパイプラインの定義が可能になります。 Introducing the Dagger Go SDK: a new way to develop your CI/CD pipelines as code, and run them in containers anywhere. https://t.co/7riHAwUSMO pic.twitter.com/mEwrZySbLp — dagger (@dagger_io) October 25, 2022 CI/CDがローカルPCでもGitHubでもCircleCIでも実行可能 Daggerはソフトウェアのビルド、テスト、デプロイを行う一連のCI/CDパイプラインをポータブルにする

                                                                Go言語でポータブルなCI/CDパイプラインが定義可能に。「Dagger」がGo SDKを発表
                                                              • Go 言語でスライスから要素を消すには

                                                                の様に直感的な操作ができるはずです。しかし Go 言語の場合、スライスの伸長にて発生するメモリアロケーションを append 関数と代入を使う事で透過的に行える仕組みを採用しています。例えばスライスの伸長は この様に行います。C言語をかじった事のある方や、プログラミング言語の内部データ構造をご存じの方であれば、リストといった物が伸長の度にメモリを再確保する様な事をやっていない事はご存じだと思います。Go 言語のスライスも同様で、スライスには長さとキャパシティを持っており、キャパシティを超えない範囲で長さだけが増えていき、キャパシティを超えるとメモリが再確保されるという作りになっています。ですので、上記のコードであれば、スライス(実際は SliceHeader)が内部で持っているポインタ、長さ、キャパシティを、代入してやる事で上書きしています。 スライスから要素を消す スライスの伸長と同様に

                                                                  Go 言語でスライスから要素を消すには
                                                                • とってもやさしいGo言語入門

                                                                  Web用語を100秒で解説するチャンネルを作りました! よかったらチェックしてみてください! はじめに この記事は、Go言語を学び始めたばかりの人や、チュートリアルを読んで途中で挫折してしまったという人に向けて、Go言語の基礎的な文法を解説した記事です。といっても全てをカバーするのは大変だと思ったので、私自身が A Tour of Go を読んで難しいと感じた点をいくつかピックアップして書きました。今回の記事では、ポインタ・構造体・メソッド・インターフェースについて解説していこうと思います。 ポインタ A Tour of Go では、ポインタについて次のような説明をしています。 Go has pointers. A pointer holds the memory address of a value. (訳) Goはポインタを扱います。 ポインタは値のメモリアドレスを指します。 この「メ

                                                                    とってもやさしいGo言語入門
                                                                  • DDDを実践するためのリポジトリ層の設計(Go言語による例)

                                                                    The Go gopher was designed by Renée French. Illustrations by tottie. はじめに この記事は、ドメイン駆動設計(DDD)の中核概念である「リポジトリ」についての理解を深めることを目的としています。リポジトリの基本的な役割と重要性を確認し、Go言語での実装の例を紹介します。 前提 リレーショナルデータベースからデータを取得(更新)するアプリケーションを想定しています サンプルコードは Go 言語で書かれています リポジトリとは まずは、リポジトリの定義を確認してみましょう。 リポジトリパターンとは: リポジトリは、データベースから取得したデータを構造体にマッピングし、ドメインオブジェクトにアクセスするためのインターフェースを提供します。 これは、一般的なリポジトリの理解と相違ないですね。次に DDDの文脈で、より詳しい定義をみ

                                                                      DDDを実践するためのリポジトリ層の設計(Go言語による例)
                                                                    • Big Sky :: Go 言語プログラミングエッセンスという本を書きました。

                                                                      2023/3/12 発売です。 Go が発表された当初から Go を見続けて来たので ずいぶん時間が経った気がします。僕なりにいろいろな活動をして来ました。Go 本体や周辺ツールへのコントリビュート、イベント登壇、雑誌への記事の投稿や「みんなのGo言語」の共著など。 あらゆる活動が Go づくめで刺激的でした。Go で得たものも沢山あります。そして Go を使う人も想像していた以上に沢山増えました。Go に関して書かれたブログ、Go の求人、今では大学で Go を教えているところもあるくらいです。Go を知った事で僕のプログラミング人生はずいぶん変わりました。それまでは何を作るにしてもC言語をメイン言語として使ってきましたが、今や新しいアプリケーションを書くのであればほぼほぼ Go で書くようになりました。(C言語/C++ は好きですよ) クセが強いからか、なかなか理解され辛いプログラミン

                                                                        Big Sky :: Go 言語プログラミングエッセンスという本を書きました。
                                                                      • 現場で役立つGo言語のTipsをただまとめてみた

                                                                        はじめに こんにちは、23卒でバックエンドエンジニアをしているたかしゅんです。 私の所属しているプロダクトではサーバーサイドの開発言語としてGoを採用しております。 チームでGoの勉強会をした際にあまりにもGoの流儀や綺麗な書き方を理解していなかったので、以下の書籍を読みました。 [Go言語 100Tips ありがちなミスを把握し、実装を最適化する] この書籍から得た知見、プルリクエストのレビューで受けたアドバイス、そしてコードレビュー時に意識すべき点などを基に、知識を整理し共有したいと思います。 基礎文法は理解しているけど、実際のプロダクトで何を意識して書けば良いのかわからない方に、少しでも参考になれば幸いです。 1. コード 1.1 不用意にネストしない 可読性の悪いコードには命名、一貫性、書式など様々な原因がありますが、その中の重要な原因の一つとしてネストが関係します。 よくある例と

                                                                          現場で役立つGo言語のTipsをただまとめてみた
                                                                        • 15分で読める「Go言語による並行処理」ポイントまとめ・上 - Qiita

                                                                          Go言語による並行処理について自分なりにポイントをまとめていきます。 15分で読める「Go言語による並行処理」ポイントまとめ・上 15分で読める「Go言語による並行処理」ポイントまとめ・下 ※15分 = この記事の文字数(約7100字)/1分で読めるらしい文字数平均(400~600)の大体 並行性の概念 そもそも「並行性」とは 前提の話であるProcess,Thread,そして並行と並列の違いについては以下の記事がわかりやすかったです。 マルチスレッドと並行処理をわかりやすく説明します Process = 仕事の単位を表す概念 Thread = Processより小さい単位であり一つのプロセスにより所有、共通のメモリを参照 並行 = コンテキストスイッチにより複数処理を同時に行っているよう見せている 並列 = 完全に同時に処理 また書籍内では簡潔な一文で説明されています。 並行性はコードの

                                                                            15分で読める「Go言語による並行処理」ポイントまとめ・上 - Qiita
                                                                          • Go言語の記述の迷いどころについて

                                                                            この記事はGoのコードをいくらか書いていてもっとGoらしい書き方に興味を持ってからみてね!(Go初見で読んでも響かない内容です) Goは「シンプルで迷いなく書ける」というのが売りではあるのですが、 実際書き始めると、「あれ?これどうやって書くほうがいいの?」ってポイントにちょくちょく巡り合います。そのようなポイントを思い出しながら今思うベターな書き方を紹介しようと思う。 err変数束縛について err変数の受け取りを複数回繰り返していると「:=」だけで書けないという状況に出会うでしょう。 err := funcA() if err != nil { ... } err := funcB() // <- コンパイルエラー: "no new variables on left side of :=" if err != nil { ... }

                                                                              Go言語の記述の迷いどころについて
                                                                            • 【ブクマ推奨】Rust、Go言語、コンテナ技術、PHP…言語系LT動画8本公開🎉 — TechFeed Conference「後夜祭」(5)

                                                                              「TechFeed Conference 2022後夜祭」第5弾!今回からはプログラミング言語のLTが中心!Rust、Go言語、コンテナ技術、PHPに関するLT動画を8本公開です! こんにちは、TechFeed CEOの白石です。 2022年5月14日に開催された「エンジニアの祭典」TechFeed Conference 2022は、「日本を代表するテックエキスパート50名による大LT大会」という前代未聞の取り組みとして、大盛況のうちに幕を閉じました。 ですが、TechFeed Conferenceはまだまだ終わりません! 本イベントは、エキスパートの貴重な知見を一人でも多くの方々に届けるべく、企画当初から 「全セッション、永久保存版」 を掲げて、アーカイブ化にも全力を尽くすと誓っておりました。 本日より6/10までの間、「TechFeed Conference 2022後夜祭」を開催しま

                                                                                【ブクマ推奨】Rust、Go言語、コンテナ技術、PHP…言語系LT動画8本公開🎉 — TechFeed Conference「後夜祭」(5)
                                                                              • Go言語で書かれたPHPアプリケーションサーバ「FrankenPHP 1.0」がリリース

                                                                                FrankenPHP 1.0には、Symphony、Laravel、WordPressなどのネイティブサポートが含まれるほか、Caddyを搭載したプロダクショングレードのPHPサーバであり、PHPアプリのスタンドアロンで実行可能なバイナリとしてのパッケージ化が可能となっている。 さらに、PHP-FPMとNgnixを個別に実行する必要がなく、1つのサービスのみでPHPサーバを提供できるようになるとともに、PHP 8.2以降のほとんどのPHP機能拡張、およびすべてのCaddyモジュールと互換性がある。 ほかにも、アプリケーション起動してメモリに保持するワーカーモード、JavaScriptイベントとしてWebブラウザへ送信されるリアルタイムイベント、ZstandardおよびGzip圧縮、構造化されたログ、Prometheusメトリクスを使用したCaddyの監視、HTTPS・HTTP/2・HTTP

                                                                                  Go言語で書かれたPHPアプリケーションサーバ「FrankenPHP 1.0」がリリース
                                                                                • Go言語で高速JSONライブラリをメモリ安全にしたらさらに速くなった話

                                                                                  はじめに こんにちは。Sugawara Yuutaです。"Go言語で最速のJSONデコーダーを作った話", "それでも僕はGoで最速のJSONデコーダーを作りたかった"...以来の方はまた読んでいただきありがとうございます。まだの方は、経緯を伝えやすくなると思うので、そちらの方も読んでいただけたら幸いです。 その後 Go言語チームのメンバーが取り組んでいる新しいバージョンのJSONライブラリであるgo-json-experiment/jsonというレポジトリを発見しました。(厳密に言うと、知ってはいたのですが中身等は見ていない状態でした。) そこで学んだことが少しでも役に立てばとissueを提出したところ、そのときのJSONデコーダーに足りないものが見えてきたため、今回は僕の見つけた課題と、どのように解決しようとしたか・したかを話せればと思います。 見つけた課題 パフォーマンスも重要ですが

                                                                                    Go言語で高速JSONライブラリをメモリ安全にしたらさらに速くなった話