Review好奇心の赴くまま本を選び、読み終わったら感想を書きます。縺ア繧薙←繧峨�ョ譛ャ...拍手ランキング過去1週間の間に拍手はありません。Practice」シリーズ中の1冊(なのかな?)。「読み易い=他人が読んで理解し易いプログラム」を書くための指針を示したプログラミング入門。サブタイトルは「より良いコードを書くためのシンプルで実践的なテクニック」。この本のことを知ったときから読みたいと思っていたのに、これまでずっと後回しにしていた。それに面白いだけでなく、良い本でもある。この日本語版には、「訳者まえがき」の他に須藤功平氏による「解説」も付されている(内容的には「解説」ではないが(笑))。言うか、本当に山形浩生が訳したら、どんな感じになるんだろう?)。本を読むのがもの凄く遅い僕でも、頑張って2日で読破できた。読み物としてのプログラミング入門。著者の2人はMicrosoftやGoogleでプログラムを書いていた人たちらしい。著者たちは「悪いコード」の実例を集めに集めて(そのため、本書で取り上げているコード例は、C++、Java、JavaScript、Pythonと多岐に渡る)、それが「何故悪いのか」を分析した結果、「他人が読んで理解しづらいコードは書くべきではない」=「読み易いコードを書くべきである」という結論に達したのだそうだ。「どう書けば読み易くなるか」という観点から、日々のコーディングですぐに実践できそうなテクニックを次々と挙げてくれるのが本書。逆に言うと、プログラム設計のようなトピックは扱っていない(ただし、関数分割について述べているクダリで、クラス抽出についても触れている箇所はある)。内容的には第2〜3章、第5〜6章、第8〜9章、第10〜11章はそれぞれ1章にまとめてしまってもいいのではないかと思う。「部」に分かれている意味もあまりなくて、強いて言えば、最後の2章が「実践編」か。各章のテーマは、簡単に始められるものから、徐々に難易度が上がっていく。メソッド抽出、ロジック、ライブラリの活用、テストコード...。巻末に「付録」として参考図書が掲載されているのもいい(いずれも有名な本バカリで、隠れた名著が紹介されているワケではないが...)。小難しい話を順を追って述べていくような本かと思っていたが、実際は各章バラバラに読めるし、各章の分量も少なく、気楽に読める。何と言うか、バラバラに書かれたコラムをテーマごとに再構成したような雰囲気があり、全体としてのまとまりにやや欠けるようにも思う。クリエイティブ)に似ているな」と思った。あんな本と一緒にするな!という声も聞こえてきそうだけど、「優秀な人が特に意識することなく『普通に』できてしまっているプラクティスを言語化・顕在化し、下々の者にも教えてくれる」という意味でとても似ているように思うのだ。いう本ってプロの人には必要ないのかもしれないけど(秀逸なソースコードを目にする機会も多いだろうし、先輩から直接教えて貰えたりすることもあるのだろうし)、むしろ素人プログラマにこそ絶対に必要。Basic育ちだということも関係している。書籍から中級者向けの情報を得ようと思ったら、VBではなくJavaやC++、最近ならC#等、他のプログラミング言語の本を読むしかない)。本書の良いところは、豊富な「実例」が示されているところ。本書に掲載されている「読みづらいコード」の例は、説明のために著者らが(ワザとヘタクソに)書いたものではなく、実際にプロが書いたものなのだ。逆に言えば、各章末の「まとめ」だけ読んでもピン!とこない。本書には「特に目新しいことや、『これだ!』という解決策が書いてあるワケではない」という批判もあるだろう。それは確かにそうだろうと思う。逆に言うと、読み易く理解し易いプログラムを書く「魔法」は存在しない、ということなのかもしれない。正攻法でやっていくしかないのだろう。僕自身がこの本から学んだことは、(コードを読む人が)「なるべく考えないで済むようにする」ということだろうか。これは100kmマラソン完走の秘訣と同じ(笑)。すれば、人間は100kmだって走り続けることができる。1つは、そうやってできた認知的な余裕を「本質的な問題」に集中させること。楽するんじゃなくて、楽してできた余裕を意味のあることに振り向けるのだ。本書の後半(第3〜4部)なんかを読んでいると、「コードを書き始める前に、抽象レベルで考えてみろ」ということを繰り返し述べているように思う。クラスやプログラム全体の設計を見直すことによっても、コードは「読み易く」なる。名前は短いコメントだと思えばいい。直交する概念は無理に1つにまとめようとせずに、別々に使えるようにするといい。簡潔な名前で式を説明することで、コードを文書化できる。無関係の下位問題を解決しているコードが相当量あれば、それらを抽出して別の関数にする。本章はコードの「デフラグ」について説明している。あとでテストを書くつもりでコードを書くと、おもしろいことが起きる。テストしやすいようにコードを設計するようになるのだ!コードを設計していると、「うーん、これをテストするのは難しそう」と思うことがある。いうときは、立ち止まって設計を考え直せばいい。ちなみに、本書の挿絵の多くは僕にとって「これ、いったいどういうツモリのジョークなんだろう?」と首を傾げざるを得ないようなものだった(本当に、どこに笑いの要素があるのか理解できなかった)。共立出版)を読んだ時に感じたのと全く同じ。『ライト、ついてますか?』はもの凄く評判の良い本なのに、僕にはその面白さが全くわからなかった(まさに狐に抓まれたようだった)。要するに、僕にはアメリカンジョークが理解できないのである。して20ページ程度)。正弘(訳)2013年アスキー・メディアワークス☆☆☆☆☆C++の文法を一通り理解し終え、「さぁ、これからプログラムをバリバリ書くぞ!」と燃えている初級プログラマ向けの「プログラミング」入門(背表紙に「初級技術者向け」と記載されている)。若い読者(学生さん?)を想定しているようで、質の悪い紙を使うことによって価格を抑えているのではないだろうか(ちなみに、電子書籍版は更に安いので、電子書籍版がお得だと思う)。サブタイトルは「問題解決能力を鍛えよう!」。本家アメリカのアマゾンのレビューを見てみると、原著の評判も非常に良いようだ(この日本語版だけでなく、韓国語版、ドイツ語版、ポーランド語版が刊行されているようだ)。将来IT業界でやっていきたいという意欲的な学生さんなら、原著(英語)に挑んでみるのもいいかも。いった個別のトピック(第3、4、5、6章)に分かれている。オライリー・ジャパン)に似ていた)。翻訳された日本語の文章は読みづらいワケではないが、ややコナれていない印象(特に前半)。改段落をしてくれた方が読み易い。「スーパーハッカーの発想術」の秘密が書いてあるのかと思っていたが(「天才数学者の発想法」のような)、読んでみると、内容は案外ただのプログラミング入門だった(笑)。プログラム例こそC++で書かれているものの、「C++入門」ではない。題材もプログラム例もC言語的なものが多く、内容は80年代終わり頃〜90年代半ば頃の中級者向けC/C++入門とそれほど変わらない、といった印象。いう意味で目新しい内容の本ではないが、古典的な題材には初級者がチャレンジするに値するものが多いのも確か。各章末に用意されている「演習問題」を全てやれば、かなり力が付くのではないだろうか。意外に思ったのは、著者がこの内容の本を(JavaScript、Python、Ruby等の)流行りの言語を用いて書くという方針を採らなかったこと(著者によれば、C++でプログラミングを学ぶことには、他の言語で学ぶのに比べてハッキリとしたメリットがあるのだそうだ)。SBクリエイティブ)でもC++が用いられていた)。結局著者が言いたいのは、「コードを書き始める前に、まずちゃんと考えろ」ってことなんだよね。しないと、自分が何を書いているのかがわからなくなってしまうから。個人的に面白かったのは、第6章で扱っていた「再帰」の話。再帰は多くのプログラマを魅了するトピックらしいのだけど、僕自身はイマイチその面白さを理解できていなかった。LISPの本以外で再帰についてジックリ取り上げている本は少ない。再帰についてこんなに面白おかしく解説している本を初めて読んだ。ちなみに、ポインタと動的データ構造がテーマとなっている第4章の冒頭(97ページ)で、「必要なメモリブロックをその場で確保してデータ構造を作り、プログラムが終了するときにはきちんと後始末して何も残らないようにする。それができるようになれば、あなたはもはや単にコードが書けるだけの人ではない。本物のプログラマである」と著者は述べている。僕が読んだ初版第4刷にはチョコチョコと(些細な)誤植があった。原著と見比べてみるのが良いと思う。本文235ページ程度(他に、索引として7ページ)。よるソフトウエア開発技術者向けの「オブジェクト指向」1日セミナーの様子を紙上に再現したもの。表紙には「ソフトウェア開発必須技術のマスター」「概念・モデリング・UML・開発モデル・開発プロセス」とも。「オブジェクト指向」登場の背景、オブジェクト指向の諸概念、モデリングとUML、開発プロセス、その他のトピック(コンポーネントとフレームワーク、分散オブジェクト、WEBサービス、etc.)、といった内容。文章は完全に口語体で、読者に直接語りかけてくるような調子。実際のセミナーの様子を録音して文字起こししたものなのかもしれない。「趣味としてのプログラミング」よりも「ビジネスとしてのソフトウエア開発」寄り、という印象。元がソフトウエア開発の現場の人(新人の開発者やオブジェクト指向の経験のないベテラン開発者、プロジェクトマネージャー等も?)を対象としたセミナーなので、読者としても当然そういう人たちを想定している。テーマも「オブジェクト指向ソフトウエア開発」であって、「オブジェクト指向プログラミング」とはちょっと違う。開発に用いるプログラミング言語としては、Javaを念頭に置いているようだ(ただし、コード例はほとんど出てこない)。言うとあまり期待しないで読み始めたのだが、意外と良かった。今となっては10年前の本なので、プロの人にとっては「何を今更」という感じだろうが、「10年前には、何故こういった解説が必要だったのか」という観点から読むと興味深い。本書には、コンポーネント化技術としてのオブジェクト指向、という見方が通底しているように思う。各章末に「まとめ」と「確認テスト」が用意されている。面白いのはセミナー受講者の解答例がいくつか載っていることで、他者のピンボケ気味の解答を見て初めて自分自身のピンボケ振りに気づくことがある(「クラスとインスタンスの関係」と「スーパークラスとサブクラスの関係」を混同している人が意外と多い)。「他人の振り見て我が振り直せ」だ。技術評論社)が刊行されている。本文240ページ程度(他に、索引として5ページ)。“AutoPage”AutoPage最新お知らせ。