■2007-01-15
* [近況] あけましておめでとうございます
いや、もう2週間もたってしまって、あけましてもへったくれもないのですが、今年もよろしくお願いいたします。
冬コミで足を運んでくださった皆様、本当にありがとうございます。1冊も売れないと思っていたので、望外の喜びです! どなたか存じませんが、席をはずしているときに来られたようで、申し訳ないです。「今月のAcme」頑張りますので、どうぞよろしくお願いします。
なお、『マルチ中毒』はまだ大量に余っていますので、もしもご所望の方がおられましたら、どこかで(……どこ?)私を見かけたときなどに一声かけてやってください。
本文中で使用したモジュールはこちら(BeautifulPerl.pm)にあります。
皆様のこの一年が良いお年でありますように。
* [今月のAcme] 苦い君への年賀状
■人類が誇れる文化生んだPerl
【してはいけないこと】
新年おめでとう。君にとって、日本そして世界にとって、今年のコードが昨年より少しでもよいコードになるように祈っております。といっても、少しでもコードをよくするのは実は大変なことです。
君の生まれたころに比べ、Perlerの書くコードは比較にならないほど見通しが悪くなっています。フリーのCGIによる学習の激増もあり、世界で飛び抜けてよかったソースの見通しがここ10年ほどで一気に崩されてしまいました。
道徳心の方も大分低下しました。君の生まれたころ、Acme::BleachもAcme::Oppaiもありませんでした。他人の迷惑にならないことなら何をしてもよい、などと考える人はいませんでした。
道徳心の低下はAcme Authorだけではありません。プログラミングがらみで、コーディング規約に触れないことなら何をしてもよい、というスーパーハカーが多くなりました。アレゲな処理はバッドノウハウでなんとかなる、と公言するような人間すら出て、ななろく世代のgeekとして喝采(かっさい)を浴びました。コーディング規約には「コメントに嘘を書いてはいけません」「場当たり的に処理をしてはいけません」「古いCPUやメモリの不自由なサーバをいたわりなさい」「通信プロトコル通り挨拶(あいさつ)しなさい」などと書いてありません。「SEの前で欠伸(あくび)や薄笑いをする時は口と鼻を覆いなさい」とも「デスマーチでてんぱったり匙を投げ出してはいけません」もありません。すべて道徳なのです。プログラマのあらゆる行動をコーディング規約のみで規制することは原理的に不可能です。
【惰性で奮い立つPerler】
コーディング規約とは網のようなもので、どんなに網目を細かくしても必ず隙間があります。だから道徳があるのです。規約集が厚くレビューを多く必要とする言語は恥ずべきプログラミング言語であり、コーディング規約は最小限で、プログラマが道徳や倫理により自らの行動を自己規制する言語が高尚な言語なのです。Perlはもともとそのような言語だったのです。
君の生まれる前も会社に汚いコードはありました。昔も今もこれからも、汚く書きたがる者とそれをメンテナンスさせられる者はいるのです。世界中どこも同じです。しかたのないことです。
でも君の生まれたころ、汚いコードのメンテナンスによる殺意はほとんどありませんでした。生命の尊さを皆がわきまえていたからではありません。メインフレーム全盛時代、コストなど目の玉が飛びでるようなものでしたが、汚いコードのメンテナンスで殺意を抱く新人は皆無でした。
汚いコードがあっても殺意を抱くまでには発展しなかったのです。コード行数が減るのを憎むこころがあったからです。管理もせずに大勢で1つのモジュールを弄ったり、6年目の社員が1年社員並の仕事しかしなかったり、わかってないのにオブジェクト指向に手を出す、などということはたとえあっても経験不足による一過性のものでした。出来もしないリファクタリングを続ける者に対しては必ず「もうそれ位でいいじゃないか」の声が上がったからです。
君の生まれたころ、デスマーチに脅かされながら働くようなプログラマはほとんどいませんでした。会社への忠誠心とそれに引き換えに終身雇用というものがあったからです。不安なく穏やかな心で皆がすげぇ適当にコーディングを続けていたから、それに嫉妬(しっと)した多言語プログラマから暗号みたいとかソース汚すぎとか言われ続けていたのです。Perlerは省略やわけのわからない変数名、forもforeachも一緒などの惰性で奮い立つ言語使いです。ここ1、2年余り、アジャイルとかでこのようなPerlerの特性を忘れ、CatalystとかJiftyなど素敵ツールの開発がなされてきましたから、工数水増しさえままならないのです。
【モニタ消し読書しよう】
なぜこのように何もかもうまくいかなくなったのでしょうか。PerlerがPerlへの誇りや自信を失ったからです。それらを失うと、自分たちの誇るべき特性や伝統を忘れ、他言語のものを気軽にまねてしまうのです。
君は学校で、Perl5はオブジェクト指向が後づけでできた恥ずかしい言語だった、バージョン4はサブルーチンの呼び出しに&をつけたからもっと恥ずかしい言語、その前はもっともっと、と習ってきましたね。誤りです。これを10年も続けてきましたから、今ではPerlを恥じることがgeekな態度ということになりました。
無論、アソコに恥ずかしい部分があるのは、どの人間もどのプログラミング言語も同じです。しかしそんな部分ばかりを思いだしうなだれていては、未来を拓(ひら)く力は湧(わ)いてきません。そんな負け犬に魅力を感ずる人もいないでしょう。
10年間世界一の綺麗なコードを書き続けてもPerlへの真の誇りや自信は生まれてきません。モニタを消して読書に向かうことです。『プログラミングPerl』に書かれている例文、名作のパロディ、perldocなどに触れ、独自の文法や構造に接することです。人類の栄光といってよい上質な文法を生んできたラリィやPerlに対して、敬意と誇りが湧いてくるはずです。君たちの前任者や先輩の果たせなかった、珠玉のようなプログラミングの再生は、君たちの双肩にかかっているのです。
世間から1週間遅れてますね! えー、事実に反しているとか、内容が無茶苦茶等々につきましては、本家のテーストを出来るだけ再現しようとした結果……ですのでご容赦くださいったら、くださいませ!
ご無沙汰しています。品格の話は興味深いですね。<br>最近はどこでも正論の通りにくい世の中であることを感じます。<br>木魚のように狭くてもつつしみのある対応が求められているのかもしれません。<br>それはともかく、木魚に入れなかったご報告と、遅ればせながらのご挨拶でした。
こちらこそ、ご無沙汰しております〜<br>いやあ慎み深さ、確かに必要ですよねぇ。<br><br>木魚は一応復旧してみました。ご報告ありがとうございます。<br>今年こそキノコ食べに行きたいですね!<br>それではこれからもよろしくです〜