Goはじめました

Software Skillsに影響された

とあるきっかけでGo言語を利用する機会がでてきたので勉強の記録のためにもここに記す。 ブログとか書かない派だったのだが、Software Skillsを読んで書くことを決意した(単純かというツッコミは置いといて) 「そもそも、勉強した内容とか今更ブログに書いたところでもう既に世の中に出回ってるよー」という感じだが、一応書いてみる。

自分はRuby(Rails歴)2年 = プログラミング歴というバックグラウンドなので、他の言語をしっかり勉強するのは初めてであるし、静的言語とか型とかよくわからないのでこれを機にぜひ克服したい。

パフォーマンスはRubyの3倍らしいので、簡単なAPIサーバーとかGoで書けるようになりたいですな。

Go言語の文法を学ぶ

まずは文法のお勉強から

A Tour of Go

とりあえず一通り理解しながら目を通した感じ。理解が△でもどうせまた使うときにちゃんと調べればいいので、ふーんという感じで流していた。合計2-3時間くらいで完了。

Rubyしか触ったことない自分としては、型宣言するのってこういうことなのかーというのがまずは率直な感想。

途中interfaceってなんやこれはって思ったけれども、 http://cuto.unirita.co.jp/gostudy/post/interface/ これが非常に参考になった。Rubyでダックタイプを使っていたので、それと関連しながら考えることができた。型ってこういうことか。

最後の方に並列処理の部分とかあったけど、普通のWebアプリケーションとかではいつ出番が来るのだろうか?集計した結果とかを表示したい時とかにいいのかな?Go言語で目玉の機能なので積極的に使っていきたい。

WEB Applicationを作ってみる

では実際にGo言語でWeb Applicationを作るためにはどうすればいいのだろうと思ったので、A Tour of Goの最後のページにリンクしてあったオフィシャルなチュートリアルをやってみることにした。

Writing Web Applications - The Go Programming Language

カバーしている領域として

  • 読み書きができるデータ構造の作り方
  • Web Applicationを作るためのnet/httpパッケージの使い方
  • HTMLを処理するためのhtml/templateパッケージの使い方
  • ユーザのインプットをバリデーションするためのregexpパッケージの使い方
  • クロージャの使い方

と書いてあるのでまさに今欲しい内容

上から順番に一通りやって見て、1時間ちょいで完成。

チュートリアルとしても出来が良かった。

関数型言語の書き方がなんとなくわかってきた気がする。

net/httpパッケージを利用すれば簡単にwebアプリケーションを作ることができる感覚もできた。

handlerを準備してあげればよしなにやってくれるのかーと思ったが、もうちょい理解したいので公式ドキュメントを読む

ListenAndServe starts an HTTP server with a given address and handler. The handler is usually nil, which means to use DefaultServeMux. Handle and HandleFunc add handlers to DefaultServeMux:

handlerは通常nilだけど、Handle か HandleFuncがDefaultServeMuxにhandlerを加える….

何がわからないかって単純に「ハンドラ」というものがわからなかった…

What is a handler - Stack Overflow

あるケースでの処理の塊みたいな感じ?

handlerを加えるということは「このURLリクエストの時はこの処理です!」という宣言をするということだろうか。

恐らくかなり基本のことなんだけど、こういう基礎をちゃんとこのタイミングで知れてよかった(本当に良かった…)

というわけでハンドラを加えて簡単なアプリケーションが作れた!

次はJSON API サーバーを作るためにはどうすればいいのだろうか?ということでやって見たいと思う。