当社のScalaフォーマッターを使用する理由
- 構造化されていないまたは位置がずれたScalaコードを瞬時に整形
- 型、パラメータ、演算子周りのスペースを修正
- クラス、オブジェクト、トレイト、メソッドのブレーススタイルを正規化
- 長い式とメソッドチェーンのscalafmtスタイル行折り返しを適用
- `.scala`、`.sc`スクリプト、`.sbt`ビルドファイルをサポート
- コードはセキュアなバックエンドで整形 – 共有やインデックス登録されません
- ノートパソコン、デスクトップ、タブレットで動作するレスポンシブエディターUI
🛠️ Scalaコードをオンラインでフォーマットする方法 for scala-formatter
1. Scalaコードを貼り付けまたは読み込み
📥 Scalaコードをエディターに貼り付けるか、`.scala`、`.sc`、`.sbt`ファイルをドラッグ&ドロップしてください。エディターはScalaのシンタックスハイライトを適用し、コードを素早く確認できます。
2. 「フォーマット」をクリック
⚙️ **フォーマット**ボタンを押してください。コードはHTTPS経由でscalafmtスタイルのフォーマッターに送信され、セマンティクスを変更せずに空白、インデント、改行を再編成します。
3. 結果を確認
🔍 整理されたバージョンと元のコードを比較してください。ブレース、スペース、空行が正規化され、コードの構造が追いやすくなります。
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ファイルが適切にフォーマットされていない場合、ビルドを失敗させます。
一般的な使用例
バックエンド & 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 3の構文をサポートしていますか?
🔒私のScalaコードは公開サーバーに送信されますか?
HTTPS経由でこのツール専用の非公開フォーマットバックエンドに送信され、共有やインデックス登録は行われません。機密性の高いコードや独自コードの場合は、代わりにローカルでscalafmtを実行できます。⚙️フォーマットによってScalaプログラムの動作は変わりますか?
Pro Tips
リポジトリに`.scalafmt.conf`ファイルを保持して、エディター、CI、`sbt scalafmt`がすべて同じスタイルを使用するようにしましょう。
リファクタリング前に専用の「フォーマットのみ」コミットを実行して、後の差分が空白ではなく実際のコード変更に焦点を当てるようにしましょう。
チーム全体で一貫した最大行幅を使用して、ノイズの多い差分やスタイルの競合を避けましょう。
教育時には、まず乱れたScalaコードを表示し、その後フォーマット版を表示して、レイアウトが可読性をどのように向上させるかを強調しましょう。
Additional Resources
Other Tools
- CSSビューティファイア
- HTMLビューティファイア
- JavaScriptビューティファイア
- PHPビューティファイア
- カラーピッカー
- スプライト抽出ツール
- Base64デコーダー
- Base64エンコーダー
- C#フォーマッタ
- CSVフォーマッタ
- Dockerfile Formatter
- Elmフォーマッタ
- ENVフォーマッタ
- Goフォーマッタ
- GraphQLフォーマッタ
- HCLフォーマッタ
- INIフォーマッタ
- JSONフォーマッタ
- LaTeXフォーマッタ
- Markdownフォーマッタ
- Objective-Cフォーマッタ
- Php Formatter
- Protoフォーマッタ
- Pythonフォーマッタ
- Rubyフォーマッタ
- Rustフォーマッタ
- シェルスクリプトフォーマッタ
- SQLフォーマッタ
- SVG フォーマッタ
- Swift フォーマッタ
- TOML フォーマッタ
- Typescript Formatter
- XML フォーマッタ
- YAML フォーマッタ
- Yarn フォーマッタ
- CSSミニファイア
- Html Minifier
- Javascript Minifier
- JSONミニファイア
- XML ミニファイア
- HTTPヘッダービューア
- PDFからテキストへ
- 正規表現テスター
- SERPランクチェッカー
- Whois ルックアップ