Apache VelocityとJavaで、雛形から予約確認メールを作ってみよう
  • facebookページ
  • twitterページ
  • 2021.03.19

    Apache VelocityとJavaで、雛形から予約確認メールを作ってみよう

    Velocity(ベロシティ)とは

    Velocityは、jakartaプロジェクトが提供すらJavaベースのテンプレートエンジンです。

    雛形となるテキストを用意しておき、テキストの中で動的に変わる部分は、後述するVTL構文で記述しておきます。実行時にVTL構文で記載されているところは、そのプロパティ名などに対応するJavaオブジェクトの値に置き換えられます。

    Velocityのメリット

    例えば、ECサイトなどで送られる購入確認メールなどで使用するテキストは、顧客名や購入金額が異なるだけで、大部分は同じ内容になることが多いです。

    Velocityを使うことで、雛形となるテキストは外部ファイル等に保存しておき、必要な時に雛形から動的に変わる部分(VTL)を置換したテキストを作成しメール配信等でつかえます。

    また、固定の文言が変わる時は、外部に保存しておいた雛形ファイルを編集すれは、手軽に変更できるメリットもあります。

    Velocityのインストール

    それでは、Velocityをインストールしていきましょう。

    VelocityはJava VM上で動作するテンプレートエンジンであるため、事前準備としてJDK(Javaの開発環境)が必要です。

    Velocityのダウンロードは以下のサイトで行います。
    http://velocity.apache.org/download.cgi

    ページ中段のほうにある「Binaries」から「velocity-engine-core-x.x.jar」のリンクをクリックしてjarファイルをダウンロードします。(x-xはバージョン)

    MavenでVelocityのインストール

    Mavenを使って、パッケージ管理している場合は pom.xmlに次の設定を追加します。

    Velocityを使ってみよう

    今回は、次のような予約確認メールのテキストを、雛形のファイルから作るサンプルコードを作ります。

    STEP1. 予約確認メールの雛形(.vm)を作る

    予約確認メールの内容から、送信メールごとに動的に変わる部分をVTL(Velocity Template Language)で変数化した雛形ファイルを作成します。VTLについては後述する内容で解説しますが、動的に変わる部分を「$」から始まる変数名で記述します。

    雛形の作成ができたら、 mail.vmというファイル名で保存しておきましょう。

    STEP2. 予約データモデル(Javaクラス)を作る

    次は、予約データを保持する Reserveクラスを作成します。
    ここで宣言するプロパティ名は、先ほど作成した雛形ファイルのVTLで定義した変数名と一致させておく必要があります。

    STEP3. 雛形ファイルとモデルをマージして出力

    雛形ファイルとモデルクラスの準備ができたら、最後はこの2つをマージする処理を記述していきます。

    VTL構文を詳しく知る

    前のサンプルコードでは、 $変数名で動的な値を定義する構文のみを使用しましたが、VTLにはさまざまな構文があり、 ifによる分岐や、 foreachでコレクションの数だけ繰り返す処理など、柔軟な制御が行えるようになっています。

    変数を出力

    変数を出力する構文には、大きく次の2つがあります。

    構文 説明
    $変数名 変数の値を出力します。
    変数の値がない時は $変数名がそのまま出力されます。
    $!変数名 変数の値を出力します。
    変数の値がない時は、何も出力されません。
    ポテパンダの一言メモ

    変数を出力する構文について、 ${変数名}$!{変数名}など、本来は中括弧をつけるのが正しい構文ですが、一般的には中括弧は省略して使われています。

    条件分岐

    #if#elseif#elseを使って条件によって出力内容を切り替えることも可能です。

    条件には、 ===><<=>=などの比較演算子が使用可能です。

    公式ドキュメントも確認してみよう

    VelocityのVTL構文には、この記事では紹介しきれないほどに便利な構文が多数あります。

    構文の詳細を確認したい場合は、次の公式ドキュメント(英語)を参照すると、すべてのVTL構文についての説明がありますので、こちらもチェックしてみましょう。

    http://velocity.apache.org/engine/devel/vtl-reference.html

    【関連記事】
    java.util.dateクラスについて|使い方やjava.sql.dateとの違いを解説!



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE