Developer's Blog

Rob Pike先生来日

Fenrir Advent Calendar 2014

こんにちは、とある Plan 9 使いの門多です。
「2014年にグッときたコレ」は Go Conference 2014 autumn で Rob Pike 先生来日!です。
イベントに参加して、尊敬する方の講演を聞いて、
最後に一言二言とはいえ会話できたこと(相当に拙い英語でしたが…)は最高の体験になりました。

グッときたコレ、について全部言ってしまいましたね。とはいえ、3行で終わるわけにもいかないので、
以下では、参加した話をもとに偏った角度から Plan 9 と Go についてご紹介したいと思います。
キーノートの内容は Gihyo.jp の Go 言語の父と呼ばれる Rob Pike 氏による基調講演
~ Go Conference 2014 Autumn 基調講演1人目
に詳しくまとまっていますのでご参照ください。

Go Conference とは

Go Conference は、年に春と秋の2回にわたり行われている Go 言語のイベントで、GoCon (ごーこん)と呼ばれています。
私は今年の春から参加させてもらっていますので、去年の内容は分かりませんが、
今年の春は、午前の部はハンズオンともくもく会があり、
午後からはキーノートの後に Go のプロダクション導入事例プレゼンテーションでした。
秋は、午前・午後通しでプレゼンテーションなスタイルでしたが、
導入事例に限らずコミュニティの紹介からコンパイラ改造まで幅広い内容になっていましたので、
Go を少しでも知っている人であれば楽しめる内容だったと思います。

秋の内容は以下サイトによくまとまっていますので、興味がありましたらご一読ください。

Plan 9 使いの視点で

Rob Pike 先生は、最近は Go の父とあらわされることが多いのでしょうか。
Go 言語コアメンバーのひとりで、2005年頃まではベル研で Plan 9 の開発をされていました。
また、カーニハン先生と共著で『UNIXプログラミング環境』『プログラミング作法』という2冊を執筆されており、
この2冊には本当に影響を受けました。いまでこそ当然のように Plan 9 を使っていますけれど、
もともとをいえば、この書籍に影響されたことが、Plan 9 を使い始めたきっかけだったように思います。

古い書籍だけあって、特に『UNIXプログラミング環境』のほうは書き方が古かったり、
ものによっては動かない(確か yacc を使ったコードの1箇所でそのままでは落ちる)部分もありますけれど、
プログラムの書き方や考え方など、今でも初学者の人に読んでいただきたい書籍です。

ほかにも、インターネット上に彼の著作が公開されています。個人的に面白かったものをご紹介します。

C 言語でプログラミングする際の覚書(Notes on Programming in C)は、
コードの書き方におけるスタイルガイドとしてよくできていると思います。
同じ著者なので当然ですが、書かれている内容はおおむね『プログラミング作法』の内容と同じですね。

style(6) は Plan 9 の man page です。
ガイドというよりは具体的なルールの形になっています。

ifdef Considered Harmful, or Portability Experience With C News
C の #ifdef についての指摘です。『プログラミング作法』にも同じような記述がありますね。
また、だいぶ前に、Rob 先生からサインを頂いた方から話を聞いたのですが、no #ifdefs! と添えられていたそうです。
Go Conference 2014 autumn のタイムラインをみているとサインをもらっていた人が写真を上げていましたが、
そこにも no #ifdefs! と書かれていました。

インタビュー記事ですが、The Setup / Rob Pike も面白いです。
記事の中でも acmeエディタ(Plan 9 のエディタです)を使っていると言っていますし、
Go Conference の Twitter タイムライン上でも、acme を使われているというツイートが流れていました。
また、去年の話になりますが、Plan 9 の ML で Rob 先生は、
左手のトラックパッドでスクロール、中央にキーボード、右手のマウスでポイントという環境で作業をされているようです。

私も、Plan 9 ユーザなので当然 acme を使っていますが、acme はマウスのボタンを組み合わせてテキストを編集していくスタイルです。
トラックパッドも Apple のマウスも同時押しができないということもあり、そのまま acme を使うのはしんどいので真似てみました。

作業環境

欲をいえばマウスはホイールではなく3ボタンがいいのですけれど、まあまあ快適です。

Go 言語

Go はきれいな手続き型言語です。

Go を知ったのは2009年頃、Plan 9 の集まりで話題に上がった時だったと思います(issue9 の頃ですね)。
知ったのは古いけれど実際に使い始めたのは Go 1.1 がリリースされてからなので、
それほど経験が長いわけではありませんが、Go はとても覚えやすく使い易い言語だと思います。
(ただ、よくある OOP の感覚で使うとだいたい破綻します。インターフェイスをうまく使うように視点を変えましょう)

Go の仕様は小さいので、公式の Effective Go は1日あれば読めますし、
それだけ読めば(標準パッケージを調べながらになりますが)ある程度のものは書けるようになります。
ちょうどよい機会なので、この年末年始に勉強してみるといいのではないでしょうか。
最近は、Plan 9 でも Go が動くようになりましたので、やる気のある方は Go on Plan 9 もいかがでしょうか。

今回紹介した書籍

  • UNIXプログラミング環境
    プログラミング作法

    フェンリルのオフィシャル Twitter アカウントでは、フェンリルプロダクトの最新情報などをつぶやいています。よろしければフォローしてください!

Copyright © 2019 Fenrir Inc. All rights reserved.