ぼちぼちクラウド

クラウド系SEのぼちぼち技術ブログ

【読書記録】Webを支える技術 第4部

第4部の構成

HTML

  • 見出しや段落などの構造を定義した文書フォーマット

microformats

  • HTMLに比べ、WebAPIをプログラム用に別途用意する必要がない、メンテナンス性などの面ですぐれている

Atom

Atom Publishing Protocol(AtomPub)

  • Atomはデータフォーマットの規定であるのに対し、AtomPubはAtomを利用したリソース編集(CRUD操作)プロトコル
  • ブログや検索データベースには向いているが、リアルタイム性が重要なAPI、データの階層構造が重要なAPIなどには向いていない

JSON

  • 上記のXML系のリソース表現と異なり、データを表現するフォーマット

※都合上、現時点では「HTML」「JSON」のみまとめさせていただきます

第10章 HTML

HTMLのメディアタイプ

  • 2種類存在する
text-html
  • SGMLベースのHTML
application/xhtml*xml

XMLの仕様

  • 木構造となっており、要素(headなど)を入れ子にして表現する
  • 先頭にXMLであることを宣言する

 

HTMLの構成

  • ヘッダとボディから構成される
ヘッダ
ボディ
  • 文書の内容そのもの
  • ブロックレベル要素:段落や見出しなど大きなかたまり
  • インライン要素:ブロックレベル要素の中に入る、強調や改行・画像埋め込みなど

リンク

要素(アンカー)
  • ブロック要素の中でほかのWebページにリンクするためのタグ
  • HTMLのヘッダでWebページの関係を指定する
要素、要素
  • 画像埋め込み、その他要素(動画など)の埋め込み

第14章 JSON

JSONとは

  • データを表現するフォーマット
  • JavaScript記法。多くのプログラミング言語がライブラリを用意しており、言語間でデータを受け渡すことが容易

メディアタイプ

  • application/json
  • UTF-8,16,32のいずれかでエンコードするルール
  • UTF-8でエンコードしたJSONの場合

 Content-Type: application/json; charset=utf-8

使用可能なデータ型

  1. オブジェクト:名前と値の集合(メンバと呼ぶ)。メンバの名前は常に文字列。値は下記いずれも使える
  2. 配列
  3. 文字列
  4. 数値
  5. ブーリアン
  6. null

{
"name": "Yamada",
"age":34,
"interests":["web","xml","rest"].
"address":{"pref": "tokyo" , "region":"shinjuku"}
}

JSONPによるクロスドメイン通信

  • JSON with Paddingの略
クロスドメイン通信とは
  • 不特定多数のドメインに属するサーバにアクセスすること
  • AjaxではJavaScriptがあるサーバと別のサーバとは通信できない
  • 実際にはサービス構成上、ほかのサーバのWebAPIと通信が必要になるシチュエーションもある(地図データなど)
script要素による解決方法
  • script要素はブラウザのセキュリティ制限を受けない
  • JSONPではJSONを関数名でラップし、ドメインの異なるサーバからデータを取得する

 

広告を非表示にする

Salesforceのフローの使用場所を確認する方法

Salesforceのカスタム項目の画面には「使用場所」のボタンがあり、どの画面や処理で項目を使用しているかを確認することができますが、
項目以外でも「このリソース、どこで使ってたっけ?」と悩むことがあります。

今回、フローを題材にメタデータで使用場所を検索する方法をまとめます。
VS Codeを使用します。

こちらのオンラインセミナーで作成した、ケースを作成するフローを題材にします。
コード初心者でも大丈夫。Einstein GPTでApex開発に挑戦! #Salesforce - Qiita

大まかな手順

  1. VSCodeメタデータを取得する
  2. フローのAPI参照名でメタデータを検索する

VS Codeメタデータを取得する

拡張機能Salesforce Package.xml Generator Extension for VS Code」をインストールしておくと便利です。
また、取得したメタデータに漏れがあると、そもそも検索できないので注意です。

package.xmlに検索対象としたいリソースを記述する

今回の私の場合、フローそのものとアプリケーションページを追加しました。

  • FlexiPage
  • Flow


メタデータを取得する

package.xml上で右クリックし、SFDX: Retrieve Source in Manifest from Orgを実行します。

フローのAPI参照名でメタデータを検索する

ホーム画面に配置していることがわかりました。

Salesforce画面上で確認できるようになれば嬉しいですが、メタデータを使いこなせるとリリース時などにも便利なので、今後もこの方法を活用していきたいと思います。

補足「Flow」と「FlowDefinition」について

フローのメタデータとして「Flow」「FlowDefinition」の2種類がありますが、下記の違いがあります。

  • Flow:フローの定義内容の詳細

  • FlowDefinition:現在有効なバージョン

【読書記録】Webを支える技術 第2部

第2部 URI

※筆者が他の章を先に読み進めたい都合上、現時点では簡単なまとめのみとさせていただきます

URIのポイント

  • リソースの名前である
  • 寿命が長い
  • ブラウザのアドレス欄に表示する

URLとの違い(URIとURLとURN)

  • URLとURNを総称したものが「URI
  • URNは次のような表記。リソースに恒久的なIDを振り、それを用いてアクセスする

  urn:isbn:12345678901234567890

  • URLを用いる場合、サーバ障害、ドメイン変更などで使用できなくなる可能性がある
  • 最近はURLを永続的に使えるようにすべきという考え方が浸透し、ほとんどURLが使用されている

【読書記録】Webを支える技術 第1部②

第3章 REST

アーキテクチャスタイルとしてのREST

RESTにとって重要な「リソース」の概念

  • リソースとはWeb上に存在する、名前を持ったありとあらゆる情報

 例:東京の天気予報、東京駅の写真、このブログ

  • リソースはURIで識別でき、それによりプログラムは情報にアクセスできる
  • URIの登場前は、ディレクトリ名やファイル名、ログイン情報を伝える必要があった
  • 1つのリソースに複数のURIをつけることもできる

RESTを構成する特徴

  • 下記6つの特徴を持つ
  • クライアント/サーバ(ここに下記5つの制約を付加したものがREST)

 :UI(クライアント)と処理(サーバ)を分離することで、マルチプラットフォーム(PCやスマホ、ゲーム機・・)が実現できるなどの利点

  • ステートレスサーバ

 :サーバ側でアプリケーションの状態を持たないことで、サーバの実装を簡略化できる
  ※例外としてHTTPをステートフルにする要素:Cookieを使ったセッション管理

  • キャッシュ

 :一度取得したリソースをクライアント側で使いまわすことで、サーバとの通信を減らし処理を効率化する

  • 統一インタフェース

 :インタフェースを固定。たとえばGETやPOSTなど8個のメソッドしか定義しないことで、実装の独立性が向上する

  • 階層化システム

 :ロードバランサやプロキシをCL/SV間に設置できるが、CL側はそのことを意識せずSVを利用できる(統一インタフェースを採用することで階層化が可能になる)

  • コードオンデマンド

 :プログラムをクライアントにダウンロードして実行する 例)JavaScript