LastaFluteの実装チュートリアル

LastaFluteで実装するディベロッパーは、このページをブックマーク!

そもそも LastaFlute のプロジェクト環境自体がまだ存在していない場合は、スタートアップを参照。

アーキテクチャ概念マップ

もしよければ、壁紙にどうぞ。

LastaFlute Architecture

ディベロッパーの実装スタイル

三人の勇者、もしくは狂人

ホットデプロイ
Lasta Di
規約ベースAction
LastaFlute Action
Java8 DBFlute
DBFlute on Java8

二つの挑戦

見通しのValidation
Transparent Validation
素早さのJSON API
Lightening JSON API

五つの贈り物

専用dfprop
lastafluteMap.dfprop
なんでも自動生成
FreeGen
Actionドキュメントも?
LastaDoc
循環テストデータ
Cyclic TestData
DBFluteとスムーズな連携
LastaFlute DBFlute Collaboration

四つの眺望

プロジェクト構成
Project Structure
パッケージ構成
Package Structure
デプロイ環境
Build Deploy
環境切り替え
Env Switch

八つの野心

タイプセーフメール
Typesafe Mail
タイプセーフproperties
Typesafe Properties
化け物のようなログ
Friendly Logging
非同期処理 (asyc)
Asyncronous
ストレートなジョブ (Job)
Job Scheduling
気軽な前後処理
ActionHook
組み込みログイン制御
Login Control
気づかう現場フィットADさん
AssistantDirector

一つのデザイン

Actionの実装デザイン
Action ImplDesign

まず準備

LastaFluteって何?
まずは、LastaFluteってなにもの?を知りましょう
データベースの準備
MySQLのインストール、my.cnfの設定
開発環境の構築
Java8環境、EclipseならEMechaなどのプラグイン
Exampleをclone
参考実装である、Exampleをいつでも見られるように clone しておく

LastaFluteって何?

トップページにいろいろ書いてあります。

データベースの準備

デフォルトでは MySQL を利用しますので、3306ポートの MySQL をインストールしましょう。

(厳密には、シングルプロジェクトのExampleであるharborプロジェクトを動かすだけなら不要です。マルチプロジェクトのmaihamaプロジェクトや、新しいスタートアップの環境ではMySQLが必要です)

そして、my.cnf の [mysqld] の欄にて、以下の設定を入れることがオススメします。 もちろん、プロジェクトのカスタマイズ設定があれば調整して構いません。特にこだわりがなければ、これをそのままコピーして貼りつけましょう。 (my.cnf or my.ini の場所にご注意を、よく調べてください)

e.g. MySQL の my.cnf のオススメ設定 @Java
# /* * * * * * * * * * * * * * * * * * * * * * * * Custom Settings
character_set_server=utf8mb4
lower_case_table_names=1

# to avoid easy deadlock of repeatable-read
transaction-isolation=READ-COMMITTED

# TRADITIONAL contains STRICT_ALL_TABLES, NO_ZERO_DATE and so on...
sql_mode="TRADITIONAL"
# * * * * * * * * * */

IDE, もし Eclipse なら...

EMechaERFlute を入れましょう。

DBFlute,Lasta支援
EMecha のインストール ※手順に沿って
ERDエディター
ERFlute トップページ ※リンク先のページからダウンロード

JavaDeveloper Edition であれば、メニューの Help - Eclipse Marketplace から以下をインストールしましょう。 (それぞれのキーワードで検索すればHITします。ちなみに、Lunaと書いてあってもMarsで動きました)

  • DTP (Data Tools Platform) (EMecha の EMEditor や PMEditor が動くように)
  • PDE (Plug-in Development Environment) (ERMaster-bが動くように)
  • HTML Editor (WTP) (HTMLを編集できるように)

また、Eclipse の workspace の Preferences にて、DBFlute補完テンプレート を設定しましょう。すると、化け物のような補完支援で楽しくスピーディーに実装できます。 IntelliJ 版もあります。

補完テンプレート
dbflute-eclipse-editor-templates.zip (既存設定を残しつつそのままImport)

IDE, もし IntelliJ なら...

IntelliJでも、補完テンプレートあります。(ただ、Eclipse版よりもちょっと機能が少ないです)

補完テンプレート
dbflute-intellij-live-templates.jar (既存設定を残しつつそのままImport)

ERDツールは別のでもOK

ER図を描くのに ERFlute でなくても構いません。別のツールでも、要は生成された DDL を replace-schema-10-basic.sql に出力して ReplaceSchema ができればOKです。

Exampleをclone

自分が開発する環境に近い Example を。(README の Quick Trial を参考に)

シングルプロジェクト
lastaflute-example-harbor | Github
マルチプロジェクト
lastaflute-example-maihama | Github

ディベロッパーの心得

Lastaディベロッパーに、五つ、大切な心得!(リズミカル、スッキリ、サクサク、シナガラ、キナガラ)

1. ホットデプロイでリズミカル実装
Action, Form, Logic など、appパッケージ配下 は (開発時は) 再起動せずに修正が反映されます。
アプリは起動しっぱなしで、"直してリロード直してリロード" を楽しみましょう。 ただ、DBFluteで自動生成されるクラスは app 配下ではないので 自動生成したら再起動 と覚えておきましょう。
2. Java8バリバリでスッキリ実装
Java8 の文法をふんだんに利用することを前提としています。
スタートアップでは、いちど "ざっくりと" 書いたコードを何度も読み直しては修正して...の繰り返しなので、すっきりと読みやすいコード にしたいものです。DBFluteも Java8 を最大限利用します。知らなくても、学べるチャンスとわりきって楽しみましょう。(ただし、本末転倒にご注意を。バランス大事です)
3. ショートカットとコード補完 でサクサク実装
Javaをスタートアップで使うからには、Javaならではのスピードを楽しみましょう。
DBFlute の ConditionBean などでよく利用するコード補完はもちろん、変数やメソッド名の rename など、スタートアップの開発に欠かせない リファクタリング機能 はしっかりと指に馴染ませましょう。
環境構築で入れた DBFlute補完テンプレート は、いちどは反復練習しておきたい!
4. コードリーディング で発見シナガラ実装
ソースコードを読みながら実装していくことを前提としています。
スタートアップではじっくりフレームワークを学ぶ時間もないため、必要になったときに "とっさに" ソースコードを読んで要点だけ押さえて実装を進めていくことが大切です。 LastaFluteの方も、読みやすさも考慮して、できるだけシンプルな実装を心がけています。 発見をしながらのスピード開発を楽しみましょう。
5. jflute に遠慮なく聞キナガラ実装
近くにいなければ、DBFluteユーザーの集いMLTwitter などで遠慮なく聞きましょう。 開発者に直接聞くことをぜひ楽しんでください。jfluteは、それがフィードバックとなって、さらに LastaFlute の品質があげることができるのです。それこそオープンソースの醍醐味。

ディベロッパーの十か条

いちどざっくり眺めて、また忘れた頃にまた見返すとよいでしょう。

ホットデプロイ (Lasta Di)
appパッケージの下は再起動不要、一方で、自動生成したら再起動
規約ベースAction
Action class + Execute method
FreeGenでタイプセーフ
タイプセーフProperties, タイプセーフMailFlute, ...
JettyBoot
アプリは main() メソッドで起動 (TomcatBootでもOK)
フレンドリーログに注目
とにかくログをしっかり読めば、大抵のことのはわかるはず
凝り性JavaDocに注目
いたるところにリッチJavaDoc...例えば、Actionで this.docu...
リクエストトランザクション
Actionメソッドはすでにトランザクション
ActionHook
横断的な共通処理は、ActionHook で実装 (Interceptor はあまり使わない)
循環テストデータ
ReplaceSchemaLoadDataReverse の合わせ技
DBFluteの十か条
DBFluteフルパワー!...なので、九たす十で合計十九か条でした...

LastaFluteのソースを読もう

なにかあったときのためにも、LastaFluteのソースを読みましょう。

Actionまでの道のりマップ

LastaFlute toAction

コメントにハッシュタグ埋めてます

ServletFilter から Action クラスが呼ばれるまでの道のりに #to_action というハッシュタグをコメントに埋め込んでいますので、ソースコードgrepして目印にしてみてください。

LastaFluteの実装FAQ

どこを見れば実装できますか? 実際に開発を始めたいんですけど環境構築は?