6/23 もくもく会でのおぼえがき (Go & GoLand)

またまたしばらくぶりの投稿です...。
今回は気負わず、淡々と少し試したことだけ載せていきます。

今回のもくもくのテーマ


今回は、子連れもくもく会という場にお邪魔しました。
(ぜひ、かおるさんのブログをどうぞ!)

実際はわたしはあまりもくもくの時間を取らなかったのですが、まわりのみなさんも頑張ってらっしゃるので、少しでも何かをせねば!と思い、以下をテーマ・目標にして、ラスト40分くらいでやってみました。
  • Goを少し書いてみる(少しです!でもやること大事!)
  • IntelliJもしくはその他JetBrains社のシリーズで書いてみる
    • サムライズム様の会場だったので、ここはやはり!
  • とりあえず動かすところまで
  • 「こんにちは世界」だとモチベーション上がらないので、もう少し動かすコードにしたい....

こんなかんじでやりました

本当に書き留めただけですが...。
まず、わたしの環境はMacBookなので、Goをインストールするところから始まります。

MacにはGoはインストールされていないので、自分で追加となります。
VisualStudio CodeやIntelliJ IDEAのようなエディタがあったとしても、まずはGoの実行環境を追加が前提となります。

インストールする

brewでのコマンドは以下の通り。
$ brew install go $ go version $ go version go1.10.3 darwin/amd64

IDEを使う

  • ソースコードの編集や実行には、今回GoLandを使うことに
    • 実際使ったことがないので、お試しもかねて
    • https://www.jetbrains.com/go/ から評価ライセンスでのダウンロード
    • 空のプロジェクトを作成
さすがGo専用のIDEだけあって、Goのバイナリを指定するくらいで、すぐに直感的に利用が可能です。

GoLandで 「こんにちは、世界!」
ソースコードは、公式のTry Goから。

// You can edit this code!
// Click here and start typing.
package main
import "fmt"
func main() {
fmt.Println("Hello, 世界")
}

簡単ではありますが、動くと嬉しいですね!

http serverのコードを書いてうごかしてみる

GoLandでの実行がうまくいきそうなので、では、さっそく Real World HTTP の中のサンプルコードを記載して動かして見ます。

こちらも、ソースを入力している途中で、GoLand側が自動で必要なパッケージを判定し、ソースコード上部の import の箇所に挿入してくれます。
これは便利!

入力しおわったら、同じく実行。
この場合はhttp serverなので、18888 番のポートで待ち受けとなります。

IntelliJもそうですが、IDEの中に簡単にRest APIやアプリケーションに対してhttpリクエストを投げることができるツールが用意されているので、テスト実行もそちらから。

うまくhttp serverとして動いて、アクセスを受けてレスポンスを返してくれています!
やはり便利ですね!

ターミナル側で確認してみる

さて、GoLandで実行してみると、実はバイナリファイルが直下に作成されるわけではありません。
ターミナルから実行する場合は、***.go なソースコードを、go build でビルドしてバイナリを生成します。

IDEを使うととても楽なのですが、基本はどうやってコンパイルして、何が出来るかというのを把握しておかないといけないので、ターミナル&コマンドラインでも簡単に確認してみます。


 realWorldHttp $ go build
 realWorldHttp $ tree
 .
 ├── realWorldHttp  <- span="">
 └── test_echo_servcer.go

 0 directories, 2 files


さて、出来上がったバイナリ。
realWorldHttp という名前で生成されています。

でも、ソースコードには realWorldHttp という単語はどこにも入れていない....。
代わりに、このソースコードが置いてあるディレクトリは、realWorldHttp という名前になっています。

これはどういうことなのか....?

ということで、help (go help build) してみます。


 When compiling a single main package, build writes
 the resulting executable to an output file named after
 the first source file ('go build ed.go rx.go' writes 'ed' or 'ed.exe’)  
 or the source code directory ('go build unix/sam' writes 'sam' or 'sam.exe').
 The '.exe' suffix is added when writing a Windows executable.                                                

そうすると、なにやらこんな文が。

どうやら、mainだけの単一のパッケージをビルドする時、ビルドの対象になるファイルを指定しなかった場合は、そのソースコードが配置されているディレクトリと同じ名前のバイナリが出来る模様です。

 
 realWorldHttp $ go build test_echo_servcer.go 
 realWorldHttp $ tree
 .
 ├── realWorldHttp
 ├── test_echo_servcer
 └── test_echo_servcer.go <- build="" go="" span="">
 
 0 directories, 3 files

次に、go build にちゃんとソースコードを指定してみると、ソースコードから “.go” という拡張子を除いたものが、バイナリとして生成されました。

コマンドラインで動かしてみる

GoLand (IDE) からは簡単に動いたので、つぎはターミナルから、コマンドライン上で実行してみます。

go build test_echo_server.go とビルドしてみると、test_echo_serverというバイナリファイルができるので、こちらを実行。

ターミナルから起動&curlでチェック
こんどは curl http://localhost:18888/ でアクセスしてみると、おなじようにちゃんとレシポンスが返ってきてくれました。

ということで、最初のもくもくの目標は、なんとかクリアとなりました。

もくもくまとめ

では、今回のまとめ。

もくもく会という名のイベントに参加するのは、実はこれが初めて!

最初は参加者のみなさんその他の見守りだけでいいかな...と思っていたのですが、みなさん短時間でもがんばって各自のテーマをすすめていらしたので、刺激を受けまして、「むむ?これはいかん!」と思った次第です。

難しいテーマを選んだわけではないのですが、それでも「集中してがんばろう!」という気にさせてもらいましたので、こういうスタイルはいいかもしれない!

ただし、なかなか仕事やら家事やらで出来ないことなので、「もくもく会に参加する」ということ自体が貴重な経験でした。

子連れもくもく会 を企画してくださったかおるさん、会場をご提供くださったサムライズムさま、ありがとうございました!

せっかくなので、「もくもく会体験の記録」として、記事を残しておきます。

#ちなみに、今回はお絵かきは無しです。。。。(気が向いたらあとから添えます)



またまた宣伝: もしこれからご購入を検討されてる方がいらしたら、サムライズム様の紹介プログラムで1000円割引でのご購入ができます。よかったらアクセスしてみてくださいね
GoLand, IntelliJ, RubyMine, PyCharmなどなど!


コメント

人気の投稿