RECOMMEND
C# 言語リファレンス Black Book
C# 言語リファレンス Black Book (JUGEMレビュー »)
ビル ワグナー, Bill Wagner, スリーエーシステムズ, アクロバイト
RECOMMEND
RECOMMEND
SELECTED ENTRIES
CATEGORIES
ARCHIVES
MOBILE
qrcode
LINKS
PROFILE
OTHERS

10
--
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
--
>>
<<
--

メール

主に、メール送受信ライブラリを紹介します。各種ソフトウェア、PHPコンテンツ制作、SEO対策もお任せください。
メール
0
    このブログでは、インターネットメール(Eメール)の仕組みを簡単に解説します。
    今回は、メールメッセージの構成要素についての説明です。

    メールの構成要素は、大きく分けてヘッダーボディです。
    ヘッダーは、メールのメタデータで、メーラーで文字となって表示されることは比較的少ない部分ですが、特に日本語のメールの場合この部分が大変重要な意味を持ち、実装にも特別手間がかかります。

    メールヘッダーの各項目は、ヘッダーフィールドと呼ばれます。ヘッダーフィールドは、コロン(:)で区切って、ヘッダーフィールド名とヘッダーフィールドボディに分けられます。
    幾つかのメールヘッダーは、複数の情報を保持します。このようなヘッダーフィールドを構造化ヘッダーフィールド(Structured Header Field)といいます。
    例えば、Content-Typeヘッダーフィールドには、MIMEタイプと、メールに適用されている文字セットを指定することがほとんどです。
    逆に、件名(Subject)などのヘッダーフィールドは構造化されていないヘッダーフィールドです。主に人間が見るための情報は構造化されていないヘッダーフィールドが使用されます。

    ボディ部には、メールの本文が記録されます。日本語では、多くの場合iso-2022-jpという文字セットでエンコードされたバイト列で記録されますが、時にShift-JISなどのように8ビットの文字セットが使われる場合もありますが、この場合はBase64という方法でメール本文が7ビットになるように変換されることがほとんどです。
    こうしたメールのボディに関する情報もすべてメールヘッダーに含まれていなければ、メーラーは正しくメールを解釈できないのです。

    メールヘッダーとメールボディはNULL行(CR/LFのみの行)で区切られます。
    実装時に注意すべき点として、ヘッダーが存在しないメールが時々あったり、逆にヘッダーのみのメールも存在し得るという点です。単純にNULL行を検索するだけでは、効した状況にうまく対処できないため実装時には特に注意する必要があるでしょう。


    7ビット文字セットと8ビット文字セット


    もともと、Eメールは英語だけで書かれていました。英数字と記号は128個のコードで表現することができたたため、7ビット(2の7乗)で十分表現できたのです。この文字セットを特別に(US-ASCII)と呼びます。
    メール環境では、オクテットOctet)という8ビットのデータの集まりを1つの単位として扱いますが、US-ASCIIのような7ビット文字では8ビット目は使用しません。
    ところが、日本語の文字セットは、16ビット(8ビット×2)で表現されることが多く、オクテット(8ビット)に分割したときに8ビット目も使ってしまいます。
    このように当初のメール環境との互換性のために、実際は8ビットのままでも問題のないことがほとんどなのですが、今でもメールメッセージは7ビットで表現するのが一般的になっています。8ビットのデータを7ビットに変換するためには、たいていBase64という手法が用いられます。
    | others | 13:27 | - | - | - | - |
    絶対分かる!オブジェクト指向思考-3
    0
      「インスタンス」

      これまでの記事で、「クラス」と「オブジェクト」について簡単に説明しましたが、では「インスタンス」とはいったいなんでしょうか?
      もう一度、クッキー型から何百ものクッキーが作られているところを想像してみましょう。
      出来上がったクッキーのうちのいくつかは表面にジャムを塗ります。別のいくつかにはチョコレートをまぶします。さらに別のクッキーには何の手も加えません。

      このような作業を経てゆくと、もともと同じクッキー型から作られたクッキーであるにもかかわらず、他のクッキーとは違う性質を持つようになることが分かります。
      この個々のクッキー(オブジェクト)どうしの性質の違いを表現するのが「インスタンス」というキーワードです。

      ですから、「オブジェクト」と「インスタンス」はほとんど同じ意味ですが、インスタンスの方がオブジェクトの具体的な性質(個々のクッキー)を表現していると言えます。一方オブジェクトは、同じクラスを実体化させたインスタンスすべて(クッキー全部)をひっくるめて表現したキーワードと言えるでしょう。

      例えば、「インスタンス化」という言葉はすでに同じクラスのオブジェクト(実体化したもの)はメモリ上に存在しているかも知れませんが、すでにあるものとは違う性質のオブジェクトを新しく実体化したい、と言っていることになります。

      より具体的には、ある文字列を表現する文字列インスタンスはすでにメモリ上に実体化されていますが、これとは別の文字列を表現するインスタンスを新しく生成する、というような例が考えられます。
      この処理は、多くの言語では「Stringクラスのインスタンス化」などと呼ばれます。

      次は、オブジェクト指向の大事な要素の一つ、「カプセル化」について説明します。
      | others | 11:52 | - | - | - | - |
      絶対分かる!オブジェクト指向思考-2
      0
        「クラス」と「オブジェクト」

        オブジェクト指向でよく目にするキーワードの中に、「クラス」「オブジェクト」「インスタンス」というものがあります。これらは、どれも同じような意味で使われることが多いため、単なる表現の違いと思われる方もいるようですが、実際にはそれぞれ少しずつ異なるニュアンスを含んでいて、この微妙なニュアンスの違いを把握しておくことがオブジェクト指向プログラミングを理解する上でも重要なステップとなります。

        それで最初にこれらの言葉の意味を正しく理解しておきましょう。
        まず、「クラス」とは何でしょうか?
        クラスはよく「クッキーの型」に例えられたり、「服の型紙」に例えられたりします。これは大変分かりやすい例だと思います。あえて別のものに置き換える必要もないのでやはりクッキーの型を例に考えて見ましょう。

        クラス」とはクッキーの型のようなものです。1つの型があれば同じ形のクッキーが無限に作れます。丸いクッキー型から丸いクッキーが何百と作られているところを想像してみてください。実は,この何百ものクッキーひとつひとつが、オブジェクト指向で言う「オブジェクト」に相当します。

        つまり、クラスとは「定義」、オブジェクトとはその「実体」です。
        クラスは1つしか存在しませんが、クラスを実体化させたオブジェクトは何百と存在することができます。
        プログラムの実行中はこの実体がコンピュータのメモリ上に存在することになります。
        たいていのオブジェクト指向言語では、newキーワードを使って実体化します。ですから、new〜というコードが出てくるたびに、コンピュータのメモリは確実に消費されていくわけです。
        ちなみにこの実体化の際に呼び出される特別な関数を「コンストラクタ」といいます。この関数はクラスを実体化する際の具体的な処理を行ないます。

        次回は、「インスタンス」を解説します。
        | others | 20:46 | - | - | - | - |
        絶対分かる!オブジェクト指向思考-1
        0
          絶対に分かる。オブジェクト指向思考

          新しくJavaやVB.NetやC#のような比較的最近登場した上級言語を勉強する人の多くがつまづいたり、挫折してしまったりするのが、「オブジェクト指向」という意味不明の壁です。
          また、特にC言語やVisualBasicのような関数ベース(手続き型)の開発言語に慣れ親しんできたプログラマーにもオブジェクト指向的な考え方が分からないと言われる方が多いようです。なぜそんなに回りくどい方法を採用するのかまったく理解できない、と言うわけです。
          確かに、オブジェクト指向の開発は、クラスが増えてプログラムソース管理が大変になるばかりでややこしいと誰もが思うものです。
          しかし、今人気がある言語のほとんどにオブジェクト指向の要素が含まれているため、この壁を避けて通る事はできないのも事実です。さらに、今後のプログラミングのスタイルもよりオブジェクト指向的な方向へと確実にシフトしてゆくでしょう。
          では、そもそもオブジェクト指向とはどのような考え方なのでしょうか?
          特定の言語を考察するのではなく、どのオブジェクト指向言語にも対応できる共通の考え方、思考の方向性を確認してゆきましょう。

          次回は、オブジェクト指向に欠かせないいくつかの基本的な用語について解説します。
          その用語とは、「クラス」、「オブジェクト」そして「インスタンス」です。
          | others | 14:39 | - | - | - | - |