§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が完全にコミュニティ主導であることを強調するために、groupId
をcom.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に関連する追加の便利なリンクを以下に示します。
- Pekkoウェブサイト
- ドキュメントへのリンクを含むすべてのPekkoモジュールの概要
- Pekko 1.0ドキュメント
- Pekko HTTP 1.0ドキュメント
- Pekko GitHubリポジトリ(課題とプルリクエストを含む)
- Pekko HTTP GitHubリポジトリ(課題とプルリクエストを含む)
- Pekko GitHubディスカッション
- 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つのアーティファクト名も変更されました。これはgroupId
がorg.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移行ガイド
このドキュメントに誤りを見つけましたか?このページのソースコードはこちらにあります。ドキュメントガイドラインを読んだ後、プルリクエストを自由に投稿してください。質問やアドバイスを共有したいですか?コミュニティフォーラムでコミュニティとの会話を開始してください。