Java超|クラスライブラリで広がるJava開発

全部を自作しなくても、Javaには頼れる道具がそろっている。クラスライブラリを探して使える力がつくと、プログラム作成はもっと実践的に広がります。

Javaの学習を進めていくと、自分でクラスを作るだけでなく、Javaがあらかじめ用意しているクラスを使う場面がどんどん増えていきます。

これまでにも、さまざまな標準クラスを使ってきました。

クラス役割
String文字列を扱う
StringBufferあとから文字列を追加・編集する
Integer文字列を整数に変換する
Math数値計算を助ける
BufferedReaderキーボード入力を読み込む
InputStreamReader入力を文字として扱いやすくする
System画面出力などに使う

こうしたクラスは、Javaの標準クラスライブラリに含まれる便利な部品です。

ドラゴンボールの世界観でたとえると、クラスライブラリは戦士管理本部が用意してくれている大きな道具箱のようなものです。

任務の巻物を読むための道具。
合言葉を調べるための道具。
数字の札を本物の数値へ変える道具。
訓練点を比較する計算道具。
伝令文を受け取るための道具。
結果を本部の掲示板へ表示する道具。

こうした道具を、毎回すべて自分で作る必要はありません。

すでに用意されている道具を、必要な場面で正しく選んで使えるようになることが大切です。

クラスライブラリを使いこなすというのは、たくさんのクラス名やメソッド名を全部暗記することではありません。

大事なのは、やりたい処理に合うクラスを見つけ、リファレンスで使い方を確認し、小さなプログラムで試しながら自分のコードに取り入れる力です。

この力がつくと、Javaのプログラムは練習用の小さな処理から、もっと実践的な処理へ広がっていきます。この記事では、クラスライブラリを探して使う考え方、リファレンスの見方、複数のクラスを組み合わせる感覚を、戦士管理本部の道具箱にたとえて整理します。

クラスライブラリを使いこなすとはどういうことか

クラスライブラリを使いこなすとは、Javaに用意されている便利なクラスを、目的に合わせて探し、選び、使えるようになることです。

たとえば、文字列の中から特定の文字を探したいとします。

そのとき、次のように考えます。

考えること具体例
どんな処理をしたいか文字列の中に特定の文字があるか調べたい
役立つクラスは何かString クラス
どのメソッドを使うかindexOf()
何を確認するか引数、戻り値、見つからないときの値
どう試すか短いコードで実行結果を見る

ドラゴンボールでたとえると、任務に出るときに、全部の道具を暗記して背負っていく必要はありません。

大切なのは、今の任務では何が必要かを判断できることです。

戦士名を確認したいのか。
任務コードを数値に変換したいのか。
戦闘力の高いほうを選びたいのか。
合言葉の中に特定の文字が含まれるか探したいのか。
入力された情報を本部の掲示板に表示したいのか。

目的が決まれば、使う道具も見えてきます。

Javaでも同じです。

すべてを覚えることよりも、必要なときに調べて使える力が大切です。

Javaには多くの便利なクラスが用意されている

Javaの標準クラスライブラリには、とても多くのクラスが用意されています。

これまで学んできたクラスは、その中の一部です。

実際には、文字列、数値、入力、日付、ファイル、複数データの管理など、いろいろな分野のクラスがあります。

分野代表的な機能の例ドラゴンボールでたとえると
文字列処理比較、検索、切り出し巻物の文字を読む、探す、抜き出す
数値処理変換、比較、乱数、数学計算戦闘力や距離を計算する
入出力キーボード入力、ファイル読み書き伝令文を受け取る、報告書を書く
日付と時刻今日の日付、時刻の取得、計算任務日や集合時刻を管理する
データ管理複数データの保存や整理戦士名簿を管理する
例外処理エラー発生時の安全な制御任務中の異常に備える

このように、Javaのクラスライブラリは、プログラムづくりのための大きな支援道具です。

知っているクラスが増えるほど、書ける処理の幅も広がります。

ただし、ここで大事なのは、すべてを一気に覚えようとしないことです。

最初は、よく使うクラスから少しずつ慣れていけば大丈夫です。

これまで学んだクラスもクラスライブラリの一部

クラスライブラリという言葉を聞くと、これから新しく学ぶ難しいものに感じるかもしれません。

でも、これまでの学習でも、すでにたくさんのクラスライブラリを使っています。

クラス名主な役割ドラゴンボールでたとえると
String文字列を扱う任務の巻物を扱う
StringBuffer変更できる文字列を扱う追記できる作戦記録帳
Integer文字列を整数に変換する数字の札を人数や戦闘力に変換する
Math数値計算を行う本部の計算道具箱
BufferedReader入力を読み込む伝令文を受け取る係
InputStreamReader入力を文字として扱いやすくする届いた情報を読める形に整える係
System画面出力などに使う結果を掲示板へ表示する係

こうして見ると、クラスライブラリは特別なものではなく、すでに何度も使ってきた身近な存在だと分かります。

たとえば、文字列の長さを調べる str.length() も、String クラスの力を使っています。

文字列を整数に変換する Integer.parseInt(str) も、Integer クラスの力を使っています。

大きい値を調べる Math.max(num1, num2) も、Math クラスの力を使っています。

ドラゴンボールでたとえると、これまでの任務でも、知らないうちに戦士管理本部の支給道具を使っていたようなものです。

最初は System.out.println() を画面表示のお決まりの書き方として覚えていたかもしれません。

でも、学習が進むと、それが System クラスの機能を使った処理だと分かってきます。

このように、クラスライブラリを意識できるようになると、今まで何となく使っていたコードの意味も見えやすくなります。

図:クラスライブラリは戦士管理本部の道具箱

この図が示していること

この図では、Javaのクラスライブラリを、戦士管理本部が用意した大きな道具箱として表しています。

String、StringBuffer、Integer、Math、BufferedReader、System などは、それぞれ役割を持った便利なクラスです。

文字列を扱うなら String、数値変換なら Integer、数値計算なら Math、入力なら BufferedReader、出力なら System のように、目的に応じて道具を選びます。

ここから分かるのは、Javaのプログラムはすべてを自作するのではなく、用意されたクラスを選び、組み合わせながら作ることが多いということです。

クラスライブラリを使うと何がよいのか

クラスライブラリを使う大きな利点は、複雑な処理を短く、分かりやすく、安全に書きやすくなることです。

もちろん、自分で仕組みを作ってみる学習も大切です。

でも、実際の開発では、すでに用意されている信頼できる部品を使うこともとても重要です。

観点自分ですべて作る場合クラスライブラリを使う場合
開発の手間多くなりやすい少なくしやすい
コード量長くなりやすい短く整理しやすい
ミスの可能性増えやすい減らしやすい
学習の方向仕組みを作る力がつく既存機能を活用する力がつく
実践性基礎理解に役立つ実用的なプログラムへ広げやすい

ドラゴンボールでたとえると、任務のたびに道着、スカウター、地図、伝令札、戦士名簿を一から作るのは大変です。

本部が用意した道具を正しく使えるからこそ、戦士は任務そのものに集中できます。

Javaでも同じです。

自分で作る力と、用意されたクラスを活用する力。

この両方があると、プログラム作成の幅が大きく広がります。

すべてを暗記しなくてよい理由

クラスライブラリは種類が多いです。

そのため、全部を暗記しようとすると、とても大変です。

むしろ、最初から全部を覚えようとすると、学習が苦しくなってしまいます。

クラスライブラリの学習で大切なのは、暗記ではなく、調べながら使えるようになることです。

大切なこと内容
存在を知るこういうクラスがあると知っておく
役割を知る何をするクラスか見当をつける
調べる習慣を持つ必要なときにリファレンスを見る
小さく試す短いコードで動きを確認する
使いながら覚える実際のプログラムに組み込む

ドラゴンボールでたとえると、戦士管理本部の道具箱に入っている道具を全部丸暗記する必要はありません。

まずは、地図がある。
伝令札がある。
距離を測る道具がある。
数値を計算する道具がある。
巻物を検索する道具がある。

このように、存在を知っておけば十分な場面もあります。

そして、必要になったときに本部の台帳を見て、使い方を確認します。

Javaのクラスライブラリも同じです。

全部を覚えるより、必要なときに調べられる力のほうが大切です。

リファレンスはクラスライブラリの辞書

クラスライブラリを学ぶうえで欠かせないのが、リファレンスです。

リファレンスには、クラスの説明、メソッド名、引数、戻り値、使い方などが整理されています。

辞書を引くような感覚で使うと、とても役立ちます。

リファレンスで調べること内容
クラスの役割このクラスは何をするのか
メソッド名どんな機能があるのか
引数何を渡せばよいのか
戻り値何が返ってくるのか
呼び出し方オブジェクトから呼ぶのか、クラス名から呼ぶのか

たとえば、Math クラスを調べるとします。

Math クラスには、max()、min()、abs()、sqrt()、pow()、random() などがあります。

その中から、2つの値のうち大きいほうを知りたいなら max() を探します。

そのあとで、引数に何を渡すのか、戻り値は何型なのかを確認します。

ドラゴンボールでたとえると、リファレンスは戦士管理本部の道具台帳です。

道具の名前。
使い道。
使うときに必要な情報。
使った結果として得られるもの。

これらが書かれているので、初めて使う道具でも確認しながら扱えます。

リファレンスを見るときのポイント

リファレンスは情報量が多いため、最初は少し見づらく感じることがあります。

そのようなときは、全部を読もうとせず、必要なところから順番に見ていくと分かりやすいです。

見る順番注目する内容
1クラス名と概要
2使いたいメソッド名
3引数の型
4戻り値の型
5メソッドの説明

たとえば、String クラスで文字列の一部を切り出したいなら、substring() を探します。

そのときに見るべきポイントは、次のようなところです。

substring() は何をするメソッドか。
引数には開始位置を渡すのか。
終了位置も渡すのか。
戻り値は String なのか。
終了位置は含まれるのか。

ドラゴンボールでたとえると、道具台帳を読むときに、まず道具名を探し、次に使い方、必要な材料、得られる効果を見るようなものです。

すべてを最初から最後まで読む必要はありません。

今必要な情報を取り出せるようになることが大切です。

クラスライブラリは実際に試すことで身につく

クラスライブラリは、説明を読むだけではなかなか身につきません。

短いプログラムで実際に試すことで、使い方がかなり理解しやすくなります。

たとえば、String クラスの substring() を見つけたら、短い文字列で本当に切り出せるか試します。

Math.random() を見つけたら、何回か表示して、どの範囲の値が出るか確認します。

Integer.parseInt() を学んだら、文字列 "25" が int 型の 25 に変わることを確認します。

学び方具体例
説明を読むメソッドの役割を知る
小さく試す短いコードで動作確認する
結果を見る戻り値や表示結果を確認する
別の値でも試す動きの幅を知る
自分のプログラムに使う実践的に使えるようにする

ドラゴンボールでたとえると、新しい道具を台帳で読むだけでは、任務で自然には使えません。

実際に手に取り、軽く使ってみて、どんな場面で役立つかを体で覚える必要があります。

Javaのクラスライブラリも、同じように試しながら覚えるのが自然です。

図:リファレンスを使ってクラスライブラリを学ぶ流れ

この図が示していること

この図では、クラスライブラリをリファレンスで確認しながら学ぶ流れを表しています。

まず、やりたい処理を考えます。

次に、その処理に合いそうなクラスを探します。

その後、リファレンスでメソッド名、引数、戻り値、呼び出し方を確認します。

そして、小さなコードで試してから、自分のプログラムに組み込みます。

ここから分かるのは、クラスライブラリの学習は丸暗記ではなく、探す、確認する、試すという流れで進めると身につきやすいということです。

クラスライブラリを組み合わせるシンプルな例

ここでは、複数のクラスライブラリを組み合わせて使うシンプルな例を見てみましょう。

キーボードから整数を入力し、その絶対値と2乗を表示するプログラムです。

import java.io.*;

class Main
{
    public static void main(String[] args) throws IOException
    {
        // キーボード入力の準備をする
        BufferedReader br =
            new BufferedReader(new InputStreamReader(System.in));

        // 数字を入力してもらう
        System.out.println("好きな整数を入力してください。");
        String str = br.readLine();

        // 文字列を整数に変換する
        int num = Integer.parseInt(str);

        // 絶対値と2乗を計算する
        int absNum = Math.abs(num);
        double powNum = Math.pow(num, 2);

        // 結果を表示する
        System.out.println("絶対値は " + absNum + " です。");
        System.out.println("2乗すると " + powNum + " です。");
    }
}

このプログラムでは、いくつものクラスが連携しています。

クラス名使った理由
BufferedReader入力を受け取るため
InputStreamReader入力を文字として扱うため
String入力された文字列を扱うため
Integer文字列を整数に変換するため
Math絶対値や2乗を計算するため
System結果を表示するため

このように、実際のJavaプログラムでは、1つのクラスだけで処理が完結することは多くありません。

入力を受け取る。
文字列として保存する。
整数に変換する。
計算する。
結果を表示する。

この流れの中で、複数のクラスライブラリが役割分担しています。

ドラゴンボールでたとえると、任務は1人の戦士だけで完結するわけではありません。

伝令を受ける係。
内容を読み取る係。
数値に整理する係。
計算する係。
結果を掲示する係。

それぞれが役割を持って連携することで、任務全体が進んでいきます。

複数のクラスを組み合わせる感覚が大切

クラスライブラリを使いこなすうえで大切なのは、1つのクラスを単独で見るだけではありません。

複数のクラスを、目的に合わせて組み合わせる感覚が大切です。

先ほどのプログラムでは、次のような流れになっています。

処理使うクラス役割
キーボード入力を受け取るBufferedReader、InputStreamReader外から入力された値を読む
入力内容を保存するString入力された文字列を持つ
数値に変換するInteger文字列を int に変換する
数値計算をするMath絶対値や2乗を求める
結果を表示するSystem画面に出力する

この流れを見ると、クラスライブラリはバラバラの知識ではなく、プログラムの流れの中でつながっていることが分かります。

ドラゴンボールでたとえると、任務の流れに合わせて道具を持ち替えるようなものです。

伝令文を受け取るときは入力の道具。
文字を数値に変えるときは変換の道具。
計算するときは Math の道具。
報告するときは出力の道具。

目的に合わせて道具を選び、組み合わせることが大切です。

importが必要になることもある

クラスライブラリのクラスを使うときには、import が必要になることがあります。

import は、そのクラスがどこに属しているかをプログラムに知らせ、短い名前で使えるようにするための準備です。

たとえば、BufferedReader や InputStreamReader を使うときには、次のように書くことがあります。

import java.io.*;

これは、java.io というまとまりにあるクラスを使うための準備です。

書き方意味
import java.io.*;java.io に含まれるクラスを使う準備
BufferedReader入力を読み込むためのクラス
InputStreamReader入力を文字として扱うためのクラス

一方で、String や Math のように、import を書かなくてもすぐ使えるクラスもあります。

クラスimport の感覚
Stringすぐ使える
Mathすぐ使える
Systemすぐ使える
BufferedReaderimport が必要になる
InputStreamReaderimport が必要になる

今の段階では、この違いをすべて厳密に暗記しなくても大丈夫です。

まずは、クラスによっては import が必要になることがある、と理解しておけば十分です。

ドラゴンボールでたとえると、道具箱の中でも、すぐ手元にある基本道具と、倉庫から取り寄せる必要がある道具があるようなものです。

import は、この倉庫の道具を使いますと先に伝える準備です。

図:複数のクラスライブラリを組み合わせてプログラムを作る

この図が示していること

この図では、1つのプログラムが複数のクラスライブラリの組み合わせで作られることを表しています。

BufferedReader は入力を受け取ります。
String は入力された文字列を扱います。
Integer は文字列を整数へ変換します。
Math は絶対値や累乗などの数値計算を行います。
System は結果を表示します。

ここから分かるのは、Javaのプログラムは1つのクラスだけで作るのではなく、目的に応じて複数のクラスを連携させて作ることが多いということです。

初心者のうちは、それぞれのクラスを別々に覚えようとしがちです。

でも実際には、入力、変換、計算、表示のように、処理の流れの中でクラスを組み合わせて使う感覚がとても大切です。

クラスライブラリを読むときは、引数と戻り値を見る

クラスライブラリのメソッドを使うとき、特に大切なのが引数と戻り値です。

メソッドは、何かを受け取り、何かを返すことがあります。

たとえば、Integer.parseInt(str) は、文字列を受け取り、int 型の整数を返します。

メソッド引数戻り値
Integer.parseInt(str)Stringint
Math.abs(num)intint
Math.pow(num, 2)double相当の数値double
str.length()なしint
str.substring(0, 3)int, intString

この、何を渡すか、何が返るかが分かると、メソッドをかなり使いやすくなります。

ドラゴンボールでたとえると、道具に何を入れると、何が返ってくるのかを知るようなものです。

数字の札を入れると、数値が返る。
2つの点数を入れると、大きい値が返る。
巻物と位置番号を渡すと、一部の文字列が返る。

この対応関係を見られるようになることが、クラスライブラリを使う力につながります。

クラスライブラリは、作る力と使う力をつなぐ

Javaでは、自分でクラスを作る力も大切です。

たとえば、Saiyan クラスを作り、戦士の名前、戦闘力、気の量、流派情報を管理するような設計です。

一方で、すでに用意されたクラスライブラリを使う力も大切です。

内容
自分で作る力自分の目的に合ったクラスを設計する
既存クラスを使う力Javaが用意した機能を活用する
組み合わせる力自作クラスと標準クラスを連携させる

ドラゴンボールでたとえると、自分の戦闘技を磨くことも大切です。

同時に、スカウター、地図、伝令札、戦士名簿、計算台帳など、本部の道具を使いこなすことも大切です。

Javaの実践では、この2つの力が組み合わさります。

自分で必要なクラスを作る。
足りない基本機能はクラスライブラリを使う。
複数のクラスを組み合わせて、ひとつのプログラムを完成させる。

この感覚が身につくと、プログラムは一段と実用的になります。

クラスライブラリを使いこなす力は実践力につながる

クラスライブラリを使えるようになると、Javaでできることが大きく広がります。

できるようになること内容
短いコードで書ける便利なメソッドを使って処理を簡潔にする
読みやすいコードにしやすい処理の意図がメソッド名で伝わりやすい
高度な処理に挑戦しやすい日付、ファイル、コレクションなどへ進める
学べる範囲が広がる新しいクラスを調べて使えるようになる
実践的なプログラムに近づく入力、変換、計算、表示を組み合わせられる

ドラゴンボールでたとえると、使える道具が増えるほど、任務の幅が広がります。

近距離の任務だけでなく、遠方の調査、複数戦士の管理、時刻指定の作戦、記録の保存など、できることが増えていきます。

Javaでも、クラスライブラリを使えるようになると、学習内容が現実のプログラムづくりに近づいていきます。

クラスライブラリを見るときの大切な感覚

クラスライブラリを学ぶときは、次の感覚を持つと分かりやすいです。

ポイント内容
クラスライブラリは道具箱Javaが用意した便利なクラスの集まり
全部暗記しなくてよい必要なときに調べて使えればよい
リファレンスを見るクラス、メソッド、引数、戻り値を確認する
小さく試す短いコードで動きを確認する
組み合わせて使う入力、変換、計算、表示を連携させる
実践力につながる作れるプログラムの幅が広がる

ドラゴンボールでたとえると、クラスライブラリは戦士管理本部の大きな道具箱です。

すべての道具を暗記する必要はありません。

大切なのは、必要な道具を探し、説明を読み、試し、任務に合わせて使えることです。

Javaのクラスライブラリも同じです。

String、Integer、Math、StringBuffer、BufferedReader、System など、これまで使ってきたクラスはすべて、プログラムを作るための大切な部品です。

これから新しいクラスに出会ったときも、次の視点で見ていくと分かりやすくなります。

視点確認すること
何をするクラスか文字列、数値、入力、出力など
どんなメソッドがあるか調べる、変換する、計算する、表示するなど
何を渡すか引数の型や個数
何が返るか戻り値の型
どう組み合わせるか入力、変換、計算、表示の流れ

クラスライブラリを使いこなせるようになると、Javaの世界はぐっと広がります。

自分で作る力と、用意された部品を活かす力を組み合わせて、より実践的なプログラムへ進んでいけます。