ばか女の技術ブログ

大阪のばかすぎる女子プログラマーがばかな知識を載せていくばか向けばかブログです。

Salesforceを勉強する。5日目

 

1日目の次に急に5日目になる。

 

 

なぜなら

 

 

 

上司『APEXで外部アプリケーションとSalesforceを連携したいんだよね』

 

私『おめでとうございます。おつかれさまです。』

 

上司『つまりAPEXで外部アプリケーションとSalesforceを連携するところを作ってほしいんだよね。できるよね。』

 

私『できません。APEXってなんですかSalesforceってなん』

 

上司『よろしくね。それがお仕事だからね。』

 

 

 

で急にAPEXを使ってガリガリ書くことになったからです。

もういやです。

 

2日目~4日目はもっと基礎的なとこ書きたいので

後日書くという言い訳をして

 

 

さて、これがお仕事なのでやっていきましょう。

 

 

 

まずAPEXとは

salesforceの開発言語です。

ほぼjavaらしいです。

ワタシjavaアンマリツカッタコトナイCakePHPガスキスキスキ。。。

 

どうやって開発すんの??

まずsalesforceのソースをとってこよう

用意するのは

  • MavensMate
  • Sublime Text3(Package ControlでMavensMateot落としてきてね)

だよーん

 

上記2つのアプリを使って

自身のsalesforce環境を落としてきましょう。

 

本番環境じゃなくて

sandboxっていう本番環境コピーした開発環境がすぐ作れて便利!

だからそっちとまずつなげてねーーーー。

 

 

とりあえず書こう!

Apexの概要について参考になるサイトページ

developer.salesforce.com

 

ふむふむ拡張子は.clsで

classes フォルダにApexクラスを格納していくのね。

 

 

ではではさっそく簡単な処理を書いていこう。

 

お、こんなところにすごく便利なtrailheadはっけん。

trailhead.salesforce.com

 

これの最後にハンズオンのチャレンジがあるのでやってみました。

ちょっと理解した気になれるのでどうでしょうか。

 

でもなぜかハンズオンのチャレンジだけ英語のままだったので

日本語に訳してみたよ!↓

 

string型の('Test 0', 'Test 1', ...)が格納された配列を返却する

APEXクラスを作ってください。

配列内のデータ数は引数によって設定するようにしてください。

 

  1. StringArrayTestというpublicなAPEXクラスを作ってください。
  2. StringArrayTestにはpublicなstaticのgenerateStringArrayというメソッドをもたせてください。
  3. generateStringArrayメソッドはstring型の配列を返却するようにしてください。各文字列は、 'Test n'の形式で値を持たなければなりません。ここで、nは配列内の現在の文字列のインデックスです。返却される配列の文字列の数は、 generateStringArrayメソッドのinteger型引数によって指定されるようにしてください。

 

レッツチャレンジです!

 

 

本当にしたい機能を作っていこう

今回やりたいのは

外部アプリケーション→salesforce→外部アプリケーション

です。

 

詳しく書くと

 

外部アプリケーションでデータ取得のボタンをクリック

salesforceの処理呼び出し

salesforceの処理内でsalesforceで使用してるデータを取得

取得したデータを外部アプリケーションに返却

 

がしたい!

 

 

REST APIでやっていきます。

REST APIは調べたけどよくわかんなかった(ばかすぎ)

RESTの原則に沿ったAPIってなんや

とりあえずHTTPのGETやPOST使ってウェイって感じのやつと理解した

 

Apex REST アノテーション

ってのがsalesforceにはあるらしいぞな。

 

 

 この

を使っていくぜうぇい

 

 

やり方としては

 

 

①外部アプリケーションでsalesforceにhttpリクエストする

 

salesforceのソースに新しいファイル作る

 

③②に処理を書いていく。

 

④①のリクエストURLを②③の場所に合わせる

 

 

確認の方法は

 

ログを吐いて開発者コンソール

system.debug(なんたらかんたら);

 

 

ダオ作ってコントローラ作って

viewが外部アプリケーションないめーじ

 

DAOはDB関連の処理をまとめたものだよん。

 

 

ここで参考にしたページ

 

developer.salesforce.com

tyoshikawa1106.hatenablog.com


 

すごい!

めっちゃわかりやすい例がそのまま載ってやがるぜ!

ネットってめっちゃ便利やな!

 

 

ばかなので本当に1つずつ理解していきます。

 

@RestResource(urlMapping='/Account/*')

⇒RESTアノテーションの宣言

アノテーションは日本語で注釈、注記といった意味。

REST APIでこのクラスの処理は実行するんですよ~っていう注意書きをします。

REST APIで指定されるURLもここでわかるようになるね~便利ね~

 

@HttpDelete

@HttpGet

@HttpPost

⇒これもRESTアノテーションの宣言

削除要求かゲットかポストか呼び出し元がどうしてるかわかるように

注意書きしてるよん

 

global with sharing class

⇒global はアプリケーション外からもアクセスOKにするとき使う識別子みたいですね。通常はprivate / protected / publicで良いということかな。

とりあえず今回は外部アプリケーションから呼び出すのでglobalですね!

よしわかった!

 

…しかし、んん?with sharing??

 

この疑問を解決してくれているのがここ!

blog.flect.co.jp

 

なるほどwithだと権限がないユーザーがこのクラス読み込んでも

データ参照できないのね!!!

逆にwithoutだと権限関係なくデータもってこれるのね!!

(間違ってたらめっちゃごめんなさい)

 

もはや独り言と化してますが理解した

 

 

あとは普通に書き書きしてるだけかと思いきや謎のコンストラクタ発見

RestRequest

RestResponse

 

ちなみにコンストラクタとは・・・

http://wa3.i-3-i.info/word13646.html

このサイトが死ぬほど初心者むけだから自分のためにメモ

 

とりあえずリクエストデータは

RestRequest req = RestContext.request;

レスポンスデータは

RestResponse res = RestContext.response;

に入れてつかえばええんね!

 

 

 

次回!城乃内死す!

デュエルスタンバイ!!!!!

 (そして唐突におわる)