技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

Platform Development Basics

やったのコレ。で、課題がなんとなくどういう事してるのかって内容を要約してみる。

trailhead.salesforce.com

Get Started with the Salesforce Platform

ものすごく要約すると、Salesforce はSales CloudやService CloudなどのコアSalesforce製品アプリケーションを提供するだけじゃなくて、アプリケーションのカスタム、独自アプリの構築、アプリケーションの販売もろもろを提供するプラットフォームである。
既存のアプリケーションをカスタムする方向と、ゼロからアプリを作るパターンがあり、Salesforceプラットフォームが開発者は後者。

開発も Salesforce 上だけでPC/スマホ/タブレット向けのアプリ開発サポートするほか、Heroku と連携して好きな言語でひゃっほーもできる。
つーかデフォルトサポートが Apex とかいうク〇言語なわけだが…Salesforce APIなんてのもあって、外から呼べるし、モバイルSDKとかもあるので、それを使ってSalesforceをバックエンドにネイティブアプリも作れるぞい。

まーとりあえず DreamHouse なるアプリをインストール。

f:id:white-azalea:20200803211132p:plain f:id:white-azalea:20200803211213p:plain f:id:white-azalea:20200803211249p:plain

分かりやすいね。

因みに、パッケージIDが分かってるときの方法で、AppExchange というストアを通さずにパッケージインストールするための手段だ。
普通は AppExchange でクリックベースでインストールできるけど、開発練習用だからかね。

インストールが終わるとアプリにアクセスできる

f:id:white-azalea:20200803211557p:plain

指示としては DataImport タブ動かせってんで

f:id:white-azalea:20200803211657p:plain f:id:white-azalea:20200803211730p:plain

でサンプルデータを初期化っと…

Develop Without Code

このセクションの全力要約。

  • オブジェクト: TDB でいうテーブル定義
  • フィールド: RDB でいうところのカラム
  • レコード: RDBでいう row

標準オブジェクトは専用の名前があるだけで、基本的にはこの枠に収まってる。
で、こうした抽象化したレコードのデータをメタデータいいますねん。

メタデータは組織の構造を形成する。フィールド、ビジネスプロセス、またはより複雑なものを定義する場合でも、メタデータは構成を保持する。
で、このCRUD とかその他もろもろをメタデータを中心に開発することを メタデータ駆動開発 と呼んでる。

つーかメタデータには表示レイアウトや、更新画面設定とかも含まれてて、基本的なDB関連だけならマジでコードがいらない。

オブジェクトマネージャでオブジェクトの管理もできるけど、GUIで操作できるSchemaBuilder

f:id:white-azalea:20200803213347p:plain

WYSIWYG で画面のレイアウトを作成できる LightningAppBuilder

f:id:white-azalea:20200803213509p:plain

データの入力チェックや、データベーストリガ的なことができる ProcessBuilder

f:id:white-azalea:20200803213747p:plain

とかできる。
余程複雑なアプリでない限りはこれだけでアプリが作れる。

(っつーのも業務アプリって結局のところ、どうデータを入れて、データを加工して、どう見せるかってのが殆どだから)

Code with Salesforce Languages

もちろんコードも書ける。
手段はいくつかあるが

  • Lightning Components : Javascript + HTML + JSON で開発する独自 MVC フレームワークを持ったアプリケーション開発方法。クライアント側で動作。クライアントにロジック書く是非はあるかなと思ってる。
  • Apex : まじでハゲそうな位 Java1.4 以下な開発言語。
  • Visualdorce : Apex のフロントエンドで使う、イメージ的には ASP/JSP 敵な画面テンプレート。

一応ほかにも

なんてのもある。

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)なんかもあり、その機能を拡張するなんてこともできると。