Golang 1.7 release party in Tokyo

補欠だったので無理かと思っていたら、当日繰り上がった。 イベントページはこちら

1. What’s new Go1.7? by @deeeet

Golang1.7、残念ながらRelease表明されなかった(1.6の時以来2回目)

2. Release note points

  • MacOS Sierraをサポート
  • Linkerが速くなった(特にk8sのような大規模のコードへの恩恵は大きい)
  • StackFrameが入り、LinuxのProfilerが使えるようになった
  • -Xオプションをつけると、key=valueでつなげないものはエラーになる
  • vendoring optionが使えなくなった
  • // go-binary-only-packageを付けるとバイナリだけを提供できるようになった
  • 標準パッケージは以下のようなものが変更された(他にもあるよ)
    • context: 今まで標準ではなかった
    • testing: subtestとbenchmarkが作成できる
    • http tracing: httpリクエストの各ステップにフック関数の挿入が可能に

所感
HTTP tracingデバッグとチューニングにとても便利そう

3. About contribution of Go by @stanaka

  • GolangへのContribution方法(前回のGoConと同じ!)
  • まずはContribution Guidlineをよむ
  • GitHubではなくGerritを使う(FIX, DONEなコンパクトなコメントを返せる)

所感
未だにGerrit慣れないが、コメントボタンよさそう

4. context package by @ono_matope

スライドはこちら

  • 1.7に標準パッケージに入ったが2014年にはPJが始まっていた
  • 様々なライブラリのキャンセル要求インタフェースの標準か

ここら辺参照:

5. Introduction to SSA by @shinpeiNKT

  • Go1.7のSingle Static Single Assignment(SSA)のお話
  • ベンチマークスピードが5-35%速くなり、バイナリサイズも2-30%削減された
  • 今まで中身を返さない関数も全てコンパイルしていたが、1.7から中身はskip
  • 1変数に対する代入は1つのみとし、それ以外のものを不要変数と判定する
  • 最適化はされるが、コンパイル速度は10%ほど低下した
  • SSAを回避するフラグもある

ここら辺参照:

6. Don’t use reflect by @lestrrat

  • “みんなのGo言語” よろしく
  • Reflectは遅くなるし、本当に必要な時だけ使おう
  • 1.7の変更点
    • フィールドの位置が極端に大きいものはpanic
    • exportしていない関数の取得が不可能に
    • 動的にstructが定義できるように
    • struct tagにlookup()が導入された

所感
JSON parseのチェックよく悩んでいたのでlookup()は嬉しい変更だ

7. Goji とレイヤ化アーキテクチャ by @t2y

  • 白ヤギでAPIサーバをGolangで開発し、1年が経過したのでその知見
  • FrameworkはGojiを使っている(レポジトリは移動してる)
  • サービスには(基本的に)終わりがなく、設計は継続する
  • AOPはGoにないのか? – Roadmapにはない。go nutsで議論するといいよ
  • コードに変更がない == 安定する

所感
私は標準 or Revelをよく使っているが、よさそうと思っていたginは最近あまり更新されていない…。 いま一番よいWebFrameworkは何だろう?

8. Unity Plugin by @tenntenn

  • 昨日、一昨日やっていたMakerFairでUnityちゃんのVR吐息ヘッドフォンを作った話
  • GolangでUnityのネイティブプラグインを作った
  • Go Mobileを使っている(最近またアップデートされたのでbuildオプションが変わった…)

反響:

所感
MakerFair行きたかったが間に合わなかったX(
最近Android開発してないのでGoMobile周り追いかけてないけど、
アップデートで大幅に変わるの大変そうだ。

Thanks :)

comments powered by Disqus