JavaのアプリからSalesforceのREST APIをコールする方法

概要 Javaのアプリケーション等の外部システムからSalesforceのREST APIをコールするには、事前にSalesforceの対象組織に対してログイン認証をする必要があります。本記事ではその部分をJavaのSpring Bootのフレームワークでどのように実装するかについて、サンプルコードを交えて整理しております。また、そのアプリでSalesforceとのOAuthでの認証を実現する方法、Herokuへのデプロイする方法も簡単に記載しております。 構成 今回は下記のような構成で外部システムにあたる部分を実装します。 アプリ:Spring Boot(Java) 基盤:Heroku Javaアプリの作成 最初にSpring Initializr(https://start.spring.io/)からスケルトンを作成します。今回は、ビルドツールはMavenを使用します。 pom.xmlファイルの作成 今回使用するライブラリをpom.xmlファイルに定義します。 ポイントは下記を使用する点となります。spring-security-oauth2・・・SpringにおいてOAuthの認証を実現するために使用します。spring-security-oauth2-autoconfigure・・・Spring Security OAuth2の設定をシンプルに実現するために使用します。 SSOでのOAuth認証を実装 OAuth2 コンシューマがアクセストークンを取得するためには、OAuth2

Continue reading

【JavaScript】値型と参照型 (Value Types and Reference Types)

概要 本記事ではJavaScriptにおける値型(Value Types)と参照型(Reference Types)の違いを簡単に整理します。 値型(Value Types) Number,Boolean,String,null,undefined,Symbolはプリミティブ型であり関数へは全て値型で渡されます。ここでのポイントは、Stringが値型で渡させるということとなります。他の言語では、Stringは一般的に参照型である場合が多いですが、JavaScriptでは値型なので注意が必要となります。値型で関数(fucntion)に渡させると、関数の中での変更は影響しないような挙動となります。下記が簡単な例です。 参照型(Reference Types) Object,Array,Functionの型は、参照型で渡さます。ちなみに、ArrayやFunctionも大きく捉えるとObjectに含まれると考えられます。参照型で関数(fucntion)に渡させると、関数の中での変更は呼び出し元の変数にも影響するような挙動となります。下記が簡単な例です。 まとめ JavaScriptでは明示的に型を宣言しないので、他の言語ほど型を意識しないことが多いですがいわゆる値型と参照型での動作の違いが出てくるので、考慮した上で実装する必要はあります。 参考 Understand Value and Reference Types in JavaScripthttps://www.zsoltnagy.eu/understand-value-and-reference-types-in-javascript/ Value

Continue reading

WordPressにreCAPTCHAを導入

概要 本ブログはWordPressで運用しているのですが、プラグインのJetpackを導入してからダッシュボードで「悪意のあるログイン試行のブロック数」が表示されるようになり、毎日結構な数になっていたことから、Google社のreCAPTCHA(リキャプチャ)を導入してみました。その際の手順を簡単にまとめます。なお、reCAPTCHAのバージョンはv3、WordPressのプラグインはGoogle Captcha (reCAPTCHA) by BestWebSoftを使用しております。 GoogleへWEBサイトの登録&APIキー取得 下記のGoogle社のページで右上にあるAdmin ConsoleからWordPressのWebサイトを登録します。https://www.google.com/recaptcha/intro/v3.html まずは登録するサイトのドメインとラベルを適切に入力します。また、reCAPTCHAのタイプは今回、v3を使用します。こちらは、reCAPTCHAの最新版であり以前のようなチェックボックス押下も不要で、どういうロジックかはわかりませんが自動でGoogle社がスコアを出して、人間かBotかを判断してくれるようです。 WordPressにプラグインを導入 reCAPTCHAをログイン画面やコメント画面のフォームへ簡単に導入してくれるプラグインを使用します。今回は、v3にも対応していたGoogle Captcha (reCAPTCHA) by BestWebSoftを使用することにしました。プラグインのURLは、こちらになります。https://ja.wordpress.org/plugins/google-captcha/設定に関する手順書もしっかり整理されており、こちらから参照可能です。https://docs.google.com/document/d/1yTDdMSLqvgATbo5lPzuNn4QRF0EyEPFuLoFB15beMww/edit プラグインの設定 プラグインを有効化するとサイドバーに”Google Captcha”が現れます。ここで、上記の手順においてGoogleの登録ページで取得したAPIキー(サイトキーとシークレットキー)を正しく入力します。 APIキーを入力すると”Test

Continue reading

VisualforceでreCAPTCHAを実装

概要 SalesforceのCommunityやSites等で外部へ公開するページをVisualforceで実装する場合にBotによる標準型攻撃を受けないようにするための対策としてGoogle社が提供するreCAPTCHA(リキャプチャ)を使用して認証を実装するサンプルコードと手順を紹介します。 Googleへサイトの登録とAPIキーを発行 まず、下記のURLからGoogleへサイトの登録とAPIキーの発行を行います。右上のAdmin Consoleから登録できます。https://www.google.com/recaptcha/intro/v3.html 現在、Google社が提供しているreCAPTCHAには最新のv3と旧のv2がありますが、v2も引き続き使用できるようですので、そちらを使用したいと思います。また、ドメインには、公開サイトとなるCommunityやSitesのドメインを指定するようにしてください。今回は、テストで動作確認するのみなので、force.comを指定しておきます。 ここまでの入力が完了すると、Public KeyとSecret Keyが発行されます。こちらを実装するときに使用します。 Salesforceでリモートサイトへ登録 Apexでサーバー側で認証する際に、Googleのサーバーへリクエストする必要があるので、SalesforceのリモートサイトへURLを登録しておく必要があります。 Visualforceの実装 Visualforceでの実装サンプルは下記の通りとなります。チェックボックスの押下により発行されたトークンをhiddenの項目に保持しておき、サーバー送信時にPostします。 サーバー側(Apex)の実装 サーバー側(Apex)の実装サンプルは下記の通りとなります。クライアントからポストされたトークンとSecret Keyをパラメーターにして、所定のGoogle社のURLへPOSTして認証を実施して、レスポンスで結果を確認します。 デモ 下記のようの動作となりました。 参考 Adding

Continue reading

SalesforceのメールをSendGrid経由で送信する

概要 Salesforceから送信するメールは、Salesoforceのメールサーバから送られます。スパムや迷惑メールの対策のためにSalesforce外のメールサーバーを経由して送信する為には、メールリレーの機能を使用することで実現可能となります。本記事では、メールリレーを使用してクラウドでメール送信のサービスを提供しているSendGridを経由するように設定する方法を紹介します。メールリレーを使用するよくあるシチュエーションは、なりすましメールの対策として自社のメールサーバーを経由させることで、送信元のメールアドレスのドメインと一致させるような場合となります。SendGridを経由させることのメリットとしては、SendGridはメールのBlockやバウンス、送達率などが管理コンソールで確認する機能がSalesforceよりも優れているという点が考えられます。 SendGridのアカウント作成 SendGridは、テスト用であれば本家でこちらから登録できます。https://sendgrid.com/実際に運用で使用する場合は、構造計画研究所が正規代理店となっている下記から登録が必要となります。https://sendgrid.kke.co.jp/ メールリレーの設定 設定の[クイック検索]ボックスからメールリレーで検索します。 メールリレーを作成します。SendGridのホスト名とポートは下記の通りに指定します。 https://support.sendgrid.kke.co.jp/hc/ja/articles/204187885-SMTP%E3%81%AE%E6%8E%A5%E7%B6%9A%E6%83%85%E5%A0%B1%E3%82%92%E6%95%99%E3%81%88%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84-ホスト名:smtp.sendgrid.netポート番号:25TLS設定:検証して必須SMTP認証を必須:チェックユーザ名:SendGridのアカウントを入力 メールドメイン検索条件の設定 設定の[クイック検索]ボックスからメールドメイン検索条件の指定で検索します。 この設定では、メールリレーを使用する送信者と受信者のドメインを指定することができます。 以上で設定は完了です。これで試しにSalesforceからメールを送信するとSendGrid経由でメールが送信されているはずです。 メールログで送信履歴を確認 設定で[クイック検索]ボックスからメールログファイルを検索します。 ダウンロードしたCSVファイルにテストで送信したメールがメールリレーでSendGrid経由で送信されていることを確認できます。 SendGridの管理画面で確認 SendGridの管理画面にアクセスして送信履歴を確認することもできます。 https://app.sendgrid.com 参考 メールリレーの設定https://help.salesforce.com/articleView?id=email_relay.htm&type=5

Continue reading

WordPressにプラグインなしでTwitterのタイムラインを埋め込み

概要 本記事は、WordPressにプラグインを使用せずにTwitterのタイムラインをサイドバーに埋め込み、表示する方法を記載します。WordPressではプラグインをインストールすることで簡単に設定することができますが、プラグインはたくさん入れると重くなったり、プラグイン同士が競合したりすることがあるので極力少ない方が好ましいです。なので、今回はプラグインを使用しないで実現する方法を紹介します。 手順 早速手順を記載したいと思います。意外と簡単に設定することができ、下記の大きく2ステップでできてしまいます。 Twitter Publishでコードを作成 WordPressのウィジェットでサイドバーに設置 Twitter Publishでコードを作成 Twitter Publishにアクセス URL入力(自分のTwitterアカウントのプロフィールページ)でエンター オプションを選択(Embedded Optionを選択) set customization options.でHightを設定(600pxと入力) コードをコピー WordPressのウィジェットでサイドバーに設置 ウィジェットでサイドバーに設置

Continue reading

【JavaScript】プリミティブ型

概要 本記事は、JavaScriptにおけるプリミティブ型にはどのようなものがあるかを整理したものとなります。 プリミティブ型とは プリミティブ型とは、プログラミング言語の仕様に用意されている最も基本的なデータ型となります。 JavaScriptにおけるプリミティブ型 JavaScriptにおけるプリミティブ型には、下記の種類があります。 Boolean type Null type Undefined type Number type String type Symbol type Boolean type

Continue reading

Salesforceのメールサービスを実装する方法

概要 本記事は、Salesforceのメールサービスを実装する方法を簡単に記載します。 ちなみにメールサービスとは、「Apexクラスを使用して受信メールを処理する自動化されたプロセス」という機能となります。 具体的には、Webサイトやフォームで受け付けた内容をSalesforceへメールとして送信することで、メールの情報を元にApexのプログラムでオブジェクトにレコードを作成したりすることができるものとなります。 作成手順 Messaging.InboundEmailHandlerインターフェースを実装したApexクラスを作成 まずは、メールサービスに必要となるInboundEmailHandlerの実装クラスを作成します。このクラスでhandleInboundEmailメソッドを使用して、InboundEmail オブジェクトにアクセスし、受信メールメッセージの内容、ヘッダー、および添付ファイルの取得と、その他多数の機能を実行します。 下記のサンプルコードでは、受信したメールの内容を元にケースを作成しております。また、受信メールアドレスが一致する取引先責任者があれば、リレーションをはるような考慮もいれております。 メールサービスの作成 メール受信時に呼び出すApexを指定してメールサービスを作成します。 メールアドレスを追加 作成したメールサービスに対して、送信先となるメールアドレスを作成します。 設定するメールアドレスの部分が@より前の部分になり、ドメインは作成時に自動で生成されます。 ■注意点 「コンテキストユーザ」に設定するユーザが、Apexの実行ユーザとなるのでApex内でアクセスするオブジェクト(今回はケースオブジェクト)を更新する権限がないと、オブジェクト登録のApexがエラーになります。 設定完了、メールアドレスの確認 作成したメールアドレスを確認します。 実際にメールを送信して確認 今回のサンプルプログラムでは正常に動作した場合は、メールの件名、本文でケースが作成されているはずです。エラーが発生した場合は、送信元のメールアドレスにメールが届きます。

Continue reading

【JavaScript】コールスタックとは

概要 本記事では、JavaScriptのコンセプトであるコールスタックについて整理します。 コールスタックとは コールスタックは、JavaScirptを実行するインタプリタ(WebブラウザのJavaScriptインタプリタなど)が複数の関数を呼び出すスクリプト内の場所を追跡するためのメカニズムです。 JavaScriptの実行は、基本的にはシングルスレッドによるヒープと単一のスタック呼び出しから構成されます。 基本原則は以下となります 1. シングルスレッド。つまり、一度に一つのことしかできないということ。 2. コード実行は同期的。 3. 関数呼び出しは一時メモリを占有するスタックフレームを作成。 4. LIFO – 後入れ先出しデータ構造として機能。 処理の流れ スクリプトが関数を呼び出すと、インタプリタはそれを呼び出しスタックに追加してから、その関数の実行を開始します。 ↓ その関数によって呼び出されたすべての関数は、さらに呼び出しスタックに追加され、それらの呼び出しに到達した場所で実行されます。

Continue reading