「良いコードを書く技術」を読みました

良いコードを書く技術 ?読みやすく保守しやすいプログラミング作法 (WEB+DB PRESS plus)

良いコードを書く技術 ?読みやすく保守しやすいプログラミング作法 (WEB+DB PRESS plus)

生まれて初めて献本いただきました、ありがとうございます。

内容については著者の縣さん (id:agt) の このエントリ で紹介されておりますし、具体的な内容は本書に譲るとして、「良いコード」について、私なりに感じた事を思いつくままに書き留めておきます。

「良いコード」とは、人によって、立場によって、組織によって、時代によって、いろいろな解がありえる問いだと思います。本書はまず最初にその「良いコード」を

保守性が高い
すばやく効率的に動作する
正確に動作する
無駄な部分がない

http://gihyo.jp/magazine/wdpress/plus/978-4-7741-4596-9/0002

と、定義するところからはじめています。

ふと、自分を思い返すに、コードを書き始めた頃はサンプルが沢山のった入門書や雑誌をよく読んでいました。(当時は Java PRESS もまだありました) 少し慣れてきて、ある程度決まった文脈の中であれば、入門書をひらかなくてもコードを書けるようになった頃、どう書けばあとで悩まないのか (=保守性)、同じような処理を沢山書いてるけれどうまくまとめられない (=無駄な部分が無い)、そういった事に迷って、自分がプログラムを書く際の「寄る辺になるもの」を求めて、書籍を探し求めては読んでいました。

特定の言語をベースにしたものですが、例えば「 オブジェクト指向Perlマスターコース―オブジェクト指向の概念とPerlによる実装方法 」にチャレンジしてはさっぱり理解できず、はたまた「 Javaの格言―より良いオブジェクト設計のためのパターンと定石 」を読んでは、何だか分かった気になったり、と、右往左往しながら、コードを書いていました。デザパタを知ったら、なんでもデザパタにあてはめてみたり...

私と同様に、コードを書く事に慣れるようになった後に、漠然と自分のコードが上記のような「良いコードなのか」不安に感じた事がある方は多いんじゃないかな、と思います。この本には、そういう不安に対して指針となる内容が詰まっています。

また「良いコードの価値」というのも難しい問いかけです。

先日とあるコミュニティにて「言語による生産性の違い」みたいな話題があがりました。私はどんな言語でも「良いコード」を書くのにかかる道程はそれなりに長く、特定の言語がそれを劇的に短くはしないだろう、と考えています。それもあり「そんなに変わらないのでは?」と言ったところ「全然違うよ」とおっしゃる方がいました。曰く「新人や、アルバイトの子でも A という言語であれば 2,3 週間で 1 画面くらいは組めるようになる、かたや B だと 2-3 ヶ月はかかる。その差は歴然」と。

ソフトウェアを開発するにあたっての「生産性」で考えている前提が違っており、その方が、売値に対する原価という文脈でおっしゃっている事自体は理には適っているとは思いました。コードを書いて食べて行く事を選択した以上、ビジネスとしての観点を忘れてはいけないのは事実です。

ただ、私は「良いコード」は「ソフトウェアの (長期的な) 品質」につながり、それはソフトウェアを使う人への安心や利便性の向上と密接に結びつき、また作り手にとっても、新たなステップアップにつながるものになる、と信じています。私にとって、職人としてコードを書く事を選んだ以上「より良いコードを書く事」「より良いソフトウェアを書く事」それを求めることは、とてもとても大切な価値観です。

そんな思いの中、手に取った本書の「はじめに」には以下のように書かれていました。

私が考える良いコードの具体例は本書の中で解説していきますが,一番大切なのは「良い仕事をしたい」「良いソフトウェアを作りたい」という気持ちです。この本を手に取ってくれたあなたの中にも,きっとそういう気持ちがあると思います。

良い仕事をすると仕事にやりがいを感じられるようになる,つまり仕事が楽しくなります。そして職人として仕事に誇りが持てるようになります。

http://gihyo.jp/magazine/wdpress/plus/978-4-7741-4596-9/0001

35歳を前に、私もまだまだ「良いコード」を書く道を追い続けたいな、と気持ちを新たにさせてもらえた一冊でした。(33歳男性 : 京都府在住)