TOP / コミュニケーション / ソフトウェア開発書籍紹介

ソフトウェア開発書籍紹介

はじめに

ここでは、私がこのWebサイトを作りはじめてから学んだソフトウェア開発書籍の紹介をします。ソフトウェア開発において、新人や同僚からどういうソフトウェアの技術書を読んでいるのか質問を受けた事があります。

私も自分の持っていない発想などをソフトウェア開発に生かしている才能のあるかた方は、「いったいどういう風にしたら、その発想や方法論が手に入るのだろう。」と日々試行錯誤しています。

そう考えると、これからプログラマになる人や現役のソフトウェア開発者にこの情報を共有発信する事で、同じような境遇の人にもしかしたら届くのではないかと感じレビューを書いてみました。

こういう部分から日本の職人気質である「盗む」行為が可能かもしれません。ECコマースサイトのレビューなどが世の中沢山あるし、主観的な感想なので、賛否両論あると思いますが何かの参考になれば幸いです。

独習Java

独習シリーズとして知られているのではないでしょうか?私がはじめてJavaを勉強した時の本の紹介です。時代としては西暦2000年ぐらいだと思います。私が勉強していた時はServletが出てきてJSPがまだなかった時代です。今のようにフレームワークを多用する開発ではなく、また統合開発環境も各社から乱立していた時代です。

これがお勧めであるというわけではありませんが、どういう本で勉強したか参考になると思うので書きます。2006年現在であれば、結城浩先生はデザインパターンの本なども書かれているので、作者の癖やその書籍に近づく事を考えると、結城浩先生の入門書などが良いのではないかと思います。

どの入門書も似たような感じで、文法をサンプルを踏まえて学習して演習問題に取り組むという形で成り立っています。この本もそうですが、演習が多めであることが使いつづけた理由の1つだと思います。数ヶ月すると解答を忘れてしまうのでまた書いてみてというのを繰り返していました。

この本を買ったのは、ただ会社が利用していたので私も同じ物を使おうと思ったからです。ハローワールドって何だろう?コンパイラって何?というぐらいの知識量しか持ち合わせていなかったのでどの本が良いのか分からない状態でした。

お勧めできる部分は、演習問題が多い事だと思います。

あまりお勧めできない理由は、改定されているのに現在推奨されていないメソッド(=関数)を説明している部分です。コレクションの使い方でMap,Set,Listなどの紹介が未だにされていないのであれば、買わない方が良いでしょう。私がふと立ち読みした時は改定しているにもかかわらず VectorとEnumerationクラスの説明が利用されていたので驚愕でした。

たまに、どのような入門書を買えばよいか聞いてみると、先輩方は複数の本で学習するよりも1冊の本で勉強した方がいいといいます。その理由は説明してくれないのですが。。。また、どの本でもいいよと明確に答えを出してくれない場合もあります。

私が思うに、1冊を表紙が剥げてくるぐらい使い込むと、その本であれば何がどこに書いてあるか予想がつくのが理由の要因になっているのではないかと思います。

そこまでぼろぼろに使っているという事は、当然演習問題を1度解答したから、その本を本棚に納めるのではなく、その文法や使い方が分からないから、もう1度演習を解いてみるようになります。そのぐらいになると本の癖も掴んでいるので、Java言語などではクラスや継承など、いままで実生活とは無縁の概念やキーワードを大量に覚えていかなければならないのですが、そういう部分を省いて演習に取り掛かる事が可能になります。

また、どこに書いているか漠然とですが分かっているので、初心者用の本と共に売られている逆引き専門の書籍も購入する必要がありませんね。

ちょっと考えてみると単純ですが、逆引きが必要という事は、今直前に対する問題が分からないのか、それともそもそも基本的な部分を理解していないので分からないのか分類できます。前者はベンダー依存している問題などです。例えばOracleの何々のバージョンの場合の時はこうするとかバグなどです。後者は、文法や語彙をうろ覚えのために、それが積もりに積もって問題を解決する事が難かしくなっている場合などです。

文法や語彙のうろ覚えに対応するには、一冊を使いつづける事でで基本的なものは十分に対応できると思います。

書籍紹介というより、学習方法の説明になってしまいましたが、加筆修正しながらこのコンテンツも育てていきたいと思います。

プログラミング言語C

古くから教科書として使われるC言語の本です。Unix,C言語を作ったカーニハンとデニス・リッチーが著者で、カニハン本とか言われたりします。

この本は、簡単という人もいれば難しいという人もいます。とりあえず読めというひとも。

簡単という人は、大学でソフトウェア開発を総合的に学んでいる人や頭の良い部類の人でしょう。つまりC言語のみではなく、計算機としてコンピュータの基礎などを学び、それ相応の知識を理解している人だと思われます。

それ相応というのは、2進数やアセンブラやCPUのアーキテクチャなど基本情報処理試験で出てくる問題のようなものです。

では、現代のソフトウェア開発はどうでしょうか?専門学校で学ぶ人もインターネットで独学で学ぶ人もいます。

また情報の入手もインターネットの学習サイトでも分かるように多岐に上ります。そういう人は、難しいと思うかもしれません。ですが是非この本に挑戦して欲しい。

その理由としては、この本はC言語のライブラリを作る事が演習問題となっているからです。

C言語というのは、初期の時代は標準ライブラリすらありませんでした。言語の文法だけです。 JavaやPerlなどを使っている人には考えられないかもしれません。

この本を学習する時、問題に躓くと思われます。そういう時はインターネットの入門サイトなどを参考にしてこの本を再度学習します。そのために入門書を買うのもかまわないと思います。

学習し終えるころには、学習する前と明らかに知識量が増えている事に気づかされると思います。C言語を学習するはずが、その他関連する情報も調べ上げて知識となっているはずです。

そして、調べ上げる学習スタイルが身に付く事と、難しいと思う書籍も今後読んでいく切欠になるはずです。

2006年5月12日

達人プログラマー

この本は、プログラミングの文法やライブラリを学ぶものではなく、今後培っていく哲学を学ぶ本です。このような知識は、経験のある技術者から口伝や仕事を盗む事で学んでいくものでしたが、体系化して本にした功績は凄く大きいと思います。

この手の本は、ソフトウェア開発分野ではかなり少ないと思います。またHOWTO本などと誤認してしまう可能性があるのも悲しいところです。

この本に書いてある事は当然学ぶとして、なによりも考えるとはどうであるか思考するための入り口になるとおもいます。当然一度や二度読んだから理解できたという浅はかな知識を学習するものでもありません。

そんなこといっても技術を習得するのに、忙しいというかもしれません。

でも、そういう人はいつでも忙しいものです。だって思考や哲学、美意識がないので、きつくいってしまえば脳ではなく、肉体的労働力のヒューマンリソースとしてつかうのですから。。。

プログラミングやソフトウェア開発の仕事を通して、いかに人間を磨くかという問題などに昇華していくために是非本棚に沿えてみてください。

2006年5月12日

プログラミングの力を生み出す本

C言語の基礎と、Gnu ASeember(GAS)を使ってのアセンブラ学習の本です。これはC言語のポインタがいまいち分からない人にお勧めです。ポインタ関連の本は沢山出回っていますが、よくアセンブラが分かればポインタも分かると聞いた事があると思います。

アセンブラの基礎からはじまり、C言語のポインタや関数の仕組みまで理解できます。知識を学ぶ本ではなく体得するために手を動かしながら学習します。

この知識は、現代のPCのアーキテクチャの基礎であるフォン・ノイマン・アーキテクチャが存在する限り利用できる知識です。

分かりやすいところでは、プログラミング言語を複数使えないプログラマがいます。でも逆に使えているプログラマもいます。この差はなんでしょうか?自分なりにいろいろ努力しているはずなのに。。。

それは1つの考え方として学習する階層が違うのだと思います。そもそもそれを認知していないのかもしれません。深くまたは低い部分を学習するときはその習得にかなりの時間が掛かります。ですがそれを身に付けると多くのことが応用する事が可能です。

プログラミング言語Cを10とすると、5ぐらいのレベルだと思います。

2006年5月12日

更新履歴

  • 2006年5月17日 - 独習Javaを中心に記事を修正
  • 2006年5月12日 - 3冊記述


イバラキングへのリンク Get Firefox Valid XHTML 1.1 Apple Darwinへのリンク