2012年01月26日 13:00 [Edit]

コードについて書く方がコードを書くより読まれる現実

ご高説もっとも。

小野和俊のブログ:メンテナビリティの高いソースコードを目指して
ソフトウェアを中長期にわたってメンテナンスしていく場合、メンテナンスしやすいコードと、メンテナンスしにくいコードとの間には、同じ機能を実現していたとしても、その価値には雲泥の差があります。

で、どこですか?

あなたの、コードは。


本blogの記事も、5000を超えて久しい。コードが入ったものもあるし、入っていないものもある。

これくらい書いていると、いやでもわかることがある。

読者のほとんどは、コードを読みたくないのだ、ということ。

ざっくり、記事中にコードが一行あるだけで読者は半減する。

スティーブン・ホーキングはたしか「数式一つごとに読者の数は1/10になる」と言ってたので、それよりかはだいぶましかも知れないけど。

とりわけ、現在早稲田大学で研究助手をしている中野鐵兵さんのソースコードはメンテナビリティが極めて高く、10年経った今でも「とても良くできていて、自分もがんばろうと思った」と社内で高く評価されています。アプレッソを立ち上げた2000年当時、共に24歳だった私たちは、私がクライアント、中野さんがサーバーを担当し、ピッチャーとキャッチャーでバッテリーを組むように阿吽の呼吸で日々の開発を進めていたものでした。彼の書いたサーバーのコードは今でも輝きを失うことなく、1400社を超える企業のデータ連携基盤として今でも活用され続けていいます。

私が書いたコードは、ほとんどのLinuxと全てのMac OS Xに搭載されている。ためしに

OS X なら
grep dankogai `find /System/Library/Perl -type f -name \*.pm`
Linux なら
grep dankogai `find /usr/lib/perl* -type f -name \*.pm`

とでもして欲しい。

しかしこれらのユーザーのうち、一体何人がコードまで読むのだろうか。それ以前に「コード」という言葉が何を意味しているのか知っているのだろうか。そして知っている人たちのうち何人が、困ってもいないのにわざわざコードを覗くのか。

私は、それでよいのだと思っている。

コードが読まれないというのは、コードを読む理由がないということで、コードを読む理由というのはたいていの場合「コードを読まざるをえないほど困った事態が生じている」ということなのだから。

Appleはこのことを熟知している。熟知しているからこそ、iOSデバイスは売れるのだ。参考までにiOSデバイスには私のコードは入っていない(と思う。少なくともPerlは入っていない)。仮に入っていたとしても、それを覗く手段をAppleはiOSユーザーには提供していない。提供したら負けだとAppleは本気で思っている。

「常に『自分の作品です』と胸を張れるソースコードを」というのは、結局のところコーダー視点でしかない。ユーザーにとってコードとは目にすることがなければないほどよいものなのだ。たとえユーザーがコーダーであったとしても。

「コードが見たい」と思われたら負けだと思え。

少なくともプロのコーダーはそうなのではないか。

もちろん「常に『自分の作品です』と胸を張れるソースコードを」というのは、「見るまでもなく動くコード」を書くための一番の近道だ。私もその方法をよしとしている。というかコンパイル後のバイナリーファイルだけ提供することが可能なC(++)やJavaならとにかく、ソースコードを直に実行するスクリプト言語で書いたものに対してはそれをよしとするしかない。

しかしそれでさえ手段であって目的ではないのだ。

それでも、やはり度し難い。

コードについて語る方が、コードそのものを語るより多くの人が耳を傾けることが。

そしてコーダーでさえその例外ではないことが。

だからせめてコードについて語る人は、その資格があることをコードをもって示して欲しい。

コードそのものではなく、コードへのリンクでも構わないから。

Dan the Coder

追記:

この記事へのトラックバックURL

この記事へのトラックバック
先日、ソースコードのメンテナビリティについてのエントリを書きましたが、dankogaiさんから「で、具体的にどんなコード書いてるの?」という指摘がありました。 返信エントリでは、 ...
DataSpiderにおけるコンポーネント間のインタラクションの設計と実装【小野和俊のブログ】at 2012年01月30日 14:30
昨日、「メンテナビリティの高いソースコードを目指して」というエントリを書いたところ、dankogaiさんから、「コードも見せていないお前にコードを語る資格はない」と怒られてしま ...
dankogaiさんへの返信【小野和俊のブログ】at 2012年01月26日 17:05