Akka のサポート
Akka は、Scala 向けに高い並行性、分散性、復元力を備えたメッセージ駆動型アプリケーションを構築するためのツールキットです。 IntelliJ IDEA は、 最新の安定した Akka バージョン(英語)をサポートします。
Akka サポートをプロジェクトに追加する
Akka サポートを IntelliJ IDEA に追加する最も簡単な方法は、 sbt プロジェクトを使用することです。
エディターで build.sbt ファイルを開きます。
build.sbt に次のコードを追加します。
libraryDependencies += "com.typesafe.akka" %% "akka-actor" % "2.6.20"必要に応じて、 build.sbt ファイルに加えられた変更を 再インポートします。
Akka サポートのセットアップが完了したら、他のプロジェクトと同じ方法でアプリケーションをさらに開発できます。
エディターで Akka コードを操作する
基本コード補完、コード生成、コードナビゲーションサポートに加えて、IntelliJ IDEA は Akka インスペクションをサポートし、Akka コンテキストでの使用箇所を見つけ、Akka の特定のコード生成アクションを見つけます。
Akka コードインスペクションを使用
利用可能な Akka、インスペクションのリストとその説明は、 エディター | インスペクション 設定ページ Ctrl+Alt+S で確認できます。

エディターで、IntelliJ IDEA はインスペクションが機能する可能性のある提案のヒントを表示し、コードを改善する可能性のある提案された変更を含む以下の例を確認できます。
動的呼び出しをコンストラクター呼び出しに置き換える :コードの一部は代替案で単純化できます。

コード例:
import akka.actor._ abstract class Foo extends AbstractActor object Foo { def props: Props = Props(classOf[Foo]) }import akka.actor._ abstract class Foo extends AbstractActor object Foo { def props: Props = Props(new Foo()) }提供時のメソッド呼び出しに置き換える :動的コンストラクター呼び出しは、ファクトリメソッド呼び出しに安全に置き換えることができます。

コード例:
import akka.actor._ class Foo(foo: String, bar: Int) extends AbstractActor { override def createReceive(): AbstractActor.Receive = ??? } object Foo { def props(foo: String, bar: Int): Props = Props(new Foo(foo, bar)) } Props(classOf[Foo], "foo", 42)import akka.actor._ class Foo(foo: String, bar: Int) extends AbstractActor { override def createReceive(): AbstractActor.Receive = ??? } object Foo { def props(foo: String, bar: Int): Props = Props(new Foo(foo, bar)) } Foo.props("foo", 42)適切なアクターコンストラクターが見つからない :不適切な引数でコンストラクターが呼び出された場合に、インスペクションが機能します。

Akka 可変状態: インスペクションは、アクターに可変状態があるかどうかを検出します。
コード例:
import scala.collection.mutable class MyActor extends Actor { val isInSet = mutable.Set.empty[String] def receive = { case Add(key) => isInSet += key case Contains(key) => sender() ! isInSet(key) } }import collection.immutable.Set class MyActor extends Actor { def receive = active(Set.empty) def active(isInSet: Set[String]): Receive = { case Add(key) => context become active(isInSet + key) case Contains(key) => sender() ! isInSet(key) } }
Akka でインテンションを使用する
Scala および Akka で使用可能なインテンションアクションのリストは、 エディター | インスペクション 設定ページ Ctrl+Alt+S で確認できます。

エディターで、IntelliJ IDEA は、コードを改善するための提案とともに
ポップアップを表示します。 Akka の関連インテンションの次の例を確認してください。
アクターファクトリメソッドを生成する: IntelliJ IDEA は、ファクトリメソッドの自動生成をサポートしています。 エディターで、
Actorのコンパニオンオブジェクト内にキャレットを配置し、 Alt+Insert を押してインテンションを選択します。対応するファクトリメソッドを作成する: IntelliJ IDEA は、対応するファクトリメソッドの自動生成をサポートしています。
IntelliJ IDEA は、リファクタリング用にインテンションをサポートしています。 例: 変数 Ctrl+Alt+V を抽出すると、IntelliJ IDEA はインラインリファクタリングの名前と型を提案します。