マイクロフレームワーク「Ninja」を使ってみる

Pocket

こんにちは、長井です。

これは TECHSCORE Advent Calendar 2015 の14日目の記事です。

本記事ではJavaのマイクロフレームワーク「Ninja」を使って Twetter のツイートを検索する Webアプリケーションを作ります。

マイクロフレームワークとは何かについてはこちらの記事をご覧下さい。

Ninja のインストールは Maven で行います。
今回のアプリケーション作成は Linux(Arch Linux) で行いました。前提として Java, Maven がインストールされているものとします。(参考…Windows環境でのMavenインストール方法

まずは Maven でプロジェクトを作成します。

幾つかパラメータ入力を促されますがここここを参考に入力します。今回は groupId は「com.example」, artifactId は「ninjaSmp」, version, package はデフォルトのまま「 1.0-SNAPSHOT」および「com.example」にしました。

次に作成されたプロジェクト名のディレクトリに移動してコンパイルを実行しアプリケーション起動します。

20151211001(クリックで拡大)
▲コンパイルが完了しアプリケーションが起動したときのコンソール

「http://localhost:8080」でデフォルトのサンプルアプリケーションにアクセスすることが出来ます。

アプリケーションの作成

サンプルアプリケーションに手を加えてアプリケーションを完成させます。
以降で見るコードは手を加えた完成後のものです。
とは言っても手をいれる内容はそれほどに多くありません。

アプリケーションのディレクトリ階層は以下の様になります。Maven の標準に準拠しているのでこのまま Eclipse 等の IDE のプロジェクトとしてインポートする事も可能です。

conf/ 以下に URL のルーティングとメッセージプロパティ、controllers/ 以下に各処理を制御するクラス(コントローラー)があります。
画面まわりのファイルはviews/以下にあります。
テンプレートエンジンとして Apache FreeMaker が利用されています。

手を加えた箇所

Routes.java

URL にコントローラークラスとそのメソッド名を関連付けています。今回デフォルトのサンプルアプリケーションに URL "/collect" を追加しています。

ApplicationController.java

コントローラークラス。Routes.java でURL ごとに設定したメソッドの本体です。
Resultsクラスの html() メソッドが Resultクラスオブジェクトを返すので画面に引き渡したい値が格納されたオブジェクトとテンプレート名を渡します。Resultsクラスの json()メソッドで JSON 形式のレスポンスを生成する事が出来ます。

メソッドの引数に @Param アノテーション指定すると、リクエストパラメーターとして取得します。
アノテーションにはValidation用のものも用意されています。(@Required や @isInteger 等)

Validation としてJSR 303 Bean Validationを利用する事も出来ます。(使い方は下記のリンク先参照)

アプリケーションのURL”/collect”にアクセスされた時はTwitterのツイートを検索するクラス(TwitterPojo)を呼び出しています。

TwitterPojo.java

Twitter を検索する為に Twitter4J を使っています。
このライブラリを使うと簡単に TwitterAPI 経由でツイートを取得する事が出来ます。

画面まわり

index.ftl.html

トップ画面です。
コントローラクラスで設定した値を表示しメッセージはプロパティファイルから取得(${i18n("...")})しています。
デフォルトのサンプルアプリケーションのメッセージを少し変更しています。

collect.ftl.html

Twitter の検索ワードを入力するフォームと結果の表示領域です。

Message.properties

画面に表示するメッセージを記載しています。

Webアプリケーションにアクセスする

ホーム画面

20151211003
ApplicationControllerで指定された値が表示されています。

Tweet 検索画面

20151211004

Tweet 検索画面(結果表示)

20151211005
「TECHSCORE」で検索してみました。

まとめ

Ninja はフレームワークとして軽量化が図られているのでインストールするまでに要する時間は数分でした。

ワンアイデアを Webアプリケーションですぐに動かして見たい時に準備に時間がかからないという事は重要です。

迅速かつ簡単にアプリケーションを構築できるマイクロフレームワークには他にも「Spark」「Slim」等があり一つのトレンドになってきているのかも知れません。

それでは!

Pocket

Advent Calendar 2015の連載記事

  1. TECHSCORE Advent Calendar 2015
  2. Redshift と PostgreSQL に同時に JDBC 接続する
  3. Lombok で Spice up your Java!
  4. 画像を指定するだけ!非デザイナーでも簡単にそれっぽい配色ができるツールを作ってみた
  5. 新卒文系エンジニアの記録:配属半年間の失敗を振り返ってみた
  6. 非同期処理のすすめ
  7. ioDrive2の導入で支える、そのIOPS - 導入検討編.
  8. GoでパイプラインからSlackに通知する
  9. fuse でオレオレファイルシステムを作ってみた (Haskell で)
  10. Erlang はじめました
  11. ちょっと地味なビルドとリリースの話 (レガシーシステム改革、はじめの一歩)
  12. Java8 最速 boolean[] to Stream 選手権
  13. Google Apps の Directory API にてWebブラウザを介さずに認証する
  14. 風データをビジュアルに表現する
  15. マイクロフレームワーク「Ninja」を使ってみる
  16. 赤ちゃんvimmerからよちよちvimmerにクラスチェンジを果たすためのTips
  17. PostgreSQL FDW を作ってSQLでログ検索してみた
  18. Goで偽名ジェネレータを作りました
  19. 書き込み中に削除されたファイルを救出する
  20. 運用情報更新のススメ
  21. ちゃんと読んでくれましたか?
  22. Presto コネクターを実装する 第三回
  23. Ruby2.3を触ってみる
  24. Git 困ったときのtips集
  25. 5分で読む入門編:Java 8 ラムダ式 コレクション編(2)リストの検索
  26. CloudFront (+ S3) + JWPLAYER で様々なデバイスのブラウザから動画をストリーミング再生する

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です