0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Java入門 - 実践編】非標準ライブラリの活用

0
Posted at

はじめに

こんにちは。
スッキリわかるJava入門 実践編の学習を進めています。
この学習記録を備忘録として残しながら、自身の理解を深めたいと思っています。

今回は第1部 / 第5章「非標準ライブラリの活用」について学びました。
外部ライブラリを活用することで、実装の効率化と品質向上が実現でき、オープンソースとライセンスの正しい理解が、実務的なJavaプログラミングを支えています。

この記事が、同じくJavaの学習をしている人にとっても参考になりましたら幸いです。

参考書籍について

目次

  1. 本章の要点
  2. 自分なりの解釈

1. 本章の要点

ライブラリの基本と活用

  • ライブラリとは、第三者が作成したクラスをまとめたものです。
  • 通常、JARファイル形式で提供され、プロジェクトに組み込むことで、既存の機能を再利用でき、開発効率を大幅に向上させられます。

JARファイルをプロジェクトに組み込む

  • ライブラリをプロジェクトで使用するには、JARファイルをクラスパスに追加する必要があります。
  • IDEの場合、プロジェクト設定でライブラリフォルダを指定するか、Mavenなどのビルドツールで依存関係を管理します。
プロジェクト構成例:
MyProject/
  ├── src/
  │   └── Main.java
  ├── lib/
  │   ├── commons-lang3-3.12.0.jar  ← ライブラリ
  │   └── slf4j-api-1.7.36.jar      ← ログライブラリ
  └── build.xml

Apache Commons Langで言語機能を強化

  • Apache Commons Langは、Javaの基本機能を便利にするユーティリティクラスを提供するライブラリです。
import org.apache.commons.lang3.StringUtils;

public class Main {
    public static void main(String[] args) {
        String text = "  Hello World  ";
        
        // Commons Langの便利なメソッド
        System.out.println("[" + StringUtils.stripStart(text, " ") + "]");
        // 出力:[Hello World  ]
        
        System.out.println("[" + StringUtils.stripEnd(text, " ") + "]");
        // 出力:[  Hello World]
        
        // 文字列の反転
        System.out.println(StringUtils.reverse("Hello"));       // 出力:olleH
        
        // 文字列の繰り返し
        System.out.println(StringUtils.repeat("ab", 3));        // 出力:ababab
    }
}

SLF4Jとロガーライブラリを使ったログ管理

  • SLF4J(Simple Logging Facade for Java)は、ロガーの実装を切り替えられる「ファサード」ライブラリです。
  • Log4j2やLogbackなどの実装ライブラリと組み合わせて、柔軟なログ出力を実現します。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Hero {
    private static final Logger logger = LoggerFactory.getLogger(Hero.class);
    
    private String name;
    private int hp;
    
    public Hero(String name, int hp) {
        this.name = name;
        this.hp = hp;
        logger.info("ヒーロー生成:名前={}, HP={}", name, hp);
    }
    
    public void attack(String enemy) {
        logger.debug("攻撃準備中...");
        System.out.println(this.name + "が" + enemy + "に攻撃した");
        logger.info("攻撃実行:対象={}", enemy);
    }
    
    public void takeDamage(int damage) {
        logger.warn("ダメージを受けた:{}", damage);
        this.hp -= damage;
        if (this.hp <= 0) {
            logger.error("ヒーロー撃破:HP={}", this.hp);
        }
    }
}

public class Main {
    private static final Logger logger = LoggerFactory.getLogger(Main.class);
    
    public static void main(String[] args) {
        logger.info("ゲーム開始");
        
        Hero hero = new Hero("ミナト", 100);
        hero.attack("ゴブリン");
        hero.takeDamage(30);
        
        logger.info("ゲーム終了");
    }
}

// 出力例:
// [2024-09-23 14:30:45.123] [INFO ] [Main] ゲーム開始
// [2024-09-23 14:30:45.125] [INFO ] [Hero] ヒーロー生成:名前=ミナト, HP=100
// ミナトがゴブリンに攻撃した
// [2024-09-23 14:30:45.126] [DEBUG] [Hero] 攻撃準備中...
// [2024-09-23 14:30:45.127] [INFO ] [Hero] 攻撃実行:対象=ゴブリン
// [2024-09-23 14:30:45.128] [WARN ] [Hero] ダメージを受けた:30
// [2024-09-23 14:30:45.129] [INFO ] [Main] ゲーム終了

SLF4Jの役割(ロガーファサード)

SLF4Jは「ログ出力インターフェース」を提供し、Log4j2、Logback、java.util.loggingなど、様々なロガー実装を切り替えられます。

これにより、ライブラリ内部のログ処理と実装が分離され、ユーザーが好みのロガーを選択できます。

オープンソースライセンスの理解

  • オープンソース製品はソースコードが公開され、自由に再配布・改変できますが、各ライセンスには異なる条件があります。

代表的なオープンソースライセンス

  • MIT License
    最も自由度が高く、商用・非商用を問わず使用、改変、再配布が自由です。

  • Apache License 2.0
    商用利用が可能で、特許に関する保護も備えています。

  • GPL(GNU General Public License)
    改変・使用したコードを再配布する場合、同じGPLで公開する必要があります。
    そのため、商用ソフトウェアでは避けられることが多いです。

2. 自分なりの解釈

  • ライブラリの活用により、車輪の再発明を避け、実装の効率化と品質向上が実現できます。
  • ライブラリを適切に選択・組み合わせることで、単に機能を追加するだけでなく、設計をより柔軟で拡張性の高いものにできることが分かりました。
  • オープンソースとライセンスの理解は、実務的なプログラミングにおいて法的・技術的なリスク回避に必須の知識です。

最後まで見ていただきありがとうございました。
次回は、第2部 / 第6章「ファイルの操作」について書く予定です。


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?