Java道|クラスライブラリの使い方と考え方

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

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

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

文字列を扱う String クラス。
あとから文字列を追加できる StringBuffer クラス。
文字列を整数に変換する Integer クラス。
数値計算を助ける Math クラス。
キーボード入力を読み込む BufferedReader クラス。
画面出力に使う System クラス。

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

鬼滅の刃でたとえると、クラスライブラリは鬼殺隊本部が用意してくれている大きな道具箱のようなものです。

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

こうした道具を毎回すべて自分で作る必要はありません。
すでに用意されている道具を、必要な場面で正しく選んで使えるようになることが大切です。

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

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

この力がつくと、Javaのプログラムは練習用の小さな処理から、もっと実践的な処理へ広がっていきます。

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

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

たとえば、次のように考えます。

考えること具体例
どんな処理をしたいか文字列を比較したい
役立つクラスは何かString クラス
どのメソッドを使うかequals()、indexOf()、substring() など
どう書けばよいかリファレンスや小さなサンプルで確認する

鬼滅の刃でたとえると、任務に出るときに、全部の道具を暗記して背負っていく必要はありません。

大切なのは、

今の任務では何が必要か。
藤の森の地図が必要なのか。
伝令札が必要なのか。
距離を測る道具が必要なのか。
本部の道具箱のどこを見ればよいのか。

を判断できることです。

Javaでも同じです。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

たとえば、文字列の長さを調べる str.length() も、String クラスの力を使っています。
文字列を整数に変換する Integer.parseInt(str) も、Integer クラスの力を使っています。
大きい値を調べる Math.max(num1, num2) も、Math クラスの力を使っています。

鬼滅の刃でたとえると、これまでの任務でも、知らないうちに鬼殺隊本部の支給道具を使っていたようなものです。

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

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

もちろん、自分で仕組みを作ってみる学習も大切です。
でも、実際の開発では、すでに用意されている信頼できる部品を使うこともとても重要です。

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

鬼滅の刃でたとえると、任務のたびに刀や隊服や地図を一から作るのは大変です。

刀鍛冶の里が鍛えた刀。
本部が用意した地図。
伝令用の札。
隊士名簿。

こうした道具を正しく使えるからこそ、隊士は任務に集中できます。

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入力を文字として扱うため
Integer文字列を整数に変換するため
Math絶対値や2乗を計算するため
System結果を表示するため
String入力された文字列を扱うため

このように、実際の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つのプログラムが複数のクラスライブラリの組み合わせで作られることを表しています。

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

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

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

リファレンスを見ながら学ぶ習慣をつける

クラスライブラリを使いこなすには、分からないことが出てきたときにリファレンスを見る習慣が大切です。

最初は、英語の説明や記号が多くて難しく感じるかもしれません。

でも、全部を完璧に読む必要はありません。
必要なところだけを探して読むことから始めれば大丈夫です。

たとえば、次のような流れで使うと分かりやすいです。

学習の流れ内容
1やりたい処理を考える
2使えそうなクラスを探す
3リファレンスでメソッドを確認する
4小さなコードで試す
5本番のプログラムに組み込む

鬼滅の刃でたとえると、新しい任務に向かう前に、本部の道具台帳を確認するようなものです。

任務に必要な道具を探す。
使い方を読む。
訓練場で少し試す。
実際の任務に持っていく。

この流れを身につけると、新しいクラスに出会っても落ち着いて学べます。

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

↓クリックすると拡大表示されます。

この図が示していること

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

まず、やりたい処理を考えます。
次に、その処理に合いそうなクラスを探します。
その後、リファレンスでメソッド名、引数、戻り値を確認します。
そして、小さなコードで試してから、本番のプログラムに組み込みます。

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

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

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

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

たとえば、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では、自分でクラスを作る力も大切です。

たとえば、DemonSlayer クラスを作り、隊士の体力や呼吸の力を管理するような設計です。

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

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

鬼滅の刃でたとえると、自分の呼吸の型を磨くことも大切です。
同時に、刀、地図、伝令札、隊士名簿など、本部の道具を使いこなすことも大切です。

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

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

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

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

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

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

鬼滅の刃でたとえると、使える道具が増えるほど、任務の幅が広がります。

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

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

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

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

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

鬼滅の刃でたとえると、クラスライブラリは鬼殺隊本部の大きな道具箱です。

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

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

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

これから新しいクラスに出会ったときも、

何をするクラスか。
どんなメソッドがあるか。
何を渡すか。
何が返るか。
どう組み合わせるか。

この視点で見ていけば、少しずつ使える道具が増えていきます。

クラスライブラリを使いこなせるようになると、Javaの世界はぐっと広がります。
自分で作る力と、用意された部品を活かす力を組み合わせて、より実践的なプログラムへ進んでいけます。