Go Conference 2014 Autumnレポート

鵜飼文敏氏「Goに入ってはGoに従え」可読性のあるコードにするために~Go Conference 2014 Autumn基調講演2人目

この記事を読むのに必要な時間:およそ 10 分

この記事では2人目の鵜飼文敏氏の基調講演についてレポートを書きたいと思います。この基調講演では「Goに入ってはGoに従え」というタイトルで,Go言語らしく書く方法について話がされましたスライド)。

写真1 鵜飼文敏氏の講演の様子

写真1 鵜飼文敏氏の講演の様子

Go言語の可読性レビュー

Go Readability Approver

まずはじめに,「Go Readability Approver」と呼ばれる,GoogleにおけるGo言語のReadability(可読性)をレビューするチームについて話がありました。このチームは,コードレビューを通じてGo言語の良いコードの書き方を教えることを目的としているそうです。メンバーは,メインのプロジェクトとは別のプロジェクトのコードをレビューするそうで,同氏は1年ほど前に参加し,20%ルールの時間を使って,200ほどのChange Listをレビューしたと述べていました。

「Go Readability Approver」には,「Readabilityスキル」が必要とされるそうです。これは,レビューするプログラミング言語のリテラシーを持っていることと,その言語の「作法にかなったやり方」でコードを読んだり書いたりする能力のことであるそうです。同氏は,作法は言語ごとに異なり,さらにC++ではプロジェクトごとに違うと主張していました。たとえば,Chromeの開発ではChromiumの部分は,Googleのスタイルガイドに従って書かれており,Webkit(Blink)の部分は,WebkitBlinkのコーディングスタイルに従って書かれているそうです。そのため同氏は,C++/Java/Pythonで書くようにGo言語のコードを書くと読みにくいコードになり,Go言語の考え方とは違う書き方で書いてしまって,非常に書きづらくなると指摘していました。

可読性のあるGo言語のコード

同氏は,Go言語のコードを書くうえで,言語の単純さをうまく使って書くことが大切であると主張していました。そして,Go言語で書くと簡単に以下のようなコードにできると述べていました。

  • 明瞭・簡潔
  • 使いやすいAPI
  • 適切なコメント
  • 素直なコードフロー

特にゴルーチンを使った並行プログラミングは,C++などで書いた場合に比べて,非常に読みやすいコードフローになると述べていました。このようにGo言語で書かれたコードは単純で読みやすいコードになりやすく,とあるGoogler(Googleの社員)は,Googleが提供するサービスで,サーバで何が行われるかを調べるときは,Go言語での実装だと余計なコードが少なく,本質が一番わかりやすいと述べていたそうです。

Go言語で読みやすいコードを書くための優れたツールとして,以下のツールが紹介されていました。

  • go fmt:コードをGo言語の標準フォーマットに変換するツール
  • go vet:間違えやすいコードを指摘するツール
  • golint:スタイルの問題を指摘するツール
  • godoc:コードからAPIドキュメントを作るツール

しかし同氏は,読みやすい(情報を認識しやすい/脳に負担がかからない)コードを書くには,これらのツールに頼るだけでは不十分で,書き手と読み手の双方が言語特有の手法・慣用表現を理解する必要があると主張していました。また,Go言語の言語仕様はシンプル(50ページほど)であるため,言語仕様の理解はそんなに大変ではないと述べていました。

この講演では,以下の点に着目してレビューを行い,実際に指摘したことについて説明がされました。

  • ミス/バグはないか
  • 見やすくレイアウトされているか
  • コードフローはわかりやすいか
  • APIはわかりやすいか

写真2 レビューのポイント

写真2 レビューのポイント

著者プロフィール

上田拓也(うえだたくや)

KLab(株)所属。Go Conference 2014 Autumnスタッフ。

業務ではJavaScript,Luaなどを扱っている。

大学時代にGo言語に出会い,それ以来Go言語にのめり込む。

時間があると,Go言語の勉強会に参加している。

Go言語のマスコットのGopherの絵を描くのも好き。

Twitter:@tenntenn

コメント

コメントの記入