Java道|クラスライブラリのしくみと使い方

すべての道具を自分で作らなくていい。
Javaのクラスライブラリを使えば、用意された便利な部品でプログラムの世界が大きく広がる。

クラスライブラリのしくみと使い方

ここまでの学習では、自分でクラスを作る方法を学んできました。

クラスは設計図です。
その設計図からオブジェクトを作り、フィールドに情報を持たせたり、メソッドで処理を行ったりできました。

鬼滅の刃でたとえると、DemonSlayer クラスは鬼殺隊士の設計図です。
そこから水月や炎真のような隊士オブジェクトを作り、それぞれに体力や呼吸の力を持たせることができました。

ここから先は、その考え方をもう一歩広げます。

Javaでは、自分で作ったクラスだけでなく、最初から用意されている便利なクラスも使えます。

文字を扱うクラス。
入力を受け取るクラス。
数値を変換するクラス。
日付や時刻を扱うクラス。
画面に表示するためのクラス。

こうした便利なクラスの集まりを、クラスライブラリといいます。

鬼滅の刃でたとえると、クラスライブラリは鬼殺隊本部が用意してくれている道具箱のようなものです。
刀、地図、伝令用の札、訓練記録帳など、任務でよく使う道具があらかじめ整理されているイメージです。

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

クラスライブラリとは何か

クラスライブラリとは、すでに用意されている便利なクラスの集まりです。

これまでの学習では、自分でクラスを定義し、そこからオブジェクトを作って使う流れを学びました。

たとえば、DemonSlayer クラスを作り、隊士の体力や呼吸の力を扱うような形です。

ただ、実際の開発では、必要な機能を毎回すべて自分で作るわけではありません。

たとえば、次のような機能は、多くのプログラムで何度も使われます。

よく使う機能
文字列を扱う文字をつなぐ、長さを調べる
入力を受け取るキーボードから文字を読む
数値を変換する文字列を整数に変える
画面に表示するメッセージを出力する
日付を扱う今日の日付を取得する

こうした処理を毎回ゼロから作るのは大変です。

そこでJavaでは、よく使う機能がクラスとしてあらかじめ用意されています。
それらを必要に応じて呼び出して使うことで、効率よくプログラムを作れます。

鬼滅の刃でたとえると、任務のたびに刀や隊服や地図を自作するのではなく、鬼殺隊本部が用意した道具を受け取って使うようなものです。

道具がすでに整っているから、隊士は任務そのものに集中できます。
Javaでも同じで、クラスライブラリがあるから、開発者は作りたい処理の本体に集中しやすくなります。

クラスライブラリは手抜きではなく、部品を活かす考え方

クラスライブラリを使うというと、「自分で作っていないから手抜きなのでは」と感じる人もいるかもしれません。

でも、そうではありません。

クラスライブラリを使うことは、すでに整理された部品を活かして、より実用的なプログラムを組み立てることです。

すべてを自分で作る場合と、クラスライブラリを使う場合を比べると、次のような違いがあります。

観点すべて自分で作る場合クラスライブラリを使う場合
開発の手間多くなりやすい少なくしやすい
コード量増えやすい抑えやすい
品質自分の設計力に大きく依存する整理された標準機能を使いやすい
保守性自作部分が多いと修正が大変役割が分かれ、見通しがよくなりやすい
学習の広がり仕組みの理解が深まる実践的な組み立て力が身につく

鬼滅の刃でたとえると、隊士が任務のたびに刀を一から鍛える必要はありません。
刀鍛冶の里で作られた刀を正しく使うことも、隊士として大切な力です。

Javaでも同じです。

自分でクラスを作れることは大切です。
同時に、Javaが用意しているクラスを正しく選んで使えることも、とても大切です。

実はこれまでにもクラスライブラリを使っていた

クラスライブラリという言葉を聞くと、新しい学習内容のように感じるかもしれません。

でも、実はこれまでのJava学習でも、すでに何度もクラスライブラリを使っています。

たとえば、画面に文字を表示するときに使ってきたものがあります。

System.out.println("こんにちは");

ここに出てくる System は、Javaが用意しているクラスです。

また、文字列を表す String もクラスです。

String message = "全集中";

さらに、文字列を整数に変換するときに使う Integer も、Javaが用意しているクラスです。

int number = Integer.parseInt("100");

このように、私たちは自分でクラスを定義していない場面でも、すでにたくさんの既成クラスを利用しています。

使ってきたもの役割クラスライブラリとの関係
System画面出力などに使うJavaが用意しているクラス
String文字列を扱うJavaが用意しているクラス
Integer整数関連の処理を扱うJavaが用意しているクラス

鬼滅の刃でたとえると、これまで意識せずに鬼殺隊本部の道具を使っていたようなものです。

最初は「画面に表示するための書き方」として覚えていた System.out.println も、実はクラスライブラリの力を借りた処理だったのです。

クラスを作ることと、クラスを利用することは違う

Javaの学習では、クラスを作る力と、クラスを利用する力の両方が必要です。

自分でクラスを作るときは、新しい設計図を用意します。

一方で、クラスライブラリを使うときは、すでに用意されている設計図を使います。

作業内容
クラスを作る新しい設計図を自分で用意するDemonSlayer クラスを作る
クラスを利用するすでにある設計図を使うString や Integer を使う
オブジェクトを作るクラスから実体を作るnew を使う
クラスメソッドを使うオブジェクトを作らずに機能を呼び出すInteger.parseInt()

ここを分けて考えられるようになると、コードを読んだときに判断しやすくなります。

この部分は自分で設計している。
この部分は用意されたクラスを利用している。
この部分はオブジェクトを作って使っている。
この部分はクラス名から直接メソッドを呼んでいる。

このように見分けられると、Javaのコードがかなり読みやすくなります。

鬼滅の刃でたとえると、自分で新しい呼吸の型を設計する場面と、本部から支給された道具を使う場面は違います。
どちらも任務には必要ですが、役割が違うということです。

クラスライブラリは整理された道具箱

クラスライブラリは、開発者のための大きな道具箱のような存在です。

ただし、単なる寄せ集めではありません。
目的ごとに整理された部品の集まりです。

分野よく使う機能代表的なクラス
文字列処理文字をつなぐ、長さを調べるString
数値変換文字列を整数に変えるInteger
画面表示メッセージを表示するSystem
日付や時刻今日の日付を扱うLocalDate
入力処理キーボード入力を受け取るScanner

鬼滅の刃でたとえると、道具箱の中が目的別に整理されている状態です。

鬼殺隊の道具箱Javaのクラスライブラリ
伝令用の札入力や出力の機能
任務記録帳文字列や日付の処理
数を数える台帳数値変換や集計
支給された刀よく使う標準機能

開発者は、何を一から作るべきか、何を既存の部品として使うべきかを考えながらプログラムを組み立てます。

これができるようになると、コードの量を減らしながら、実用的なプログラムを作りやすくなります。

具体例で見るクラスライブラリの利用

キーボードから文字を入力し、その文字数を表示するプログラムを見てみましょう。

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        // 入力のための準備をする
        Scanner scanner = new Scanner(System.in);

        // 入力をうながす
        System.out.println("好きな言葉を入力してください。");

        // 文字列を受け取る
        String message = scanner.nextLine();

        // 文字数を表示する
        System.out.println("入力された言葉は " + message.length() + " 文字です。");
    }
}

このプログラムでは、クラスライブラリのクラスがいくつも使われています。

コード中の要素役割種類
Scannerキーボード入力を受け取るクラスライブラリのクラス
String文字列を表すクラスライブラリのクラス
System画面出力に使うクラスライブラリのクラス
scanner.nextLine()1行分の文字列を読み込むインスタンスメソッド
message.length()文字列の長さを調べるインスタンスメソッド

ここで注目したいのは、Scanner クラスの中身を自分で定義していないことです。

String クラスの仕組みも、自分で作っていません。
System クラスも、自分で作っていません。

それでも、用意された使い方に従えば、入力、文字列の保存、文字数の取得、画面表示といった処理を行えます。

鬼滅の刃でたとえると、伝令札の詳しい作り方や、任務記録帳の紙の製法を知らなくても、決められた使い方を知っていれば任務で活用できるようなものです。

import は使いたい道具の場所を知らせる準備

クラスライブラリを使うときには、import が出てくることがあります。

先ほどの例では、次のように書いていました。

import java.util.Scanner;

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

Scanner はキーボード入力を受け取るために便利なクラスです。
ただし、プログラムの中で簡単に Scanner と書けるようにするには、どこにあるクラスなのかを知らせる必要があります。

そのために import を使います。

書き方意味
import java.util.Scanner;java.util の中にある Scanner を使う準備
Scanner scanner = new Scanner(System.in);Scanner オブジェクトを作る

鬼滅の刃でたとえると、任務前に「今回は本部の入力用伝令札を使います」と申請しておくようなものです。

どの道具箱から、どの道具を使うのかを最初に伝えておくことで、任務中にその道具を名前だけで扱いやすくなります。

インスタンスメソッドとクラスメソッドを見分ける

クラスライブラリを使うときに大切なのが、インスタンスメソッドとクラスメソッドの見分け方です。

インスタンスメソッドは、オブジェクトを作ってから使うメソッドです。

たとえば、次の2つはインスタンスメソッドです。

scanner.nextLine()

message.length()

scanner.nextLine() は、scanner という Scanner オブジェクトに対して呼び出しています。

message.length() は、message という String オブジェクトに対して呼び出しています。

呼び出し対象意味
scanner.nextLine()scanner オブジェクト入力を1行読み込む
message.length()message オブジェクトその文字列の長さを調べる

鬼滅の刃でたとえると、特定の伝令札に命令して文字を受け取ったり、特定の巻物に対して長さを調べたりするようなものです。

一方で、クラスメソッドはオブジェクトを作らなくても、クラス名から直接使えるメソッドです。

代表的な例が Integer.parseInt() です。

int number = Integer.parseInt("100");

これは Integer クラスそのものに用意された機能を呼び出しています。

種類呼び出し方
インスタンスメソッドオブジェクト名.メソッド名scanner.nextLine()、message.length()
クラスメソッドクラス名.メソッド名Integer.parseInt()

この違いを見分けられるようになると、クラスライブラリのコードが読みやすくなります。

図:クラスライブラリは鬼殺隊の道具箱

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

この図が示していること

この図では、Javaのクラスライブラリを、鬼殺隊本部が用意している道具箱のように表しています。

道具箱の中には、String、Integer、System、Scanner、LocalDate などの便利なクラスが入っています。
これらは、文字列処理、数値変換、画面表示、入力処理、日付処理など、よく使う機能を担当します。

左側には、自分で作る DemonSlayer クラスがあります。
右側には、自作クラスとクラスライブラリを組み合わせて、実用的なプログラムを作る流れがあります。

ここから分かるのは、Javaのプログラムは自分で作るクラスだけで完成するのではなく、標準で用意されたクラスも組み合わせて作っていくということです。

クラスライブラリを使うとできることが広がる

クラスライブラリを使えるようになると、作れるプログラムの幅が一気に広がります。

これまで学んできた変数、条件分岐、繰り返し、クラスの基本に、クラスライブラリの力が加わると、より実践的な処理が書けるようになります。

できること具体例
入力を受け取るユーザーが入力した名前や数値を読み込む
文字列を加工するあいさつ文を作る、文字数を数える
数値を変換する文字列として入力された数値を整数に直す
日付を扱う今日の日付を表示する
複数データを扱うリストや配列で整理する

鬼滅の刃でたとえると、基本の剣技だけでなく、本部から支給された地図や伝令札、記録帳を使えるようになることで、任務の幅が広がるようなものです。

クラスライブラリは、単なる知識の追加ではありません。
できることを増やしてくれる実践的な道具です。

自分で作るクラスと標準クラスを組み合わせる

実際のプログラムでは、自分で作るクラスと、Javaが用意している標準クラスを組み合わせて使います。

たとえば、鬼殺隊士の情報を管理する DemonSlayer クラスを自分で作ったとします。

その中で、隊士の名前は String で扱うかもしれません。
入力には Scanner を使うかもしれません。
文字列として入力された体力を整数に変換するために Integer を使うかもしれません。

担当役割
自分で作るクラスプログラム独自の役割を担当するDemonSlayer
クラスライブラリのクラス基本機能や共通機能を担当するString、Scanner、Integer

鬼滅の刃でたとえると、自分で設計するのは任務専用の隊士管理表です。
一方で、文字を書く筆、数を数える台帳、伝令札などは本部から支給された道具を使います。

この組み合わせによって、効率よく、読みやすく、役割分担のはっきりしたプログラムが作れます。

初心者がクラスライブラリを学ぶときの見方

クラスライブラリはとても数が多いです。

そのため、最初から全部を覚えようとしなくて大丈夫です。

大切なのは、よく使うクラスに慣れながら、使い方を読み取る力を育てることです。

新しいクラスに出会ったときは、次の視点で見ると理解しやすくなります。

見るポイント確認したいこと
クラス名何のためのクラスか
作り方new が必要かどうか
メソッド名どんな機能を使えるか
引数何を渡せばよいか
戻り値何が返ってくるか

たとえば Scanner なら、入力を受け取るためのクラスです。
new でオブジェクトを作り、nextLine() のようなインスタンスメソッドを呼び出して使います。

Integer.parseInt() なら、Integer クラスから直接呼び出すクラスメソッドです。
文字列を渡すと、整数が返ってきます。

このように、丸暗記するのではなく、

何のためのクラスか。
どう作るのか。
どのメソッドを使うのか。
何を渡すのか。
何が返るのか。

を確認していくことが大切です。

図:クラスライブラリを読むときの5つの視点

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

この図が示していること

この図では、クラスライブラリを学ぶときに見るべき5つの視点を整理しています。

クラス名を見て、何のためのクラスかを確認します。
作り方を見て、new が必要なのか、クラス名から直接使うのかを判断します。
メソッド名を見て、どんな機能を使えるのかを考えます。
引数を見て、何を渡せばよいのかを確認します。
戻り値を見て、何が返ってくるのかを確認します。

ここから分かるのは、クラスライブラリは全部を暗記するものではなく、仕様を見ながら使い方を読み取っていくものだということです。

クラスライブラリを学ぶ意味

クラスライブラリを学ぶ意味は、とても大きいです。

Javaを学ぶということは、文法を覚えるだけではありません。

学ぶこと内容
文法を知る変数、条件分岐、繰り返し、メソッドなどを理解する
クラスを設計する自分で必要なクラスを作れるようになる
既存クラスを活用するJavaが用意したクラスを正しく使えるようになる

この3つが結びつくと、実際に使えるプログラムを作る力が育っていきます。

鬼滅の刃でたとえると、隊士が強くなるには、自分の技を磨くだけでは足りません。
本部から支給される道具を理解し、任務に合わせて使いこなす力も必要です。

Javaでも、自分でクラスを書く力と、用意されたクラスを使う力の両方が大切です。

これからの学習につながる視点

これから先は、クラスライブラリに含まれるさまざまなクラスを少しずつ学んでいくことになります。

最初は知らないクラス名が増えて、少し戸惑うかもしれません。

でも、大丈夫です。

大切なのは、すべてを一度に覚えることではありません。

このクラスは何のためにあるのか。
オブジェクトを作って使うのか。
クラス名から直接使うのか。
どんなメソッドがあるのか。
何を渡すと、何が返るのか。

この視点で一つずつ見ていけば、クラスライブラリは少しずつ使える道具になっていきます。

クラスの基本を学んだ今だからこそ、クラスライブラリはただの便利機能ではなく、設計された部品の集まりとして見えてきます。

鬼滅の刃でたとえると、鬼殺隊本部の道具箱にある支給道具を、任務に合わせて選び、正しく使えるようになる段階です。

クラスライブラリを使えるようになると、Javaのプログラムは練習問題の枠を越えて、より実践的で便利なものへと広がっていきます。