Loading…

Scalaフォーマッターについて オンラインScalaコードフォーマッター

Scalaコードを貼り付けて「フォーマット」をクリックするだけで、クリーンで一貫性のあるscalafmtスタイルの出力が瞬時に得られます。バックエンドサービス、データパイプライン、FPライブラリ、授業例に最適です。設定ファイル不要 – レビューとgitコミットに最適な、意見のあるモダンなScalaフォーマットが利用可能です。

当社のScalaフォーマッターを使用する理由

  • 構造化されていないまたは位置がずれたScalaコードを瞬時に整形
  • 型、パラメータ、演算子周りのスペースを修正
  • クラス、オブジェクト、トレイト、メソッドのブレーススタイルを正規化
  • 長い式とメソッドチェーンのscalafmtスタイル行折り返しを適用
  • `.scala`、`.sc`スクリプト、`.sbt`ビルドファイルをサポート
  • コードはセキュアなバックエンドで整形 – 共有やインデックス登録されません
  • ノートパソコン、デスクトップ、タブレットで動作するレスポンシブエディターUI

🛠️ Scalaコードをオンラインでフォーマットする方法 for scala-formatter

1

1. Scalaコードを貼り付けまたは読み込み

📥 Scalaコードをエディターに貼り付けるか、`.scala`、`.sc`、`.sbt`ファイルをドラッグ&ドロップしてください。エディターはScalaのシンタックスハイライトを適用し、コードを素早く確認できます。

2

2. 「フォーマット」をクリック

⚙️ **フォーマット**ボタンを押してください。コードはHTTPS経由でscalafmtスタイルのフォーマッターに送信され、セマンティクスを変更せずに空白、インデント、改行を再編成します。

3

3. 結果を確認

🔍 整理されたバージョンと元のコードを比較してください。ブレース、スペース、空行が正規化され、コードの構造が追いやすくなります。

4

4. コピーまたはダウンロード

📤 フォーマットされたScalaコードをIDEにコピーするか、コミット、コードレビュー、またはデプロイ用の`.scala`ファイルとしてダウンロードできます。

技術仕様

スタイリング動作(Scalafmtスタイル)

このフォーマッターは一般的なscalafmtの慣習を反映し、コードがモダンなScalaプロジェクトで慣用的に見えるようにします。

側面動作備考
インデントとブレース`class`、`object`、`trait`、`def`、`if`、`match`、`for`の一貫したインデントネストされた制御フローとパターンマッチを読みやすくします。
型とパラメーターのスペースコロン、矢印、パラメーターリスト周辺のスペースを正規化例: `def f(x:Int):String` ではなく `def f(x: Int): String`。
インポートとパッケージパッケージとインポートブロックを構造化し、定義から分離して維持ファイル間のナビゲーションと一貫性を向上させます。
空行トップレベル定義周辺の空行を標準化モデル、サービス、ヘルパーなどの論理セクションを分離します。
冪等性複数回フォーマットを実行しても同じ結果が得られますスタイルのずれなく何度でも自由に再フォーマット可能です。

Scala バージョン互換性

このフォーマッタはScala 2とScala 3の両方の構文に対応しています。

機能サポート備考
Scala 2.x✅ 対応暗黙的変換、コンパニオンオブジェクト、従来のfor内包表記などの一般的なパターンに対応。
Scala 3 (Dotty)✅ 対応given/using、拡張メソッド、列挙型などScala 3の構文を理解します。
SBTビルドファイル✅ 対応ビルドや依存関係定義で使用される`.sbt`ファイルをフォーマットします。

対応入力と制限

小さなコード片だけでなく、実際のプロジェクトファイルに最適化されています。

パラメータ制限 / 動作備考
ファイル拡張子.scala, .sc, .sbtソースファイル、スクリプト、ビルド定義ファイル。
MIMEタイプtext/x-scala内部でシンタックスハイライトに使用されます。
最大入力サイズ≈ 2 MBのソースコード極めて大きな生成コードはローカルのscalafmtでフォーマットすることを推奨します。
エンコーディングUTF-8推奨非UTF-8コンテンツはフォーマット前に変換してください。

実行と安全性

フォーマット処理は公開されたサードパーティサービスではなく、非公開のセキュアなバックエンドで実行されます。

側面動作備考
転送ScalaフォーマットAPIへのHTTPS呼び出しコードは安全に転送され、公開されることはありません。
タイムアウトリクエストあたり約25秒異常な入力による長時間実行や停止したフォーマットジョブを防止します。
セマンティクスレイアウトのみの変換フォーマッタはプログラムのロジックではなく、空白とレイアウトを変更します。

ローカルワークフローでのScalafmtの使用

完全な制御とリポジトリ全体のフォーマットのために、scalafmtをインストールし、ビルドやCIパイプラインに統合してください:

ユニバーサル(sbt経由)

プロジェクトにscalafmtを追加

addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2")

sbtプラグインを追加して、sbtシェルからscalafmtを実行できるようにします。

すべてのソースをフォーマット

sbt scalafmtAll

`.scalafmt.conf`を使用してプロジェクト内のすべてのScalaおよびsbtファイルをフォーマットします。

CIでのフォーマット確認

sbt scalafmtCheckAll

ファイルが適切にフォーマットされていない場合、ビルドを失敗させます。

`.scalafmt.conf`ファイルをコミットして、チーム、CI、エディタ統合がすべて同じScalaスタイルに揃うように保ちましょう。

一般的な使用例

バックエンド & FPサービス

大規模なScalaバックエンドとFPコードベースを一貫性がありレビューしやすい状態に保ちます。

  • Akka、ZIO、Cats Effect、またはPlayプロジェクト全体でスタイルを標準化。
  • プルリクエストを開く前やサンプルを共有する前にコードを整理。
  • 大きなリファクタリングやライブラリ移行後のフォーマットを正規化。
object A{def main(args:Array[String]){println("hi")}}
object A {
  def main(args: Array[String]): Unit = {
    println("hi")
  }
}

Scala学習 & 教育

スペース論争ではなく、関数型の概念と型に集中できます。

  • ロジックとパターンをレビューする前に学生の提出物を自動フォーマット。
  • Scalaスタイルを教える際にフォーマット前後の例を示す。
  • スライド、ドキュメント、ブログ投稿用にクリーンなコードスニペットを準備。

ビルド & ツーリングスクリプト

`.sbt`ビルドファイルと小さなScalaスクリプトを整理された状態に保ちます。

  • メンテナンスを容易にするためにsbt設定と依存関係ブロックをフォーマット。
  • 移行や内部ツールに使用されるヘルパースクリプトを整理。

❓ Frequently Asked Questions

scalafmtとは何ですか?このツールはそれとどのように関連していますか?

ScalafmtはScalaの標準コードフォーマッターです。このオンラインフォーマッターはscalafmtの動作スタイルに従うことを目指しており、ここで表示されるレイアウトは、自身のプロジェクトでscalafmtやsbt-scalafmtを実行したときに得られる結果に近いものになります。

🔧ここですべてのscalafmtルールをカスタマイズできますか?

このツールは、すべてのscalafmt設定を公開するのではなく、適切で意見のあるプロファイルに焦点を当てています。完全な制御が必要な場合は、プロジェクトに`.scalafmt.conf`ファイルを作成し、sbtやIDE経由でscalafmtを実行してください。

🌐Scala 3の構文をサポートしていますか?

はい。このフォーマッターは、列挙型、given/using、拡張メソッドなどの最新のScala 3機能と、従来のScala 2コードの両方を扱えるように設計されています。

🔒私のScalaコードは公開サーバーに送信されますか?

コードはHTTPS経由でこのツール専用の非公開フォーマットバックエンドに送信され、共有やインデックス登録は行われません。機密性の高いコードや独自コードの場合は、代わりにローカルでscalafmtを実行できます。

⚙️フォーマットによってScalaプログラムの動作は変わりますか?

このフォーマッターは、意味論ではなく空白とレイアウトのみを変更するように設計されています。ただし、大規模なフォーマット変更後は、テストスイートを実行することが推奨されます。

Pro Tips

Best Practice

リポジトリに`.scalafmt.conf`ファイルを保持して、エディター、CI、`sbt scalafmt`がすべて同じスタイルを使用するようにしましょう。

Best Practice

リファクタリング前に専用の「フォーマットのみ」コミットを実行して、後の差分が空白ではなく実際のコード変更に焦点を当てるようにしましょう。

Best Practice

チーム全体で一貫した最大行幅を使用して、ノイズの多い差分やスタイルの競合を避けましょう。

Best Practice

教育時には、まず乱れたScalaコードを表示し、その後フォーマット版を表示して、レイアウトが可読性をどのように向上させるかを強調しましょう。

Additional Resources

Other Tools