2010年11月27日土曜日

Java言語で学ぶリファクタリング入門

結城浩(ゆうきひろし)著
2007年2月5月初版

僕のお仕事はコンピュータソフトウェアのエンジニアなのです。もうソフトウェアを作らない(「コードを書かない」)人もこの範疇に入りますが、僕は未だに書いています。誰かに任せてしまうには惜しい仕事、つまりムチャクチャ楽しいのです、これが。

Java言語で学ぶリファクタリング入門
SBクリエイティブ (2014-03-12)
売り上げランキング: 51,054
多くの人がコンピュータのソースコード(英単語らしきもので書かれた「文章」)なんて読んだことがないでしょうし、なんとなく難しそうに思うでしょうが、意外とそうでもありません。「難しいことをやっている風に見せている方々」が思いのほか多いのがその理由かもしれません。残念なことです。

ソフトウェアを書くのに何の免許も要りません。例えばインターネットユーザが使うショッピングサイトのソフトウェアも、何百万、何千万円のお金を扱う金融機関のソフトウェアも特に何らかの免許を持っていると書けないというものではありません。誰でも書いて良いわけです。医師免許が無い人に盲腸の手術をしてもらっているようなものです(あはは、すっごい悪い例ですな ^^;)。

とは言え、素晴らしいソフトウェアを書く人も大勢いますし、それこそ天才的なアイデアや方法論を発明した方が多くいます。このことと、素人でも誰でも参入できるこのソフトウェア業界こそが今のインターネットの状況を生み出したと言えるかもしれません。手っ取り早く言えば「やったもん勝ち」ということです。いっとき良く言われた「デファクトスタンダードの獲得」がこの「やったもん勝ち」で、所謂「業界標準」にして多額の利益を得ようとすることです。

今もその本質は変わっていません。「規制のことはやってから考えよう」というものです。例えばGoogleのストリートビューもその一つです。恐らく日本の体質的には苦手な姿勢でしょう。日本が保有する技術でこんなサービスの実現は容易でした、要は「やったかやらなかったか」です。護送船団と「出る杭は打つ」の文化では取り難い戦略です。その結果、現在日本がデジタル商品やサービスの多くで出遅れている結果となりました。往年の電化製品やクルマは「アナログもの」であって日本の強みが生かせていたのですが、「デジタルもの」では色々な点での変化が大きくて日本の取り組み方では上手くいかなかったと僕は思っています(今後の巻き返しのことは良くわかりません)。

あれ?書評はどこいった?

ということで本書について。聞きなれない「リファクタリング」というのはですね

あるソフトウェアに何かを指示して得られる結果を変えることなく
そのソフトウェアの体質を改善する

ことです。

つまり、ソフトウェアをより良いものにするものです。ですが、そのソフトウェアを使っている人には直接的なメリットはありません。場合によっては、処理スピードが速くなるかもしれませんが、それを目的にはしていません。

では「より良い」とは「どう良いのか?」ということです。簡単には、ソフトウェアの変更が容易になることです。更には不具合(業界では「バグ」と呼びます)が発生したときにより迅速に不具合の修正が可能になります。その結果「修正費用が無料」になるかどうかは、ビジネスの問題でリファクタリグとは違います。

もっと良いことは、機能拡張が容易になることです。あっという間にサービスが飽きられてしまう世の中、それがインターネットサービスではもっと過激に起こっています。その流れに追随するには、機能拡張が容易であるのは必須なのです。この結果

超有名某大手米国ソフトウェア会社のように、バージョンアップの度に高価なソフトウェア費用が必要で、おまけに拡張された機能が使えない代物である

ような事態(これは悲劇だと考えます)を減らすことができます(無くすことは無理だと思います)。

この利点がソフトウェア利用者のメリットになりますし、この利点こそがリファクタリングの最大の効果だと思います。単に「ソースコードがすっきりした」で自己満足して終わるようなエンジニアもいるような気がしますが.... そんな人こそが先に書いた「難しそうに見せかけている人々」なのです。

実はこの手の書籍は久しぶりに読みました。良書が少ないのと、自分なりの製作スタイルを確立しているからかもしれません。「自分なりのリファクタリング」はやっていましたが、一度ちゃんと理解したいと思っていました。本書を選んだのは著者のは良書が多いからです。期待通りの良書でした。難しい表現は極力避けて、ステップバイステップを繰り返して進める記述は好感を持てました。本当に分かっている人の記述です。

この著者、変わったところでは「数学ガール」てな本も書いています。最近ずっと読んでいる橘玲もそうですが、一つの限られた分野の本だけを書いている作者より他の分野に派生した著作がある著者が僕は好きなようです。もっと言えば「理系文系」分野が相互に絡み合った、さらにどちらの造詣が深い内容が良いです(そもそも「理系文系」と分離する発想が変なのです)。

本書を読んで「リファクタリング」したくなった。つまり「さらに良い仕事」をしたくなりました。とはいっても職場で「リファクタリングしてます」といっても理解されないので、ひっそりとやるしかありません。「こんな機能拡張したよぉ」と言って成果の日の目を見させるのが目的なので、今のところ理解して頂く必要はないのです。顧客に「タダでこの機能拡張しますよぉ」と言えるかどうかは、やはりリファクタリングではないビジネス上の課題。もっと言えば、会社の問題、更に言わせて頂ければ「今の会社組織をリファクタリングした方が良いかもよ」(笑)。

PS
プラモデル製作を「リファクタリング」できないかとふと考えたが無理なようです。非効率的で拡張し難い一発勝負のモデル作成は、極めてアナログ作業なのです、そもそもデジタル的な効率性は必要ありません。「時間を有効に浪費している」のがプラモデル作りだったりするのかも ^^;

0 件のコメント:

コメントを投稿