読者です 読者をやめる 読者になる 読者になる

Minecraftとタートルと僕

PCゲームMinecraftのMOD「ComputerCraft」の情報を集めたニッチなブログです。

書いたコードを他人に見てもらおう(マサカリのすすめ)

ComputerCraft Minecraft プログラミング教育

はじめに

全国で5000人くらい*1はいると思われるComputerCraftユーザーの皆様こんにちは。

今日はまず、こちらの動画を紹介します(ニコ動です)。

職業プログラマーならばさほど問題ないのですが、僕を含む趣味プログラマは、日々、独自の作法でCCプログラミングをしています。

しかし、そのコードが他人からみて見やすいのか、変な癖がついていないか、そしてよりよいコードにするために何を心がければ良いか。

一人孤独にCCプログラミングしていると不安になりますよね。

「誰かに見てもらえないかなー。チラッチラッ。でも恥ずかしいしなぁ・・・。悩ましい悩ましい」

そこで、この動画です!

なんと、マサカリを投げてくれるCCプログラムのコードレビューをしていただけるとのこと。

すばらしい! この機会を逃す手はありませんよね。

動画でコードレビューの説明を聞き、コードレビューを受けるときの心構えを理解したら、mesさんにTwitterなどでお願いしてみましょう。

コードレビューをお願いする方法

説明されているコード提供方法は2つ。

  1. Gistに自分のコードを貼って、Twitterでmesさんにコードレビュー依頼する。
  2. GitHubにアカウントを持っていてGitを使い慣れているならば、プルリクエストでコード提供。

見やすさと言う点では2.ですし動画ページのコメント欄でも推奨されていますが、Gitわからんという人は1.でも良いのではないかと。なお、Gistというのは、Gitサイトがpastebinを真似したサービスと説明するとおおよそのイメージがつかめるのではないでしょうか。

どちらかの方法でコードを提供する準備ができたら、Twitterでmesさん(twitter: @mes_mc)にお願いしましょう。

マサカリ投げていただきました

僕もコードレビューをお願いしました。

お願いしたコードは以下のとおり。(長いですしあまり良いコードではありませんが><)

そしてプルリク経由でコードレビューお願いして、いただいたコメントは以下のとおり。

たくさんレビューコメントをいただいたのですが、簡単にまとめると、以下の4つが中心になります。

  1. 誤解をまねく関数名がある
  2. loadAPI()を使ったほうがよい
  3. 改行を入れてもっと見やすく
  4. 植林部分のコードについて改善案

1.の関数名については、つい手を抜きがちなところなので、今後も気をつけたいところです。

2.のloadAPIは、できるだけファイル1つだけのプログラムにしようと手持ちのAPIから関数を無理やりコピペしたのですが、そのコピペという手抜きバレバレだったようです。申し訳ないw

3.の改行について。これは僕の悪い癖です。おそらく今回のレビューで一番気をつけないといけない部分。

空行を入れないというのは、ブログにコードを掲載することを前提とした悪癖なんですよね。レビューをお願いしたコードは210行程度ですが、改行入れて見やすくすることを考えるとおそらく250行近く行くはずです。

250行のコードをブログに掲載しても大丈夫かな? ドン引きしません? むしろ見やすくするために空行入れたほうがいい? このあたりぜひ皆さんのご意見を聞きたいところ。

とはいえ、コードレビューしていただくなら、ブログ掲載用にコードを密集させたものではなくより見やすく改行をいれたコードを送るべきでした。このあたり、一般的な常識と外れていたんだなと反省しきり。

4.の植林部分のコードついては、松の巨木の生長パターンと関連していろいろ試行錯誤した結果なのですが、改善案をいただいて、より工夫ができそうなことに気づきました。

これらコメントにより自分の癖を自覚でき、また色々な発見もあり大変有意義な機会でした。

つまり、mesさんの投げたマサカリが僕の頭に綺麗に刺さって、いろいろと目が覚めたわけですね*2

ありがとうございました。

僕ももっと勉強して、成長して、色々な方と互いにマサカリを投げ合えるくらいにまでなりたいものです。

もう一つ重要なコメント

上記の4つのコメント以外にも、重要なコメントがありました。

[IMO] Turtleの仕様上の問題などもありますが、関数名の方向だけが違うものが結構多いので、メタプログラミングとかで重複部分をまとめてあげたいですね。 実際にやろうとするとかなり面倒ではありますが...

これね・・・。本当にそう思います。新しい関数を定義するときに、正面/上/下と必ず三方向の関数を作らないといけないのは面倒ですよね。なんとかうまい方法ないものか。

やるとしたらTurtleAPI自体を拡張しないといけないでしょうね・・・。今後の課題です。

おわりに

まとめ。

  • 自分ひとりでCCプログラミングしている人はぜひ他人に見てもらいましょう。
  • 他人に見せることを意識したコードを書くというのはとても良い経験になります。
  • 実際に見ていただくことで、自分だけの視点では気づかない発見があるかも。
  • 自分の悪癖にも気づくかも。無くて七癖と言いますよねw
  • 今なら、mesさんがレビューしてくれるそうですよ!ぜひお願いしてみよう。
  • mesさん素敵。抱いて!

*1:てきとー

*2:変な性癖に目覚めたわけではありませんw