「シリアライズ」と「パース」と「エンコード

Writer: admin Type: 観葉植物 Date: 2019-03-06 00:00
「シリアライズ」と「パース」と「エンコード/デコード」という用語の意味の違いを教えてください。C++でxmlパーサライブラリを探している最中にこれらの用語を見かけましたが、それぞれの意味の違いがわかりません。どれも同じような意味なのでしょうか?共感した0###~違い~「パース」(parse)構文解析などの過程を指します。間違いの想定があるというところが特徴的だと考えます。つまり、間違っているものを「パース」するとエラーになります。「エンコード/デコード」(encode/decode)元の形式から他の形式に変換する過程を指します。間違いは想定されないのが通常と考えて良いと思います。間違ったものを「デコード」するとどうなるか分かりません。上手く行けば(処理系がエラーを想定していれば)エラーが発生しますが。「シリアライズ」(serialize)直列化とも言います。メモリ内に展開されている情報を1本のデータ列に変換する過程のことです。ファイルに保存したり、通信で外部に流したりするときに必要な処理となります。これは「エンコード」に似ています。ナイス0
###[パースとパーサの意味]C++、又は、Java、C#で扱っているデータ(変数、配列、クラス等)をxml文に変換することをパースと言います。また、逆変換であるxml文からの「C++、又は、Java、C#で扱っているデータ(変数、配列、クラス等)」への復元の変換も、パースの意味に含まれます。パースは、上記の「変換」を指しますが、その変換を実際に行う機能(プログラム)のことをパーサと言います。まとめますと、C++データ ---> xml文 変換と、その逆の xml文 ---> C++データ 変換をパースと言う。また、C++データ ---> xml文 変換と、その逆の xml文 ---> C++データ 変換を実際に行う機能(プログラム)のことをパーサと言う。[エンコードとデコード]上記の「パースとパーサの意味」で言えば、C++データ ---> xml文 変換をエンコードと言います。その逆変換(復元用変換)である xml文 ---> C++データ 変換をデコードと言います。別の例としては、文字コードの変換でもエンコードとデコードと言う言葉を使います。開発環境(C++開発環境、Java開発環境、C#開発環境等)がデフォルとして扱っている文字コードとは別の文字コードに変換することをエンコードと言います。その別の文字コードに変換された文字列を、元の文字コードに復元することをデコードと言います。[シリアライズの意味]前述のパースの機能を使えば、「この文章をxml化して、次にこの文章をxml化する」と言うように、細々と指定して変換が行えます。すなわち、xml文を自分の思った通りの構成にすることが可能です。しかし、そう言った細々と変換して行くのは、面倒くさい。「xml文の構成など、変換機能側にお任せしても構わない」と言う場合は、シリアライズと言う機能を使います。変換したいデータをクラスにまとめておけば、クラスをまるごとxml文に変換してくれます。もちろん、xml文をクラスに復元することも可能です。[SOAP形式のシリアライズ]今までは、C++データ(Javaデータ、C#データ)とxml文との変換で説明して来ました。しかし、それだけではなく、C++データ(Javaデータ、C#データ)とバイナリとの変換もあります。また、C++データ(Javaデータ、C#データ)とSOAP文との変換もあります。特に、C++データ(Javaデータ、C#データ)とSOAP文とのシリアライズが、重要視されています。と言いますのは、SaaSと言うタイプのクラウドコンピューティングが普及し始めているからです。SaaSと言うタイプのクラウドコンピューティングは、サーバからサービス(機能)を提供して行くタイプのクラウドコンピューティングです。すなわち、Web をクライアントサーバーの構成にしたものです。SaaSと言うタイプのクラウドコンピューティングでは、サーバとクライアントとの通信データをSOAP形式にしています。ナイス0
###シリアライズは、普通はバイナリデータをテキストベースのデータに変換することです。パースは、逆にテキストベースのデータを解析してバイナリデータに変換することです。エンコードも、シリアライズの様にテキストにすることですが、普通は単体のバイナリコードをテキストとして扱えるコードに変換することです。デコードはエンコードの逆変換です。ナイス0

 

TAG