Play2�{nginx/Akka/WebSocket�ō����o�����ʐM�FScala�{Play 2.0��Web�A�v���J������i11�j�i1/2 �y�[�W�j

Play framework 2.x��������Web�T�[�o�[�ƘA�g��������@�A���񏈗���o�����ʐM���s�����@���Љ�܂��B

» 2013�N12��18�� 18��00�� ���J
[�����C���C�N���X���\�b�h�������]

�@�O��̋L���uPlay2�i�{JavaScript�j�A�v�����������A�œK������4�‚̃e�N�j�b�N�v�ł́A�L���b�V���̗��p���@��񓯊��ʐM���s����@�A�N���C�A���g�T�C�h��JavaScript�����܂������e�N�j�b�N�ɂ‚��ďЉ�܂����B

�@�����Play framework 2.x�i�ȉ��APlay2�j��������Web�T�[�o�[�ƘA�g��������@�A���񏈗���o�����ʐM���s�����@���Љ�܂��B

Web�T�[�o�[��Play2�̘A�g

Web�T�[�o�[�ƘA�g����K�v��

�@�A�ڑ�2��L���uPlay 2.0�̃A�[�L�e�N�`���ƃf�B���N�g���\���̊�b�m���v�ʼn�������܂������APlay2�ł́uNetty�v�Ƃ���HTTP�T�[�o�[�����Ă���A������g�p���ă��N�G�X�g���������܂��B���̂��߁APlay2�̋N���|�[�g��80�Ԃɐݒ肷��Βʏ��Web�T�[�o�[�Ɠ����悤�ɃA�N�Z�X�”\�ł��B

�@�P����Web�A�v���P�[�V�����̏ꍇ�͂���Ŗ��͂Ȃ��̂ł����A�P��T�[�o�[�ŕ����A�v�����g�p������A�T�[�o�[���N���X�^�����O���ăX�P�[���u���ɂ������ꍇ�ɂ́A�t�����g��Apache��nginx�Ȃǂ�HTTP�T�[�o�[���g�p���āAPlay2�A�v���iNetty�j�ƘA�g�����邱�Ƃ��ł��܂��B

�⑫�F���܂��畷���Ȃ��Anginx�Ƃ�

nginx�i�G���W���G�b�N�X�j�́A�I�[�v���\�[�X��Web�T�[�o�[�ŁA2013�N���_�ł�Apache�AIIS�Ɏ����g�p���������Ă��܂��B

HTTP�ȊO�ɂ����o�[�X�v���L�V�̋@�\�������Ă���AProxy�T�[�o�[�Ƃ��đ��̃A�v���P�[�V�����T�[�o�[�Ɠ����Ɏg�p����邱�Ƃ������悤�ł��B������Web�T�[�o�[��胊�\�[�X��}���‚A�����������\�������ł��܂��B


�@�ł́Anginx���C���X�g�[������Play2�A�v���ƘA�g���ē������Ă݂܂��傤�B

nginx�̃C���X�g�[��

�@�܂���nginx���C���X�g�[�����܂��傤�B�����ł́AOS X�^Mac OS X��Homebrew���g�p���Ă���ꍇ��������܂��B���L�R�}���h��nginx���C���X�g�[���ł��܂��B

% brew install nginx

�@����ȊO�̊‹���nginx���C���X�g�[������ꍇ�Anginx�̃R�~���j�e�B�T�C�g�uInstallJa�v�̃y�[�W���Q�Ƃ��ăC���X�g�[�����@���m�F���Ă݂Ă��������B

�@�C���X�g�[��������������N�����Ă݂܂��傤�B

% nginx

�@��L�R�}���h�����s���A�uhttp://localhost:8080�v�ɃA�N�Z�X���āA���̂悤�ȉ�ʂ��\�������΃C���X�g�[���͊����ł��B

Play2�ƘA�g�����Ă݂悤

�@�ł́Anginx�̃��o�[�X�v���L�V�@�\���g�p����Play�A�v���ƘA�g�����Ă݂܂��傤�BHomebrew�ŃC���X�g�[�������ꍇ�u/usr/local/etc/nginx�v�Ɂunginx.conf�v������܂��B

���ݒ�t�@�C���̏ꏊ��������Ȃ��ꍇ�A�unginx -t�v�R�}���h�����s����΁A�ǂ��ɂ���ݒ�t�@�C�����g�p���Ă��邩��������܂�

�@nginx�i80�ԃ|�[�g�ŋN���j�ɃA�N�Z�X��������APlay�A�v���փt�H���[�h����悤�Ɏw�肵�܂��B

http {
�E
�E
�E
    upstream my-backend {
        server 127.0.0.1:9000;
    }
 
    server {
        listen       80;
        server_name  localhost;
 
        location / {
            proxy_pass  http://my-backend;
        }
�E
�E
�E
}

�@nginx.conf��ҏW������nginx���ċN�����APlay�A�v�����N�����܂��傤�B

% nginx -s reload�isudo���K�v�ȏꍇ������܂��j
% cd /path/rour/gyro
% play run

�@�A�v�����N��������A�uhttp://localhost�v�ɃA�N�Z�X���Ă݂Ă��������B���܂łƓ������APlay�A�v�������s����Ă��܂��B���̂悤�ɁA�ȒP��nginx��Play�A�v�����A�g�ł��Ă��邱�Ƃ�������܂��B

Akka���g�p�����X�P�W���[�����O����

Akka�Ƃ�

�@Akka�Ƃ́AScala�^Java�Ŕ񓯊��������������邽�߂̃��C�u�����ŁAScala�̊J�����ł���Typesafe�Ђ����S�ƂȂ��ĊJ�����Ă��܂��BAkka�͌y�ʂȕ��񏈗��̂��߂�Actor���f�����x�[�X�Ƃ��Ă���A���U�^����^�Ϗ�Q�����������C�x���g�쓮�^�A�v���P�[�V�������\�z�ł��܂��B

Akka

�@Akka�́u�A�N�^�[�V�X�e���v�ƌĂ΂��R���e�i�[�������Ă���APlay2�A�v���ł́A�A�v���P�[�V�������g���g�����ʂȃA�N�^�[�V�X�e������`����Ă��܂��i���Ǝ��̃A�N�^�[�V�X�e�����g�p���Ă���肠��܂���j�B

�@�����āAPlay2�A�v���̃A�N�^�[�V�X�e���𗘗p���邽�߂ɂ́Aplay.api.libs.concurrent.Akka�I�u�W�F�N�g�𗘗p���܂��B

import akka.actor._
val act = Akka.system.actorOf(Props[MyAct],name="myAct")

�@�Ȃ������h�L�������g�ł́A�u�f�t�H���g�̃A�N�^�[�V�X�e���́A���s����A�N�^�[�̐������Ȃ��A�ʂ̃A�N�^�[�V�X�e���������ŗp�ӂ���܂ł��Ȃ��悤�ȏꍇ�ɗ��p����Ƃ悢�v�Ƃ���܂��B������������Ă��m�F���������B

�@���̏͂ł�Play2�A�v�����Akka���g�p���A�X�P�W���[�����O�������s���Ă݂܂��傤�B

�^�X�N�̃X�P�W���[�����O

�@Akka�𗘗p���邱�ƂŁA�C�ӂ̏�������莞�Ԃ��ƂɎ��s������A�w�莞�Ԍ��1�񂾂����s�����肷�邱�Ƃ��ł��܂��B

�@�ȑO�A�A�v���N�����ɏ������s�����߁A���‚��g�p���Ă���gyro�v���W�F�N�g�ɁAGlobalSettings���p������Global�I�u�W�F�N�g���쐬���܂����B���̃I�u�W�F�N�g��Akka���g�p���ă^�X�N�̃X�P�W���[�����O���s���Ă݂܂��傤�B

�@Global���쐬���Ă��Ȃ��ꍇ�Aapp�f�B���N�g�����Ɂucommon.scala�v�Ƃ������O�̃t�@�C�����쐬���Ă��������Bcommon.scala�ł͉��L�̂悤�ɋL�q���܂��傤�B

import play.api._
import play.api.Play.current
import scala.concurrent.duration.DurationInt
import play.api.libs.concurrent.Akka
import play.api.libs.concurrent.Execution.Implicits._
object Global extends GlobalSettings {
  override def onStart(app: Application) {
    //���ȑO�쐬�����R�[�h
    Logger.info("Application has started for " + app.mode + " mode.")
    app.mode.toString match {
      case "Prod" => Logger.info("Prod mode.")
      case "Dev" => Logger.info("Dev mode.")
      case "Test" => Logger.info("test mode.")
      case _ => Logger.info("unknown mode.")
    }
 
	//5�b���1�񂾂����s
    Akka.system.scheduler.scheduleOnce(5 seconds) {
    	println("execute Once")
    }
	//10�b���ƂɎ��s
    Akka.system.scheduler.schedule(0 seconds, 10 seconds) {
    	println("execute Every 10 seconds")
    }
  }
  override def onStop(app: Application) {
    Logger.info("Application shutdown...")
  }
}

�@�A�v���N����(dev���[�h�ł͏���A�N�Z�X��)�Ɏ��s�����onStart�֐��ł́AAkka.system.scheduler���g�p���āA�X�P�W���[�����O���������s���Ă��܂��BscheduleOnce�֐��ł͑�1�����̎w�莞�Ԍ��{}���̏�����1�񂾂����s����Aschedule�֐��ł͑�1�������Ԍ�ɑ�2�������Ԃ��Ƃ�{}���̏��������s����܂��B

�@��L�L�q��������A�A�v�����N�����ăA�N�Z�X���Ă݂Ă��������B�R���\�[���Ƀ��b�Z�[�W���\������܂��B

�@�Ȃ��A�u5 seconds�v�Ƃ���������ȋL�q�́Aimport���Ă���uscala.concurrent.duration.DurationInt�v�ňÖٓI�^�ϊ����s���邱�Ƃɂ���ĉ”\�ɂȂ��Ă��܂��B

�@���y�[�W�ł́AAkka��WebSocket���g�����T���v���������Ă݂܂��傤�B

�@�@�@�@�@�@ 1|2 ���̃y�[�W��

Copyright © ITmedia, Inc. All Rights Reserved.

�A�C�e�B���f�B�A����̂��m�点

�X�|���T�[����̂��m�点PR

���ڂ̃e�[�}

���́uAI�R�[�f�B���O�v�͖{���ɕK�v���H
Microsoft �� Windows�őO��2026
4AI by ��IT - AI�����A�������A���A������
���[�R�[�h�^�m�[�R�[�h �Z���g���� by ��IT - IT�G���W�j�A���r�W�l�X�̒��S�Ŋ��􂷂�g�D��
Cloud Native Central by ��IT - �X�P�[���u���Ȕ\�͂�g�D��
�V�X�e���J���m�E�n�E �y�����i�r�zPR
���Ȃ��ɂ������߂̋L��PR

RSS�ɂ‚���

�A�C�e�B���f�B�AID�ɂ‚���

���[���}�K�W���o�^

��IT�̃��[���}�K�W���́A �������A���ׂĖ����ł��B���Ѓ��[���}�K�W�������w�ǂ��������B