Monday, July 11, 2016

『プログラミング言語Go』刊行記念イベント「Goの設計思想を読み解く~実際の開発に活かすために」

7月6日にジュンク堂にて行われた『プログラミング言語Go』刊行記念イベント「Goの設計思想を読み解く~実際の開発に活かすために」プログラミング言語Goの訳者である柴田さんと対談してきました。

トークセッションということで特にプレゼン資料的なものはないのですが、sliceの比較や、goroutine IDをあえて提供しないあたりにGoの設計思想であるSimplicity(簡潔性)が色濃くでているとかいう話をしました。 実際の開発に活かすには、Goでは具象型(concrete type)でAPIをきちんと考えて設計して、必要なところでinterface型を提供するようにしたほうがいいということを説明しました。特にJavaとかを書いている人とかは まずinterfaceを定義しようとすることが多いのでそれはやめたほうがいいと思います。interface型を先に定義するのはpremature abstraction(早すぎる抽象化)に陥りやすいです。

Goでは言語がシンプルな分、プログラマがしっかり設計し、きちんとコードを書くことが求められます。例えばGoプログラマは複雑な型であってもゼロ値が有効な値になるように設計する努力する必要があります。 また、エラー処理に関しても、Goではしっかり設計することが求められます。

できるだけシンプルな具象型をinterfaceを介してうまく組み上げていくことで、複雑な処理をするプログラムを開発していくかんじになります。 最初はどう組み合わせばいいかわかりにくいですが、うまく組み合わせることができるようになってくると、読みやすいGoのコードになっていくと思います。

Thursday, March 17, 2016

Go 1.6 Release Party @ Tokyo

これももう一ヶ月前になりますが、2月17日にはてな東京オフィスでGo 1.6 Release Partyがあったので 参加してきました。Go 1.6 release partyの東京イベント(by GoCon Tokyo)でした。

Go言語によるWebアプリケーション開発が発売されたあとくらいに「Goらしいコードの書き方とかでなにか発表を」と 依頼されたのでGoらしいコードの書き方(ミニ)をしゃべりました。時間は15分くらいだったので内容を interfaceとchanの使い方にしぼりました。このあたりはGo言語がわかりはじめたころに使いすぎてしまう人が多い気がします。 Rob Pike氏がいっているように 「Always use the right tool for the job」するよう気をつけましょう。

Go言語によるWebアプリケーション開発

既に発売されてもう2ヶ月近くたってしまいましたが、「Go言語によるWebアプリケーション開発」の監訳をしました。 `Go Programming Blueprints`の日本語訳です。

タイトルに「Webアプリケーション開発」とありますが、Webアプリケーションだけではなくてコマンドラインツールの開発とかも紹介しています。
Go言語仕様とかの説明はあまりなくて、Goを使ってアプリケーションを書くのはこのようにするという例を紹介した本なので、 tour.golang.orgをしたり、How to write go codeあたりを 読んだりしたあとに、手にとってみるといいかと思います。
最初見た時は題材の選択とかがよさそうに思ったのですが、監訳でちゃんと読んでみると原書の時点からコードとか説明で気になるところがたくさんあったので、注をいれたりだいぶ手直ししたりしました。 付録もなにか書いてくださいということだったので何を書こうか最初迷ったのですが、Goらしいコード(idiomatic go)を説明したほうがよさそうな気がしたので 本文中のコードをreadability reviewとしてみて書き直したらこういうふうにするなぁという感じで書きました。
ちなみに元のコードはgithub.com/matryer/goblueprints、 日本語訳版はgithub.com/oreillly-japan/go-programming-blueprintsにあります。
最初は紙の本だけでしたが、Ebookもでているので電子版が欲しい人もどうぞ。
そういえばamazonでは発売当初在庫がすぐなくなって中古が高値で売られてましたが、在庫はもうあるのに中古がまだ高いとかいう不思議な状況(2016-03-17の時点で中古ほぼ新品6912円とかのがある)になってますね。