ドキュメント

§Play 3.0移行ガイド

これはPlay 2.9からPlay 3.0への移行ガイドです。以前のバージョンのPlayからの移行が必要な場合は、まずPlay 2.9移行ガイドに従う必要があります。

§移行方法

AkkaからPekkoへの切り替え(詳細はこちら)以外、Play 3.0はPlay 2.9と同様の機能とバグ修正を提供します。Play 3.0と2.9は同じ機能とバグ修正を受け、並行して保守されます。これらの2つのメジャーリリースはほぼ同一であるため、Play 2.9移行ガイドを参照してください。これを読み、手順に従ってPlay 2.8からPlay 2.9に移行してください。その後、以下のPlay 3.0固有の移行ノートに従って、Play 3.0への移行を完了してください。Play 2.9ハイライトPlay 3.0ハイライトページを読むこともお勧めします。

Play 2.9ハイライト2.9移行ガイドで述べられているように、Play 2.9とPlay 3.0はどちらもScala 3をサポートしています。アプリケーションをScala 3に移行する場合は、Play 3.0への移行を完了した後にScala 3移行ガイドに従ってください。

§Play 3.0固有の移行手順

Play 2.9移行ガイドで説明されている移行手順に加えて、Play 3.0に移行するために必要な特定の手順があります。

§変更されたgroupId

Play 3.0では、Playが完全にコミュニティ主導であることを強調するために、groupIdcom.typesafe.playからorg.playframeworkに変更しました。Playライブラリを依存関係として使用する場合、またはPlay sbtプラグインを使用する場合は、これらの依存関係のgroupIdを更新する必要があります。まれですが、コードのインポートを調整する必要がある場合があります。ビルドファイルとコードの更新方法の比較をご覧ください。

Play 3.0
// Dependencies:
libraryDependencies += "org.playframework" ...
// sbt plugins:
addSbtPlugin("org.playframework" ...
// Source code:
import org.playframework.*
Play 2.9
// Dependencies:
libraryDependencies += "com.typesafe.play" ...
// sbt plugins:
addSbtPlugin("com.typesafe.play" ...
// Source code:
import com.typesafe.play.*

§Playのアップグレード

groupIdの変更に加えて、project/plugins.sbtでPlayのバージョン番号も更新する必要があります。

addSbtPlugin("org.playframework" % "sbt-plugin" % "3.0.x")

ここで、3.0.xの「x」は使用するPlayのマイナーバージョンです(例:3.0.0)。
Playのマイナーバージョンのリリースノートを確認してください リリース.

§AkkaからPekkoへの移行

Play 3.0はAkkaからPekkoに移行しました。移行は非常に簡単です。主に、インポート、パッケージ、クラス名、メソッド名、構成キーをAkkaからPekkoに名前変更する必要があります。重要なコードのリファクタリングは必要ありません。Pekkoプロジェクトは詳細な移行ガイドを提供しています。

Pekkoに関連する追加の便利なリンクを以下に示します。

大まかな概要を示すために、行う必要がある最も一般的な移行手順を以下に示します。前述のように、基本的に名前変更のプロセスです。最終的に、プロジェクトのソースコードで大文字と小文字を区別せずに「akka」を検索したり、大文字と小文字を区別せずに「Akka」という名前のファイルとフォルダを検索したりしても、一致するものは見つかりません。

ScalaおよびJavaソースファイルでの一般的な名前変更

Pekkoを使用するPlay 3.0
// Imports:
import org.apache.pekko.*
// Changed packages in code:
org.apache.pekko.pattern.after(...)
// Class names:
Pekko.providerOf(...)
class MyModule extends AbstractModule with PekkoGuiceSupport { ... }
// Method names:
headers.convertRequestHeadersPekko(...)
Akkaを使用するPlay 2.9
// Imports:
import akka.*
// Changed packages in code:
akka.pattern.after(...)
// Class names:
Akka.providerOf(...)
class MyModule extends AbstractModule with AkkaGuiceSupport { ... }
// Method names:
headers.convertRequestHeadersAkka(...)

一般的な構成キーの名前変更(通常はconf/application.conf内)

Pekkoを使用するPlay 3.0
pekko { }
pekko {
  loggers = ["org.apache.pekko.event.slf4j.Slf4jLogger"]
  logging-filter = "org.apache.pekko.event.slf4j.Slf4jLoggingFilter"
}
pekko.serialization { }
pekko.coordinated-shutdown { }
pekko.remote { }
play.pekko { }
play.pekko.dev-mode { }
play.pekko.dev-mode.pekko { }
promise.pekko.actor { }
Akkaを使用するPlay 2.9
akka { }
akka {
  loggers = ["akka.event.slf4j.Slf4jLogger"]
  logging-filter = "akka.event.slf4j.Slf4jLoggingFilter"
}
akka.serialization { }
akka.coordinated-shutdown { }
akka.remote { }
play.akka { }
play.akka.dev-mode { }
play.akka.dev-mode.akka { }
promise.akka.actor { }

以前Akka HTTP(デフォルト)を使用していた場合は、サーバーバックエンド構成に特に注意してください。

Pekkoを使用するPlay 3.0
play.server {
  provider = "play.core.server.PekkoHttpServerProvider"
  pekko {
      server-header="PekkoHTTP Server"
      # With Http2 enabled:
      #server-header="PekkoHTTP Server Http2"
  }
}
Akkaを使用するPlay 2.9
play.server {
  provider = "play.core.server.AkkaHttpServerProvider"
  akka {
      server-header="AkkaHTTP Server"
      # With Http2 enabled:
      #server-header="AkkaHTTP Server Http2"
  }
}

conf/logback.xmlのログ構成でパッケージ名とクラス名を調整してください。

Pekkoを使用するPlay 3.0
<logger name="org.apache.pekko" level="WARN"/>
Akkaを使用するPlay 2.9
<logger name="akka" level="WARN"/>

プロジェクトに適用できる場合は、AkkaからPekkoにフォルダとファイルの名前を変更することを検討してください。

Pekkoを使用するPlay 3.0
app/mymodule/pekkomagic/
app/mymodule/MorePekkoMagic.scala
Akkaを使用するPlay 2.9
app/mymodule/akkamagic/
app/mymodule/MoreAkkaMagic.scala

§変更されたアーティファクト

Pekkoへの切り替えにより、2つのアーティファクト名も変更されました。これはgroupIdorg.playframeworkに変更されたことに加えてのことです。

Pekkoを使用するPlay 3.0
"org.playframework" %% "play-pekko-http-server" % "3.0.0"
"org.playframework" %% "play-pekko-http2-support" % "3.0.0"
Akkaを使用するPlay 2.9
"com.typesafe.play" %% "play-akka-http-server" % "2.9.0"
"com.typesafe.play" %% "play-akka-http2-support" % "2.9.0"

次へ: Scala 3移行ガイド


このドキュメントに誤りを見つけましたか?このページのソースコードはこちらにあります。ドキュメントガイドラインを読んだ後、プルリクエストを自由に投稿してください。質問やアドバイスを共有したいですか?コミュニティフォーラムでコミュニティとの会話を開始してください。