LoginSignup
4
5

More than 3 years have passed since last update.

SFDXプロジェクト の Apex クラスはフォルダわけして配置可能であるか?

Last updated at Posted at 2020-04-29

みなさん、こんにちはCLBです。
今回は SFDX プロジェクトでフォルダ階層を分ける事が可能なのかどうか試してみました。

ネタバレ

できる。

事前準備

用意する開発ソフト・拡張パックは以下の通り。
- Visual Studio Code(VS Code)
- Salesforce Extension Pack
- Salesforce Developer Edition の組織。無い人はサインアップしてください。

プロジェクトの作成

  • 適当な場所にフォルダを作成する。
  • そのフォルダで force:project:create をしてプロジェクトを作る。
  • 作成したプロジェクトのフォルダをVS Codeで開く。

細かい部分については、 https://base.terrasky.co.jp/articles/5f2tk 等を参考にしてみてください。

クラスを作る

  1. VS code でコマンドパレットを開いて、 >SFDX create apex class を選択する。
  2. 作成するクラス名に適当な名前 (ClassFooとか) をつけて作成する。作成するフォルダに関してはデフォルト(force-app/main/default/classes/ClassFoo.cls)とする。
  3. そのあと、 classes 配下に foo フォルダを作成し、作成したクラスをそのフォルダに移動する。(force-app/main/default/classes/foo/ClassFoo.cls)になる。
  4. 作成したクラスに適当なメソッドを作成する。
public with sharing class ClassFoo {
    public ClassFoo() {
    }
    // 適当なメソッド
    public void foo() {
        System.debug('Hello');
    }
}

デプロイしてみる

スクラッチ組織にデプロイしてみる。

時刻 sfdx force:source:push --json --loglevel fatal
時刻 sfdx force:source:push --json --loglevel fatal
 が終了コード 0 で終了しました。

=== プッシュされたソース
STATE  FULL NAME  TYPE       PROJECT PATH                                            
─────  ─────────  ─────────  ────────────────────────────────────────────────────────
Add    ClassFoo   ApexClass  force-app/main/default/classes/foo/ClassFoo.cls         
Add    ClassFoo   ApexClass  force-app/main/default/classes/foo/ClassFoo.cls-meta.xml

問題無くできた。

スクラッチ組織の開発者コンソールから呼び出してみる。

ClassFoo foo = new ClassFoo();
foo.foo();

これも正常終了。

他のクラスからの呼び出し

さっきと同じ手順で force-app/main/default/classes/barフォルダを作成し、

ClassBar.clsを作る。
そしてそのクラスから先ほど作った ClassFoo.cls を呼び出すようにする。
こんな感じ

public with sharing class ClassBar {
    public ClassBar() {

    }
    public void callFoo () {
        ClassFoo foo = new ClassFoo();
        foo.foo();
    }
}

結果的にフォルダ構成は以下のようになる。
img.png

ClassBar.cls をデプロイする。問題無くできた。
(デプロイ実行結果は省略)
スクラッチ組織の開発者コンソールから呼び出してみる。

ClassBar bar = new ClassBar();
bar.callFoo();

これも正常終了。問題なさそう。

結論

  • フォルダを分割する事はできる。
  • 他のフォルダクラスを呼び出す際にもフォルダ名をつける必要は無い。(つまりリファクタをする必要もない。)
4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5