LastaFluteの実装チュートリアル
LastaFluteで実装するディベロッパーは、このページをブックマーク!
そもそも LastaFlute のプロジェクト環境自体がまだ存在していない場合は、スタートアップを参照。
アーキテクチャ概念マップ
もしよければ、壁紙にどうぞ。
ディベロッパーの実装スタイル
三人の勇者、もしくは狂人
- ホットデプロイ
- 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
- 開拓の例外ハンドリング
- Exception Handling
- 非同期処理 (asyc)
- Asyncronous
- ストレートなジョブ (Job)
- Job Scheduling
- 定まったリモートAPI呼び出し
- RemoteApi Call
- 気軽な前後処理
- 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 のオススメ設定 @Config
# /* * * * * * * * * * * * * * * * * * * * * * * * 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 なら...
EMecha と ERFlute を入れましょう。
- dbflute,Lasta支援
- EMecha のインストール ※手順に沿って
- ERDエディター
- ERFlute トップページ ※リンク先のページからダウンロード
JavaDeveloper Edition であれば、メニューの Help - Eclipse Marketplace から以下をインストールしましょう。
- SQL Development Tools (EMecha の EMEditor や PMEditor が動くように)
- 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ユーザーの集いML や Twitter などで遠慮なく聞きましょう。 開発者に直接聞くことをぜひ楽しんでください。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 はあまり使わない)
- 循環テストデータ
- ReplaceSchema と LoadDataReverse の合わせ技
- dbfluteの十か条
- dbfluteフルパワー!...なので、九たす十で合計十九か条でした...
LastaFluteのソースを読もう
なにかあったときのためにも、LastaFluteのソースを読みましょう。
Actionまでの道のりマップ
コメントにハッシュタグ埋めてます
ServletFilter から Action クラスが呼ばれるまでの道のりに #to_action というハッシュタグをコメントに埋め込んでいますので、ソースコードgrepして目印にしてみてください。
LastaFluteの実装FAQ
どこを見れば実装できますか? 実際に開発を始めたいんですけど環境構築は?