日刊ドットコムマスター★

ドットコムマスターに合格するためのブログです。

第24回 第1部 第15問

2013-06-06 11:32:28 | 第3章

以下は、受信メールのメッセージのソースである。
これから判断できるものを2つ選びなさい。

24115

a. 添付ファイルのデコードに失敗している。
b. このメールには画像ファイルが添付されている。
c. 添付ファイルのエンコード方式はBase64が使われている。
d. このメールは、MIMEの規格に沿って送信されている。

コムたろう「このメールは宇宙からのメッセージなの?」


ドット先生「ははは、コムたろう君は面白いことを言うね!」
「ちゃんとした電子メールだよ。」
「普段みんなが見ているメールは、メーラー(メールソフト)が、人間の見やすい形で表示してくれているんだ。」


コムたろう「本当は見やすい形じゃないってこと?」


ドット先生「メールは本文だけじゃなくて、メーラーが仕事しやすいように様々な情報が詰まっているんだ。」
「普段見ている件名や本文とかはメールに含まれる情報の一部なんだよ。」
「この設問の図のように色々な情報が見える状態のものをソースって呼ぶんだ。ソースってのは『元』って意味だ。」


コムたろう「そっか~。メーラーが仕事するのには必要だけど、ユーザーは意識しなくてよい情報があって、普段ボク達はそれを見てないって事なんだね。」

ドット先生「そうだよ。」
「そしてもう一つ重要な話があってね。インターネットのメールはもともとテキストデータしか送れない仕様になっているんだ。」


コムたろう「ええ?!画像とかの添付ファイルは送れないの???」


ドット先生「いいや、実際には送れてるから、ちゃんと方法はあるんだよ。」
「それをこれから説明していこう。」




ドット先生「メールはもともとテキストデータしか扱えないうえに、使えるのは半角英数と一部の記号のみだったんだ。」
「でもフランス語の変な記号も使いたいし、日本語や他にも独自の文字を持つ国はいっぱいあるよね。」
「使いたい文字が他にあるからと言って、それぞれの国が独自の仕様メールを送ったりすると、他所の国じゃ読めなかったりするよね。」


コムたろう「あ、知ってる!文字コードってやつでしょ。」
「JISとかなんかいろいろあるやつ。」


ドット先生「そうだね。画面に表示される文字って実は、コンピューターの中では文字コードっていうコードの状態なんだ。」
「OSやメーラーとかの様々なアプリケーションが、このデータの文字コードは何々だって判断して変換したうえで表示してくれているんだ。」


コムたろう「思い出してきたぞ~。文字コードの判断が間違っていると文字化けするんだよね。」


ドット先生「そのとおり。で、まぁそんなんじゃ外国の人とメールのやり取りするのに不便で困るよね。」
「そこで、色々と不便を乗り越えるためのルールが決められたんだ。それがMIME(マイム)っていう規格なんだ。」


コムたろう「ふーん。この規格の登場で、色々な文字を使ってメールのやり取りができるようになったのかー。」

ドット先生「MIMEって規格には色々なルールが含まれていて、画像などの添付ファイルについての取り決めもあるんだ。」





ドット先生「突然だけどFAXはどうやって文字や絵を電話線で送るか知っているかな?」


コムたろう「知ってる、知ってる~。原稿を読み取って、電話線に流せる形のデータに変換してるんだ~。」

ドット先生「お、よく知ってるね~。その変換ってのがミソなんだ。」
「メールの添付ファイルも同じ様に、メールの扱えるデータに変換しちゃうんだ。」
「MIMEによって、色々な文字に対応したけども、実は相変わらずテキストデータしか扱えなくてね・・・。」
「Base64 ってエンコード方式を使って、画像や音声や他のファイルも一旦テキストデータに変換しちゃうんだよ。」


コムたろう「そうか。メールの直接扱えない情報でも一旦テキストデータにしちゃえば送信できるようになるんだね!」

ドット先生「そうなんだよ~。そして Base64 て変換方法は広く使われているので覚えておこうね。」





ドット先生「さて、そろそろ問題を解いていこうか」


コムたろう「せんせ~、選択肢aのデコードってなに~?」


ドット先生「デコードってのはエンコードされたものを元に戻す処理のことだよ。」
「添付ファイルは一旦テキストデータに変換されるからね、実際に開いてみるには変換された状態から元の状態に戻す必要があるんだ。」


コムたろう「ふ~ん・・・添付ファイルが見つからないよ?いつもはクリップのアイコンがあるんだけど・・・」

ドット先生「そうだね~、これはメールのソースを見ているから、人間には分かりにくい形になっているね」
「下の方のごちゃごちゃっとした文字化けみたいなのが添付ファイルだよ。」


コムたろう「ええ~?!文字化けしちゃってるの?」
「これって、ファイルが壊れちゃってるのかな?」


ドット先生「文字化けしてるわけじゃないんだ。これがBase64でエンコードしてテキストデータに変換した添付ファイルなんだ。」

コムたろう「う~ん、ドット先生はどうやって見分けたりしてるの?」


ドット先生「じゃあ、このメールのソースを上から順番に見ていこうか。」
「Message-ID ってのはこのメールに割り当てられたID、つまり識別番号だね。」
「返信されたメールを元のメールと紐付けたりするのにも利用されるんだよ。」


コムたろう「へぇ~。そんな仕組みになってるんだ~。」
「あ、次の From は分かるよ!差出人だよね。」


ドット先生「そうだね。それに対して、ひとつ飛ばして4行目の To は宛先だね。」


コムたろう「うんうん。」


ドット先生「戻って3行目は、送信日時なんだけど、ここはサーバー側で付与したり、クライアント側で付与したりと結構自由になってるね。」

コムたろう「+0900ってのはなんだろう?」


ドット先生「タイムゾーンっていってね、グリニッジ標準時との時差だよ。これは+9時間だね。」
「地球には緯度と経度があるだろ?グリニッジ標準時はグリニッジ天文台のある経度0度の場所を基準にした時間だよ。」
「5行目の Subject は件名なのは分かるね。」
「そして次の MIME-Version:1.0 てのが MIME規格のバージョン1.0に合わせたメールですって目印なのさ。」


コムたろう「じゃあ選択肢の d は正しいってことか~。あと一つはどれだろう?」


ドット先生「次の Content-Type:multipart/mixed; ってのは、このメールの中身は複数のパーツが組み合わさっていますって意味だ。」
「コンテンツって聞いたことあるだろう?あれはコンテントの複数形で中身って意味だ。」

コムたろう「本文と添付ファイルがあるから複数のパーツが組み合わさっているってことなんだね~。」

ドット先生「そういうこと。そして複数のパーツがあるってことは、その区切りが分からないと困るよね。」
「そこで次の行の boundary の出番だ。boundaryってのは境界って意味で、boundary=のあとの””で囲ったやつが境界線って事になるんだ。」


コムたろう「あ~、よく見たらあちこちに ----------------01CD735EC9AEF960 ってのが有るね。これが区切りなんだ~。」

ドット先生「よく気付いたね。じゃあ、ひとつめの境界線の次は何かわかるかな?」


コムたろう「ん~・・・「よろしくお願いいたします。」ってあるから・・・本文かな?」


ドット先生「お、鋭いね~。Content-Type が Textなんちゃら でテキストデータなのを示していて、後ろの charset で文字コードを指定しているんだ。」
「chrsetはキャラクターセットの略だね。キャラクターは文字って意味だ。」
「ここはまぁ、これくらいで、次の境界線のあとのパーツは何かわかるかな?」


コムたろう「添付ファイル?」


ドット先生「そのとおり!」
「文字化けっぽい塊を含んでいることからテキストデータじゃないものをテキストデータに変換したものだと判断できるけど、ほかにも見分け方があるよ」
「境界線のすぐあとに Content-Type:application/pdf ってあるから、pdfファイルってことが判るんだ。」


コムたろう「pdfファイルってAdobeのやつで見れる形式だね。なるほど~。」
「あれ?じゃあ添付されているのは画像じゃなくいてpdfファイルなんだ!b は正しくないね。」


ドット先生「そうだね~。画像ファイルだったら、その画像の形式が Content-Type のところに入るよ。image/bmp とか image/jpeg とか。」

コムたろう「そうやって見分けるのかぁ~。」
「じゃあさ、この添付ファイルはデコードってやつは失敗してるかどうかはどこを見るの?」


ドット先生「うん、それはね。この画面じゃ判断できないんだな。とりあえずpdfのファイルが添付されてきたのは分かるけど、開けるかどうかはこの画面じゃ分からない。」
「ていうかこの状態はエンコードされたものが見えてるからね。まだデコードしてないんだ。失敗するしないって問題じゃないんだね。」


コムたろう「そういうことか~」


ドット先生「そして、添付ファイルのContent-Type の2つ下に Content-Transfer-Encoding:base64 ってあるだろ?」

コムたろう「うんうん、あるね!」


ドット先生「これが、添付ファイルをBase64でエンコードしましたよって意味なんだ。」
「トランスファーは変換って意味ね。」


コムたろう「なるほど~・・・てことは。c は正しくて、a は正しくないんだね。」
「なるほど~、ドット先生、わかったよ!」


ドット先生「落ち着いてよく見れば、ヒントになるキーワードが散りばめられているから本番でも落ち着いてね。」

コムたろう「は~い。」








【 第24回 第1部 第15問 解答&解説 】
[解答]c,d.
[解説]
a.誤り。 文字化けしたように見える部分が添付ファイルの部分である。デコードに失敗しているわけではない。
b.誤り。 添付されているのはpdfファイルである。
c.正しい。 Content-Transfer-Encoding:base64より、PDFファイルのエンコードにBase64が使われていることが読み取れる。
d.正しい。 メールにはPDFファイルを直接添付することができず、一旦テキスト形式にエンコードして添付する。この規格がMIMEである。