すべての人のためのJavaプログラミング 第3版

著者:立木秀樹・有賀妙子 / 出版社:共立出版

書籍サポートページ

本書籍の前書きを掲載しています。

第3版まえがき

本書第2版が出版されてちょうど10年になります。長年にわたり、多くの学校でJava言語の教科書として使っていただいていることを嬉しく思います。

この間に、Java言語をとりまく環境は大きく変化しました。情報機器はめまぐるしく進化しています。Javaは1990年代後半にインターネットの普及とともに生まれた言語ですが、もはや「新しい言語」ではありません。Javaを生み出したサンマイクロシステムズは、オラクルに買収されてしまいました。その中で、Java言語も進化してきました。特に、2014年に発表されたJavaSE8で大きなバージョンアップがなされました。ラムダ式などの関数型プログラミングの概念が導入され、プログラムの書き方が大きく変わりました。また、高機能なGUI を作成できるJavaFXライブラリが使えるようになりました。並列、並行プログラミングの機能も強化されています。Java言語は、当初はブラウザの画面上で動くappletを書 けることで注目を集めましたが、現在では、オブジェクト指向的なシステム記述言語やスマートフォン上のアプリの開発言語として定評を得ているように思います。

このようなJava言語の変化を取り入れた内容に刷新したのが、この第3版の教科書です。関数型プログラミングの機能について丁寧に説明しました。後半で扱うGUIのライブラリは、SwingからJavaFXに切り替えました。また、コレクションや並行プログラミングについても丁寧な説明を追加しました。

第2版までと同じように、前半(12章まで)は、サポートページからダウンロードしたタートルグラフィックスのライブラリを用いて、視覚的にプログラムの動きを理解しながら、段階的にJava言語の概念を学習していきます。今まで以上に分かりやすいものにしたいと思い、これまでの授業での経験を踏まえて、説明の流れを再構成しました。タートルグラフィックスのインターラクティブ性を高めたので、最初から楽しみながら学習できることと思います。また、タートルグラフィックスは、並列プログラミングや再帰プログラミングを分かりやすく説明するのに役立っています。後半(13章以降)は、JavaFXを中心としたライブラリの説明を行っています。JavaFXのアニメーションなどの機能を用いて、より楽しめるアプリケーションが作れるようになっています。

内容は膨大ですが、教科書として授業で使うことを意識して編成してあります。前半は、さらに2つの部分に分かれます。第1章の導入の後、2~7章はプログラミングの入門から始めてオブジェクト指向の基本的な内容を扱い、8~12章で本格的なオブジェクト指向の概念を扱います。また、後半は、13~15章でJavaFXライブラリを使ったグラフィカルユーザインターフェースの作り方について学び、第16章で実用に必要となる入出力、第17章でさらに進んだ内容としてネットワークプログラミングについて学びます。初学者に向けた半年の授業なら、GUIを持ったプログラムを作ることを目的にするのがいいと思います。その場合、8~12章は飛ばして、13~15章を授業で扱うことが考えられます。JavaFXのイベント処理は ラムダ式で記述しますが、とりあえず書くのは、それほど複雑ではありません。また、Swingと違って、高度なオブジェクト指向の概念をそれほど用いないので、飛ばした部分は必要に応じて参照しながら授業を進められるのではないかと思います。ラムダ式を用いるとJavaFXのイベント処理などが簡単に書けるのは確かですが、それ自身は複雑な概念に基づいて作られており、それに対する理解がないと、本格的なプログラムを書くのは難しいです。ですので、その上で8章からの自習を勧めて頂きたいです。また、多少プログラミングの経験のある人に向けた、高度なプログラムを扱う授業なら、逆に、8~12章と16章以降に力点をおいて授業をするのがいいでしょう。2017年春学期に、本書の草稿を用いた授業を京都大学で行いました。有益なフィードバックを下さった学生の皆さんとTAの高山勉君に感謝します。

新しい概念が現れる度に、それに対応する練習問題をつけて、一歩ずつ自分で確認しながら進められるようにしました。また、プログラミングに対する興味を引き出すことを主眼にした発展的な練習問題も多数載せました。後者の練習問題には* をつけてありますので、自分に必要な練習問題を取捨選択して頂ければと思います。例題や演習問題には、数学的なものも幾つかあります。数学が苦手な読者も多いかもしれませんが、プログラミングにおいて、抽象化された概念を扱う能力の重要度は増してきていると思います。是非、チャレンジしてみてください。

これまでの版と同様に、本書のサポートページ
https://www.i.h.kyoto-u.ac.jp/users/tsuiki/javaEveryone3
で提供しているライブラリを利用してプログラムを組みながら学習を進めるように作られています。コマンドライン(ターミナルやコマンドプロンプト)でも、Eclipse などの統合環境でも学習できるように、サポートページのプログラムは両方のバージョンを用意しました。例題を実行して、練習問題を解きながら読み進めてください。練習問題の解答も公開しているので、難しい練習問題は解答を動作させるだけでも勉強 になると思います。

では、勉強を楽しんでください。

2017年7月
立木秀樹
有賀妙子