<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Go on ゲンゾウ用ポストイット</title><link>https://genzouw.com/entry/category/go/</link><description>Recent content in Go on ゲンゾウ用ポストイット</description><generator>Hugo</generator><language>ja</language><lastBuildDate>Mon, 27 Mar 2023 14:11:28 +0900</lastBuildDate><atom:link href="https://genzouw.com/entry/category/go/index.xml" rel="self" type="application/rss+xml"/><item><title>anyenvで管理しているバージョン管理ツールを一括でアップデートする方法</title><link>https://genzouw.com/entry/2022/10/13/120054/3133/</link><pubDate>Thu, 13 Oct 2022 12:00:54 +0900</pubDate><guid>https://genzouw.com/entry/2022/10/13/120054/3133/</guid><description>&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/anyenv/anyenv"&gt;anyenv&lt;/a&gt; を使うと、 &lt;code&gt;xxxenv&lt;/code&gt; 系のツールを管理できます。&lt;/p&gt;&#10;&lt;p&gt;ここで、 &lt;code&gt; xxxenv&lt;/code&gt; 系のツールとは、例えば **pyenv ** や **goenv ** や &lt;strong&gt;nodeenv&lt;/strong&gt; といったツールを指しています。&lt;/p&gt;&#10;&lt;p&gt;導入することで、1 台の作業用 PC 内に複数バージョンのプログラム言語実行・ビルド環境を構築できます。&lt;/p&gt;&#10;&lt;p&gt;最近は Docker の登場、普及により &lt;code&gt;xxxenv&lt;/code&gt; 系ツールの需要も下がっています。&#10;しかし、Docker による仮想化の進んでいないコードベースもあるため、僕の PC 内では現役で活躍してくれています。&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/anyenv/anyenv"&gt;anyenv&lt;/a&gt; は、これら &lt;code&gt;xxxenv&lt;/code&gt; 系のツールを一元管理するための上位のツールとなっています。&lt;/p&gt;&#10;&lt;p&gt;便利ですが &lt;strong&gt;anyenv&lt;/strong&gt; でインストールされた &lt;code&gt;xxxenv&lt;/code&gt; 系ツールで、最新バージョンがインストールできないときがあります。&lt;/p&gt;&#10;&lt;p&gt;具体的には &lt;code&gt;anyenv&lt;/code&gt; を使ってインストールした &lt;code&gt;goenv&lt;/code&gt; を使っていたときに、Go の最新バージョンをインストールできない時がありました。&lt;/p&gt;&#10;&lt;p&gt;この問題に対処します。&lt;/p&gt;&#10;&lt;h2 id="検証環境"&gt;検証環境&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;span class="lnt"&gt;6&#10;&lt;/span&gt;&lt;span class="lnt"&gt;7&#10;&lt;/span&gt;&lt;span class="lnt"&gt;8&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ uname -moi&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;arm64 unknown Darwin&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ bash -version &lt;span class="p"&gt;|&lt;/span&gt; head -n &lt;span class="m"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GNU bash, バージョン 5.2.2&lt;span class="o"&gt;(&lt;/span&gt;1&lt;span class="o"&gt;)&lt;/span&gt;-release &lt;span class="o"&gt;(&lt;/span&gt;aarch64-apple-darwin21.6.0&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ anyenv --version&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;anyenv 1.1.5&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="anyenv-について"&gt;anyenv について&lt;/h2&gt;&#10;&lt;p&gt;anyenv について、サラッと触れておきます。&lt;/p&gt;</description></item><item><title>nodemonを使ってGo製Ginサーバをホットリロードしようとしたらハマった話</title><link>https://genzouw.com/entry/2022/08/02/080018/3054/</link><pubDate>Tue, 02 Aug 2022 08:00:18 +0900</pubDate><guid>https://genzouw.com/entry/2022/08/02/080018/3054/</guid><description>&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;&#10;&lt;p&gt;&lt;em&gt;事前にお伝えすると、Go 言語アプリケーションの開発を効率化するためにホットリロードを導入しようとした場合、最適なのは &lt;a href="https://github.com/cosmtrek/air"&gt;Air&lt;/a&gt; と呼ばれるライブリロードツールを利用するのが良いでしょう&lt;/em&gt;。&#10;&lt;em&gt;Air も Go 製ですので、Go の実行環境が整っていれば利用できます&lt;/em&gt;。&lt;/p&gt;&#10;&lt;p&gt;という前提をおいた上で今回のエントリへ。&lt;/p&gt;&#10;&lt;p&gt;ホットリロード ( ライブリロード ) を導入し、コードが変更されたことを自動検知して実行プロセスを再起動させると開発がスムーズに進められます。&lt;/p&gt;&#10;&lt;p&gt;今までいくつかのツールを遷移してきましたが、ここ数年は &lt;a href="https://github.com/remy/nodemon"&gt;nodemon&lt;/a&gt; がお気に入りです。&lt;/p&gt;&#10;&lt;p&gt;アプリケーション開発時だけでなく、シェルスクリプト作成時にも利用でき、かつコマンド＋オプション指定で利用できるところが気に入っています。過去にも以下のようなエントリを投稿しています。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://genzouw.com/entry/2021/04/09/084541/2536/"&gt;シェルにも使える！nodemon を使ってコードに変更があった場合にホットリロード ( 自動再起動 ) させる&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;前置きが長くなりましたが、Go 言語+Gin Web Framework を使った開発中をしていてホットリロードを導入するために &lt;strong&gt;nodemon&lt;/strong&gt; 経由で &lt;code&gt;go run&lt;/code&gt; したところ、うまくリロードされないという事象にあいました。&lt;/p&gt;&#10;&lt;p&gt;どのような問題が発生したのかと、どのように解決したかを紹介します。&lt;/p&gt;&#10;&lt;h2 id="検証環境"&gt;検証環境&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 2&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 3&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 4&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 5&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 6&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 7&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 8&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 9&#10;&lt;/span&gt;&lt;span class="lnt"&gt;10&#10;&lt;/span&gt;&lt;span class="lnt"&gt;11&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ uname -moi&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;arm64 unknown Darwin&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ bash -version &lt;span class="p"&gt;|&lt;/span&gt; head -n &lt;span class="m"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GNU bash, バージョン 5.1.16&lt;span class="o"&gt;(&lt;/span&gt;1&lt;span class="o"&gt;)&lt;/span&gt;-release &lt;span class="o"&gt;(&lt;/span&gt;aarch64-apple-darwin21.1.0&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ nodemon --version&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2.0.19&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ go version&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;go version go1.18 darwin/arm64&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="まずは-gin-のチュートリアルどおりにかんたんな-web-api-を作成"&gt;まずは Gin のチュートリアルどおりにかんたんな Web API を作成&lt;/h2&gt;&#10;&lt;p&gt;このあたりは足早に流していきます。&lt;/p&gt;</description></item></channel></rss>