<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Go on YAGI BLOG</title>
    <link>https://www.yuyagishita.com/tags/go/</link>
    <description>Recent content in Go on YAGI BLOG</description>
    <image>
      <title>YAGI BLOG</title>
      <url>https://www.yuyagishita.com/images/top.png</url>
      <link>https://www.yuyagishita.com/images/top.png</link>
    </image>
    <generator>Hugo -- 0.152.2</generator>
    <language>en</language>
    <lastBuildDate>Fri, 09 Dec 2022 01:21:47 +0900</lastBuildDate>
    <atom:link href="https://www.yuyagishita.com/tags/go/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Next.js(React),Go kit(Golang)で「SENRYU」を個人開発した</title>
      <link>https://www.yuyagishita.com/indiedev/senryu/</link>
      <pubDate>Sun, 20 Sep 2020 22:04:18 +0900</pubDate>
      <guid>https://www.yuyagishita.com/indiedev/senryu/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;senryu&#34; loading=&#34;lazy&#34; src=&#34;https://www.yuyagishita.com/img/senryu.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;今回はじめて個人開発でアプリを作りました！！今年の1月に個人開発をしようと考えてから、アプリ企画・技術選定をして、開発途中で作るアプリを変えたりと色々と迷走しましたが、なんとか一区切りつきました！！（8か月ぐらいかかるなんてチンタラやってたなあ（笑））&lt;/p&gt;
&lt;p&gt;開発したアプリや今まで考えていたことなどをまとめます。&lt;/p&gt;
&lt;h2 id=&#34;アプリ概要&#34;&gt;アプリ概要&lt;/h2&gt;
&lt;p&gt;川柳を共有することができるSNSアプリ「SENRYU」を開発しました。&lt;/p&gt;
&lt;h2 id=&#34;機能&#34;&gt;機能&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;ログイン&lt;/li&gt;
&lt;li&gt;ユーザー登録&lt;/li&gt;
&lt;li&gt;ログアウト&lt;/li&gt;
&lt;li&gt;川柳一覧表示&lt;/li&gt;
&lt;li&gt;マイ川柳一覧表示&lt;/li&gt;
&lt;li&gt;川柳投稿&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;フロントエンド&#34;&gt;フロントエンド&lt;/h2&gt;
&lt;h3 id=&#34;nextjsreact&#34;&gt;Next.js(React)&lt;/h3&gt;
&lt;p&gt;フロントエンドにはNext.jsを利用しました。TypeScriptを使ってみたくて、TypeScriptと相性がいいReactを選択して、最近話題のNext.jsにしようと決めました。&lt;br&gt;
Next.jsはルーティング設定が楽だし、SSG, SSR, SPAをページごとに設定できて便利だしと使って良かったなと思っています。ただ、認証はFirebaseやNextAuth.jsを利用して他のSNSアカウントとかでログインする実装にするのが楽だと感じました。&lt;/p&gt;
&lt;h3 id=&#34;material-ui&#34;&gt;Material-UI&lt;/h3&gt;
&lt;p&gt;ReactのUIコンポーネントライブラリであるMaterial-UIを利用してUIの基礎を作りました。簡単に見た目を整えることができるので、とても便利です。&lt;/p&gt;
&lt;h3 id=&#34;styled-components&#34;&gt;styled-components&lt;/h3&gt;
&lt;p&gt;Material-UIの見た目を調整したい時にCCS in JSのstyled-componentsを利用しました。TypeScript内でCSSを書けるので普段CSSとかを書かない僕には使いやすかったです。&lt;/p&gt;
&lt;h2 id=&#34;バックエンド&#34;&gt;バックエンド&lt;/h2&gt;
&lt;h3 id=&#34;go-kitgolang&#34;&gt;Go kit(Golang)&lt;/h3&gt;
&lt;p&gt;個人的にGolangを利用したかったのとマイクロサービス構成でアプリを作ってみたいという理由からGo kitを利用しました。使ってみた感想としてあまり日本語のドキュメントとかなく調べるのが大変でしたが、Golangにはホットリロードがあってコンパイルが速く言語に慣れれば開発スピードが上がりそうだなと思いました。&lt;/p&gt;
&lt;h2 id=&#34;データベース&#34;&gt;データベース&lt;/h2&gt;
&lt;h3 id=&#34;mongodb&#34;&gt;MongoDB&lt;/h3&gt;
&lt;p&gt;NoSQLを利用したことがなかったので今回利用しました。MongoDBの基礎的な知識を身につけることはできましたが、RDBMSよりもNoSQLを利用するメリットがあんまりわからなかったです。&lt;/p&gt;
&lt;h2 id=&#34;開発環境&#34;&gt;開発環境&lt;/h2&gt;
&lt;h3 id=&#34;docker&#34;&gt;Docker&lt;/h3&gt;
&lt;p&gt;マイクロサービス構成でアプリ開発をしていたので、それぞれのサービス毎にコンテナを作成しました。ローカルでDockerコンテナを立てて開発するときはVSCodeのRemote Containerが非常に便利でした。ぜひ使ってみてほしいです。&lt;/p&gt;
&lt;h2 id=&#34;対象リポジトリ&#34;&gt;対象リポジトリ&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/yuyagishita/senryu-frontend&#34;&gt;senryu-frontend&lt;/a&gt;&lt;br&gt;
&lt;a href=&#34;https://github.com/yuyagishita/senryu-user&#34;&gt;senryu-user&lt;/a&gt;&lt;br&gt;
&lt;a href=&#34;https://github.com/yuyagishita/senryu-post&#34;&gt;senryu-post&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;記事を書くまでの経緯&#34;&gt;記事を書くまでの経緯&lt;/h2&gt;
&lt;p&gt;元々、今年の1月に他のサービス開発を考えていました。技術選定の時には&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Next.js(React)&lt;/li&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;Go kit(Golang)&lt;/li&gt;
&lt;li&gt;MongoDB&lt;/li&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;Github Actions&lt;/li&gt;
&lt;li&gt;AWS&lt;/li&gt;
&lt;li&gt;K8s&lt;/li&gt;
&lt;li&gt;マイクロサービス&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;でアプリを開発してリリースをしようと思っていました。せっかくの個人開発だし勉強もかねて挑戦してやる！っていう気持ちで技術選定をしましたが、今思うとDocker以外はほぼ経験がなかったのでめちゃくちゃ無謀だったなと思います。（笑）&lt;br&gt;
そんな感じで技術選定をしてから要件や仕様決めて開発を始めましたが、わからないことが多すぎで全然進捗がなかったです。。亀の足のような遅さでしたがなんとか進めていた
4月頃か5月頃に気づいてしまいました。&lt;br&gt;
「クラウドでK8s使うと金けっこうかかるやんけ！」&lt;br&gt;
今思うと当たり前だし、調査不足すぎだよ自分。。ということがあり、最初に作りたかったサービスは世にリリースするのが厳しいなと思いましたが、せっかくある程度までは勉強して作っていたので、違うサービスとして開発をしてGithubで公開してポートフォリオ的な感じにしようと決めました。&lt;br&gt;
といった経緯で今に至ります。結果的には個人開発したアプリをリリースすることはできませんでしたが、Next.jsとGolangを学べたり個人開発の雰囲気を味わえたので良かったです。&lt;/p&gt;
&lt;h2 id=&#34;最後に&#34;&gt;最後に&lt;/h2&gt;
&lt;p&gt;個人開発はすべてを自分で考えないといけないので、とても大変ですが技術選定や作業の進め方など誰からも指図されずに好きなようにできるので、楽しいし学びが多いですね。&lt;/p&gt;</description>
    </item>
    <item>
      <title>GitHubのプライベートリポジトリをgo getする</title>
      <link>https://www.yuyagishita.com/tech/golang/go-get-github-private-repository/</link>
      <pubDate>Mon, 27 Apr 2020 20:01:04 +0900</pubDate>
      <guid>https://www.yuyagishita.com/tech/golang/go-get-github-private-repository/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;gopher-and-monalisa&#34; loading=&#34;lazy&#34; src=&#34;https://www.yuyagishita.com/img/gopher-and-monalisa.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;個人開発していて、GitHubの自分のプライベートリポジトリを&lt;code&gt;go get&lt;/code&gt;しようとして、エラーに遭遇しました。
今後同じような目にあった時のために、備忘録として残します。&lt;/p&gt;
&lt;h2 id=&#34;エラー内容&#34;&gt;エラー内容&lt;/h2&gt;
&lt;p&gt;以下のようなエラーが発生しました。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ go get github.com/&amp;lt;username&amp;gt;/&amp;lt;private-repository-name&amp;gt;

go: downloading github.com/&amp;lt;username&amp;gt;/&amp;lt;private-repository-name&amp;gt; v0.0.0-20200426100620-259de4f4dd2c
go get github.com/&amp;lt;username&amp;gt;/&amp;lt;private-repository-name&amp;gt;: github.com/&amp;lt;username&amp;gt;/&amp;lt;private-repository-name&amp;gt;@v0.0.0-20200426100620-259de4f4dd2c: verifying module: github.com/&amp;lt;username&amp;gt;/&amp;lt;private-repository-name&amp;gt;@v0.0.0-20200426100620-259de4f4dd2c: reading https://sum.golang.org/lookup/github.com/&amp;lt;username&amp;gt;/&amp;lt;private-repository-name&amp;gt;@v0.0.0-20200426100620-259de4f4dd2c: 410 Gone
	server response:
	not found: github.com/&amp;lt;username&amp;gt;/&amp;lt;private-repository-name&amp;gt;@v0.0.0-20200426100620-259de4f4dd2c: invalid version: git fetch -f origin refs/heads/*:refs/heads/* refs/tags/*:refs/tags/* in /tmp/gopath/pkg/mod/cache/vcs/d99582f38bf8799347c5c3580859733d5d5c417fd23feb23ec82dc0787605157: exit status 128:
		fatal: could not read Username for &amp;#39;https://github.com&amp;#39;: terminal prompts disabled
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;原因&#34;&gt;原因&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;go get&lt;/code&gt;でモジュールをダウンロードする際は通常、http通信をしているみたいです。
GitHubのプライベートリポジトリへは認証が通らず、エラーになっていました。&lt;/p&gt;
&lt;h2 id=&#34;解決方法&#34;&gt;解決方法&lt;/h2&gt;
&lt;p&gt;以下手順で解決できます。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;Personal access tokens&lt;/code&gt;を作成&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git config&lt;/code&gt;設定&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;1-personal-access-tokensを作成&#34;&gt;1. &lt;code&gt;Personal access tokens&lt;/code&gt;を作成&lt;/h3&gt;
&lt;p&gt;GitHubの&lt;a href=&#34;https://github.com/settings/tokens&#34;&gt;Developer settings&lt;/a&gt;画面でトークンを作成できます。
設定画面を開いたら、「Generate new token」を押すと、以下の画面が表示されます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>React &#43; Go &#43; MongoDBの環境をDocker Composeで作成した</title>
      <link>https://www.yuyagishita.com/tech/docker/react-golang-mongodb-with-docker-compose/</link>
      <pubDate>Sat, 11 Apr 2020 12:51:41 +0900</pubDate>
      <guid>https://www.yuyagishita.com/tech/docker/react-golang-mongodb-with-docker-compose/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;react-golang-mongodb-with-docker-compose&#34; loading=&#34;lazy&#34; src=&#34;https://www.yuyagishita.com/img/react-golang-mongodb-with-docker-compose.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;現在、勉強がてら個人開発をしていて、せっかくの個人開発なので、今までさわったことがないReact, Go, MongoDBでwebアプリを作ります。
その最初の段階として、Docker Composeを使って環境構築を進めます。&lt;/p&gt;
&lt;h2 id=&#34;reactの環境構築&#34;&gt;Reactの環境構築&lt;/h2&gt;
&lt;p&gt;今回の開発では、プロジェクト配下をこんな感じにしています。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;プロジェクト
├── backend
├── frontend
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Reactは&lt;code&gt;frontend&lt;/code&gt;配下に構築します。&lt;/p&gt;
&lt;h3 id=&#34;dockerfileの作成&#34;&gt;&lt;code&gt;Dockerfile&lt;/code&gt;の作成&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;Dockerfile&lt;/code&gt;にDocker上で起動させるコンテナの構成情報を書きます。
&lt;code&gt;frontend&lt;/code&gt;配下に以下内容で作成します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-Dockerfile&#34; data-lang=&#34;Dockerfile&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;node:13.12.0-alpine3.10&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;WORKDIR&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;/usr/src/app&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;1行目にはコンテナのDockerイメージ、2行目にはコンテナ内の作業ディレクトリを記載しています。
alpineはAlpine Linuxのことで、必要最低限の構成がされているおかげで、Dockerイメージの軽量化を図ることができます。&lt;/p&gt;
&lt;h3 id=&#34;docker-composeymlの作成&#34;&gt;&lt;code&gt;docker-compose.yml&lt;/code&gt;の作成&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;docker-compose.yml&lt;/code&gt;で複数のコンテナをまとめて起動することができます。拡張子は「.yml」「.yaml」どちらでも動きます。
&lt;del&gt;どっちかに統一してくれればいいのに。&lt;/del&gt;&lt;br&gt;
プロジェクト配下に以下内容で作成します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yml&#34; data-lang=&#34;yml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;3&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;services&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;node&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;build&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;context&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;./frontend&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;dockerfile&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;Dockerfile&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;./frontend:/usr/src/app&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;command&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;sh -c &amp;#34;yarn start&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ports&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;3000:3000&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;volumes&lt;/code&gt;ではコンテナ内の&lt;code&gt;usr/src/app&lt;/code&gt;を&lt;code&gt;frontend&lt;/code&gt;に永続化させます。
&lt;code&gt;ports&lt;/code&gt;では外部の3000ポートとコンテナ内の3000ポートをつなげています。ローカル環境では&lt;code&gt;localhost:3000&lt;/code&gt;でアクセスができるようになります。&lt;/p&gt;
&lt;h3 id=&#34;dockerイメージのビルド&#34;&gt;Dockerイメージのビルド&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;docker-compose.yml&lt;/code&gt;のある階層で以下コマンドを叩きます。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;docker-compose build
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Building node
Step 1/2 : FROM node:13.12.0-alpine3.10
 ---&amp;gt; b529a862f234
Step 2/2 : WORKDIR /usr/src/app
 ---&amp;gt; Using cache
 ---&amp;gt; b753b92fbf97
Successfully built b753b92fbf97
Successfully tagged プロジェクト名_node:latest
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;上記のような表示がされ、ビルドすることができます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>GoでインストールからHello Golang！！</title>
      <link>https://www.yuyagishita.com/tech/golang/hello-golang/</link>
      <pubDate>Mon, 16 Mar 2020 22:22:38 +0900</pubDate>
      <guid>https://www.yuyagishita.com/tech/golang/hello-golang/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;gopher&#34; loading=&#34;lazy&#34; src=&#34;https://www.yuyagishita.com/img/ghpher.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;本記事は以前&lt;a href=&#34;https://qiita.com/yu_yagishita&#34;&gt;Qiita&lt;/a&gt;に投稿した内容を本ブログに持ってきています。&lt;/p&gt;
&lt;h1 id=&#34;概要&#34;&gt;概要&lt;/h1&gt;
&lt;p&gt;MacにGoをインストールして、「Hello Golang！！」を表示させるところまでを解説していきます。&lt;br&gt;
また、僕はシェルにfishを使っているので、fish向けの環境構築についても記載します。&lt;/p&gt;
&lt;h1 id=&#34;環境&#34;&gt;環境&lt;/h1&gt;
&lt;p&gt;macOS Catalina 10.15.1&lt;br&gt;
Homebrew 2.1.15&lt;br&gt;
fish 3.0.2&lt;/p&gt;
&lt;h1 id=&#34;goインストール&#34;&gt;Goインストール&lt;/h1&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ brew install go
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ go version
go version go1.13.3 darwin/amd64
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Homebrew使うとコマンド一つでインストールできるので、とても便利です。&lt;/p&gt;
&lt;h1 id=&#34;gopathの設定&#34;&gt;GOPATHの設定&lt;/h1&gt;
&lt;p&gt;GOPATHとは、Goのソースをまとめているディレクトリを指定している環境変数のことであり、
GOPATHを利用することで、外部ライブラリの導入やビルド作業を非常に簡単に行うことができます。&lt;/p&gt;
&lt;p&gt;bashでGOPATHを指定するには、&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ vim ~/.bash_profile
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;で設定ファイルに以下追記をします。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;export GOPATH=$HOME/go（←ワークスペースにしたい場所）
export PATH=$PATH:$GOPATH/bin
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;僕のようにシェルにfishを使っている人は、&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;vim ~/.config/fish/config.fish
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;で設定ファイルに以下追記をします。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;set -x GOPATH $HOME/go
set -x PATH $PATH $GOPATH/bin
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これでGOPATHの設定は完了です。&lt;/p&gt;
&lt;h1 id=&#34;hello-golang&#34;&gt;Hello Golang！！&lt;/h1&gt;
&lt;p&gt;ではいよいよ「Hello Golang!!」を表示させていきます。&lt;/p&gt;
&lt;h2 id=&#34;ディレクトリ構成&#34;&gt;ディレクトリ構成&lt;/h2&gt;
&lt;p&gt;最終的に以下構成になります。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;go/
┣ bin/
   ┣ hellogolang
┣ pkg/
┣ src/
   ┣ hellogolang/
              ┣ main.go
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;以下ファイルのそれぞれの役割に関して記載します。&lt;br&gt;
bin：　実行ファイルが格納されるディレクトリ&lt;br&gt;
pkg：　ビルドしたパッケージオブジェクトが格納されるディレクトリ&lt;br&gt;
src：　パッケージごとのソースが格納されるディレクトリ&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
