🐊

フレームワークの概要・インストール方法を詳しく解説[後半:Java EEについて]

2024/12/23に公開

はじめに

エンジニア転職をしもうすぐ2か月、、、
まだまだ分からない、聞いたことはあるけど説明できない、用語と中身が一致していない、色んなことが起き続けています。
今回はその中で「聞いたことはあるけど説明は出来ない」ゾーンに居座り続けているフレームワークについて理解を深めたいと思います。
今回も学習メモ&所感です🥺

1. フレームワークとは?

IT業界で用いられるフレームワークとは、アプリケーション開発においてよく利用される機能をあらかじめパーツとして備えた枠組みのことです。
フレームワークには、一般的なアプリケーション開発に活用される「アプリケーションフレームワーク」や、Webシステムの開発に用いられる「Webアプリケーションフレームワーク」などの種類があり、開発用途に合わせて選択が可能です。

2. フレームワークとライブラリの違いとは

フレームワークとよく似た言葉に「ライブラリ」があります。どちらもプログラミングを助けてくれるツールですが、位置づけが異なるため留意してください。

ライブラリはあくまで「部品」であり、自身の作成したプログラムの中で部分的に活用するものです。具体的には、よく使う機能をパッケージ化した部品として、構築したアプリケーションに読み込んで利用します。


JavaのSystem.out.println()
JavascriptのMathライブラリ(数学的な処理用)

一方、フレームワークはアプリケーションの「枠組み」を提供するツールです。開発者はフレームワークで用意されたコードを修正したり、新たにコードを追加したりして利用します。

3. フレームワークが提供する機能とは

ここでは、フレームワークが提供する具体的な機能を3つ紹介します。

MVCモデルによるシステム開発

多くのフレームワークは、MVCモデルに沿ってシステム開発が行えるように設計されているのが特徴です。MVCモデルとは、アプリケーションを以下の3つに分けることで、プログラムの生産性や保守性を向上させる考え方を指します。

  • Model: データベースと連携してユーザー情報を管理。
  • View: HTMLやCSSを用いて画面を描画。
  • Controller: ユーザーからの入力(リクエスト)を受け取り、ModelとViewを連携。

データベースとの接続

多くのフレームワークは、データベースとの接続や操作を容易に行う機能を備えているのも特徴の1つです。

具体的には、以下のような仕組みが用意されています。

  • データベースに自動的にテーブルを作成する
  • 開発に必要となるテストデータを作成してデータベースに登録する
  • プログラム中から簡単にSQL文を発行できる

データベースとの接続から、利用者の端末に表示させるまでの工程を自分で調べてプログラムを組み立てる必要がなくなるため、エラーや手間の削減につながるのです。

セキュリティ

アプリケーションのセキュリティレベルを上げるために、フレームワークにはセキュリティ対策のための仕組みが用意されています。

特に、不特定多数の端末からアクセスされる可能性があるWebアプリケーションの構築では、プログラムの脆弱性を狙ったサイバー攻撃を受けるリスクへの対策が欠かせません。

多くのフレームワークにはユーザー認証機能が備わっており、安全な認証機能を提供しています。また、SQLインジェクションなどのサイバー攻撃を防止するための機能を有し、エンジニアによるプログラムミスを最小化させるのも、フレームワークが持つ役割です。

言語別に使えるフレームワークとは?例を紹介

Rubyのフレームワーク3選

  1. Ruby on Rails:MVCアーキテクチャに基づいています。
インストール方法
gem install rails
// これでRailsのフレームワークがインストールされます。
// その後、新しいRailsアプリケーションを作成するには、次のコマンドを実行します。
rails new myapp
  1. Sinatra
インストール方法
gem install sinatra
  1. Padrino
インストール方法
gem install padrino
// Padrinoを使って新しいプロジェクトを作成するには、次のコマンドを使用します。
padrino gen app myapp

JavaScriptのフレームワーク3選

  1. Backbone.js
インストール方法(npmを使用)
npm install backbone
  1. Vue.js:非常に人気があり、使いやすいフレームワークです。特にフロントエンドの開発に使われ、コンポーネントベースの開発が可能で、リアクティブなUIを作ることができます。
インストール方法(npmを使用)
npm install vue
  1. Ember.js
インストール方法(npmを使用)
npm install -g ember-cli
ember new my-app

Javaのフレームワーク3選

  1. Spring Framework
    SpringはMavenやGradleを使って依存関係を管理します。まず、pom.xmlにSpring依存関係を追加します。
xml
<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>5.3.20</version>
    </dependency>
</dependencies>

その後、Mavenで依存関係を解決します。

ターミナル
mvn install
  1. Play Framework
  2. JSF(JavaServer Faces):Java EEに含まれるフレームワーク
    JSFは通常、Java EE(またはJakarta EE)環境に含まれています。
    Mavenを使って依存関係を追加します。
xml
<dependency>
    <groupId>javax.faces</groupId>
    <artifactId>javax.faces-api</artifactId>
    <version>2.3</version>
</dependency>

PHPのフレームワーク3選

  1. CakePHP: PHPのフレームワークの中でも特に使いやすく、MVCアーキテクチャに基づいています。シンプルで、迅速に開発を進めることができます。
  2. Laravel
  3. FuelPHP

Pythonのフレームワーク3選

  1. Django
  2. Flask
  3. Bottle

CSSフレームワーク3選

  1. Bootstrap:最も有名なCSSフレームワークの1つで、レスポンシブデザインに対応しており、ボタン、ナビゲーションバー、モーダルなどのUIコンポーネントをすぐに使えるように提供します。
    導入方法は2種類
1.インストール方法(npmを使用)
npm install bootstrap
2.、CDNを使う方法
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
  1. Foundation
  2. UIkit

参考記事
https://rookie.levtech.jp/guide/detail/147/

[後半]:Java EEとは??

何故Java EEかといわれると私の会社で使うからです😳

Java EE(Jakarta EE)は、アプリケーションを構築するための標準的なフレームワークで、インストール不要
これには、アプリケーション開発に必要な多くの機能(例えば、データベースアクセス、セキュリティ、トランザクション管理など)があらかじめ含まれています。そのため、Java EEを使用すると、個別にインストールしなくても、すぐにこれらの機能を利用できます。

  • EJB (Enterprise JavaBeans): サーバーサイドのビジネスロジックを管理。
  • JPA (Java Persistence API): データベースとオブジェクト間のマッピングを管理(ORM)。
  • JSP/Servlets: ユーザーインターフェースを構築するためのAPI。
  • JSF (JavaServer Faces): ウェブアプリケーションのUIフレームワーク。
  • JAX-RS (Java API for RESTful Web Services): RESTful APIを作成するための標準API。

では、やっとJavaアプリ構造

EEというのが標準フレームワークは理解した。
ほんじゃあjavaの標準の構造を知ればいいという事ね。うんうん
私はRubyしか学んだことがないのでRubyだったらこれにあたるという無駄な記載も多いかもしれません(許して)

1. エンティティ(Entity)

エンティティは通常、JPA(Java Persistence API)を使って、データベースのテーブルとマッピングするクラスです。
Ruby on RailsでいうModel(例えば、Postモデル)が、データベースのレコードとやり取りを行うように、Java EEでいうエンティティクラスは、データベースとやり取りするためのクラスです。

例)POSTエンティティ(POSTモデル)
iimport javax.persistence.Entity; // インポート
import javax.persistence.Id;

@Entity // アノテーション: Userクラスをエンティティとして指定
public class User {

    @Id // アノテーション: 主キーを指定
    private Long id;

    private String name;

    private String email;

    // ゲッターやセッター(省略可能)
}

2. サービス (Service)

サービスはビジネスロジックを実行するクラスです。コントローラーから呼び出され、データを処理したり、他のサービスやリポジトリと連携してデータの取得や操作を行います。
例えば、データを取得して加工したり、特定の条件に基づいてデータを処理したりします。

使用例: ユーザー認証、注文処理、支払い処理など。

3. ビュー (View)/User Interface(UI)

ビューは、ユーザーにデータを表示するためのUI部分で通常、HTMLやテンプレートエンジン(JSP, Thymeleafなど)を使って作成されます。

4. Action

5. DTO (Data Transfer Object)

DTOは、異なるレイヤー間でデータを転送するためのオブジェクトです。
通常、サービスやコントローラーで処理されたデータをビューに渡す際に使用されます。

[他:後々追記]

  • helper:Javaプロジェクトにおける「ヘルパー (Helper)」は、特定のタスクや処理を補助するためのクラスやメソッドを指します。基本的には、再利用可能な汎用的な機能を提供するために作られることが多いです。
    基本的には、インスタンス変数を持たず、入力値に基づいて結果を返す機能が多い。
    多くの場合、すべてのメソッドがstaticとして定義される。
    [具体例]:文字列操作
public class StringHelper {

    // Nullチェックと空文字判定
    public static boolean isNullOrEmpty(String str) {
        return str == null || str.trim().isEmpty();
    }

    // 文字列の最初の文字を大文字に変換
    public static String capitalize(String str) {
        if (isNullOrEmpty(str)) {
            return str;
        }
        return str.substring(0, 1).toUpperCase() + str.substring(1).toLowerCase();
    }
}

やっと理解がすすんできた~~~🐺💙

Discussion