プログラミング言語の「Apex」を皆さんご存知でしょうか。
Salesforceを触らない開発者、IT技術者の方であればApexというプログラミング言語は聞く機会はほぼほぼ無いかと思います。かくいう私も、何年もIT業界で仕事を全うしてきましたが、プログラミング言語で「Apex」という言葉を聞いたことも文字を見たこともありませんでした。(最初はゲームのApexかと思いました)
Salesforceの仕事に携わる前に初めてApex言語の存在を知り、まだまだ自分が知らないことは沢山あるんだと思ったのを今でも覚えています。
今回は、Salesforce独自の言語であるApexとは何者なのか、どのようなものを実現できるプログラム言語なのか等を簡単にご紹介したいと思います。
1. Apexの概要
Apexとは、Salesforce上の機能を拡張する際に使用する、オブジェクト指向のプログラミング言語です。構文はJavaとかなり似ているため、Javaを知っている方であれば、敷居はそこまで高く無いかと思います。Apexを使用することにより、ボタンクリック、関連レコードの更新、Visualforceページなどのほとんどのシステムイベントに処理を追加することができます。Apexは、Webサービスのリクエスト、オブジェクトのトリガから開始することができます。
Salesforce上で、動かしたい処理があれば、大抵はApexを用いて実現することができます。ただ、Apexを用いることのメリットデメリットはありますので、簡単な処理であれば、標準機能であるフローなどを使用する方が良いと思います。メリットデメリットについては、後ほどご紹介いたします。
2. Apexの特徴
Apexはいくつかの特徴を持っています。下記はSalesforceの公式ページ抜粋です。
( 「>」をクリックすると、詳細が展開されます)
-----------------------------------------------------------------------------------------------
統合されている
使いやすい
データ指向
正確である
ホストされている
マルチテナント型
テストが容易
バージョニングされている
-----------------------------------------------------------------------------------------------
公式からいろんな特徴が紹介されていますが、全体を通して、不便なく開発言語としてSalesforce上で使用できるかと思います。
なお、Apexは、「設定」 → 「開発者コンソール」から使用できます。
3. Apexを使用する場面
先ほど、ApexはSalesforce上のどのような処理でも実現することはできると述べましたが、実際にどういった場面で使用するのが良いのでしょうか。Salesforceには処理を自動化できる標準機能のフローといったものがあります。
フローは、コードを書く必要がなく、プロセスを可視化し、フローチャートのような処理の流れでSalesforce上のデータを操作することができます。フローを使用した方が工数が省けたり、ApexやJavaを触ったことがない人でも手軽に出来るといったこともメリットです。簡単な自動処理を実現したいのであれば、フローを使用していただく方が良いと思います。
逆にApexは、フローで実現できないような複雑な処理を自動化する際に使用すると良いとでしょう。どちらを使うべきかは、実現したい処理の内容やリソースなどを考慮した上で決定すべきかと思います。
例えば、以下のパターンではApexが必要です。
Visualforceページ(PDF帳票の出力等)で使用するクラスの作成
Apexトリガの作成
外部システムとの連携
PDF帳票は、弊社でもしばしば開発することがあります。PDFのレイアウト(HTML)の作成と、Salesforceのデータのアウトプット(Apex)が必要になるので、開発を経験したことない人にとっては少し難易度が高いかもしれません。
下記、私の感覚ですが、フローとApexの比較を表でまとめるとこんなイメージです。
| 自動化機能の実現範囲 | 処理の見やすさ | メンテナンス性 | 工数 |
フロー | 簡単な自動化は可能 | プロセスが可視化されているので見やすい | 編集 -> 保存でメンテが可能 | 少 |
Apex | 大体なんでもできる | ソースを読む必要がある | 本番用クラス/テストクラスの修正、リリースが必要 | 多 |
表を見るとフローがよく見えると思いますが、使い所はケースバイケースです。
互いのメリットデメリットがあるので、うまく使い分けることが大切だと思います。
4. まとめ
Apexについて少しでもご理解いただけましたでしょうか。最近ではSalesforceのフローもかなり充実してきています。大抵の処理はフローで自動化できますが、勿論、実現できないことも多々あります。そういった時に、Apexを使用すると良いと思います。実際に私は、リードオブジェクトの取引開始の自動化をApexを用いて行いました。これはフローでは実現できないことなので、Apexを実装した時に、本当になんでも出来そうだと感じましたね。同時にプログラミングの勉強にもなったので、触っていて損は無かったです。ただ、その分技術力も必要になってきますので、慣れていない方は工数がいくらかかかってしま雨と思いますので、プロジェクトの予算次第で実現していただければと思います。この記事を読んで少しでもApexについてご理解いただけると嬉しいです!
Comments