Platform Development Basics
やったのコレ。で、課題がなんとなくどういう事してるのかって内容を要約してみる。
Get Started with the Salesforce Platform
ものすごく要約すると、Salesforce はSales CloudやService CloudなどのコアSalesforce製品アプリケーションを提供するだけじゃなくて、アプリケーションのカスタム、独自アプリの構築、アプリケーションの販売もろもろを提供するプラットフォームである。
既存のアプリケーションをカスタムする方向と、ゼロからアプリを作るパターンがあり、Salesforceプラットフォームが開発者は後者。
開発も Salesforce 上だけでPC/スマホ/タブレット向けのアプリ開発サポートするほか、Heroku と連携して好きな言語でひゃっほーもできる。
つーかデフォルトサポートが Apex とかいうク〇言語なわけだが…Salesforce APIなんてのもあって、外から呼べるし、モバイルSDKとかもあるので、それを使ってSalesforceをバックエンドにネイティブアプリも作れるぞい。
まーとりあえず DreamHouse なるアプリをインストール。
分かりやすいね。
因みに、パッケージIDが分かってるときの方法で、AppExchange というストアを通さずにパッケージインストールするための手段だ。
普通は AppExchange でクリックベースでインストールできるけど、開発練習用だからかね。
インストールが終わるとアプリにアクセスできる
指示としては DataImport タブ動かせってんで
でサンプルデータを初期化っと…
Develop Without Code
このセクションの全力要約。
標準オブジェクトは専用の名前があるだけで、基本的にはこの枠に収まってる。
で、こうした抽象化したレコードのデータをメタデータいいますねん。
メタデータは組織の構造を形成する。フィールド、ビジネスプロセス、またはより複雑なものを定義する場合でも、メタデータは構成を保持する。
で、このCRUD とかその他もろもろをメタデータを中心に開発することを メタデータ駆動開発
と呼んでる。
つーかメタデータには表示レイアウトや、更新画面設定とかも含まれてて、基本的なDB関連だけならマジでコードがいらない。
オブジェクトマネージャでオブジェクトの管理もできるけど、GUIで操作できるSchemaBuilder
WYSIWYG で画面のレイアウトを作成できる LightningAppBuilder
データの入力チェックや、データベーストリガ的なことができる ProcessBuilder
とかできる。
余程複雑なアプリでない限りはこれだけでアプリが作れる。
(っつーのも業務アプリって結局のところ、どうデータを入れて、データを加工して、どう見せるかってのが殆どだから)
Code with Salesforce Languages
もちろんコードも書ける。
手段はいくつかあるが
- Lightning Components : Javascript + HTML + JSON で開発する独自 MVC フレームワークを持ったアプリケーション開発方法。クライアント側で動作。クライアントにロジック書く是非はあるかなと思ってる。
- Apex : まじでハゲそうな位 Java1.4 以下な開発言語。
- Visualdorce : Apex のフロントエンドで使う、イメージ的には ASP/JSP 敵な画面テンプレート。
一応ほかにも
- Lightning Aura Component : Lightning Components に押されてもうそろそろ消える JavaScript と ASP 的独自タグのフレームワーク
- Lightning Web Components: Salesforce にしては珍しく Opensource で開発されてる JavaScript + HTML フレームワーク。Salesforce 以外のアプリも作れる。
なんてのもある。
Extend the Salesforce Platform
コード中にしれっとSQLライクなコードを書くことができる。
これを SOQL といって、類似で SOSL (全文検索とか別の検索体系を持った言語)もある。
Property__c property = [SELECT Name, Price__c from Property__c WHERE Id=:propId];
ただし、サブクエリは SELECT 内はリレーションを張ってるもののみ。
WHERE には、リレーションのあるものしか記述不可という徹底ぶり。
まぁ開発者の腕によってクッソ遅いクエリ書かれる位なら、必要最低限で止めたれってのはある意味で理にかなってるかな…
因みにAPIにはこんなんあるで
- SOAP API
- REST API
- Metadata API: モデル情報を編集できるAPI
- Tooling API: アプリケーションカスタムビルドするためのツール
- Marketing Cloud API: REST APIを使用してMarketing Cloud機能を公開し、SOAP APIを使用してほとんどのメール機能に包括的にアクセスできます。[
- Bulk API: 大量のデータを入出力するためにストリーム的にデータを扱うAPI
- Streaming API: 内部データの変更などの通知を受け取ったり、何らかのイベントをたたくためのAPI
- Chatter REST API : Chatter 機能を操作する API Chatter, Communities, Recommendations, Files, Topics, and more.
- Mobile SDK: ネイティブまたはハイブリッドモバイルアプリケーションをSalesforceと連携させるためのSDK
Heroku であれば、DBとSalesforce オブジェクトをシームレスに同期するとかそうした機能がデフォルトサポートしてるし、数々なインターフェースから IoT と連携したり、Salesclowd のチャット+チャットボット(EinsteinBOT)なんかもあり、その機能を拡張するなんてこともできると。