2024.07.22

Apex使用率(Apexコードの文字数)知らぬ間に無駄遣いしているかも!?

Just a moment... (33075)

はじめに

今回は、社内のChatterで盛り上がった内容を共有しようと思います!

みなさんは、Apex使用率を気にかけて開発をしていますか?
意外と気にかけてない部分かと思いますが、長期的な運用を考えると気にしておかなければいけない部分です。

いろいろと検証を含めまとめてみましたので、ぜひ最後までご覧ください。

Apex使用率とは

・組織においてApexコードが、どのくらい使用されているかを示した値です。
・Salesforceはマルチテナント環境であるため多くの制限があり、Apex使用率(Apexコードの文字数)もその制限の1つです。
・Apexコードの文字制限は、6MB。(英数字の場合 約6,000,000文字)
  ※使用率が上限に達するとリリースができなくなります。
   上限の拡張は可能ですが、Salesforceサポートへの依頼が必要です。

Apex使用率の確認方法

次の手順で簡単に確認できます。
 ※確認方法は2つあります。
■1つ目
  設定 > カスタムコード > Apex クラス

■2つ目
  設定 > 環境 > システムの概要

何が1文字としてカウントされるのか?

簡単にカウントされる?されない?を下記表にまとめてみました。

表だけだと分かりづらい点もあると思いますので、検証した結果を交えて詳しく見ていきましょう!

検証した結果

文字はカウントされるのか?

まずは、まっさらな組織にApexクラス「ApexUtilizationRate」を用意してみました。
・1行にまとめて処理を記載。

結果を確認してみましょう!

空白スペース・改行はカウントされるのか?

次に、Apexクラス「ApexUtilizationRate」を見やすく改行を入れてインデントも整えました。

結果を確認してみましょう!

Microsoft Wordに先ほどのコードを張り付けて文字カウントで確認してみました。

【内訳(計算方法)】
・文字数(スペースを含める) + 行数 = 文字数
  ・125 + 5 = 130文字
   ・インデントを整えたことによりスペースの数が増加
   ・改行をいれたことにより行数が増加

よってスペースの数と行数(改行)カウントされていることが​分かりました!

空白行は文字数にカウントされるのか?

結果を確認してみましょう。

よって空白行は文字数にカウントされないことが​分かりました!

@isTest アノテーションで指定されたクラスは文字数にカウントされるのか?

結果を確認してみましょう。

よって@isTest アノテーションで指定されたクラスは文字数にカウントされないことが分かりました!

コメントアウト行は文字数にカウントされるのか?

結果を確認してみましょう。

よってコメントアウト行は文字数にカウントされないことが分かりました!
(コメントアウト行のインデントを整えた際の空白スペースも!)

複数行のコメントアウトは文字数にカウントされるのか?

結果を確認してみましょう。

よって複数行のコメントアウトも文字数にカウントされないことが分かりました!

処理の後ろに書くコメントアウト箇所はカウントされるか?

結果を確認してみましょう。

よってコメントアウト箇所は文字数にカウントされないことが分かりました!

こんな書き方していませんか?

無駄な空白スペース入ってないですか?残ってないですか?

画像のように意図せず無駄な空白スペースが入っている・残っていることよく見かけます。

SELECTしているデータ(項目)箇所の見た目を揃えるために、こんな感じでコメントアウトつけていませんか?

SOQLのSELECT箇所のコメントアウトで綺麗に見た目を揃えていることよく見かけます。

インデントを空白スペース(スペース4つ)にしていませんか?

インデントを空白スペース(スペース4つ)で行っていることよく見かけます。
※1スペース = 1文字

不要・使用済みデバッグ残っていませんか?

開発時に使用した不要・使用済みのデバッグが残っていることよく見かけます。

文字数を最小限にするための工夫

無駄な空白スペースが残っていたケース

不要なスペースは削除しましょう!

Visual Studio Codeでこの機能を追加してみましょう!!その1

下記手順を行うと空白スペースを「・」に置き換えて表示してくれます。
①画面左下の「ギア」マーク
②設定
③Open Settings(JSON)
"editor.renderWhitespace": "all"を記載して保存

Visual Studio Codeでこの機能を追加してみましょう!!その2

拡張機能「Trailing Spaces」をインストールしましょう!
画像の赤枠のように行末の余計なスペースを赤く示してくれます。
赤くなった箇所は、ctrl + shift + pでコマンドパレットを開いてTrailing Spaces: Deleteを実行することで一括削除できます。

見た目を良くするためにスペースを入れていたケース

コードの直後からコメントを開始するようにしましょう!
コードと同行にコメントを記載しないようにしましょう!
 ・コメント行を独立させる。

インデントを空白スペース(スペース4つ)にしているケース

スペースをタブに変換しましょう!

Visual Studio Codeでこの機能を追加してみましょう!!その3

下記手順を行うことによって、
  • 改行した時のインデントが半角スペース4つ分のタブが挿入されます。
  • Tabキーを押した際も半角スペース4つ分のタブが挿入されます。
その1と同じようにsettings.jsonに書きを記載して保存
  • "editor.tabSize": 4
  • "editor.detectIndentation": false
  • "editor.insertSpaces": false

一括で「スペース4つ」から「タブ」に変える方法
・ctrl + shift + pでコマンドパレットを開いてConvert Indentation to Tabsを実行しましょう!

VSCodeを開くのが面倒だからって組織から直接編集するのはダメ

組織から直接Apexクラスを編集してしまうと、せっかくタブに変換したインデントがスペースに戻ってしまいます!

不要・使用済みデバッグが残っていたケース

不要・使用済みのデバッグは、削除するか、コメントアウトしましょう!

おわりに

いかがでしたでしょうか。
少々長くなってしまいましたが、Apex使用率について理解できましたでしょうか。
今一度、今回ご紹介した内容を参考に組織のApex使用率の確認と開発方針の再確認をしてみるのも良いかと思います!
そして、Apex使用率が逼迫しそう・している組織の参考になれれば幸いです。
97 件
     
  • banner
  • banner

関連する記事