Apache Causewayとはなんなのか?
今回は、Apache Causeway。今回も以下のツールを使って対象プロジェクトを決めました!
※ 本企画に関する記事の目的は、それぞれのプロジェクトを本格的に深ぼるのではなく、プロジェクト名⇆どんな内容かをパッと思い出せるようにすることを目指します!
※ とはいえ深ぼってみたいプロジェクトがあればどんどん複数連載になると思います。
Apache Causewayとは?
公式サイトによると、
Apache Causeway™ enables domain-driven application development by dynamically generating a UI and API for your Spring Boot™ apps.
ということで、Spring Bootアプリ向けにUIとAPIを動的に生成することでドメインドリブンアプリケーションを開発するためのツールのようです。
特徴として以下が書かれています。
- Productivity: アプリの大部分はビジネスロジックで構成され、コストのかかるUIコードは排除
- Discovery: ビジネスドメインの専門家と連携して問題領域を理解し、ソリューション領域内でソリューションを検討して選択することが可能
- Ease of Use: ビジネスユーザーにとって、ビジネスコンセプトを前面に押し出したアプリを簡単に習得可能
- Simple Integration: 動的に提供されるGraphQLおよびRESTful APIを使用するか、非同期通信用に自動的に公開されるドメインイベントを使用することで、他のシステムと簡単に統合
- Clean Architecture: アプリの内部アーキテクチャ内での明確な関心の分離を維持するのが容易
残念なことに著者はSpring Bootのみならず、もはやJavaもほとんど触ったことがないので、ほとんどデモをすることはできないですが、公式で使い方について丁寧に説明されているので、ぜひ参照ください!
Apache Causewayの仕組み
ホームページにて以下の3つが仕組みとして言及されています。
無料のUIとAPI
- エンドユーザー向けの汎用ユーザーインターフェースに加え、基盤となるドメインオブジェクトから動作と構造を推測し、完全なGraphQL APIとリッチなハイパーメディアRESTful APIを動的に構築
- 非常に迅速なプロトタイピングと短いフィードバックサイクルが可能になり、アジャイル開発に最適である
- UIはBootstrapを使用してテーマ設定されている
ドメインドリブン
- アプリケーションの中核は、永続化されたエンティティまたはビューモデルのいずれかであるドメインオブジェクトである
- ビジネスルールはドメインオブジェクトに直接関連付けることも、独立したサービスに分離することも可能
- アプリケーションの分離とテスト可能性を確保するためにあらゆる場所で依存性注入を実行
アドオン
- セキュリティ、監査、コマンドプロファイリング、メールマージ、その他横断的な問題に対応する多数のアドオンモジュールが含まれている
- 地図やカレンダーなどのUI拡張機能も多数用意されている
- これらはすべてオープンソースであり、すぐに使用することも必要に応じて変更することも可能
クイックスタート試してみた
込み入った実装はできませんが、クイックスタートで提供されているdocker
環境を試しに実行してみました。
まずはdocker
で以下のコマンドを実行します。
docker run -p 8080:8080 apache/causeway-app-helloworld:latest
そしてブラウザでlocalhost:8080
にアクセスすると以下の画面になります(他のアプリを起動していた都合で8081で開いています)。
また、それぞれのリンクに移動すると、上から順にサインイン画面、GraphQL画面、Swagger画面が表示されました。
サポート体制
Slackやメール配信へのサブスクライブなど、コミュニティ活動がとても活発のようです。ホームページもかなりモダンなデザインかなと思います。
また、GitHubを見るととても活発に更新されていることも確認できるほか、様々な機能が開発できると示しているリッチなREADMEも用意されています。
まとめ
今回はApache Causewayについて紹介させていただきました。GraphQL、REST API両方に対応し、かつ柔軟にアプリケーションを開発できるということでとても魅力な的なプロジェクトだと思います。開発も積極的にされているということで、Javaを利用してアプリケーションを開発されている方で知らなかった方はぜひ調べてみてください!
最後に、Apacheプロジェクトを調べるとJavaを利用するものが多く、そろそろJavaをちゃんとやらないといけないなと感じておりますので、近いうちに頑張って始めてみようと思います!。
Discussion