COMWARE PLUS プラス・サムシングを大切なお客さまへ

メールマガジンのご登録
ITジャーナリストや現役書店員、編集者が選ぶ デジタル人材のためのブックレビュー 
ITジャーナリストや現役書店員、編集者が選ぶ デジタル人材のためのブックレビュー 
ポスト
        
        

今月の書籍

レビュワー:高橋 征義

  • 『レガシーコード改善ガイド』
  • 『ピアリング戦記 ― 日本のインターネットを繋ぐ技術者たち』

既存のコードと向き合っているすべての開発者を勇気づける一冊

 本書は2002年に刊行された、レガシーコードに関する解説書としては古典と言ってもよいくらいに広く読まれてきた書籍である。
「レガシーコード」とは「テストのないコード」であると喝破したことでも知られている。

 コードの書き方についての書籍は古来、多数書かれている。しかし、既存の(あまり品質の良くない)コードをどう改良、改善していくかについて具体的に解説する書籍は少ない。
これには理由がある。品質の低いコードを改修するのはとても困難かつコストがかかる上に、ケース・バイ・ケースでさまざまな技法が必要となるためだ。

 例えばより良くする書き方を思いついたとしても、それをストレートに実装してしまうと微妙な挙動の差が生じてしまい、実際に適用すると意外なところに悪影響が生じたりする(どこで何が起こるかよく分からないからこそ「良くないコード」なのである)。
そのため、壊れないようにするには多くの工夫が必要とされる。実際に変更するコードを書く労力以上に、安全に書き換えること自体に多大な労力が必要となるのだが、それだけ努力したところで別に新しい機能が追加されるわけではない。いくら労力を費やしても華々しい成果にはなりにくいし、たまにしくじることもあると「既存のコードをいじってたまにサービスを落としたりする人」と見られてしまうだけである。
そんな能力を高めようとするよりは、最初から品質の高いコードを書く体制を作り、それを維持していくのが正攻法であり、それをめざすべきである。

 とはいえ、そう上手くはいかないのが現実であり、いろいろな事情でどうしても品質の低い部分が生まれることはある。そうなった場合にどうすれば改善できるのか。そのための実践的な処方箋が記された、貴重な書籍が本書である。

 本書ではさまざまな技法が紹介される。接合部(seam)、スプラウトメソッド、スプラウトクラス、ラップメソッド、ラップクラス、擬装オブジェクト(fakeオブジェクト)、テストハーネス等々。テストが書かれていないコードに後からテストを追加するには多様な技術が必要になるためだ。しかし、それ以上に大事になるのは、改善が困難であっても折れない心である。そんな事情を反映してか、本書の章タイトルは妙に共感を呼ぶものとなっている。

  • 「時間がないのに変更しなければなりません」(第6章)
  • 「ライブラリへの依存で身動きが取れません」(第14章)
  • 「変更できるほど十分に私はコードを理解していません」(第16章)
  • 「私のアプリケーションには構造がありません」(第17章)
  • 「このクラスは大きすぎて、もうこれ以上大きくしたくありません」(第20章)
  • 「もうウンザリです。何も改善できません」(第24章)

 身に覚えがありすぎて、本文を読むまでもなく辛くなってくる読者もいるかもしれない。

 しかし、本書はそんな辛い状況から一歩も退かない。第2部の最終章「もうウンザリです。何も改善できません」でも、投げ出してしまうことなく、あくまでできることを探し、希望を語る著者の姿勢は、レガシーコードの困難に立ち向かうための勇気を与えてくれる。

 厳しいコードに向き合いながらも日々改善に勤しむ開発者なら、きっと得られるものがある一冊である。

『レガシーコード改善ガイド』

著者:マイケル・C・フェザーズ

監訳:ウルシステムズ株式会社

翻訳:平澤 章、越智 典子、稲葉 信之、田村 友彦、小堀 真義

出版社:翔泳社

https://www.shoeisha.co.jp/book/detail/9784798116839

日本のインターネットインフラの意外な側面を垣間見られる

 「インターネットはネットワークのネットワークである」という言い方は、それなりにインターネット技術に詳しい方なら耳にしたことがあるかもしれない。
「ネットワーク」はスマートフォンやサーバーなどの多数の「コンピュータ」同士がつながりあったものであるのと同様に、多数の「ネットワーク」同士がつながりあって一つの大きなネットワークになる、そうやってできあがった「一つの大きなネットワーク」が「インターネット」である、という意味だ。

 では、そのネットワーク同士をつなげる方法はどうなっているのか。大きな(トラフィックの多い)組織が「上流」となり、小さな組織がその下にぶらさがり、流量に応じたお金を支払う、というのが「トランジット」と呼ばれる方法である。これはある意味理解しやすい。しかし、それだけではなく、組織と組織が直接つながる方法もあり、それが「ピアリング」と呼ばれている。本書はこのピアリングについて、特に2010年代の日本での状況を解説した書籍である。

 本書の特徴を三点ほど挙げてみる。一つ目は、本書は「技術を解説した書籍」、言ってみれば狭義の技術書ではない、という点である。しかし、本書はあくまでASやBGPといった技術が当たり前に分かっている前提で書かれている。技術をまったく理解していないと、インタビューで語られる言葉も理解できないだろう。その意味ではやはり一般書ではなく、あくまで技術書を読む読者に向けた「技術書」である。

 二つ目の特徴としては、本書の背後にいる人々とコミュニティが挙げられる。本書のあとがきでは、「IXスポンサー」としてIX3社の名前と、「法人スポンサー」「個人スポンサー」が記されている。また、続く章には「発起人より」として、本書の企画提案を行った発起人の方々によるコメントが掲載されている。
このように、スポンサーが表に出てくるのは商業書籍としてはめずらしい。しかも企業としてはライバルでもある。同じインフラであっても、例えば電気やガスなどでこのような形の書籍が出て、さらに競合する組織同士が好意的に支援することなど、あまり想像できない。
本書からはスポンサーや発起人として名前が出ている人・企業以上に、ピアリングのコミュニティとそれを支える人々の存在が感じられる。

 三つ目の特徴は、今まであまり記録として残されていなかった技術の分野について、書籍という形で残すことの意義である。
本書「あとがき」でも、

インターネットの成り立ちには、本書に収録したインタビューでも明らかにされているような、一部の当事者の方々の記憶にしか残されていない、人知れず起きた出来事が少なからず存在しています。そうした話を本書のような形で残すことで、「インターネットそのものがどのようになっているか」を示すときの参考文献にしてもらえるような公開情報が増えることは、実はとても大事なことなのではないかと個人的に考えています。

 と書かれている通り、本書は記録に残すことに重きを置いている。それこそインターネットで公開すればいくらでも公開情報が増やせるのでは、と思われるかもしれないが、書籍の方が残りやすいこともある。ネット時代における技術書の役割についても考えさせられる。

 ネットワークやインフラには直接関わったことのない人にも、(冒頭のASやBGPの話はなんとか理解してもらった上で)本書で明かされるインターネットの裏側に興味を持ってほしい。

『ピアリング戦記 ― 日本のインターネットを繋ぐ技術者たち』

著者:小川 晃通

出版社:ラムダノート

https://www.lambdanote.com/products/peering

今月のレビュワー

308_img03.jpg

高橋征義 (たかはし・まさよし)

札幌出身。Web制作会社にてプログラマとして勤務する傍ら、2004年にRubyの開発者と利用者を支援する団体、日本Rubyの会を設立、現在まで代表を務める。2010年にITエンジニア向けの技術系電子書籍の制作と販売を行う株式会社達人出版会を設立、現在まで代表取締役。著書に『たのしいRuby』(共著)など。好きな作家は新井素子。

2022/09/30

この記事のPDFをダウンロードする

ポスト

事例紹介

スマートフォン用リンク

エバンジェリストが語るICTの未来

スマートフォン用リンク

ページトップへ

トップへ