Go言語での開発を試してみる 〜調べる編〜

  • このエントリーをはてなブックマークに追加

Go言語への挑戦

こんにちは。haruhikonyanです。
自分go言語というものを実はこれまで触ったことが無かったのでちょいと触ってみることにしました。
とはいえ何がやりたいとかそういうことは無いのでとりあえず Hallo World と開発のための道具としてはどういうものがあるかを調べてみようと思います。

go言語のインストール

まずはインストールから。
調べるにもとりあえず手元でgo自体が動かないとつらいものがあると思うのでインストールします。

windows 版

  1. インストーラダウンロード
    公式 の Downloads ページより Microsoft Windows を落としてきます。
  2. インストール
    落としてきたインストーラーをそのまま実行
  3. バージョン確認
     > go version
     go version go1.10.3 windows/amd64
    

    無事インストールされて PATH も自動的に通してくれています!

mac 版

  1. homebrew でインストール
    自分は普段から homebrew を使っているのでインストーラは使わずに homebrew でインストールします。

     $ brew install go
    
  2. バージョン確認
     $ go version
     go version go1.10.3 darwin/amd64
    

    こちらも無事インストール完了です。

    Hello World

    書いてみる

    とりあえず公式のトップにある下記コードを拝借し、保存。

    package main
    
    import "fmt"
    
    func main() {
      fmt.Println("Hello, 世界")
    }
    
     > go run hello.go
    Hello, 世界

    簡単ですね!

    コンパイル

    Go言語で書いたコードはデフォルトでクロスコンパイルに対応しているということで早速試してみます。

    • Windows
      windows環境で試しているのでそのままビルド

        > go build hello.go
      

      なんとexeが吐き出されます!
      それをcmd上で実行してみると?

        >hello.exe
        hello, 世界
      

      ちゃんと出力されました!

    • Mac
      次は mac 用に出力してみることにします。

        >SET GOOS=darwin
        >SET GOARCH=amd64
      
        >echo %GOOS%
        darwin
        >echo %GOARCH%
        amd64
      

      上記のように環境変数をセットしてあげます。
      すると、hello というバイナリファイルが出力されました。
      そいつを手元の mac に送ってターミナルで実行してみると?

        $ ./hello
        hello, 世界
      

    どんな環境でも同じコードで動く!楽しい!

    本格的に開発するために必要なうんちく

    この章はGo言語あまり関係ないんで飛ばしてくれて構いません。
    Go言語開発を始める上で他言語で開発を始める上で気にしていることを述べています。

    フレームワークの有無

    開発を行う上で言語の選定と同じ、それ以上に重要なこととしてフレームワークの選定があると思います。
    何を作るにしても大体は先人が同じようなことを行なっていることがほとんどで、そのライブラリであったり、フレームワークを選定し、優れたフレームワークのある言語で開発を行うという選択が開発を成功させることであったり、工期を短くする秘訣であったりします。
    例えば Ruby には Ruby on Rails という優れた web フレームワークがあったからこそ莫大な人気が出たと言っても過言ではありません。
    他にも Java の Spring や PHP の Laravel、 Python の Django といったフレームワークが人気が高く幅広く使われていると言えるでしょう。
    また、フレームワークを採用することでチーム開発をする上でのコーディング規約などが自然と揃い、読みやすくなるという利点もあると言えるでしょう。
    車輪の再開発を悠長にやっている暇は無いのです。使えるものを使いましょう。

    開発エディタ候補

    開発環境においてもVSCodeやAtomのようなテキストエディタに拡張機能を追加して機能を充実させていくようなタイプのエディタもあれば、Java でいう Ecripce や IntelliJ のようなすでにデバッガ機能などが充実した IDE(統合開発環境)という大きな二つの選択に分かれると言えます。
    前者のテキストエディタがベースのものではまず軽いといったメリットがありますが、機能を増やすには拡張機能を探して自分で入れる必要があったり、全ての要件を満たそうとすると自分で色々調べたりしなければならないのが欠点とも言えると思います。また、全てを詰め込もうとするとエディタ自体も重くなってしまうとうことも十分考えられます。
    後者の IDE では専用ということもあり、機能は一通り揃っているが、エディタ自体が重いということもよくあることです。
    エディタはよく Vim vs Emacs というような宗教戦争などと揶揄されるようにエンジニア個人の好みも大きく分かれるところです。開発効率にも大きく影響する部分だと思うのでベストな選択をしたいところです。

    パッケージ管理

    開発を行う上でライブラリやパッケージの依存管理はほぼ必須と言ってもいいでしょう。
    node.js には npm や yarn といったものがあったり、Ruby では Gemであったり、他にもさきほど Mac で Go をインストールするために使った Homebrew もパッケージ管理システムです。
    これらにパッケージ管理を任せることで、だれがアプリをビルドしても必ず同じパッケージ構成にできるというのも大きな利点の一つです。
    開発をする上で依存関係を人間が細かく気にすることなく進める上では欠かせない存在であると言えます。

    Go で本格的に開発するための道具候補

    フレームワーク

    webフレームワークばかりになってしまいましたが、フレームワークの紹介です。

    次回予告

    次回は後編ということで実際にこれらの調べた要素を組み合わせて簡単な何かを作ってみたいと思います!

     

     

    SEROKU新規フリーランスエンジニア・プログラマ登録促進バナー

    SEROKU新規フリーランスエンジニア・プログラマ登録促進バナー

     

    haruhikonyan

    大きな野望を抱くホルン吹き。

     

SNSでもご購読できます。