Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
Dependency Injection 他のウェブフレームワークと同様にPlayでもDIができるようになっています。DIというのは、JSR330で規定されている依存性の注入の手法であり、Play Framework(2.4以降?)では、GoogleのGuiceというライブラリを使って実現されています。そんなに難しいわけではないのですが、原理とやり方をきちんと理解しないとなかなかとっつきにくい印象があります。AkkaのActorと組み合わせた例で説明したいと思います。 Play FrameworkにおけるDI まず、JSR330を使うということは、javax.injectパッケージのアノテーションを使うということだということを理解する必要があります。何かのコンポーネントに対して依存性の注入を行うためには、@Injectアノテーションを使ってクラスを修飾します。ちなみに、scala(Play
Playframework2.5のアプリケーションをdockerでAWS EC2にデプロイしてCloudWatch Logsでログを集約した話です。デプロイの自動化はここでは触れません。すごいまとめていうとdockerのawslogs logging driverが楽で便利だから使おうぜーってだけの話です。 dockerの1.9以上のバージョンでAmazon CloudWatch Logs logging driverを使いました。 環境は下記の通りです。 環境 Playframework 2.5 Amazon Linux Java 1.8 (EC2ではopenjdk1.8を利用) docker 1.12.6 手順 本番用のlogbackの設定 playframeworkでdockerのビルド CloudWatch Logsの設定 EC2インスタンスでアプリケーション起動 1. 本番用のl
概要 PlayFrameworkやAkka HTTPをつかっていて、うまくパフォーマンスがでなかった経験ありませんか? もしかしたらそれ、スレッドプールをうまく分割できていなかったからかもしれません。 PlayFrameworkやAkka HTTPなど、ノンブロッキングI/Oを前提につくられたライブラリやフレームワークでは、ブロッキングI/Oに十分な注意を払う必要があります。 具体的に言うと、ノンブロッキングI/Oの処理のみを実行するスレッドプールと、ブロッキングI/O(I/O待ちによりスレッドを占有する)を含む処理を実行するスレッドプールは分割し、それぞれ適切に設定する必要があります。 なぜスレッドプールをわけるか ノンブロッキングI/Oはその特性上、I/O待機中にCPUやスレッドを専有せず、他の処理に割り当てることができます。 この特性を活かし、PlayFrameworkやAkka H
case class Cont[R, A](run: (A => R) => R) { def map[B](f: A => B): Cont[R, B] = Cont(k => run(a => k(f(a)))) def flatMap[B](f: A => Cont[R, B]): Cont[R, B] = Cont(k => run(a => f(a).run(k))) } ここで重要なのは Cont のコンストラクターに渡される run 関数です。 この run 関数を作り Cont のコンストラクターに渡すことで、継続モナドを作ることができます。 それで run 関数の型を見てみますと (A => R) => R とあります。 A => R という型の関数を受け取り、おそらく受け取った関数を実行し R という結果を返すという動作が期待できます。 ここで A を全体の中の途中の計
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? フレームワーク・プログラミング言語の技術選定 こんにちは 私は昔、プログラミング言語さえできれば自由自在にすぐ便利なWebアプリケーションが作れると思っていましたが、そうでもないようですね。 現代は研究者同士が情報をやり取りしていたWeb初期とは大きく異なり、多くの人が利用するインフラとしてWebが育ってきました。 パフォーマンスやセキュリティなど多様な面で高まり続けるお客様のニーズに対し、自分でログインやセッション管理にDB接続やリクエストの処理を実装するのはとても大変です。しかもがんばったところで技術的に他者との差別化に繋がるかは別
name := "YourFirstApp" version := "1.0-SNAPSHOT" libraryDependencies ++= Seq( javaJdbc, javaEbean, cache, filters, //追加 "org.jongo" % "jongo" % "1.0", // 追加 "org.mongodb" % "mongo-java-driver" % "2.11.4" // 追加 ) play.Project.playJavaSettings ※ 2.3になってちょっとかわったけどlibraryDependenciesに追加していくのはかわらないので、体勢に影響は無い。 SBT(Scala Build Tool?)の形式ってよくわからない。 http://mvnrepository.com/に のサイトで検索して、SBTのタブがあるので便利 Google
概要 Play Framework (java)の開発環境の構築を行い、続いて簡単な検索アプリケーションを開発します。 ([Spring Bootで簡単な検索アプリケーションを開発する] (http://qiita.com/rubytomato@github/items/e4fda26faddbcfd84d16)をPlay Frameworkを使って書き直したものになります。) 環境 下記の環境で動作確認を行いました。 Windows7 (64bit) Java 1.8.0_60 Play Framework 2.4.2 Activator 1.3.5 sbt 0.13.8 Eclipse 4.4 MySQL 5.6.25 参考 下記のサイトを参考にさせて頂きました。 [Play Framework] (https://www.playframework.com/) [Play 2.4.x
Play FrameworkにはEclipseプロジェクトへの変換機能(activator eclipse)や、ブラウザ上で開発できる機能(activator ui)が提供されている。しかし、普段使っていない開発環境を使うと、使い方を覚えることに多くの時間を割かれてしまい効率が悪い。一方で、Vimの環境を利用していると、EclipseのようなJavaやScalaの優れた補完機能などが活用できない。そこで__Eclim__というEclipseとVimとの橋渡しをするプラグインを使い、使い慣れたVimの中で、Eclipseの機能を利用できるように設定した。以下でCentOS 7上で行った設定の手順を紹介する。またEclimのサイトには充実したドキュメントがあるので、そちらも参照するとよい。 1. 前提条件 Javaの実行環境があること。(バージョン1.6以降) NeocompleteによるVi
Scalaの勉強もかねてPlay FrameworkでDBを利用したREST APIサーバーを作ってみました。 自分がつまずいたポイントを記述しておきます。 ソースコード システム環境 ローカル開発環境: MacOSX + MySQL5.5 本番環境: CenOS6 + MariaDB5.5 Play Framework 2.3 JDK8 (Scala 2.11ではJDK8はテストサポート扱いらしい 標準サポートは JDK6 <= JDK7 ) Scala 2.11 IDE: IntelliJ IDEA 14 Ultimate + Scalaプラグイン (Ultimateは有償だがお薦め) データベースで管理するもの 2014〜2015年で放送されているアニメ作品を管理しているデータベース インストール&プロジェクト作成 最新のPlay Frameworkではactivator経由でインス
SwaggerはJSON API用のドキュメンテーション作成ツールです。 http://swagger.io/ http://petstore.swagger.wordnik.com/ こんな画面が生成されて、画面の下の方にある"Try it out"というボタンで実際にリクエストを送信することができます。 SwaggerとPlay Framework 上の画面はSwagger UIというHTML+JavaScriptのツールによるもので、Swaggerの実体はコードアノテーションを解釈してエンドポイントに関するJSONを返してくれるツールです。 SwaggerのメインリポジトリであるSwagger CoreはScalaで書かれていて、Play Frameworkの用ライブラリもSwagger Coreのリポジトリ内にあります。 Play FramworkでSwaggerを使うサンプルアプ
最近はGoやScalaでサービスを開発したり、既存のシステムを置き換えたりする事例が増えてきてますよね。私も仕事ではruby/railsがメインなのですが、新しくアプリケーションを開発するにあたって別の言語・フレームワークを検討する機会があり、少しだけScala(とJava)のフレームワークPlayを触ったので、**Railsでいう◯◯はPlayではどうやるの?**という点をまとめたいと思います。 ちなみに、この記事を書いてる時点で筆者のScala歴・Play歴は10時間くらいですので、「Play Framework入門」と銘打ったものの、「Play Framework紹介」に近いかもしれませんwご了承ください。 サンプルコード 以下ではこちらのコードから色々抜粋して貼り付けてます。 https://github.com/suzan2go/hello_play 公式のScalaToDoLi
現在放映されているアニメ作品の公式アカウントのグラフ化をするanime_followerというTwitterボットを作っています。 https://twitter.com/anime_follower こんなの システムの構成図は以下です 現行システム構成図 アニメ作品を管理するデータベースとアプリケーションサーバーがペアとなって、メイン系統と待機系で別々の場所の物理サーバーで稼働しています。 でもこの構成って面倒なんですよね。 データベースの同期をとったりするのが面倒なのでREST化したかった。 なので、REST API化してデータベースは一本化することにしました。 新システム構成図 そもそも放送クールごとのアニメ作品のデータをちゃんと管理してREST APIで提供してくれるサービスがないんですよね。 テレビ番組系のAPIならあるんですが、公式URLとかTwitterアカウントとか監督名
Play frameworkでMySqlを使うためのメモです。 前提 例としてMySqlに データベース名:firstdb ユーザ名 :firstuser パスワード :firstpass でデータベースを作ってあるとします。 conf/application.confを編集 conf/application.confを開きます。 36行目あたりの記述をコメントアウトし、新たに追記します。 ※すでにコメントアウトされている場合はそのまま追記します。 # db.default.driver=org.h2.Driver # db.default.url="jdbc:h2:mem:play" # db.default.user=sa # db.default.password="" db.default.driver=com.mysql.jdbc.Driver db.default.url
Javaで設定ファイルというと、propertiesファイルを使うのが一般的かと思いますが、key=value形式だけしか使えなかったり、 テスト環境や本番環境でほんの一部だけ値を切り替えたい場合でも、ほとんど同じファイルを環境の数だけ作らないといけなかったりと、結構面倒です。 Play Frameworkでも使っている、「Typesafe Config」というライブラリを使うと、これらの問題が解決できるようでしたので、まとめてみました。 一応Githubにもコミットしてあります。地味にGit初めて使いました。 https://github.com/2KB/config-test01 Typesafe Configとは ・Java製のコンフィグファイルを使用するためのライブラリ。 ・Scalaの創始者が立ち上げた、Typesafe社が作っている。 ・jarファイルを一個読み込むだけで簡単に
はじめに BounscaleというオートスケールするHeroku Addonを作っています。 Bounscaleは各プログラミング言語/フレームワーク毎にエージェントを提供しています。 現在、Rails、node.jsなどに対応していますが、実験的にPlay Framework2(Scala)への提供を開始しました。 エージェントのjarはPlayの依存ライブラリの記述を追記するだけでインストールできるようにしたいところです。 今回は、Github PagesをMavenリポジトリ代わりに利用して、sbtで各種ファイルを生成してjarを公開したので下記に手順をメモしておきます。 流れ Github Pagesのリポジトリを作ってMaven形式のjarやpomなどを公開する場所を確保します Play Framework2をインストールして同梱のsbtを利用できるようにします ライブラリをビル
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く