ガブリ途中下車の旅〜マサイ族の砦〜

札幌 Ruby 会議 2012 で発表してきました

9 月 14 日 〜 16 日の間、札幌市産業進行センターで開催された札幌 Ruby 会議 2012)で、ソーシャルコーディング時代のふつうのプログラマサバイバルガイド という発表をしてきました(参加の感想はまた別エントリで)。聞いていただいたみなさん、ありがとうございました。

内容は、GitHub 導入後の永和システムマネジメント内でどいうった気持ちでコードを書くようになったかというお話です。ミサワトークはできませんでしたが。

できたコードの善し悪しはおいておいて、誰もがコードを書いているときって全力で書いていると思います。その全力で書いたコードに対して、正しいこととはいえ批判がつくというのはつらいことだと思います。しかし、コードを書くことを生業として選択した以上、正しくありたいとわたしは思います。ですので、正しくあるために努力し続けていかないといけないと思うわけです。

また、TimeLine 上で以下のような意見や質問をみかけました。

  • 反発すればいいのに
  • 彼はレビューさせてもらえてないのだろうか

「反発すればいいのに」という意見については、していいと思いますし、することもあります。反発するには、自分の書いたコードに対しての正しい意思が必要になると思います。そういうコードが書けるように精進していかないといけないと思います。

レビューは、当然わたしもしてます。レビュワーになる資格というのはなくて、コードを見れる人なら誰でもレビューワーになれます。

最後になりましたが、仕事帰りに話の筋の相談にのってくれたkoicさん、スライドができてないのに札幌駅のドトールでレビューしていただいた角谷さん、会期中実行委員長業の傍らレビューや相談にのっていただいた島田さん、わたしの仕事や私事の都合で資料を置くことしかできなかったのにいろいろフィードバックをくれたやさしい同僚たち、ありがとうございました。

リーダブルコードを読んだ

訳者の角さんがlivlisで感想を書く人を募集していたので、応募したところ本書を頂くことができました。ありがとうございます。

この本は、「CleanCode」や「リファクタリング」に書かれているエッセンスが「CodeCraft」のようなイラストを交じえて、読みやすい文章で書かれています。それが安心の角さん訳になっているので、大変読みやすいです。

本書は「読みやすい(リーダブルな)コード」を書くためにはどうするとよいかという内容になっています。良いとされるコードを「読みやすい」と置いているのがミソと感じました。この本では、良いコードに必要とされているオブジェクト指向の原則とされていることが難しい言葉でずらずらと書かれているのではなく、「読みやすいコードは、こうである」というのが平易な文章で書かれています。

この本のよいところは、手をつけやすいところから話をしているところだと思いました。まずは、変数名等の名前のつけ方から、コード整形、コメントなどのコードの見ためから入っていきます。「良い名前が良いのはわかるけど、どうやって付けるんだよ?」とか思うかもしれないけど、よい名前の基準や選び方などがちゃんと解説されている。何が良いかだけでなく、何故良いかもちゃんと書かれているので、漠然と「良いコードとは何か?」と悩んでいる人は、この基準をベースに考えていけるようになると思います。

またこの見た目の修正は、コードを読むときに適用していけば、コードの理解も深まるしリファクタリングにもなるしで一石二鳥だなぁと感じました。本書を読んでいる最中に実際のプロジェクトに適用していったところ、コードのパターンが明確になり、より大きなリファクタリングをやるための下準備になると思うことができました。

また、日本語版の特典として株式会社クリアコードの社長である須藤氏の解説が書かれています。解説はクリアコードのブログであるククログにて、公開されています。解説では、須藤氏によるリーダブルなコードを身につけるために実践すべきことが書かれています。リーダブルなコードを書くためにはチームでも実践する必要があるんだということが書かれているのが特徴です。本編では個人で実践することが書かれており、解説ではリーダブルなコードはチームで育てる必要があるというのを認識させてくれ、とてもバランス良く感じます。

まだ解説を全部暗記できていないのですが、最近は他の人のコードを見たりすることが多くなったので、解説中に書かれている提案コミットは実践するようになりました。解説にあるとおりコミットの diff だけでは何故が伝わらないので、どうしてこうするかというのをコミットメッセージや pull request のコメントに書くようにしています。

最後に、この本をボッチで試行錯誤してコードを書いている人にお勧めしたいと思います。ボッチでというのは、他の人にコードを見せていない、見せていないわけではけどフィードバックを貰えていない人のことを指します。そういった人は、コードの基準が持てず自分のコードに自身が持てないのではないかと思います(私は幸いにして、会社の同僚からツッコミを得ることができ、まだまだ実践はできてませんが良いコードとはどういった感じかというヒントは貰えております)。自信が持てないと、自分のコードを公開するということも大変怖いと感じるのではないでしょうか。そんな方は、この本を読んで「良みやすい」コードの基準を知り、もっと自信を持って書いていけるのではないかと思います。

永和システムマネジメントが札幌Ruby会議のスポンサーになりましたと同僚が発表しますのお知らせ

勤務先の永和システムマネジメントが札幌 Ruby 会議 2012 の Platinum スポンサー になりました。

あと、札幌 Ruby 会議 2012 では(今のところ)以下のメンバーが発表する予定です。

いずれの発表も弊社で Ruby を使って開発しているメンバーの興味あることや知見の話になると思うので、興味のある方は来週発売するらしい参加チケットを買って札幌に聞きに来てください。発表者はモチロンですが、弊社のおっさんから若手メンバーたちも多数参加予定なので、弊社に興味がある人は是非絡んでください。

みなとRuby会議01にいってきた

yokohama.rb

アイドルのPV撮影とかぶってましたが、みなとRuby会議にいってきました。とてもよい会議でした。

席はスタッフ側がテーブルを決めており、最初の「ソーシャルコーディング」と題したコーナーで、 同じテーブルの人同士でペアプロをしました。わたしは高橋会長とペアプロしました。会長とは いろんなところで顔をあわすことがあるのですが、一緒にプログラミングをするというのは当然初めてで楽しかったです。

次にminami.rbのつじたさんによる発表もよかったです。2年ぐらい前のRails勉強会@東京で、いきなり 「大阪から来ました」と言われてたときの印象がものすごく強いです。その後、単身RailsConfとかも行かれてたし。 とても、アグレッシブなの方なのですが、コミュニティに参加してみようという発表はとても実感がこもっている感じで胸うつ感じでした。

2番手の発表者は、大場様。Railsの紹介なのですが、大場様がいかにRailsが好きかということがよく伝わる発表でした。

最後のnagachikaさんのEnumerable::Lazyの話も大変おもしろかったです。LazyかわいいよLazy。会が終わった後にnagachikaさんとnari3さんとでLazy議論できたのも大変よかったです。nagachikaさんが発表のサンプルのためにと 書かれた継続フレームワークのようなサンプルのコードを後で読みたいと思います。

閉会の挨拶でYokohama.rbファウンダーのdan5yaさんが、「Yokohama.rbはみんなが好き勝手にやっているコミュニティ。継続していくことを目標としている」というのが、とてもよかったです。いいコミュニティだなぁと思いました。

あと余談になりますが、わたしにとってYokohama.rbは1, 2年ぐらい前のRails勉強会@東京に来てくださってた方々(今もお世話になっている方々も多いですが)がいっぱいいる感じで、その人達に会えてとてもよかったです。

みなとRuby会議02, 03の開催、大変期待しています。みなさん、お疲れさまでした。

openFrameworksを触りだしました

openFrameworks Tokyo Workshop #1の記事を読んで、openFrameworksへの興味が再燃してきました。

openFrameworksで新規プロジェクトを始める場合、exsamplesにはいっているemptyExsampleをコピーして始めるようです。が、このままだとプロジェクト名もemptyExsampleのままなので、そのディレクトリ内になるファイルの’emptyExsample’という文字列を全て置換してから、プログラミングを始めるということをやっているんだけど、これが正しいやり方なのかしら…

しばらく、いじってみます

node.jsでsha1の値が欲しいとき

Cryptoモジュールを使用すればいいのですね。

1
2
3
4
5
6
7
8
9
10
crypto = require 'crypto'

# sha1でハッシュを作ることを指定
sha1_hash = crypto.createHash 'sha1'

# 使用する原文を追加
sha1_hash.update 'abcdefg'

# ダイジェストの値を求める。引数でhexやbase64等を指定できる
sha1_hash.digest 'hex' #=> 2fb5e13419fc89246865e7a324f476ec624e8740

Npmモジュールを公開する方法

先日npmモジュールを作成し、公開したときのメモを残しておきます。

ユーザ登録

まず、ユーザー登録します。ユーザ登録するには、npm adduserコマンドを実行します。

1
$ npm adduser

コマンドを実行すると、対話的にユーザ名とemailアドレスとパスワードを入力します。その情報は~/.npmrcに保存されます。

package.jsonの作成

npmモジュールの情報を保存しておくpackage.jsonを作成します。npm initを実行することで、対話的に情報を入力していきます。

1
$ npm init

package registryへの登録

作成したnpmモジュールをpackage registry に登録します。package.jsonのあるディレクトリでnpm publishします。

1
$ npm publish

im.kayac.comにメッセージを送るnpmモジュールを書いた

昨年iPhoneに変更して、push通知サービスにBoxcarを使っていたのですが、私のiPhoneではうまく動かないことが多いため不満でした。 そこで、(今更感はありますが)im.kayac.comを使うことにしてみました。

最近coffeescriptを触る機会が増えてきたので、node.jsで使えるライブラリをcoffeescriptで書いてnpm化してみました。node.jsでリアルタイムな何かをiPhoneやAndroidに通知したいとき等に、お使いください。

まだ、メッセージを送るだけしかできないので、残りのところもちゃんと作っていこうと思います。

初めてのnpmモジュール作成だったので(その手順とかは後で書く)、このモジュールの配置でいいのかとか大変疑問なので有識者に聞いてみたいところ。

Clean Coderを読んだ

ボブおじさんの新作、Clean Coderを読みました。

アジャイルソフトウェア開発の奥義Clean Codeはコードに対するお話しでしたが、この本はプロとしての職業倫理や職業感についての本でした。背筋が伸びるようなことが書かれているのですが、ボブおじさんが若い頃のエピーソードと一緒に綴られているので、勇気づけられる感もあります。 内容も、どのような態度をもって仕事をするかという話から、どういうプラクティスをやらないといけないのか、チームでの仕事の仕方、教育についてと多岐にわたっています。プログラマが知るべき97のことで、咳さんが書いている「ロールプレイングゲーム」の理想のプログラマにした人の例が書かれているという印象をうけました。

プロとしての生き方という観点だと情熱プログラマーがありますが、情熱プログラマーはキャリアの形成についてのお話ですが、Clean Coderは今の仕事をどのようにこなすかという話でした。

ページ数も200ページぐらいなので、さくっと読めておすすめです。

ヒミズを見てきた

ヒミズを見てきた。劇場で見る映画として今年2本目。一本目は宇宙人ポールだった。これは後で書くかもしれない。

もともと古谷実作品が好きで、漫画版のヒミズは連載中に読んでいてけっこう好きな作品だった。とはいえ、精神状態によって読めるとき読めないときがあるんだけど。で、監督は園子音。園子音映画は恋の罪しか見たことないんだけど。しかし、開始すぐに園子音作品だなぁって思えるスタート。

感想としては、全体で見ると原作好きということもあって、なんとなくもやもやした。悪くはないんだけどね。原作は2000年初期の中学生について描かれているわけなんだけど、映画では2011年3月11日を越えた中学生のリアルを表現するってことで、震災後なんだよね。

個別で見ると、二階堂ふみの茶沢さんの怪しい演技とか、中学生からオッサンに年が変更されていたけど原作通りだった夜野はよかった。ただ、住田の周りに大人を多くしたかったのかなぁと思うんだけど、ホームレスを周りにいっぱい置いたのはちょっとなぁ。あと、窪塚洋介の演技を久しぶりに見たけど、あいかわらずって感じでよかった。