<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:itunes="http://www.itunes.com/DTDs/Podcast-1.0.dtd">
  <channel>
    <title>賢者の漬け物石</title>
    <link>http://k-ishik.seesaa.net/</link>
    <description>Webシステム開発に関するあれこれ</description>
    <language>ja</language>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Webシステム開発に関するあれこれ</itunes:summary>
    <itunes:keywords>Web 開発 プログラム システム</itunes:keywords>
    
    <itunes:author>Ｋ/Ｉ</itunes:author>
    <itunes:owner>    
       <itunes:name></itunes:name>
       <itunes:email></itunes:email>
    </itunes:owner>
        <itunes:explicit>no</itunes:explicit>
        <item>
      <link>http://k-ishik.seesaa.net/article/251795102.html</link>
      <title>Movable Typeでのログイン機能実装</title>
      <pubDate>Sun, 12 Feb 2012 08:55:26 +0900</pubDate>
            <description>MovableTypeでログイン機能を実装する方法を考える。ブログ記事管理を通常の MT 管理画面上でいつもどおりに行えるようにしたい。つまり、MT 管理画面上での：ブログ記事の投稿や変更テンプレートの改変が公開される記事に反映されるようにしたい。いろいろな方法があると思うが、以下のような仕組みを考えた：ログインが必要なコンテンツは、別ブログに分ける。ブログ記事、ウェブページはウェブ上に公開されない場所に保存させる。ブログ記事は PHP スクリプトから読み出して表示させる。　..</description>
            <content:encoded><![CDATA[
MovableTypeでログイン機能を実装する方法を考える。<br />
ブログ記事管理を通常の MT 管理画面上でいつもどおりに行えるようにしたい。<br />
つまり、MT 管理画面上での：
<ul><li>ブログ記事の投稿や変更</li>
<li>テンプレートの改変</li></ul>
が公開される記事に反映されるようにしたい。<br />
<br />
いろいろな方法があると思うが、以下のような仕組みを考えた：
<ul><li>ログインが必要なコンテンツは、別ブログに分ける。</li>
<li>ブログ記事、ウェブページはウェブ上に公開されない場所に保存させる。</li>
<li>ブログ記事は PHP スクリプトから読み出して表示させる。<br />
　(PHP スクリプト上でユーザー認証を行うことで、ログイン機能を実現)</li>
<li>PHP 用のテンプレートはウェブページで作成する。<br />
　(ウェブページのデザインテンプレートでデザインを変更できる)</li></ul>
<br />
以下、具体的な方法を説明する。<br />
<br />
使用した MT バージョンは 5.12-ja。

<h4>ブログの作成</h4>
ログインを必要とするコンテンツ用のブログを作成する。<br />
その際、[ブログパス] は [絶対パス] にチェックを入れ、ウェブ上に公開されないパスを指定する。<br />
<br />
ブログの設定で、<br />
「全般設定」
<ul><li>「アーカイブ設定」-> [ファイルの拡張子] を "tpl" に変更 (これは好みに応じて)</li></ul>
「投稿設定」
<ul><li>「作成の既定値」-> [テキストフォーマット] を "なし" に変更</li></ul>
とする。

<h4>デザインテンプレート整備</h4>
デザインの「ブログテンプレートの管理」画面で、以下のような設定を行う。

<h5>ウェブページテンプレート改変</h5>
アーカイブテンプレートの「ウェブページ」テンプレートを改変する。<br />
<br />
ウェブページは PHP のデザインテンプレートとして使用するため、ところどころ PHP コードに置き換える必要がある。<br />
ページタイトル<br />
<code>&lt;title&gt;&lt;$mt:PageTitle encode_html=&quot;1&quot;$&gt; - &lt;$mt:BlogName encode_html=&quot;1&quot;$&gt;&lt;/title&gt;</code><br />
の部分は記事ごとに変える必要があるので、たとえば<br />
<code>&lt;title&gt;&lt;?php echo htmlspecialchars($page_title); ?&gt; - &lt;$mt:BlogName encode_html=&quot;1&quot;$&gt;&lt;/title&gt;</code><br />
のようにする。<br />
<br />
PHP のデザインテンプレートは「ブログ記事」「カテゴリページ」など複数用意することになるので、「ウェブページ」テンプレートはそれらに共通して使えるようにする。

<h5>ブログ記事テンプレート改変</h5>
アーカイブテンプレートの「ブログ記事」テンプレートを改変する。<br />
<br />
ブログ記事は PHP スクリプトから読み出される記事データベース的役割をする。<br />
そのため、読み出しに適した単純な書式で各記事詳細を書き込むようにする。<br />
たとえば：
<div class="cite_code" style="font-size: 85%;">
<div class="cite_code_line">&lt;$mt:CategoryLabel$&gt;</div>
<div class="cite_code_line">&lt;$mt:EntryTitle$&gt;</div>
<div class="cite_code_line">&lt;$mt:EntryDate$&gt;</div>
<div class="cite_code_line">&lt;$mt:EntryBody$&gt;</div>
</div>
など。<br />
今回は議論しないがコメントとタグもブログ記事に書き出すようにする。<br />
<br />
また、ブログ記事の URL から記事 ID がわかるように、アーカイブマッピングで [パス] のファイル名部分を <code>%-f</code> から <code>&lt;$MTEntryID$&gt;.html</code> に変更する。

<h5>ブログ記事リストテンプレート改変</h5>
カテゴリ別や月別のブログ記事リストのテンプレートを改変する。<br />
<br />
ブログ記事リストも PHP から読み出されるので、読み出しに適した書式にする。<br />
たとえば：
<div class="cite_code" style="font-size: 85%;">
<div class="cite_code_line">&lt;mt:Entries limit=&quot;$limit&quot;&gt;</div>
<div class="cite_code_line">&lt;$MTEntryDate format=&quot;%Y/%m&quot;$&gt;/&lt;$MTEntryID$&gt;:&lt;$MTEntryTitle$&gt;</div>
<div class="cite_code_line">&lt;/mt:Entries&gt;</div>
</div>
などとする。<br />
<br />
また、アーカイブマッピングの [パス] で、
<ul><li><code>%i</code> を <code>index.html</code> に、</li>
<li><code>%-c</code> を <code>%c</code> に、</li>
<li>拡張子を <code>.tpl</code> から <code>.html</code> に、</li></ul>
変更する。

<h5>カテゴリリストテンプレート追加</h5>
アーカイブテンプレートに、カテゴリリストを出力する「ブログ記事リスト」を追加する。<br />
<br />
たとえば、
<div class="cite_code" style="font-size: 85%;">
<div class="cite_code_line">&lt;MTCategories&gt;</div>
<div class="cite_code_line">&lt;$MTCategoryBasename$&gt;:&lt;$MTCategoryLabel$&gt;</div>
<div class="cite_code_line">&lt;/MTCategories&gt;</div>
</div>
など。<br />
<br />
これは、メインインデックスを出力する際に使用する。

<h5>インデックステンプレート変更</h5>
メインインデックスは直接アクセスしないので削除する。<br />
JavaScript、CSS は [パス] に絶対パスを指定する。<br />
ほか、不要な物は削除。

<h4>ウェブページで PHP テンプレート作成</h4>
たとえば、以下のようなテンプレートをウェブページとして作成する。

<h5>ログイン画面用テンプレート</h5>
ファイル名: <code>login.tpl</code><br />
<div class="cite_code" style="font-size: 85%;">
<div class="cite_code_line">&lt;h2&gt;ログイン&lt;/h2&gt;</div>
<div class="cite_code_line">&lt;form name=&quot;form1&quot; action=&quot;/members/index.html&quot; method=&quot;post&quot;&gt;</div>
<div class="cite_code_line">&lt;table&gt;</div>
<div class="cite_code_line">&lt;tr&gt;</div>
<div class="cite_code_line">&lt;td&gt;メールアドレス&lt;/td&gt;</div>
<div class="cite_code_line">&lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;li_mail&quot; value=&quot;&lt;?php echo htmlspecialchars($mail); ?&gt;&quot;/&gt;&lt;/td&gt;</div>
<div class="cite_code_line">&lt;/tr&gt;</div>
<div class="cite_code_line">&lt;tr&gt;</div>
<div class="cite_code_line">&lt;td&gt;パスワード&lt;/td&gt;</div>
<div class="cite_code_line">&lt;td&gt;&lt;input type=&quot;password&quot; name=&quot;li_passwd&quot; value=&quot;&quot;/&gt;&lt;/td&gt;</div>
<div class="cite_code_line">&lt;/tr&gt;</div>
<div class="cite_code_line">&lt;tr&gt;</div>
<div class="cite_code_line">&lt;td colspan=&quot;2&quot;&gt;&lt;input type="submit" value="ログイン" /&gt;&lt;/td&gt;</div>
<div class="cite_code_line">&lt;/tr&gt;</div>
<div class="cite_code_line">&lt;/table&gt;</div>
<div class="cite_code_line">&lt;/form&gt;</div>
</div>

<h5>メインインデックス用テンプレート</h5>
ファイル名: <code>index.tpl</code>
<div class="cite_code" style="font-size: 85%;">
<div class="cite_code_line">&lt;h2&gt;会員用ページ&lt;/h2&gt;</div>
<div class="cite_code_line">&lt;div class="members"&gt;</div>
<div class="cite_code_line">&lt;?php</div>
<div class="cite_code_line">foreach ($categories as $category) {</div>
<div class="cite_code_line">?&gt;</div>
<div class="cite_code_line">&lt;div&gt;&lt;a href="&lt;?php echo htmlspecialchars($category['basename']); ?&gt;/"&gt;&lt;?php echo htmlspecialchars($category['label']); ?&gt;&lt;/a&gt;&lt;/div&gt;</div>
<div class="cite_code_line">&lt;?php</div>
<div class="cite_code_line">}</div>
<div class="cite_code_line">?&gt;</div>
<div class="cite_code_line">&lt;/div&gt;</div>
</div>

<h5>カテゴリ別ブログ記事リスト用テンプレート</h5>
ファイル名: <code>category.tpl</code>
<div class="cite_code" style="font-size: 85%;">
<div class="cite_code_line">&lt;h2&gt;&lt;?php echo htmlspecialchars($category_label); ?&gt;&lt;/h2&gt;</div>
<div class="cite_code_line">&lt;div class="members"&gt;</div>
<div class="cite_code_line">&lt;?php</div>
<div class="cite_code_line">foreach ($entries as $entry) {</div>
<div class="cite_code_line">?></div>
<div class="cite_code_line">&lt;div&gt;&lt;a href="&lt;?php echo htmlspecialchars($entry['path']); ?&gt;.html"&gt;&lt;?php echo htmlspecialchars($entry['title']); ?&gt;&lt;/a&gt;&lt;/div&gt;</div>
<div class="cite_code_line">&lt;?php</div>
<div class="cite_code_line">}</div>
<div class="cite_code_line">?&gt;</div>
<div class="cite_code_line">&lt;/div&gt;</div>
</div>

<h4>PHPスクリプトの作成</h4>
ページを表示するための PHP スクリプトを用意する。<br />
PHP スクリプトは、記事IDまたはカテゴリIDからブログ記事ファイルのパスを決定し、ファイルの内容を読み出し、デザインテンプレートを選んで表示する処理を行う。<br />
<br />
以下の PHP コードはその一例で、<code>view.php</code> というファイル名で対象パス (<code><span style="font-style: italic;">DocumentRoot</span>/members</code> など) に置く。
<div class="cite_code" style="font-size: 85%;">
<div class="cite_code_line">&lt;?php</div>
<div class="cite_code_line">/**</div>
<div class="cite_code_line"> * ページ表示</div>
<div class="cite_code_line"> *</div>
<div class="cite_code_line"> * 入力パラメータ</div>
<div class="cite_code_line"> *   c -- 'index' / カテゴリのベースネーム</div>
<div class="cite_code_line"> *   y -- 記事年</div>
<div class="cite_code_line"> *   m -- 記事月</div>
<div class="cite_code_line"> *   e -- 記事番号</div>
<div class="cite_code_line"> *   組み合わせは以下のいずれか</div>
<div class="cite_code_line"> *   view.php?c=index</div>
<div class="cite_code_line"> *   view.php?c=cat</div>
<div class="cite_code_line"> *   view.php?y=2012&amp;m=01&amp;e=00123</div>
<div class="cite_code_line"> */</div>
<div class="cite_code_line"></div>
<div class="cite_code_line">// ブログの [ブログパス] で設定したパスを指定</div>
<div class="cite_code_line">define('MEMBERS_BASEDIR', '/var/www/members');</div>
<div class="cite_code_line"></div>
<div class="cite_code_line">if (!auth()) {</div>
<div class="cite_code_line">    require MEMBERS_BASEDIR . '/login.tpl';</div>
<div class="cite_code_line">    exit;</div>
<div class="cite_code_line">}</div>
<div class="cite_code_line"></div>
<div class="cite_code_line">// 表示ページの決定</div>
<div class="cite_code_line">if (isset($_REQUEST['c']) &amp;&amp; $_REQUEST['c'] != '') {</div>
<div class="cite_code_line">    $category_basename = $_REQUEST['c'];</div>
<div class="cite_code_line">}</div>
<div class="cite_code_line">    if (isset($_REQUEST['e']) &amp;&amp; $_REQUEST['e'] != ''</div>
<div class="cite_code_line">        &amp;&amp; isset($_REQUEST['m']) &amp;&amp; $_REQUEST['m'] != ''</div>
<div class="cite_code_line">        &amp;&amp; isset($_REQUEST['y']) &amp;&amp; $_REQUEST['y'] != '') {</div>
<div class="cite_code_line">        $entry_year = $_REQUEST['y'];</div>
<div class="cite_code_line">        $entry_month = $_REQUEST['m'];</div>
<div class="cite_code_line">        $entry_id = $_REQUEST['e'];</div>
<div class="cite_code_line">        if (!preg_match('/^\d{4}$/', $entry_year)) {</div>
<div class="cite_code_line">            echo &quot;ERR(1)&quot;;</div>
<div class="cite_code_line">            exit;</div>
<div class="cite_code_line">        }</div>
<div class="cite_code_line">        if (!preg_match('/^\d{2}$/', $entry_month)) {</div>
<div class="cite_code_line">            echo &quot;ERR(1)&quot;;</div>
<div class="cite_code_line">            exit;</div>
<div class="cite_code_line">        }</div>
<div class="cite_code_line">    } else {</div>
<div class="cite_code_line">        $entry_year = '';</div>
<div class="cite_code_line">        $entry_month = '';</div>
<div class="cite_code_line">        $entry_id = '';</div>
<div class="cite_code_line">    }</div>
<div class="cite_code_line">} else {</div>
<div class="cite_code_line">    echo &quot;ERR(2)&quot;;</div>
<div class="cite_code_line">    exit;</div>
<div class="cite_code_line">}</div>
<div class="cite_code_line"></div>
<div class="cite_code_line">// 記事の内容</div>
<div class="cite_code_line">if ($entry_id != '') {</div>
<div class="cite_code_line">    // 個別の記事</div>
<div class="cite_code_line">    $entry_fname</div>
<div class="cite_code_line">        = MEMBERS_BASEDIR . &quot;/$entry_year/$entry_month/$entry_id.html&quot;;</div>
<div class="cite_code_line">    if (!file_exists($entry_fname)) {</div>
<div class="cite_code_line">        echo &quot;ERR(3)&quot;;</div>
<div class="cite_code_line">        exit;</div>
<div class="cite_code_line">    }</div>
<div class="cite_code_line"></div>
<div class="cite_code_line">    if (($fh = fopen($entry_fname, 'r')) === FALSE) {</div>
<div class="cite_code_line">        echo &quot;ERR(4)&quot;;</div>
<div class="cite_code_line">        exit;</div>
<div class="cite_code_line">    }</div>
<div class="cite_code_line">    flock($fh, LOCK_SH);</div>
<div class="cite_code_line">    $category_label = trim(fgets($fh));</div>
<div class="cite_code_line">    $entry_title = trim(fgets($fh));</div>
<div class="cite_code_line">    $entry_date = trim(fgets($fh));</div>
<div class="cite_code_line">    $entry_contents = '';</div>
<div class="cite_code_line">    while ($row = fgets($fh)) {</div>
<div class="cite_code_line">        $entry_contents .= $row;</div>
<div class="cite_code_line">    }</div>
<div class="cite_code_line">    fclose($fh);</div>
<div class="cite_code_line"></div>
<div class="cite_code_line">    $page_title = $entry_title;</div>
<div class="cite_code_line">} else if ($category_basename == 'index') {</div>
<div class="cite_code_line">    // インデックス</div>
<div class="cite_code_line">    $categireis = array();</div>
<div class="cite_code_line">    if (($fh = fopen(MEMBERS_BASEDIR . '/categories', 'r')) === FALSE) {</div>
<div class="cite_code_line">        echo &quot;ERR(5)&quot;;</div>
<div class="cite_code_line">        exit;</div>
<div class="cite_code_line">    }</div>
<div class="cite_code_line">    flock($fh, LOCK_SH);</div>
<div class="cite_code_line">    while ($row = fgets($fh)) {</div>
<div class="cite_code_line">        $row = trim($row);</div>
<div class="cite_code_line">        if ($row != '') {</div>
<div class="cite_code_line">            list($cbn, $cl) = explode(':', $row, 2);</div>
<div class="cite_code_line">            $categories[] = array('basename' =&gt; $cbn,</div>
<div class="cite_code_line">                                  'label' =&gt; $cl);</div>
<div class="cite_code_line">        }</div>
<div class="cite_code_line">    }</div>
<div class="cite_code_line">    fclose($fh);</div>
<div class="cite_code_line"></div>
<div class="cite_code_line">    $page_title = '会員用ページ';</div>
<div class="cite_code_line">} else {</div>
<div class="cite_code_line">    // カテゴリ</div>
<div class="cite_code_line"></div>
<div class="cite_code_line">    $categirey_label = '';</div>
<div class="cite_code_line">    if (($fh = fopen(MEMBERS_BASEDIR . '/categories', 'r')) === FALSE) {</div>
<div class="cite_code_line">        echo &quot;ERR(5)&quot;;</div>
<div class="cite_code_line">        exit;</div>
<div class="cite_code_line">    }</div>
<div class="cite_code_line">    flock($fh, LOCK_SH);</div>
<div class="cite_code_line">    while ($row = fgets($fh)) {</div>
<div class="cite_code_line">        if (preg_match(&quot;/^$category_basename:(.+)$/&quot;, $row, $matches)) {</div>
<div class="cite_code_line">            $category_label = $matches[1];</div>
<div class="cite_code_line">            break;</div>
<div class="cite_code_line">        }</div>
<div class="cite_code_line">    }</div>
<div class="cite_code_line">    fclose($fh);</div>
<div class="cite_code_line">    if ($category_label == '') {</div>
<div class="cite_code_line">        echo &quot;ERR(6)&quot;;</div>
<div class="cite_code_line">        exit;</div>
<div class="cite_code_line">    }</div>
<div class="cite_code_line"></div>
<div class="cite_code_line">    $entries = array();</div>
<div class="cite_code_line">    if (($fh = fopen(MEMBERS_BASEDIR . &quot;/$category_basename/entries&quot;, 'r'))</div>
<div class="cite_code_line">        === FALSE) {</div>
<div class="cite_code_line">        echo &quot;ERR(7)&quot;;</div>
<div class="cite_code_line">        exit;</div>
<div class="cite_code_line">    }</div>
<div class="cite_code_line">    flock($fh, LOCK_SH);</div>
<div class="cite_code_line">    while ($row = fgets($fh)) {</div>
<div class="cite_code_line">        $row = trim($row);</div>
<div class="cite_code_line">        if ($row != '') {</div>
<div class="cite_code_line">            list($p, $t) = explode(':', $row, 2);</div>
<div class="cite_code_line">            $entries[] = array('path' =&gt; $p,</div>
<div class="cite_code_line">                               'title' =&gt; $t);</div>
<div class="cite_code_line">        }</div>
<div class="cite_code_line">    }</div>
<div class="cite_code_line">    fclose($fh);</div>
<div class="cite_code_line"></div>
<div class="cite_code_line">    $page_title = $category_label;</div>
<div class="cite_code_line">}</div>
<div class="cite_code_line"></div>
<div class="cite_code_line">if ($entry_id != '') {</div>
<div class="cite_code_line">    require MEMBERS_BASEDIR . '/entry.tpl';</div>
<div class="cite_code_line">} else if ($category_basename == 'index') {</div>
<div class="cite_code_line">    require MEMBERS_BASEDIR . '/index.tpl';</div>
<div class="cite_code_line">} else {</div>
<div class="cite_code_line">    require MEMBERS_BASEDIR . '/category.tpl';</div>
<div class="cite_code_line">}</div>
<div class="cite_code_line"></div>
<div class="cite_code_line">function auth()</div>
<div class="cite_code_line">{</div>
<div class="cite_code_line">    // ここで認証処理行う</div>
<div class="cite_code_line">    return TRUE;</div>
<div class="cite_code_line">}</div>
<div class="cite_code_line"></div>
<div class="cite_code_line">?&gt;</div>
</div>

<h4>Rewrite設定</h4>
Apache の Rewrite エンジンを利用して、ブログ記事や記事リストへのアクセスを <code>view.php</code> にパラメータをつけて転送する。<br />
<br />
設定例:
<div class="cite_code" style="font-size: 85%;">
<div class="cite_code_line">RewriteEngine On</div>
<div class="cite_code_line">RewriteRule ^index\.html view.php?c=index [L]</div>
<div class="cite_code_line">RewriteRule ^([^/]+)/([^/]+)/([^/]+)\.html view.php?y=$1&m=$2&e=$3 [L]</div>
<div class="cite_code_line">RewriteRule ^([^/]+)/index\.html view.php?c=$1 [L]</div>
</div>
<br />
以上で設定は完了。
<a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>技術メモ</category>
      <author>Ｋ/Ｉ</author>
                </item>
        <item>
      <link>http://k-ishik.seesaa.net/article/238305030.html</link>
      <title>ApacheのログをMySQLにはき出す</title>
      <pubDate>Sat, 03 Dec 2011 20:31:00 +0900</pubDate>
            <description>Apacheのログファイルからアクセス解析するツールを作っていたのだが、アクセス数が多いサイトなのでログファイルのファイルサイズが大きく、読み出してデータベースに書き出すだけで一苦労。何かよい工夫は無いものか。。。と思っていたら、こんなものがあった。mod_log_sqlhttp://www.outoforder.cc/projects/apache/mod_log_sql/Apache ログを直接 MySQL に書き出してくれるらしいので、導入してみた。環境は以下のとおり：..</description>
            <content:encoded><![CDATA[
Apacheのログファイルからアクセス解析するツールを作っていたのだが、アクセス数が多いサイトなのでログファイルのファイルサイズが大きく、読み出してデータベースに書き出すだけで一苦労。<br />何かよい工夫は無いものか。。。<br />と思っていたら、こんなものがあった。<br /><br />mod_log_sql<br /><a href="http://www.outoforder.cc/projects/apache/mod_log_sql/" target="_blank">http://www.outoforder.cc/projects/apache/mod_log_sql/</a><br /><br />Apache ログを直接 MySQL に書き出してくれるらしいので、導入してみた。<br />環境は以下のとおり：<br /><br />OS: CentOS 5.6<br />Apache: 2.2.3<br />MySQL: Ver 14.12 Distrib 5.0.77<br />mod_log_sql: 1.101<br /><br /><h4>1. インストール</h4><br />ファイルをダウンロード&amp;解凍して <code>configure</code>。<br />で、いきなりつまずいた。<br /><br /><code>$ <span style="font-weight: bold;">./configure --with-apxs=/usr/sbin/apxs</span><br />configure: creating config.nice<br />checking for gcc... gcc<br />checking for C compiler default output... a.out<br />checking whether the C compiler works... yes<br />checking whether we are cross compiling... no<br />checking for suffix of executables... <br />checking for suffix of object files... o<br />checking whether we are using the GNU C compiler... yes<br />checking whether gcc accepts -g... yes<br />checking for gcc option to accept ANSI C... none needed<br />checking build system type... x86_64-unknown-linux-gnu<br />checking host system type... x86_64-unknown-linux-gnu<br />checking target system type... x86_64-unknown-linux-gnu<br />checking for Apache 2.0 version >= 2.0.40... yes<br />checking for floor in -lm... yes<br />checking for gzclose in -lz... yes<br /><span style="color: #ff0000;">checking for mysql_init in -lmysqlclient... no<br />configure: error: libmysqlclient is needed for MySQL support</span></code><br /><br />libmysqlclient が見つからないなら、パスを指定して：<br /><code>$ <span style="font-weight: bold;">./configure --with-apxs=/usr/sbin/apxs --with-mysql=/usr/lib64/mysql</span></code><br />とすればいい、と思ったが状況改善しない。<br /><br />調べてみたらこんな記事が：<br />configure: error: libmysqlclient is needed for MySQL support<br /><a href="http://www.webhostingtalk.com/showthread.php?t=519406" target="_blank">http://www.webhostingtalk.com/showthread.php?t=519406</a><br /><br />言われるままに：<br /><code>$ <span style="font-weight: bold;">ln -s /usr/lib64/mysql /usr/lib/mysql</span><br />$ <span style="font-weight: bold;">./configure --with-apxs=/usr/sbin/apxs</span></code><br />としたらうまくいった。<br /><br />あとはお決まりの：<br /><code>$ <span style="font-weight: bold;">make</span><br /># <span style="font-weight: bold;">make install</span></code><br />でインストール完了。<br /><br /><h4>2. MySQLデータベースの準備</h4><br />ログの格納先データベースを準備する。<br /><br /><code style="white-space: pre;">$ <span style="font-weight: bold;">mysql -u root -p</span><br />Enter password:<br />Welcome to the MySQL monitor.  Commands end with ; or \g.<br />Your MySQL connection id is 6781031<br />Server version: 5.0.77-log Source distribution<br /><br />Type 'help;' or '\h' for help. Type '\c' to clear the buffer.<br /><br />mysql> <span style="font-weight: bold;">create database apachelogs;</span><br />Query OK, 1 row affected (0.09 sec)<br /><br />mysql> <span style="font-weight: bold;">\u apachelogs</span><br />Database changed<br />mysql> <span style="font-weight: bold;">\. mod_log_sql-1.101/contrib/create_tables.sql</span><br />Query OK, 0 rows affected (0.12 sec)<br /><br />Query OK, 0 rows affected (0.05 sec)<br /><br />Query OK, 0 rows affected (0.00 sec)<br /><br />Query OK, 0 rows affected (0.10 sec)<br /><br />Query OK, 0 rows affected (0.01 sec)<br /><br />mysql> <span style="font-weight: bold;">SHOW TABLES;</span><br />+----------------------+<br />| Tables_in_apachelogs |<br />+----------------------+<br />| access_log           | <br />| cookies              | <br />| headers_in           | <br />| headers_out          | <br />| notes                | <br />+----------------------+<br />5 rows in set (0.00 sec)<br /><br />mysql> <span style="font-weight: bold;">CREATE USER apachelogs_user IDENTIFIED BY 'XXXXXXXXXX';</span><br />Query OK, 0 rows affected (0.60 sec)<br /><br />mysql> <span style="font-weight: bold;">GRANT INSERT ON apachelogs.* TO 'apachelogs_user'@'localhost'</span><br />Query OK, 0 rows affected (0.45 sec)</code><br /><br /><h4>3. Apache の設定</h4><br />データベースの準備ができたら、次は Apache の設定。<br /><br /><code style="white-space: pre;">LoadModule log_sql_module modules/mod_log_sql.so<br />LoadModule log_sql_mysql_module modules/mod_log_sql_mysql.so<br />LogSQLLoginInfo mysql://apachelogs_user:XXXXXXXXXX@localhost/apachelogs<br /><br />&lt;VirtualHost aaa.bbb.ccc.ddd:80&gt;<br />    ServerName www.xxx.yyy<br />    LogSQLTransferLogTable access_log<br />    CustomLog logs/access_log combined<br />    ErrorLog logs/error_log<br />&lt;/VirtualHost&gt;</code><br /><br />バーチャルホストごとに書出し先テーブルを指定できるようになっている。<br /><br />Apache を再起動。<br /><br /><code style="white-space: pre;"># service httpd graceful</code><br /><br />設定が反映される。<br />ログは、ログファイルとデータベースの両方にはき出される。<a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>技術メモ</category>
      <author>Ｋ/Ｉ</author>
                </item>
        <item>
      <link>http://k-ishik.seesaa.net/article/194750095.html</link>
      <title>Redmineのインストール</title>
      <pubDate>Thu, 07 Apr 2011 21:20:02 +0900</pubDate>
            <description>これまで trac を使っていたが、Redmine を使ってみることにした。以下、インストールメモ。インストールした環境は、Fedora 14。インストールした Redmine のバージョンは 1.1.2。Redmine.JP に掲載されているインストール手順を参考に作業した。http://redmine.jp/guide/RedmineInstall/(1) 必要なツール類のインストールRuby, Rails, Rack のバージョンは、記載されているバージョンと完全に一致..</description>
            <content:encoded><![CDATA[
これまで trac を使っていたが、Redmine を使ってみることにした。<br />以下、インストールメモ。<br /><br />インストールした環境は、Fedora 14。<br />インストールした Redmine のバージョンは 1.1.2。<br /><br />Redmine.JP に掲載されているインストール手順を参考に作業した。<br /><a href="http://redmine.jp/guide/RedmineInstall/" target="_blank">http://redmine.jp/guide/RedmineInstall/</a><br /><br />(1) 必要なツール類のインストール<br />Ruby, Rails, Rack のバージョンは、記載されているバージョンと完全に一致していないといけないようだ。<br /><br />Fedora 14 のパッケージは、Rails と Rack のバージョンが一致しなかった。<br />今回、Redmine の公式リリース版をダウンロードしたが、Rails は Redmine のファイル一式に含まれていたが、Rack は含まれていなかったので必要なバージョンを <code>gem</code> でインストールした。<br /><code>gem install rack -v=1.0.1</code><br /><br />(2) Redmine 用アカウント作成<br /><br />Redmine 用アカウント redmine を作成。<br /><br /><code># useradd redmine</code><br /><br />(3) データベースの準備<br /><br />データベースは、今回は PostgreSQL を使用した (使い慣れているので)。<br /><br />Redmine 用のロールとデータベースを作成する。<br /><br /><code>CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD '<span style="font-style: italic;">パスワード</span>' NOINHERIT VALID UNTIL 'infinity';<br />CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;</code><br /><br />そして、redmine をインストールするサーバーからのアクセスを許可させる。<br />同一ホストであっても、ローカルからのアクセスが ident メソッドのみになっている場合は、自IPアドレスから password メソッドでの host アクセスを許可させておく (<code>/var/lib/pgsql/data/pg_hba.conf</code> および <code>/var/lib/pgsql/data/postgresql.conf</code> を設定)。<br /><br />(4) ダウンロード<br /><br />以下のサイトから、Redmine のファイルをダウンロード。<br /><a href="http://www.redmine.jp/download/" target="_blank">http://www.redmine.jp/download/</a><br /><br />レポジトリからチェックアウトもできるが、上述のとおり Rails の必要バージョンが含まれているという理由から、tar ファイルをダウンロードした。<br /><br />tar ファイルを適当なところ (たとえば <code>/usr/local</code> の下とか) に解凍し、オーナーを <code>redmine</code> にする (←オーナー変更は必要なかったかも)。<br /><br /><code># chown -R redmine: redmine-1.1.2</code><br /><br />(5) セッションストア秘密鍵の生成<br /><br /><code>redmine</code> アカウントでログインし、解凍したディレクトリ (たとえば、<code>/usr/local/redmine-1.1.2</code>。以下、Redmine ディレクトリと呼ぶ) に移動し、以下のコマンドを実行する。<br /><br /><code># rake config/initializers/session_store.rb</code><br /><br />(6) テーブル作成<br /><br />解凍ファイルの中にある <code>config/database.yml.example</code> を <code>config/database.yml</code> にコピーし、<code>production:</code> のところの内容を変更する。<br /><code>production:<br />&nbsp;&nbsp;adapter: postgresql<br />&nbsp;&nbsp;database: redmine<br />&nbsp;&nbsp;host: <span style="font-style: italic">IPアドレスかホスト名</span><br />&nbsp;&nbsp;username: redmine<br />&nbsp;&nbsp;password: "<span style="font-style: italic;">redmine ロールのパスワード</span>"</code><br /><br />そして、Redmine ディレクトリで、以下のコマンドを実行：<br /><br /><code>rake db:migrate RAILS_ENV="production"</code><br /><code>rake redmine:load_default_data RAILS_ENV="production"</code><br /><br />redmine データベース内にテーブル等が作られる。<br /><br />(7) 動作確認<br /><br />以下のコマンドを実行してWebサーバーを起動：<br /><br /><code># ruby script/server webrick -e production</code><br /><br /><a href="http://localhost:3000/" target="_blank">http://localhost:3000/</a> にアクセスして Welcome 画面が表示されるか確認する。<br /><br />(8) Passenger (mod_rails) を導入<br /><br />Redmin.JP サイトに webrick は「開発用」なので「動作確認以外には使用するな」という脅し文句が書かれているので、Passenger をインストールしてみる。<br />まずは、必要なパッケージをインストール。<br /><code># yum install rubygem-fastthread<br /># yum install rubygem-daemons</code><br />場合によってはほかのパッケージが必要かもしれない。<br />Passenger 自体は rpm が用意されていなかったので、gem でインストール。<br /><code># gem install passenger</code><br />Passenger Apache 2モジュールのインストーラーを実行。<br /><code># passenger-install-apache2-module</code><br />ところが、なぜか<br /><code>/usr/lib/ruby/gems/1.8/gems/passenger-3.0.6/lib/phusion_passenger/platform_info/apache.rb:277:in `_unmemoized_apr_config_needed_for_building_apache_modules?': undefined local variable or method `test_exe_outdir' for PhusionPassenger::PlatformInfo:Module (NameError)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from /usr/lib/ruby/gems/1.8/gems/passenger-3.0.6/lib/phusion_passenger/platform_info.rb:92:in `apr_config_needed_for_building_apache_modules?'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from /usr/lib/ruby/gems/1.8/gems/passenger-3.0.6/bin/passenger-install-apache2-module:69:in `dependencies'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from /usr/lib/ruby/gems/1.8/gems/passenger-3.0.6/lib/phusion_passenger/abstract_installer.rb:166:in `check_dependencies'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from /usr/lib/ruby/gems/1.8/gems/passenger-3.0.6/bin/passenger-install-apache2-module:90:in `install!'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from /usr/lib/ruby/gems/1.8/gems/passenger-3.0.6/lib/phusion_passenger/abstract_installer.rb:63:in `start'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from /usr/lib/ruby/gems/1.8/gems/passenger-3.0.6/bin/passenger-install-apache2-module:236<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from /usr/bin/passenger-install-apache2-module:19:in `load'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from /usr/bin/passenger-install-apache2-module:19</code><br />とかいうエラーが出てうまくいかない。<br />これはどうやら、typoらしい。<br /><code>/usr/lib/ruby/gems/1.8/gems/passenger-3.0.6/lib/phusion_passenger/platform_info/apache.rb</code> を開き、"<code>test_exe_outdir</code>" を "<code>tmpexedir</code>" に変更してリトライ。<br />不足しているソフトウェアを提示してくれる (しかも、実行すべき yum コマンドまで教えてくれる！) ので、インストール後再実行。<br />起動できた。<br /><br />(9) Apache 設定<br /><br />Apache に Passenger の設定を追加。<br />たとえば、<code>/etc/httpd/conf.d/passenger.conf</code> を作成して、<code>passenger-install-apache2-module</code> 実行時に表示された設定を記載する。<br />今回の環境では以下のとおり：<br /><code>LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-3.0.6/ext/apache2/mod_passenger.so<br />PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.6<br />PassengerRuby /usr/bin/ruby</code><br /><br />次に、Redmine の設定を行う。<br />ポート 20080 にアクセスするとRedmineが表示されるようにVirtualHost設定することにした。<br />たとえば <code>/etc/httpd/conf.d/redmine.conf</code> に記載する。<br />今回の環境では以下のようにする：<br /><code>Listen 20080<br />NameVirtualHost *:20080<br />&lt;VirtualHost *:20080&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;ServerAdmin webmaster@aaa.bbb.ccc<br />&nbsp;&nbsp;&nbsp;&nbsp;DocumentRoot /usr/local/redmine-1.1.2/public<br />&nbsp;&nbsp;&nbsp;&nbsp;CustomLog /var/www/vhosts/logs/redmine_ssl_access-log combined<br />&nbsp;&nbsp;&nbsp;&nbsp;LogLevel warn<br />&nbsp;&nbsp;&nbsp;&nbsp;ErrorLog /var/www/vhosts/logs/redmine_ssl_error-log<br />&lt;/VirtualHost&gt;<br /><br />そして、Redmine ディレクトリのオーナーを <code>apache:apache</code> に変更する。<br />今回の環境では:<br /><code># chown -R apache: /usr/local/redmine-1.1.2</code><br /><br />Apacheを再起動すると、<code><a href="http://localhost:20080/" target="_blank">http://localhost:20080/</a></code> でアクセスできる。<br /><br />(10) メール送信設定<br /><br />プロジェクトで発生したイベントをメールで送信するようにするには、Redmine ディレクトリの <code>config/email.yml.example</code> を <code>config/email.yml</code> にコピーし、設定変更する。<br />たとえば localhost を SMTP サーバーにするには、<code>production:</code> のところを<br /><code>production:<br />&nbsp;&nbsp;delivery_method: :smtp<br />&nbsp;&nbsp;smtp_settings:<br />&nbsp;&nbsp;&nbsp;&nbsp;address: localhost<br />&nbsp;&nbsp;&nbsp;&nbsp;port: 25<br />&nbsp;&nbsp;&nbsp;&nbsp;domain: <span style="font-style: italic;">メールドメイン名</span></code><br />のように設定する。<br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>技術メモ</category>
      <author>Ｋ/Ｉ</author>
                </item>
        <item>
      <link>http://k-ishik.seesaa.net/article/190533927.html</link>
      <title>節電ポスター ブログパーツ</title>
      <pubDate>Mon, 14 Mar 2011 09:38:40 +0900</pubDate>
            <description>今回の東北地方の震災での節電をよびかけるポスターが、「節電ポスター」( http://setsuden.tumblr.com/ ) というサイトで提供されています。これは、節電を呼びかけるポスターを印刷してあちこちに貼りましょう、というものです。これをブログパーツ化したものを作成しましたのでお知らせします。「節電ポスター」ブログパーツhttp://tan9.net/psvc/setsuden.jsブログに貼る場合は、以下のようにします。&amp;lt;script type=&amp;quo..</description>
            <content:encoded><![CDATA[
今回の東北地方の震災での節電をよびかけるポスターが、「節電ポスター」( <a href="http://setsuden.tumblr.com/">http://setsuden.tumblr.com/</a> ) というサイトで提供されています。<br />これは、節電を呼びかけるポスターを印刷してあちこちに貼りましょう、というものです。<br /><br />これをブログパーツ化したものを作成しましたのでお知らせします。<br /><br />「節電ポスター」ブログパーツ<br /><a href="http://tan9.net/psvc/setsuden.js">http://tan9.net/psvc/setsuden.js</a><br /><br />ブログに貼る場合は、以下のようにします。<br /><code>&lt;script type=&quot;text/javascript&quot; src=&quot;http://tan9.net/psvc/setsuden.js?wd=253&amp;ht=358&amp;bgcol=&amp;brdrcol=&amp;updt=1&amp;intvl=8&amp;rndm=0&quot;&gt;&lt;/script&gt;</code><br /><table border="0"><tr><td><code>wd</code></td><td>…</td><td>画像横幅の最大値 (0なら無制限)</td></tr><tr><td><code>ht</code></td><td>…</td><td>画像高さの最大値 (0なら無制限)</td></tr><tr><td><code>bgcol</code></td><td>…</td><td>表示エリアの背景色 (ccccccなど、#は付けない)</td></tr><tr><td><code>brdrcol</code></td><td>…</td><td>表示エリアの枠の色 (ccccccなど、#は付けない)</td></tr><tr><td><code>updt</code></td><td>…</td><td>画像自動更新フラグ (0: 自動更新しない、1: 自動更新する)</td></tr><tr><td><code>intvl</code></td><td>…</td><td>画像の更新周期 (単位: 秒)</td></tr><tr><td><code>rndm</code></td><td>…</td><td>ランダム再生フラグ (0: シーケンス再生、1: ランダム再生)</td></tr></table><br /><code>wd</code> と <code>ht</code> の両方に 0 以上の値を指定した場合、表示エリアは横幅<code>wd</code>ピクセル、高さ <code>ht</code>ピクセルの大きさに固定され、画像はエリア内最大の大きさ (縦横比は保持) に縮小/拡大されます。<br /><br />なお、画像URLなどはハードコーディングしているので、サイトの画像投稿は自動反映されません。<br /><br />【2011年3月20日更新】<br />・ht, wd, bgcol, brdrcol パラメータを追加<a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>日記</category>
      <author>Ｋ/Ｉ</author>
                </item>
        <item>
      <link>http://k-ishik.seesaa.net/article/187891799.html</link>
      <title>もくもく日記: IS03で実機デバッグ環境整備</title>
      <pubDate>Sat, 26 Feb 2011 17:01:16 +0900</pubDate>
            <description>第六回日本Androidの会埼玉支部ワークショップ開催日: 2011-02-26今回の自分のもくもくテーマ: IS03で実機デバッグ環境整備(1) IS03 のドライバーをインストールドライバーをダウンロードしてインストール。『IS03 用USB ドライバ - SHARP』http://k-tai.sharp.co.jp/support/a/is03/download/usb/(2) IS03 を接続USB接続モードを「高速転送モード」にすると、ドライバーのインストールがはじ..</description>
            <content:encoded><![CDATA[
第六回日本Androidの会埼玉支部ワークショップ<br /><br />開催日: 2011-02-26<br /><br />今回の自分のもくもくテーマ: IS03で実機デバッグ環境整備<br /><br />(1) IS03 のドライバーをインストール<br /><br />ドライバーをダウンロードしてインストール。<br />『IS03 用USB ドライバ - SHARP』<br /><a href="http://k-tai.sharp.co.jp/support/a/is03/download/usb/" target="_blank">http://k-tai.sharp.co.jp/support/a/is03/download/usb/</a><br /><br />(2) IS03 を接続<br /><br />USB接続モードを「高速転送モード」にすると、ドライバーのインストールがはじまる。<br />ところが、Android ADB Interface のドライバーインストールに失敗。<br /><br />そこで。。。<br /><br />(3) SDK ManagerでGoogle Usb Driver packageをインストール<br /><br />これでもドライバーインストール失敗。<br />(これは必要だったのか？)<br /><br />調べたら、IS03 専用のドライバーが必要だった。<br /><br />(4) IS03 用のADB USBドライバをダウンロード<br /><br /><a href="https://sh-dev.sharp.co.jp/android/modules/driver/index.php?/is03_adb/download" target="_blank">https://sh-dev.sharp.co.jp/android/modules/driver/index.php?/is03_adb/download</a><br /><br />ドライバー更新して、ダウンロードしたドライバを指定したらうまくいった。<br /><br />(5) SDK Manager でいろいろ更新したら、Eclipse の ADT のバージョンと合わなくなったので、そちらも更新。<br /><br />EclipseからRunしたら、めでたくIS03上に表示された。<br /><br />今回はここまで。<a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>日記</category>
      <author>Ｋ/Ｉ</author>
                </item>
        <item>
      <link>http://k-ishik.seesaa.net/article/167858806.html</link>
      <title>電子証明書によるクライアント認証 (Apache)</title>
      <pubDate>Mon, 01 Nov 2010 01:16:40 +0900</pubDate>
            <description>銀行の企業向けインターネットバンキングなどで、よく「デジタル証明書」を使ってユーザー認証しているものがあるが、あれはどうやっているのだろうか?ちょっと調べてみた。Web サーバーが信頼する CA から発行した証明書を保有するクライアント (Webブラウザ) のみを信頼する、というのが「クライアント認証」の考え方のようだ。ここでは、CA は自前で用意してあるものとする。以下、以前まとめた下の関連記事の設定を前提に話を進める。【関連記事】PKI の認証局(CA)を構築する【Web..</description>
            <content:encoded><![CDATA[
銀行の企業向けインターネットバンキングなどで、よく「デジタル証明書」を使ってユーザー認証しているものがあるが、あれはどうやっているのだろうか?<br />ちょっと調べてみた。<br /><br />Web サーバーが信頼する CA から発行した証明書を保有するクライアント (Webブラウザ) のみを信頼する、というのが「クライアント認証」の考え方のようだ。<br /><br />ここでは、CA は自前で用意してあるものとする。<br />以下、以前まとめた下の関連記事の設定を前提に話を進める。<br /><blockquote>【関連記事】<br /><a href="http://k-ishik.seesaa.net/article/48436415.html">PKI の認証局(CA)を構築する</a></blockquote><br />【Webサーバー側】<br /><h4>(1) 信頼する CA の設定</h4>まず、信頼する CA の一覧を設定する。<br />CA から、CA 証明書 (<code>cacert.pem</code>) を受け取り、Apache に以下のように設定する。<br /><code style="white-space: pre">    SSLVerifyClient require<br />    SSLCACertificateFile <span style="text-style: italic;">cacert.pem のパス</span></code><br />複数の CA 証明書がある場合には、ディレクトリで指定できる。<br /><code style="white-space: pre">    SSLVerifyClient require<br />    SSLCACertificatePath <span style="font-style: italic;">CA 証明書の設置ディレクトリ</span></code><br />設定したら Apache を再起動する。<br /><br /><h4>(2) 秘密鍵＋証明書署名要求ファイルの作成</h4><span style="font-size: 95%">※この処理は、Web サーバーで行うのか、CA で行うのか、あるいはクライアント側で行うのかは、サービスの運営方針によるのではないか? と思う。</span><br />クライアントの秘密鍵と証明書署名要求 (CSR) の両方を含む PEM 形式のファイルを作成する。<br />Country Name などに入力する値は、CA のものに合わせる。<br /><code style="white-space: pre"># openssl req -new -keyout user01.pem -out user01.pem<br />Generating a 2048 bit RSA private key<br />.........+++<br />...+++<br />writing new private key to 'user01.pem'<br />Enter PEM pass phrase:<br />Verifying - Enter PEM pass phrase:<br />-----<br />You are about to be asked to enter information that will be incorporated<br />into your certificate request.<br />What you are about to enter is what is called a Distinguished Name or a DN.<br />There are quite a few fields but you can leave some blank<br />For some fields there will be a default value,<br />If you enter '.', the field will be left blank.<br />-----<br />Country Name (2 letter code) [XX]:JP<br />State or Province Name (full name) []:Tokyo<br />Locality Name (eg, city) [Default City]:Shinjuku-ku<br />Organization Name (eg, company) [Default Company Ltd]:K-ISHIK<br />Organizational Unit Name (eg, section) []:<br />Common Name (eg, your name or your server's hostname) []:k.ishikawa<br />Email Address []:k-ishik@camel.zoo.park<br /><br />Please enter the following 'extra' attributes<br />to be sent with your certificate request<br />A challenge password []:<br />An optional company name []:</code><br /><br />なお、CA 証明書 の内容は以下のようなコマンドで表示できる。<br /><code style="white-space: pre"># openssl x509 -in <span style="font-style: italic;">CA証明書ファイル</span> -text</code><br /><br />【CA側】<br />以下の (3)、(4) の手順で、PKCS #12 形式のクライアント証明書を発行する<br /><h4>(3) 署名付き秘密鍵ファイルの作成</h4>作成した秘密鍵＋証明書署名要求を CA にコピーし、証明書ファイルを作成する。<br /><code style="white-space: pre"># openssl ca -in user01.pem -keyfile /etc/pki/CA/private/cakey.pem ¥<br />-cert /etc/pki/CA/cacert.pem -out user01.crt<br />Using configuration from /etc/pki/tls/openssl.cnf<br />Enter pass phrase for /etc/pki/CA/private/cakey.pem:<br />Check that the request matches the signature<br />Signature ok<br />Certificate Details:<br />        Serial Number: 14 (0xe)<br />        Validity<br />            Not Before: Oct 31 15:05:37 2010 GMT<br />            Not After : Oct 31 15:05:37 2011 GMT<br />        Subject:<br />            countryName               = JP<br />            stateOrProvinceName       = Tokyo<br />            organizationName          = K-ISHIK<br />            organizationalUnitName    = <br />            commonName                = k.ishikawa<br />            emailAddress              = k-ishik@camel.zoo.park<br />        X509v3 extensions:<br />            X509v3 Basic Constraints: <br />                CA:FALSE<br />            Netscape Comment: <br />                OpenSSL Generated Certificate<br />            X509v3 Subject Key Identifier: <br />                A7:EC:D2:85:9F:59:4A:A0:B4:96:81:F6:68:5B:D8:49:69:81:7E:FA<br />            X509v3 Authority Key Identifier: <br />                keyid:2B:45:1F:EE:3B:DF:57:65:41:24:C9:04:53:AD:F1:B5:BA:80:D6:DA<br /><br />Certificate is to be certified until Oct 31 15:05:37 2011 GMT (365 days)<br />Sign the certificate? [y/n]:y<br /><br /><br />1 out of 1 certificate requests certified, commit? [y/n]y<br />Write out database with 1 new entries<br />Data Base Updated</code><br />これにより、PEM 形式の証明書ファイル <code>user01.crt</code> が作成される。<br /><br /><h4>(4) PKCS #12 形式の証明書ファイルの作成</h4>秘密鍵＋証明書署名要求ファイルと PEM 形式の証明書ファイルから PKCS #12 形式の個人証明書を作成する。<br /><code style="white-space: pre"># openssl pkcs12 -export -clcerts -in user01.crt -inkey user01.pem ¥<br />-out user01.p12<br />Enter pass phrase for user01.pem:<br />Enter Export Password:<br />Verifying - Enter Export Password:</code><br /><br />【クライアント側】<br /><h4>(5) 証明書のインポート</h4>CA (または、Web サーバー経由で) PKCS #12 形式の個人証明書 <code>user01.p12</code> をクライアント PC にコピーし、ブラウザにインポートする。<br />(以下、Internet Explorer 7 の場合)<br /><ol><li>[ツール] メニューの [インターネットオプション] の [コンテンツ] タブで、[証明書] ボタンをクリックする。<br /><a href="http://k-ishik.up.seesaa.net/image/ClientCert_01.jpg" target="_blank"><img src="http://k-ishik.up.seesaa.net/image/ClientCert_01-thumbnail2.jpg" width="145" height="150" border="0" align="" alt="電子証明書のインストール#1" onclick="location.href = 'http://k-ishik.seesaa.net/upload/detail/image/ClientCert_01-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a></li><li>"証明書" 画面の [個人] タブで、[インポート] ボタンをクリックする。<br /><a href="http://k-ishik.up.seesaa.net/image/ClientCert_02.jpg" target="_blank"><img src="http://k-ishik.up.seesaa.net/image/ClientCert_02-thumbnail2.jpg" width="150" height="110" border="0" align="" alt="電子証明書のインストール#2" onclick="location.href = 'http://k-ishik.seesaa.net/upload/detail/image/ClientCert_02-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a></li><li>"証明書のインポート ウィザード" が起動する。[次へ] をクリックする。<br /><a href="http://k-ishik.up.seesaa.net/image/ClientCert_03.jpg" target="_blank"><img src="http://k-ishik.up.seesaa.net/image/ClientCert_03-thumbnail2.jpg" width="150" height="93" border="0" align="" alt="電子証明書のインストール#3" onclick="location.href = 'http://k-ishik.seesaa.net/upload/detail/image/ClientCert_03-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a></li><li>[ファイル名] 欄に個人証明書のパスを設定し、[次へ] ボタンをクリックする。<br /><a href="http://k-ishik.up.seesaa.net/image/ClientCert_04.jpg" target="_blank"><img src="http://k-ishik.up.seesaa.net/image/ClientCert_04-thumbnail2.jpg" width="150" height="93" border="0" align="" alt="電子証明書のインストール#4" onclick="location.href = 'http://k-ishik.seesaa.net/upload/detail/image/ClientCert_04-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a></li><li>[パスワード] 欄に、手順 (4) で入力した Export Password を入力する。<br />[秘密キーの保護を強力にする] にチェックを入れると、ブラウザ起動後最初に対象サイトにアクセスするたびにパスワードの入力を求められる。<br />[このキーをエクスポート可能にする] にチェックを入れると、"証明書" 画面でキーのエクスポートができるようになる。<br /><a href="http://k-ishik.up.seesaa.net/image/ClientCert_05.jpg" target="_blank"><img src="http://k-ishik.up.seesaa.net/image/ClientCert_05-thumbnail2.jpg" width="150" height="93" border="0" align="" alt="電子証明書のインストール#5" onclick="location.href = 'http://k-ishik.seesaa.net/upload/detail/image/ClientCert_05-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a></li><li>あとは、指示に従って処理する。<br /><a href="http://k-ishik.up.seesaa.net/image/ClientCert_06.jpg" target="_blank"><img src="http://k-ishik.up.seesaa.net/image/ClientCert_06-thumbnail2.jpg" width="150" height="93" border="0" align="" alt="電子証明書のインストール#6" onclick="location.href = 'http://k-ishik.seesaa.net/upload/detail/image/ClientCert_06-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br /><a href="http://k-ishik.up.seesaa.net/image/ClientCert_07.jpg" target="_blank"><img src="http://k-ishik.up.seesaa.net/image/ClientCert_07-thumbnail2.jpg" width="150" height="93" border="0" align="" alt="電子証明書のインストール#7" onclick="location.href = 'http://k-ishik.seesaa.net/upload/detail/image/ClientCert_07-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a></li></ol><br />以上で、設定は完了。<br />クライアント認証するように設定した URL にアクセスすると、"デジタル証明書の選択" ダイアログが表示される。<br /><a href="http://k-ishik.up.seesaa.net/image/ClientCert_08.jpg" target="_blank"><img src="http://k-ishik.up.seesaa.net/image/ClientCert_08-thumbnail2.jpg" width="150" height="105" border="0" align="" alt="電子証明書のインストール#8" onclick="location.href = 'http://k-ishik.seesaa.net/upload/detail/image/ClientCert_08-thumbnail2.jpg.html'; return false;" style="cursor:pointer;" /></a><br />インストールした証明書を選択して [OK] をクリックすればアクセスできる。<a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>技術メモ</category>
      <author>Ｋ/Ｉ</author>
                  <enclosure url="http://k-ishik.up.seesaa.net/image/ClientCert_01.jpg" length="57882" type="image/jpeg" />
                              <enclosure url="http://k-ishik.up.seesaa.net/image/ClientCert_02.jpg" length="40275" type="image/jpeg" />
                              <enclosure url="http://k-ishik.up.seesaa.net/image/ClientCert_03.jpg" length="43310" type="image/jpeg" />
                              <enclosure url="http://k-ishik.up.seesaa.net/image/ClientCert_04.jpg" length="36336" type="image/jpeg" />
                              <enclosure url="http://k-ishik.up.seesaa.net/image/ClientCert_05.jpg" length="36515" type="image/jpeg" />
                              <enclosure url="http://k-ishik.up.seesaa.net/image/ClientCert_06.jpg" length="36217" type="image/jpeg" />
                              <enclosure url="http://k-ishik.up.seesaa.net/image/ClientCert_07.jpg" length="37641" type="image/jpeg" />
                              <enclosure url="http://k-ishik.up.seesaa.net/image/ClientCert_08.jpg" length="27701" type="image/jpeg" />
                            </item>
        <item>
      <link>http://k-ishik.seesaa.net/article/166600000.html</link>
      <title>PostgreSQL 8.3 から 8.4 への移行</title>
      <pubDate>Thu, 21 Oct 2010 12:12:51 +0900</pubDate>
            <description>Fedora を 10 から 12 にアップグレードしたら、PostgreSQL が起動しなくなった。PostgreSQL のバージョンが 8.3 から 8.4 にバージョンアップしたため、データベースファイルが対応しなくなったからだ。すでに 8.4 にアップグレードされているから PostgreSQL も起動しないので、pg_dump もできない。しかたなく、8.3 環境を用意して /var/lib/pgsql/data ディレクトリをごっそりそちらにコピーし、pg_dum..</description>
            <content:encoded><![CDATA[
Fedora を 10 から 12 にアップグレードしたら、PostgreSQL が起動しなくなった。<br />PostgreSQL のバージョンが 8.3 から 8.4 にバージョンアップしたため、データベースファイルが対応しなくなったからだ。<br />すでに 8.4 にアップグレードされているから PostgreSQL も起動しないので、<code>pg_dump</code> もできない。<br />しかたなく、8.3 環境を用意して <code>/var/lib/pgsql/data</code> ディレクトリをごっそりそちらにコピーし、<code>pg_dumpall</code> した。<br />この移行作業のめんどくささはなんとかならないものか？<br />ほかの人はどうやって対応しているのだろうか。<br /><br />ちなみに、たまたまインストールしてあった Ubunto では、コピーした <code>data</code> ディレクトリでうまく動作しなかった。<br />Fedora 11 でもダメで、Fedora 10 にしたらうまくいった。<br />Ubundo は設定がいろいろ違っていて合わせるのが面倒だったので断念。<br />Fedora 11 がダメだった理由は不明。<br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>日記</category>
      <author>Ｋ/Ｉ</author>
                </item>
        <item>
      <link>http://k-ishik.seesaa.net/article/158008768.html</link>
      <title>HTML5 のフォーム関連タグ</title>
      <pubDate>Sun, 01 Aug 2010 08:05:00 +0900</pubDate>
            <description>【関連記事】HTML4/XHTML1 から HTML5 への変更点HTML5 のセクション関連タグHTML5 のコンテンツグループ化関連タグHTML5 のテキストの意味付け関連タグHTML5 の埋め込みコンテンツ関連タグ●参考4.10 Forms - HTML5追加されたフォーム関連要素            要素      カテゴリ      タグ内に含むもの      説明              datalist      flow content        ph..</description>
            <content:encoded><![CDATA[
<style type="text/css">
<!--
table.elemlist {
  border: 1px #000000 solid;
  border-collapse: collapse;
  vertical-align: middle;
}
td.elemlist {
  border: 1px #000000 solid;
  padding: 0.2ex 0.5ex 0.2ex 0.5ex;
}
td.elemlist_cat {
  white-space: nowrap;
}
td.elemlist_desc {
  vertical-align: top;
}
th.elemlist {
  border: 1px #000000 solid;
  padding: 0.2ex 0.5ex 0.2ex 0.5ex;
  background-color: #ccccff;
}
table.attrlist {
  border: 1px #000000 solid;
  border-collapse: collapse;
  vertical-align: middle;
}
td.attrlist {
  border: 1px #000000 solid;
  padding: 0.2ex 0.5ex 0.2ex 0.5ex;
}
td.attrlist_desc {
  vertical-align: top;
}
th.attrlist {
  border: 1px #000000 solid;
  padding: 0.2ex 0.5ex 0.2ex 0.5ex;
  background-color: #ccffcc;
}
-->
</style>
<blockquote>
【関連記事】<br />
<a href="http://k-ishik.seesaa.net/article/156673822.html">HTML4/XHTML1 から HTML5 への変更点</a><br />
<a href="http://k-ishik.seesaa.net/article/156794848.html">HTML5 のセクション関連タグ</a><br />
<a href="http://k-ishik.seesaa.net/article/157459568.html">HTML5 のコンテンツグループ化関連タグ</a><br />
<a href="http://k-ishik.seesaa.net/article/157410309.html">HTML5 のテキストの意味付け関連タグ</a><br />
<a href="http://k-ishik.seesaa.net/article/157189077.html">HTML5 の埋め込みコンテンツ関連タグ</a>
</blockquote>
●参考<br />
<a href="http://www.w3.org/TR/html5/forms.html">4.10 Forms - HTML5</a><br />
<h4>追加されたフォーム関連要素</h4>
<table class="elemlist">
  <tbody>
    <tr>
      <th class="elemlist">要素</th>
      <th class="elemlist">カテゴリ</th>
      <th class="elemlist">タグ内に含むもの</th>
      <th class="elemlist">説明</th>
    </tr>
    <tr>
      <td class="elemlist"><code>datalist</code></td>
      <td class="elemlist elemlist_cat">flow content<br />
        phrasing content</td>
      <td class="elemlist">phrasing content<br />
        または<br />
        0 個以上の <code>option</code> 要素</td>
      <td class="elemlist elemlist_desc"><code>input</code> 要素で使われる選択肢を定義する。</td>
    </tr>
    <tr>
      <td class="elemlist"><code>output</code></td>
      <td class="elemlist elemlist_cat">flow content<br />
        phrasing content<br />
        listed, labelable, and resettable<br />
        form-associated element</td>
      <td class="elemlist">phrasing content</td>
      <td class="elemlist elemlist_desc">計算結果を表す。<br />
        計算自体は、JavaScript などを使って処理する。</td>
    </tr>
  </tbody>
</table>
<h4>変更された属性 (グローバル属性を除く)</h4>
<table class="attrlist">
  <tbody>
    <tr>
      <th class="attrlist">要素名</th>
      <th class="attrlist">属性名</th>
      <th class="attrlist">説明</th>
    </tr>
    <tr>
      <td class="attrlist"><code>form</code></td>
      <td class="attrlist"><code>novalidate</code></td>
      <td class="attrlist attrlist_desc">ブール属性。<br />
        指定すると、サブミットの際にフォームの正当性チェックが行われない。</td>
    </tr>
    <tr>
      <td class="attrlst" rowspan="2"><code>fieldset</code></td>
      <td class="attrlist"><code>form</code></td>
      <td class="attrlist attrlist_desc">関連づけされる <code>form</code> 要素の ID を指定する。<br />
        デフォルトでは、すぐ上のレベルの <code>form</code> 要素に関連づけされる。</td>
    </tr>
    <tr>
      <td class="attrlist"><code>disabled</code></td>
      <td class="attrlist attrlist_desc">指定すると、子ノードのフォーム・コントロールが無効状態になる (最初の <code>legend</code> 要素を除く)。</td>
    </tr>
    <tr>
      <td class="attrlist" rowspan="12"><code>input</code></td>
      <td class="attrlist"><code>type</code></td>
      <td class="attrlist attrlist_desc">以下の値が追加された。
        <dl>
          <dt><code>search</code></dt>
          <dd><code>text</code> とほぼ同様。<br />
            プラットフォームによっては、検索フィールドが通常の入力欄と形状が異なる場合があるので、それに対応するためのもの。</dd>
          <dt><code>tel</code></dt>
          <dd>電話番号の入力欄。</dd>
          <dt><code>url</code></dt>
          <dd>絶対 URL の入力欄。</dd>
          <dt><code>email</code></dt>
          <dd>メールアドレスの入力欄。</dd>
          <dt><code>datetime</code></dt>
          <dd>日時の入力欄 (UTC)。</dd>
          <dt><code>date</code></dt>
          <dd>日付の入力欄。</dd>
          <dt><code>month</code></dt>
          <dd>月の入力欄。</dd>
          <dt><code>week</code></dt>
          <dd>曜日の入力欄。</dd>
          <dt><code>time</code></dt>
          <dd>時刻の入力欄。</dd>
          <dt><code>datetime-local</code></dt>
          <dd>日時の入力欄 (現地時刻)。</dd>
          <dt><code>number</code></dt>
          <dd>数値の入力欄。</dd>
          <dt><code>range</code></dt>
          <dd>目盛りなど、一定の範囲から数値を取得するフォーム・コントロールを表示させる。</dd>
          <dt><code>color</code></dt>
          <dd>カラーパレットなど、色を表す文字列を取得するフォーム・コントロールを表示させる。</dd>
        </dl></td>
    </tr>
    <tr>
      <td class="attrlist"><code>form</code></td>
      <td class="attrlist attrlist_desc">(既述)</td>
    </tr>
    <tr>
      <td class="attrlist"><code>autofocus</code></td>
      <td class="attrlist attrlist_desc">ブール属性。<br />
        指定すると、ページの表示時にそのフォーム・コントロールにフォーカスが移る。</td>
    </tr>
    <tr>
      <td class="attrlist"><code>autocomplete</code></td>
      <td class="attrlist attrlist_desc">以下のいずれかを指定する。
        <dl>
          <dt><code>on</code></dt>
          <dd>キーワード・マッピングをオンにする。</dd>
          <dt><code>off</code></dt>
          <dd>キーワード・マッピングをオフにする。</dd>
          <dt>値無し</dt>
          <dd>デフォルト状態にする (関連づけられている <code>form</code> 要素の <code>autocomplete</code> の値。<code>form</code> 要素の <code>autocomplete</code> のデフォルト値は <code>on</code>)。</dd>
        </dl>
        この属性を指定しない場合はデフォルト状態となる。</td>
    </tr>
    <tr>
      <td class="attrlist"><code>list</code></td>
      <td class="attrlist attrlist_desc">あらかじめ定義しておいた選択肢一覧 <code>datalist</code> 要素の ID を指定する。</td>
    </tr>
    <tr>
      <td class="attrlist"><code>required</code></td>
      <td class="attrlist attrlist_desc">ブール属性。<br />
        指定するとその要素は必須となり、サブミット時にチェックされる。</td>
    </tr>
    <tr>
      <td class="attrlist"><code>multiple</code></td>
      <td class="attrlist attrlist_desc">ブール属性。<br />
        ユーザーが複数の値を指定できることを表す。</td>
    </tr>
    <tr>
      <td class="attrlist"><code>pattern</code></td>
      <td class="attrlist attrlist_desc">フォーム・コントロールの <code>value</code> をチェックするための正規表現。</td>
    </tr>
    <tr>
      <td class="attrlist"><code>min</code></td>
      <td class="attrlist attrlist_desc">最小値。<br />
        値が数値の場合、その値が最小値となる。<br />
        値が数値でない場合、<code>type</code> 属性の現在の状態からデフォルトの最小値が決定されれば、その値が最小値となる。<br />
        いずれでもない場合、最小値は無しとなる。<br />
        サブミットの際、ユーザーが入力した値が数値の場合、最小値より小さいかどうかチェックされる。</td>
    </tr>
    <tr>
      <td class="attrlist"><code>max</code></td>
      <td class="attrlist attrlist_desc">最大値。<br />
        内容は <code>min</code> 属性と同様。</td>
    </tr>
    <tr>
      <td class="attrlist"><code>step</code></td>
      <td class="attrlist attrlist_desc">取りうる数値の階差。<br />
        ベース値は、もし最小値が設定されていればその値。最小値が無い場合、デフォルトのベース値が設定されていればその値。それが無ければ 0。</td>
    </tr>
    <tr>
      <td class="attrlist"><code>placeholder</code></td>
      <td class="attrlist attrlist_desc">ユーザーがデータ入力する際の補助となる短めのヒント。<br />
        入力する値のサンプルや、短い説明を記述しておく。<br />
        改行コードは使用できない。<br />
        <code>label</code> 属性とは異なる。</td>
    </tr>
    <tr>
      <td class="attrlist" rowspan="3"><code>output</code><br />
        <span style="font-size: 90%">※新規</span></td>
      <td class="attrlist"><code>for</code></td>
      <td class="attrlist attrlist_desc">計算に使われたり、計算に影響を与えたりする要素を、明示的に示す。</td>
    </tr>
    <tr>
      <td class="attrlist"><code>form</code></td>
      <td class="attrlist attrlist_desc">(既述)</td>
    </tr>
    <tr>
      <td class="attrlist"><code>name</code></td>
      <td class="attrlist attrlist_desc">要素名。</td>
    </tr>
  </tbody>
</table>
<h4>例</h4>
W3C サイトに書かれていた例を引用。<br />
(1) <code>input</code> 要素の <code>pattern</code> 属性の例<br />
<div class="cite_code" style="font-size: 90%;">
<div class="cite_code_line"><code>&lt;label&gt; Part number:</code></div>
<div class="cite_code_line"><code>  &lt;input pattern=&quot;[0-9][A-Z]{3}&quot; name=&quot;part&quot;</code></div>
<div class="cite_code_line"><code>         title=&quot;A part number is a digit followed by three uppercase letters.&quot;/&gt;</code></div>
<div class="cite_code_line"><code>&lt;/label&gt;</code></div>
</div>
(2) <code>datalist</code> 要素の例<br />
<div class="cite_code" style="font-size: 90%;">
<div class="cite_code_line"><code>&lt;input type=&quot;url&quot; name=&quot;location&quot; list=&quot;urls&quot;&gt;</code></div>
<div class="cite_code_line"><code>&lt;datalist id=&quot;urls&quot;&gt;</code></div>
<div class="cite_code_line"><code> &lt;option label=&quot;MIME: Format of Internet Message Bodies&quot; value=&quot;http://www.ietf.org/rfc/rfc2045&quot;&gt;</code></div>
<div class="cite_code_line"><code> &lt;option label=&quot;HTML 4.01 Specification&quot; value=&quot;http://www.w3.org/TR/html4/&quot;&gt;</code></div>
<div class="cite_code_line"><code> &lt;option label=&quot;Form Controls&quot; value=&quot;http://www.w3.org/TR/xforms/slice8.html#ui-commonelems-hint&quot;&gt;</code></div>
<div class="cite_code_line"><code> &lt;option label=&quot;Scalable Vector Graphics (SVG) 1.1 Specification&quot; value=&quot;http://www.w3.org/TR/SVG/&quot;&gt;</code></div>
<div class="cite_code_line"><code> &lt;option label=&quot;Feature Sets - SVG 1.1 - 20030114&quot; value=&quot;http://www.w3.org/TR/SVG/feature.html&quot;&gt;</code></div>
<div class="cite_code_line"><code> &lt;option label=&quot;The Single UNIX Specification, Version 3&quot; value=&quot;http://www.unix-systems.org/version3/&quot;&gt;</code></div>
<div class="cite_code_line"><code>&lt;/datalist&gt;</code></div>
</div>
(3) <code>output</code>要素の例<br />
<div class="cite_code" style="font-size: 90%;">
<div class="cite_code_line"><code>&lt;form onsubmit=&quot;return false&quot;&gt;</code></div>
<div class="cite_code_line"><code>  &lt;input name=a type=number step=any&gt; +</code></div>
<div class="cite_code_line"><code>  &lt;input name=b type=number step=any&gt; =</code></div>
<div class="cite_code_line"><code>  &lt;output onforminput=&quot;value = a.valueAsNumber + b.valueAsNumber&quot;&gt;&lt;/output&gt;</code></div>
<div class="cite_code_line"><code>&lt;/form&gt;</code></div>
</div>
<a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>技術メモ</category>
      <author>Ｋ/Ｉ</author>
                </item>
        <item>
      <link>http://k-ishik.seesaa.net/article/157410309.html</link>
      <title>HTML5 のテキストの意味付け関連タグ</title>
      <pubDate>Thu, 29 Jul 2010 11:14:59 +0900</pubDate>
            <description>【関連記事】HTML4/XHTML1 から HTML5 への変更点HTML5 のセクション関連タグHTML5 のコンテンツグループ化関連タグHTML5 の埋め込みコンテンツ関連タグHTML5 のフォーム関連タグ●参考4.6 Text-level semantics - HTML5テキストの意味付け関連要素一覧            要素      カテゴリ      タグ内に含むもの      説明              time      flow content   ..</description>
            <content:encoded><![CDATA[
<style type="text/css">
<!--
table.elemlist {
  border: 1px #000000 solid;
  border-collapse: collapse;
  vertical-align: middle;
}
td.elemlist {
  border: 1px #000000 solid;
  padding: 0.2ex 0.5ex 0.2ex 0.5ex;
}
td.elemlist_cat {
  white-space: nowrap;
}
td.elemlist_desc {
  vertical-align: top;
}
th.elemlist {
  border: 1px #000000 solid;
  padding: 0.2ex 0.5ex 0.2ex 0.5ex;
  background-color: #ccccff;
}
table.attrlist {
  border: 1px #000000 solid;
  border-collapse: collapse;
  vertical-align: middle;
}
td.attrlist {
  border: 1px #000000 solid;
  padding: 0.2ex 0.5ex 0.2ex 0.5ex;
}
td.attrlist_desc {
  vertical-align: top;
}
th.attrlist {
  border: 1px #000000 solid;
  padding: 0.2ex 0.5ex 0.2ex 0.5ex;
  background-color: #ccffcc;
}
-->
</style>
<blockquote>
【関連記事】<br />
<a href="http://k-ishik.seesaa.net/article/156673822.html">HTML4/XHTML1 から HTML5 への変更点</a><br />
<a href="http://k-ishik.seesaa.net/article/156794848.html">HTML5 のセクション関連タグ</a><br />
<a href="http://k-ishik.seesaa.net/article/157459568.html">HTML5 のコンテンツグループ化関連タグ</a><br />
<a href="http://k-ishik.seesaa.net/article/157189077.html">HTML5 の埋め込みコンテンツ関連タグ</a><br />
<a href="http://k-ishik.seesaa.net/article/158008768.html">HTML5 のフォーム関連タグ</a></blockquote>
●参考<br />
<a href="http://www.w3.org/TR/html5/text-level-semantics.html">4.6 Text-level semantics - HTML5</a><br />
<h4>テキストの意味付け関連要素一覧</h4>
<table class="elemlist">
  <tbody>
    <tr>
      <th class="elemlist">要素</th>
      <th class="elemlist">カテゴリ</th>
      <th class="elemlist">タグ内に含むもの</th>
      <th class="elemlist">説明</th>
    </tr>
    <tr>
      <td class="elemlist"><code>time</code></td>
      <td class="elemlist elemlist_cat">flow content<br>
        phrasing content</td>
      <td class="elemlist">phrasing content (<code>time</code> 要素を除く)</td>
      <td class="elemlist elemlist_desc">時刻または日付 (時刻とタイムゾーンをつけてもよい) を表す。<br />
        </td>
    </tr>
    <tr>
      <td class="elemlist"><code>mark</code></td>
      <td class="elemlist elemlist_cat">flow content<br>
        phrasing content</td>
      <td class="elemlist">phrasing content</td>
      <td class="elemlist elemlist_desc">テキストの一部を強調表示するのに使う。<br />
        <code>em</code> や <code>strong</code> と異なり、本来の文章の意図とは別の意味付けから強調したい場合に用いる (あとから蛍光ペンでマーカーをつける感覚)。<br />
        たとえば以下の状況で使われる。
        <ul>
          <li>引用した文の一部を強調表示 (もともとは強調表示されていない) → 例の <a href="#html5_textlevelsemantics_ex2">(2)</a> 参照</li
          <li>ユーザーの操作に関連が深い部分を強調表示 (検索結果での検索語の強調表示、エラー出力のエラー箇所の表示など)</li>
        </ul></td>
    </tr>
    <tr>
      <td class="elemlist"><code>ruby</code></td>
      <td class="elemlist elemlist_cat">flow content<br>
        phrasing content</td>
      <td class="elemlist">phrasing content の後に <code>rt</code> 要素 1 つ<br />
        または<br />
        <code>rp</code> 要素 1 つと <code>rt</code> 要素 1 つと別の <code>rp</code> 要素 1 つを組み合わせたグループ 1 つ以上</td>
      <td class="elemlist elemlist_desc" rowspan="3">ルビを振る。</td>
    </tr>
    <tr>
      <td class="elemlist"><code>rt</code></td>
      <td class="elemlist elemlist_cat">なし</td>
      <td class="elemlist">phrasing content</td>
    </tr>
    <tr>
      <td class="elemlist"><code>rp</code></td>
      <td class="elemlist elemlist_cat">なし</td>
      <td class="elemlist">phrasing content</td>
    </tr>
    <tr>
      <td class="elemlist"><code>wbr</code></td>
      <td class="elemlist elemlist_cat">flow content<br />
phrasing content</td>
      <td class="elemlist">なし</td>
      <td class="elemlist elemlist_desc">改行可能位置を示す。</td>
    </tr>
  </tbody>
</table>
<h4><code>time</code> 要素の属性 (グローバル属性を除く)</h4>
<table class="attrlist">
  <tbody>
    <tr>
      <th class="attrlist">属性名</th>
      <th class="attrlist">説明</th>
    </tr>
    <tr>
      <td class="attrlist"><code>datetime</code></td>
      <td class="attrlist attrlist_desc">日付または時刻を表す。<br />
        この属性が指定されない場合、日付または時刻は要素の内容で指定される。
        <ul>
          <li>日付が必須で <code>datetime</code> 属性が存在する場合、その値は有効な日付を表す文字列でなければならない (時刻はオプション)。</li>
          <li>日付が必須で <code>datetiime</code> 属性が存在しない場合、要素の内容は有効な日付を表す文字列でなければならない (時刻はオプション)。</li>
          <li>日付が必須でなく、<code>datetime</code> 属性が存在する場合、その値は有効な日付または時刻を表す文字列でなければならない。</li>
          <li>日付が必須でなく、<code>datetime</code> 属性が存在しない場合、要素の内容は有効な日付または時刻を表す文字列でなければならない。</li>
        </ul>
        日付は、グレゴリオ暦で表す。</td>
    </tr>
    <tr>
      <td class="attrlist"><code>pubdate</code></td>
      <td class="attrlist attrlist_desc">ブール属性。<br />
        指定すると、直近の親の <code>article</code> 要素の発行日時を表す。<code>article</code> 要素が存在しなければ、文書全体の発行日時となる。<br />
        この属性を指定した場合、日付は必須。<br />
        <code>article</code> 要素または文書に対して、<code>pubdate</code> 属性を持つ <code>time</code> 要素は複数指定できない。</td>
    </tr>
  </tbody>
</table>
<h4>例</h4>
W3C の仕様書から、いくつか例を引用。<br />
(1) <code>time</code> 要素を使った hCalendar の例<br />
<div class="cite_code" style="font-size: 90%;">
<div class="cite_code_line"><code>&lt;div class=&quot;vevent&quot;&gt;</code></div>
<div class="cite_code_line"><code> &lt;a class=&quot;url&quot; href=&quot;http://www.web2con.com/&quot;&gt;http://www.web2con.com/&lt;/a&gt;</code></div>
<div class="cite_code_line"><code>  &lt;span class=&quot;summary&quot;&gt;Web 2.0 Conference&lt;/span&gt;:</code></div>
<div class="cite_code_line"><code>  &lt;time class=&quot;dtstart&quot; datetime=&quot;2007-10-05&quot;&gt;10月5日&lt;/time&gt; -</code></div>
<div class="cite_code_line"><code>  &lt;time class=&quot;dtend&quot; datetime=&quot;2007-10-20&quot;&gt;19日&lt;/time&gt;、</code></div>
<div class="cite_code_line"><code>  &lt;span class=&quot;location&quot;&gt;アージェント・ホテル (カリフォルニア州サンフランシスコ)&lt;/span&gt;にて</code></div>
<div class="cite_code_line"><code> &lt;/div&gt;</code></div>
</div>
<a name="html5_textlevelsemantics_ex2"></a>(2) <code>mark</code> で強調表示する例<br />
<div class="cite_code" style="font-size: 90%;">
<div class="cite_code_line"><code>&lt;p lang=&quot;en-US&quot;&gt;Consider the following quote:&lt;/p&gt;</code></div>
<div class="cite_code_line"><code>&lt;blockquote lang=&quot;en-GB&quot;&gt;</code></div>
<div class="cite_code_line"><code> &lt;p&gt;Look around and you will find, no-one's really</code></div>
<div class="cite_code_line"><code> &lt;mark&gt;colour&lt;/mark&gt; blind.&lt;/p&gt;</code></div>
<div class="cite_code_line"><code>&lt;/blockquote&gt;</code></div>
<div class="cite_code_line"><code>&lt;p lang=&quot;en-US&quot;&gt;As we can tell from the &lt;em&gt;spelling&lt;/em&gt; of the word,</code></div>
<div class="cite_code_line"><code>the person writing this quote is clearly not American.&lt;/p&gt;</code></div>
</div>
(3) ルビの例<br />
<div class="cite_code" style="font-size: 90%;">
<div class="cite_code_line"><code>&lt;ruby&gt;</code></div>
<div class="cite_code_line"><code> 漢 &lt;rp&gt;(&lt;/rp&gt;&lt;rt&gt;かん&lt;/rt&gt;&lt;rp&gt;)&lt;/rp&gt;</code></div>
<div class="cite_code_line"><code> 字 &lt;rp&gt;(&lt;/rp&gt;&lt;rt&gt;じ&lt;/rt&gt;&lt;rp&gt;)&lt;/rp&gt;</code></div>
<div class="cite_code_line"><code>&lt;/ruby&gt;</code></div>
</div>
(4) <code>wbr</code> を使って長い1語を途中改行できるようにした例<br />
<div class="cite_code" style="font-size: 90%;">
<div class="cite_code_line"><code>&lt;p&gt;So then he pointed at the tiger and screamed</code></div>
<div class="cite_code_line"><code>&quot;there&lt;wbr&gt;is&lt;wbr&gt;no&lt;wbr&gt;way&lt;wbr&gt;you&lt;wbr&gt;are&lt;wbr&gt;ever&lt;wbr&gt;going&lt;wbr&gt;to&lt;wbr&gt;catch&lt;wbr&gt;me&quot;!&lt;/p&gt;</code></div>
</div>
<a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>技術メモ</category>
      <author>Ｋ/Ｉ</author>
                </item>
        <item>
      <link>http://k-ishik.seesaa.net/article/157459568.html</link>
      <title>HTML5 のコンテンツグループ化関連タグ</title>
      <pubDate>Mon, 26 Jul 2010 07:07:08 +0900</pubDate>
            <description>【関連記事】  HTML4/XHTML1 から HTML5 への変更点  HTML5 のセクション関連タグ  HTML5 のテキストの意味付け関連タグ  HTML5 の埋め込みコンテンツ関連タグ  HTML5 のフォーム関連タグ●参考4.5 Grouping content - HTML5コンテンツグループ化関連要素一覧            要素      カテゴリ      タグ内に含むもの      説明              figure      flow co..</description>
            <content:encoded><![CDATA[
<style type="text/css">
<!--
table.elemlist {
  border: 1px #000000 solid;
  border-collapse: collapse;
  vertical-align: middle;
}
td.elemlist {
  border: 1px #000000 solid;
  padding: 0.2ex 0.5ex 0.2ex 0.5ex;
}
td.elemlist_cat {
  white-space: nowrap;
}
td.elemlist_desc {
  vertical-align: top;
}
th.elemlist {
  border: 1px #000000 solid;
  padding: 0.2ex 0.5ex 0.2ex 0.5ex;
  background-color: #ccccff;
}
table.attrlist {
  border: 1px #000000 solid;
  border-collapse: collapse;
  vertical-align: middle;
}
td.attrlist {
  border: 1px #000000 solid;
  padding: 0.2ex 0.5ex 0.2ex 0.5ex;
}
td.attrlist_desc {
  vertical-align: top;
}
th.attrlist {
  border: 1px #000000 solid;
  padding: 0.2ex 0.5ex 0.2ex 0.5ex;
  background-color: #ccffcc;
}
-->
</style>
<blockquote>【関連記事】<br>
  <a href="http://k-ishik.seesaa.net/article/156673822.html">HTML4/XHTML1 から HTML5 への変更点</a><br>
  <a href="http://k-ishik.seesaa.net/article/156794848.html">HTML5 のセクション関連タグ</a><br />
  <a href="http://k-ishik.seesaa.net/article/157410309.html">HTML5 のテキストの意味付け関連タグ</a><br />
  <a href="http://k-ishik.seesaa.net/article/157189077.html">HTML5 の埋め込みコンテンツ関連タグ</a><br />
  <a href="http://k-ishik.seesaa.net/article/158008768.html">HTML5 のフォーム関連タグ</a></blockquote>
●参考<br />
<a href="http://www.w3.org/TR/html5/grouping-content.html">4.5 Grouping content - HTML5</a><br />
<h4>コンテンツグループ化関連要素一覧</h4>
<table class="elemlist">
  <tbody>
    <tr>
      <th class="elemlist">要素</th>
      <th class="elemlist">カテゴリ</th>
      <th class="elemlist">タグ内に含むもの</th>
      <th class="elemlist">説明</th>
    </tr>
    <tr>
      <td class="elemlist"><code>figure</code></td>
      <td class="elemlist elemlist_cat">flow content<br />
        sectioning root</td>
      <td class="elemlist">次のいずれか。
        <ul>
          <li><code>figcaption</code> 1 つと、その後に flow content</li>
          <li>flow content と、その後に 1 つの <code>figcaption</code></li>
          <li>flow content</li>
        </ul>
      </td>
      <td class="elemlist elemlist_desc">自己完結していて、通常は本文から参照されるもの。<br />
        たとえば、注釈のイラスト、図表、写真、コードリストなどに使われる。<br />
        本文から分離したところ (サイドバー、別ウィンドウ、付録など) に表示してもよい。</td>
    </tr>
    <tr>
      <td class="elemlist"><code>figcaption</code></td>
      <td class="elemlist elemlist_cat">なし</td>
      <td class="elemlist">flow content</td>
      <td class="elemlist elemlist_desc"><code>figure</code> 要素を説明するもの。</td>
    </tr>
  </tbody>
</table>
<h4><code>figure</code>、<code>figcaption</code> 要素の属性 (グローバル属性を除く)</h4>
<code>figure</code> と <code>figcaption</code> 要素の属性は、グローバル属性のみ。
<h4>例</h4>
W3C に書かれていた例をいくつか。<br />
まずは、コードリストの例。
<div class="cite_code" style="font-size: 90%;">
<div class="cite_code_line"><code>&lt;p&gt;基本的なコアインターフェース API の定義については、&lt;a href=&quot;#l4&quot;&gt;リスト 
4&lt;/a&gt; を参照のこと。&lt;/p&gt;</code></div>
<div class="cite_code_line"><code>&lt;figure id=&quot;l4&quot;&gt;</code></div>
<div class="cite_code_line"><code>  &lt;figcaption&gt;リスト 4: 基本的なコアインターフェース API の定義&lt;/figcaption&gt;</code></div>
<div class="cite_code_line"><code>  &lt;pre&gt;&lt;code&gt;interface PrimaryCore {</code></div>
<div class="cite_code_line"><code>  boolean verifyDataLine();</code></div>
<div class="cite_code_line"><code>  void sendData(in sequence&amp;lt;byte&gt; data);</code></div>
<div class="cite_code_line"><code>  void initSelfDestruct();</code></div>
<div class="cite_code_line"><code>}&lt;/code&gt;&lt;/pre&gt;</code></div>
<div class="cite_code_line"><code>&lt;/figure&gt;</code></div>
<div class="cite_code_line"><code>&lt;p&gt;API は、UTF-8 を使用するように設計されている。&lt;/p&gt;</code></div>
</div>
  次は、<code>figure</code> ではない図と、<code>figure</code> である図・映像の例。
<div class="cite_code" style="font-size: 90%;">
<div class="cite_code_line"><code>&lt;h2&gt;Malinko のコミック&lt;/h2&gt;</code></div>
<div class="cite_code_line"><code></code></div>
<div class="cite_code_line"><code>&lt;p&gt;この事例では、コミックに関するある種の「知的財産」侵害に焦点が当て</code></div>
<div class="cite_code_line"><code>られた (証拠物件 A 参照)。この訴訟では、以下の言葉で終わる予告編映像を</code></div>
<div class="cite_code_line"><code>追及している。</code></div>
<div class="cite_code_line"><code></code></div>
<div class="cite_code_line"><code>&lt;blockquote&gt;</code></div>
<div class="cite_code_line"><code> &lt;img src=&quot;promblem-packed-action.png&quot; alt=&quot;ラフコピー! この行為は問題満載!&quot;&gt;</code></div>
<div class="cite_code_line"><code>&lt;/blockquote&gt;</code></div>
<div class="cite_code_line"><code></code></div>
<div class="cite_code_line"><code>&lt;p&gt;...が放送された。弁護士は Bigger 社製のノート PC という武器を手に、</code></div>
<div class="cite_code_line"><code>雪ダルマ式戦法で先制攻撃を開始した。予告編は、証拠物件 B で全映像を閲</code></div>
<div class="cite_code_line"><code>覧できる。</code></div>
<div class="cite_code_line"><code></code></div>
<div class="cite_code_line"><code>&lt;figure&gt;</code></div>
<div class="cite_code_line"><code>  &lt;img src=&quot;ex-a.png&quot; alt=&quot;汚れた紙に書かれた走り書き。&quot;&gt;</code></div>
<div class="cite_code_line"><code>  &lt;figcaption&gt;証拠物件 A: 提示されたコミックの&lt;cite&gt;ラフコピー&lt;/cite&gt;&lt;/figcaption&gt;</code></div>
<div class="cite_code_line"><code>&lt;/figure&gt;</code></div>
<div class="cite_code_line"><code></code></div>
<div class="cite_code_line"><code>&lt;figure&gt;</code></div>
<div class="cite_code_line"><code> &lt;video src=&quot;ex-b.mov&quot;&gt;&lt;/video&gt;</code></div>
<div class="cite_code_line"><code> &lt;figcaption&gt;証拠物件 B: &lt;cite&gt;ラフコピー&lt;/cite&gt;予告編映像&lt;/figcaption&gt;</code></div>
<div class="cite_code_line"><code>&lt;/figure&gt;</code></div>
<div class="cite_code_line"><code></code></div>
<div class="cite_code_line"><code>&lt;p&gt;この事例は、法廷外で解決した。</code></div>
</div>
<a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>技術メモ</category>
      <author>Ｋ/Ｉ</author>
                </item>
        <item>
      <link>http://k-ishik.seesaa.net/article/157189077.html</link>
      <title>HTML5 の埋め込みコンテンツ関連タグ</title>
      <pubDate>Sun, 25 Jul 2010 17:24:12 +0900</pubDate>
            <description>【関連記事】  HTML4/XHTML1 から HTML5 への変更点  HTML5 のセクション関連タグ  HTML5 のコンテンツグループ化関連タグ  HTML5 のテキストの意味付け関連タグ  HTML5 のフォーム関連タグ●参考4.8 Embedded content - HTML5埋め込みコンテンツ関連要素一覧            要素      カテゴリ      タグ内に含むもの      説明              embed      flow con..</description>
            <content:encoded><![CDATA[
<style type="text/css">
<!--
table.elemlist {
  border: 1px #000000 solid;
  border-collapse: collapse;
  vertical-align: middle;
}
td.elemlist {
  border: 1px #000000 solid;
  padding: 0.2ex 0.5ex 0.2ex 0.5ex;
}
td.elemlist_cat {
  white-space: nowrap;
}
td.elemlist_desc {
  vertical-align: top;
}
th.elemlist {
  border: 1px #000000 solid;
  padding: 0.2ex 0.5ex 0.2ex 0.5ex;
  background-color: #ccccff;
}
table.attrlist {
  border: 1px #000000 solid;
  border-collapse: collapse;
  vertical-align: middle;
}
td.attrlist {
  border: 1px #000000 solid;
  padding: 0.2ex 0.5ex 0.2ex 0.5ex;
}
td.attrlist_desc {
  vertical-align: top;
}
th.attrlist {
  border: 1px #000000 solid;
  padding: 0.2ex 0.5ex 0.2ex 0.5ex;
  background-color: #ccffcc;
}
-->
</style>
<blockquote>【関連記事】<br>
  <a href="http://k-ishik.seesaa.net/article/156673822.html">HTML4/XHTML1 から HTML5 への変更点</a><br />
  <a href="http://k-ishik.seesaa.net/article/156794848.html">HTML5 のセクション関連タグ</a><br />
  <a href="http://k-ishik.seesaa.net/article/157459568.html">HTML5 のコンテンツグループ化関連タグ</a><br />
  <a href="http://k-ishik.seesaa.net/article/157410309.html">HTML5 のテキストの意味付け関連タグ</a><br />
  <a href="http://k-ishik.seesaa.net/article/158008768.html">HTML5 のフォーム関連タグ</a></blockquote>
●参考<br />
<a href="http://www.w3.org/TR/html5/embedded-content-1.html#embedded-content-1">4.8 Embedded content - HTML5</a>
<h4>埋め込みコンテンツ関連要素一覧</h4>
<table class="elemlist">
  <tbody>
    <tr>
      <th class="elemlist">要素</th>
      <th class="elemlist">カテゴリ</th>
      <th class="elemlist">タグ内に含むもの</th>
      <th class="elemlist">説明</th>
    </tr>
    <tr>
      <td class="elemlist"><code>embed</code></td>
      <td class="elemlist elemlist_cat">flow content<br />
        phrasing content<br />
        embedded content<br />
        interactive content</td>
      <td class="elemlist">なし</td>
      <td class="elemlist elemlist_desc">外部アプリケーションやインタラクティブなコンテンツを置くためのもの。<br />
一般的に使われてきたものが HTML5 で正式採用された。</td>
    </tr>
    <tr>
      <td class="elemlist"><code>video</code></td>
      <td class="elemlist elemlist_cat">flow content<br />
        phrasing content<br />
        embedded content<br />
        interactive content<br />
        (<code>controls</code> 属性を持つ場合)</td>
      <td class="elemlist">トランスペアレント要素 (メディア要素を除く) (<code>src</code> 属性を持つ場合)<br />
        1つ以上の <code>source</code> 要素、およびその後にトランスペアレント要素 (メディア要素を除く) (<code>src</code> 属性を持たない場合)</td>
      <td class="elemlist elemlist_desc">ビデオの挿入に使用する (音声もありえる)。<br />
        <code>embed</code> と異なり、プラグインを使わずにビデオコンテンツを貼り付けることができる。<br />
        JavaScript による操作、CSS によるエフェクトも可能。</td>
    </tr>
    <tr>
      <td class="elemlist"><code>audio</code></td>
      <td class="elemlist elemlist_cat">flow content<br />
        phrasing content<br />
        embedded content<br />
        interactive content<br />
        (<code>controls</code> 属性を持つ場合)</td>
      <td class="elemlist">トランスペアレント要素 (メディア要素を除く) (<code>src</code> 属性を持つ場合)<br />
        1つ以上の <code>source</code> 要素、およびその後にトランスペアレント要素 (メディア要素を除く) (<code>src</code> 属性を持たない場合)</td>
      <td class="elemlist elemlist_desc">音声の挿入に使用する。</td>
    </tr>
    <tr>
      <td class="elemlist"><code>source</code></td>
      <td class="elemlist elemlist_cat">なし</td>
      <td class="elemlist">なし</td>
      <td class="elemlist elemlist_desc">メディア要素のメディア・リソースを指定する。<br />
        これは、複数指定することができる。<br />
        メディア要素の <code>src</code> 属性が指定されている場合、<code>source</code> 要素は無視される。<br />
        メディア要素の <code>src</code> 属性が指定されずに <code>source</code> 要素が指定された場合、<code>source</code> 要素で指定されたメディア・リスースを順番に再生していく (属性が正しくないものや、対応しないタイプのもの、リソースをダウンロードできない場合はスキップされる)。</td>
    </tr>
    <tr>
      <td class="elemlist"><code>canvas</code></td>
      <td class="elemlist elemlist_cat">flow content<br />
        phrasing content<br />
        embedded content</td>
      <td class="elemlist">トランスペアレント</td>
      <td class="elemlist elemlist_desc">ビットマップキャンバスを表示する。<br />
        グラフの描画、ゲームのグラフィック表示など。<br />
        ビジュアルメディアでない場合や、<code>canvas</code> に対するスクリプト処理が無効にされている場合、<code>canvas</code> 要素のサポートが無効になっている場合などは、フォールバック・コンテンツが表示される。</td>
    </tr>
  </tbody>
</table>
<h4><code>video</code> 要素の属性 (グローバル属性を除く)</h4>
<table class="attrlist">
  <tbody>
    <tr>
      <th class="attrlist">属性名</th>
      <th class="attrlist">説明</th>
    </tr>
    <tr>
      <td class="attrlist"><code>src</code></td>
      <td class="attrlist attrlist_desc">メディアリソースのアドレス。</td>
    </tr>
    <tr>
      <td class="attrlist"><code>poster</code></td>
      <td class="attrlist attrlist_desc">ビデオデータの準備が完了するまで表示させておく画像ファイルのアドレス (ポスター・フレーム)。<br />
      ビデオが表示できなかったり、最初のフレームで一時停止したりしたときに使われる。<br />
      いったんビデオが表示されたら二度と表示されない。</td>
    </tr>
    <tr>
      <td class="attrlist"><code>preload</code></td>
      <td class="attrlist attrlist_desc">コンテンツのプリロード処理についての指定。
        <dl>
          <dt>none</dt>
          <dd>ユーザーがメディアのリソースを持っている必要がないか、サーバーによけいな負担をかけたくない。<br />
            (つまり、プリロードしないでほしい)</dd>
          <dt>metadata</dt>
          <dd>ユーザーがメディアのリソースを持っている必要はないが、メタデータ (大きさ(ピクセル値)、最初のフレーム、トラックリスト、再生時間、など) を取得しておくのが望ましい。</dd>
          <dt>auto (あるいは空欄)</dt>
          <dd>ユーザーの要求を優先させてもサーバーに影響は与えない。<br />
            (つまり、全部プリロードしてもかまわない)</dd>
        </dl>
      <code>preload</code> 属性が指定されていない場合のデフォルト値はブラウザ依存 (W3C は <code>metadata</code> を推奨)。</td>
    </tr>
    <tr>
      <td class="attrlist"><code>autoplay</code></td>
      <td class="attrlist attrlist_desc">ブール属性。<br />
        指定すると、再生可能になったら即座に再生する。</td>
    </tr>
    <tr>
      <td class="attrlist"><code>loop</code></td>
      <td class="attrlist attrlist_desc">ブール属性。<br />
        指定すると、ループ再生する。</td>
    </tr>
    <tr>
      <td class="attrlist"><code>controls</code></td>
      <td class="attrlist attrlist_desc">ブール属性。<br />
        指定すると、ブラウザの制御ボタンが表示される。<br />
        制作者側で操作スクリプトを用意する場合には、これを指定しない。</td>
    </tr>
    <tr>
      <td class="attrlist"><code>width</code></td>
      <td class="attrlist attrlist_desc">ビデオの幅。</td>
    </tr>
    <tr>
      <td class="attrlist"><code>height</code></td>
      <td class="attrlist attrlist_desc">ビデオの高さ。</td>
    </tr>
  </tbody>
</table>
<h4><code>audio</code> 要素の属性 (グローバル属性を除く)</h4>
<table class="attrlist">
  <tbody>
    <tr>
      <th class="attrlist">属性名</th>
      <th class="attrlist">説明</th>
    </tr>
    <tr>
      <td class="attrlist"><code>src</code></td>
      <td class="attrlist attrlist_desc">(<code>video</code>と同じ)</td>
    </tr>
    <tr>
      <td class="attrlist"><code>preload</code></td>
      <td class="attrlist attrlist_desc">(<code>video</code>と同じ)</td>
    </tr>
    <tr>
      <td class="attrlist"><code>autoplay</code></td>
      <td class="attrlist attrlist_desc">(<code>video</code>と同じ)</td>
    </tr>
    <tr>
      <td class="attrlist"><code>loop</code></td>
      <td class="attrlist attrlist_desc">(<code>video</code>と同じ)</td>
    </tr>
    <tr>
      <td class="attrlist"><code>controls</code></td>
      <td class="attrlist attrlist_desc">(<code>video</code>と同じ)</td>
    </tr>
  </tbody>
</table>
<h4><code>source</code> 要素の属性 (グローバル属性を除く)</h4>
<table class="attrlist">
  <tbody>
    <tr>
      <th class="attrlist">属性名</th>
      <th class="attrlist">説明</th>
    </tr>
    <tr>
      <td class="attrlist"><code>src</code></td>
      <td class="attrlist attrlist_desc">メディア・リソースのアドレス。<br />
        必須。空欄禁止。</td>
    </tr>
    <tr>
      <td class="attrlist"><code>type</code></td>
      <td class="attrlist attrlist_desc">メディア・リソースのタイプを MIME タイプで指定する。</td>
    </tr>
    <tr>
      <td class="attrlist"><code>media</code></td>
      <td class="attrlist attrlist_desc">メディアクエリーを指定する。(参考: <a href="http://dev.w3.org/csswg/css3-mediaqueries/">Media Queries</a>)<br />
        省略した場合、デフォルト値 <code>all</code> (つまり、すべてのメディアに適したリソースという意味) となる。</td>
    </tr>
  </tbody>
</table>
<h4><code>canvas</code> 要素の属性 (グローバル属性を除く)</h4>
<table class="attrlist">
  <tbody>
    <tr>
      <th class="attrlist">属性名</th>
      <th class="attrlist">説明</th>
    </tr>
    <tr>
      <td class="attrlist"><code>width</code></td>
      <td class="attrlist attrlist_desc">幅。<br />
        デフォルト値 300。</td>
    </tr>
    <tr>
      <td class="attrlist"><code>height</code></td>
      <td class="attrlist attrlist_desc">高さ。<br />
        デフォルト値 150。</td>
    </tr>
  </tbody>
</table>
<h4>例</h4>
(1)映像をダウンロードできなかった場合にエラーを表示させる例<br />
W3C サイトに掲載されていた例を引用。<br />
<div class="cite_code" style="font-size: 90%;">
<div class="cite_code_line"><code>&lt;script&gt;</code></div>
<div class="cite_code_line"><code>function failed(e)</code></div>
<div class="cite_code_line"><code>{</code></div>
<div class="cite_code_line"><code>  // video playback failed - show a message saying why</code></div>
<div class="cite_code_line"><code>  switch (e.target.error.code) {</code></div>
<div class="cite_code_line"><code>  case e.target.error.MEDIA_ERR_ABORTED:</code></div>
<div class="cite_code_line"><code>    alert(&quot;ビデオの再生中止。&quot;);</code></div>
<div class="cite_code_line"><code>    break;</code></div>
<div class="cite_code_line"><code>  case e.target.error.MEDIA_ERR_NETWORK:</code></div>
<div class="cite_code_line"><code>    alert(&quot;テスト用アラート:\nネットワークエラーが発生しました。\nビデオ
ファイルのダウンロードを中断しました。&quot;);</code></div>
<div class="cite_code_line"><code>    break;</code></div>
<div class="cite_code_line"><code>  case e.target.error.MEDIA_ERR_DECODE:</code></div>
<div class="cite_code_line"><code>    alert(&quot;テスト用アラート:\nビデオ再生に失敗しました。\nファイルが壊れ
ているか、ビデオが使用している機能にブラウザが対応していない可能性がありま
す。&quot;);</code></div>
<div class="cite_code_line"><code>    break;</code></div>
<div class="cite_code_line"><code>  case e.target.error.MEDIA_ERR_SRC_NOT_SUPPORTED:</code></div>
<div class="cite_code_line"><code>    alert(&quot;テスト用アラート:\nビデオをロードできません。\nサーバーへの接
続エラーか、ビデオフォーマットがサポートされていない可能性があります。&quot;);</code></div>
<div class="cite_code_line"><code>    break;</code></div>
<div class="cite_code_line"><code>  default:</code></div>
<div class="cite_code_line"><code>    alert('An unknown error occurred.');</code></div>
<div class="cite_code_line"><code>    break;</code></div>
<div class="cite_code_line"><code>  }</code></div>
<div class="cite_code_line"><code>}</code></div>
<div class="cite_code_line"><code>&lt;/script&gt;</code></div>
<div class="cite_code_line"><code>&lt;p&gt;&lt;video autoplay src=&quot;tgif.mpg&quot; controls onerror=&quot;failed(event)&quot;&gt;&lt;/vid
eo&gt;&lt;/p&gt;</code></div>
<div class="cite_code_line"><code>&lt;p&gt;&lt;a href=&quot;tgif.mpg&quot;&gt;ビデオファイルのダウンロード&lt;/a&gt;&lt;/p&gt;</code></div>
</div>
<div style="border: solid 1px #000000;"><script>
function failed(e)
{
// video playback failed - show a message saying why
switch (e.target.error.code) {
case e.target.error.MEDIA_ERR_ABORTED:
alert("ビデオの再生中止。");
break;
case e.target.error.MEDIA_ERR_NETWORK:
alert("テスト用アラート:\nネットワークエラーが発生しました。\nビデオファイルのダウンロードを中断しました。");
break;
case e.target.error.MEDIA_ERR_DECODE:
alert("テスト用アラート:\nビデオ再生に失敗しました。\nファイルが壊れているか、ビデオが使用している機能にブラウザが対応していない可能性があります。");
break;
case e.target.error.MEDIA_ERR_SRC_NOT_SUPPORTED:
alert("テスト用アラート:\nビデオをロードできません。\nサーバーへの接続エラーか、ビデオフォーマットがサポートされていない可能性があります。");
break;
default:
alert('An unknown error occurred.');
break;
}
}
</script>
<p><video autoplay src="http://k-ishik.up.seesaa.net/video/body24.ogg" controls onerror="failed(event)"></video></p>
<p><a href="http://k-ishik.up.seesaa.net/video/body24.ogg">ビデオファイルのダウンロード</a></p>
</div>
(2)ビットマップキャンバスに2つの矩形を描く<br />
こちらは、MOZILLA サイトに掲載されていた例。<br />
Firefox 以外で動作するかどうか不明。<br />
<div class="cite_code" style="font-size: 90%;">
<div class="cite_code_line"><code>&lt;!-- フォールバック・コンテンツとして、canvas 非対応ブラウザへのメッセー
ジを記述。--&gt;</code></div>
<div class="cite_code_line"><code>&lt;canvas id=&quot;canvas01&quot;&gt;このブラウザは、canvas の表示に対応していません。
&lt;/canvas&gt;</code></div>
<div class="cite_code_line"><code>&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--</code></div>
<div class="cite_code_line"><code>  // canvas ノードのコンテキストを取得</code></div>
<div class="cite_code_line"><code>  var ctx = document.getElementById('canvas01').getContext('2d');</code></div>
<div class="cite_code_line"><code></code></div>
<div class="cite_code_line"><code>  ctx.fillStyle = &quot;rgb(200,0,0)&quot;;</code></div>
<div class="cite_code_line"><code>  ctx.fillRect (10, 10, 55, 50);</code></div>
<div class="cite_code_line"><code></code></div>
<div class="cite_code_line"><code>  ctx.fillStyle = &quot;rgba(0, 0, 200, 0.5)&quot;;</code></div>
<div class="cite_code_line"><code>  ctx.fillRect(30, 30, 55, 50);</code></div>
<div class="cite_code_line"><code>  // --&gt;</code></div>
<div class="cite_code_line"><code>&lt;/script&gt;</code></div>
</div>
<div style="border: solid 1px #000000;">
<canvas id="canvas01">このブラウザは、canvas の表示に対応していません。</canvas><br />
<script type="text/javascript"><!--
// canvas ノードのコンテキストを取得
var ctx = document.getElementById('canvas01').getContext('2d');

ctx.fillStyle = "rgb(200,0,0)";  
ctx.fillRect (10, 10, 55, 50);  
  
ctx.fillStyle = "rgba(0, 0, 200, 0.5)";  
ctx.fillRect (30, 30, 55, 50);  
// -->
</script>
</div><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>技術メモ</category>
      <author>Ｋ/Ｉ</author>
                  <enclosure url="http://k-ishik.up.seesaa.net/video/body24.ogg" length="87627" type="application/octet-stream" />
                            </item>
        <item>
      <link>http://k-ishik.seesaa.net/article/156794848.html</link>
      <title>HTML5 のセクション関連タグ</title>
      <pubDate>Mon, 19 Jul 2010 11:40:51 +0900</pubDate>
            <description>        HTML5 では、セクション関連のタグが大きく変更されている。    W3C のサイトでは、以下のページで解説されている。    4.4 Sections &amp;#8212; HTML5    この文書をもとに、セクション関連タグを整理してみた。    【関連記事】      HTML4/XHTML1 から HTML5 への変更点      HTML5 のコンテンツグループ化関連タグ      HTML5 のテキストの意味付け関連タグ      HTML5 の埋め..</description>
            <content:encoded><![CDATA[
    <style type="text/css">
      <!--
table.elemlist {
  border: 1px #000000 solid;
  border-collapse: collapse;
  vertical-align: middle;
}
td.elemlist {
  border: 1px #000000 solid;
  padding: 0.2ex 0.5ex 0.2ex 0.5ex;
}
td.elemlist_cat {
  white-space: nowrap;
}
td.elemlist_desc {
  vertical-align: top;
}
th.elemlist {
  border: 1px #000000 solid;
  padding: 0.2ex 0.5ex 0.2ex 0.5ex;
  background-color: #ccccff;
}
      -->
    </style>

    HTML5 では、セクション関連のタグが大きく変更されている。<br />
    W3C のサイトでは、以下のページで解説されている。<br />
    <a href="http://www.w3.org/TR/html5/sections.html">4.4 Sections &#8212; HTML5</a><br />
    この文書をもとに、セクション関連タグを整理してみた。<br />
    <blockquote>【関連記事】<br />
      <a href="http://k-ishik.seesaa.net/article/156673822.html">HTML4/XHTML1 から HTML5 への変更点</a><br />
      <a href="http://k-ishik.seesaa.net/article/157459568.html">HTML5 のコンテンツグループ化関連タグ</a><br />
      <a href="http://k-ishik.seesaa.net/article/157410309.html">HTML5 のテキストの意味付け関連タグ</a><br />
      <a href="http://k-ishik.seesaa.net/article/157189077.html">HTML5 の埋め込みコンテンツ関連タグ</a><br />
      <a href="http://k-ishik.seesaa.net/article/158008768.html">HTML5 のフォーム関連タグ</a></blockquote>
    <h4>セクション関連要素一覧</h4>
    <table class="elemlist">
      <tr>
        <th class="elemlist">要素</th>
        <th class="elemlist">カテゴリ</th>
        <th class="elemlist">タグ内に含むもの</th>
        <th class="elemlist">説明</th>
      </tr>
      <tr>
        <td class="elemlist"><code>body</code></td>
        <td class="elemlist elemlist_cat">sectioning root</td>
        <td class="elemlist">flow content</td>
        <td class="elemlist elemlist_desc">ドキュメントのメインコンテンツ。</td>
      </tr>
      <tr>
        <td class="elemlist"><code>section</code></td>
        <td class="elemlist elemlist_cat">flow content<br />
          sectioning content<br />
          formatBlock candidate</td>
        <td class="elemlist">flow content</td>
        <td class="elemlist elemlist_desc">ドキュメントやアプリケーションの一般的なセクション。<br />
          同一テーマのかたまりで、たいていはヘッダーがついている。</td>
      </tr>
      <tr>
        <td class="elemlist"><code>nav</code></td>
        <td class="elemlist elemlist_cat">flow content<br />
          sectioning content<br />
          formatBlock candidate</td>
        <td class="elemlist">flow content</td>
        <td class="elemlist elemlist_desc">ナビゲーションリンクを記述するセクション。<br />
          リンクグループをすべて <code>nav</code> 要素に入れる必要はなく、メインのナビゲーションブロックだけを入れる。</td>
      </tr>
      <tr>
        <td class="elemlist"><code>article</code></td>
        <td class="elemlist elemlist_cat">flow content<br />
          sectioning content<br />
          formatBlock candidate</td>
        <td class="elemlist">flow content</td>
        <td class="elemlist elemlist_desc">自己完結した文のまとまり。<br />
          たとえば、ブログの個々の記事など。<br />
          <code>article</code> の入れ子もありうる。</td>
      </tr>
      <tr>
        <td class="elemlist"><code>aside</code></td>
        <td class="elemlist elemlist_cat">flow content<br />
          sectioning content<br />
          formatBlock candidate</td>
        <td class="elemlist">flow content</td>
        <td class="elemlist elemlist_desc">本文の補足記事。<br />
          注記や補足情報など、本文の主題から逸れた内容の記述に使う。</td>
      </tr>
      <tr>
        <td class="elemlist"><code>h1</code>～<code>h6</code></td>
        <td class="elemlist elemlist_cat">flow content<br />
          heading content<br />
          formatBlock candidate</td>
        <td class="elemlist">phrasing content</td>
        <td class="elemlist elemlist_desc">ヘッダー。</td>
      </tr>
      <tr>
        <td class="elemlist"><code>hgroup</code></td>
        <td class="elemlist elemlist_cat">flow content<br />
          heading content<br />
          formatBlock candidate</td>
        <td class="elemlist">1つ以上の <code>h1</code>, <code>h2</code>, <code>h3</code>, <code>h4</code>, <code>h5</code>, <code>h6</code> 要素</td>
        <td class="elemlist elemlist_desc">ヘッダーが多階層から成る場合に、<code>h1</code>～<code>h6</code> 要素をまとめるのに使う。<br />
          ページのサマリーを作る時、<code>hgroup</code> のところは <code>h1</code>～<code>h6</code> の最上位のものが使われる。</td>
      </tr>
      <tr>
        <td class="elemlist"><code>header</code></td>
        <td class="elemlist elemlist_cat">flow content<br />
          formatBlock candidate</td>
        <td class="elemlist">flow content (<code>header</code>, <code>footer</code> 要素を除く)</td>
        <td class="elemlist elemlist_desc"><code>article</code> の導入部分に使用する。<br />
        <code>h1</code>～<code>h6</code>、<code>hgroup</code> などをまとめたもの。<br />
        目次、検索欄、関連ロゴなどの表示にも使える。</td>
      </tr>
      <tr>
        <td class="elemlist"><code>footer</code></td>
        <td class="elemlist elemlist_cat">flow content<br />
          formatBlock candidate</td>
        <td class="elemlist">flow content (<code>header</code>, <code>footer</code> 要素を除く)</td>
        <td class="elemlist elemlist_desc">フッター情報。<br />
          著者、関連文書へのリンク、著作権表示などの表示に使う。<br />
          セクション全体が含まれている場合は、付属文書、索引、奥付、ライセンス契約などを意味する。<br />
          記述位置はセクションの最後でなくてもよい。</td>
      </tr>
      <tr>
        <td class="elemlist"><code>address</code></td>
        <td class="elemlist elemlist_cat">flow content<br />
          formatBlock candidate</td>
        <td class="elemlist">flow content (heading content、sectioning content、<code>header</code>, <code>footer</code>, <code>address</code> 要素を除く)</td>
        <td class="elemlist elemlist_desc">記事に関する連絡先情報。<br />
          ※任意の住所を記述するためのものではなく、あくまで関連する連絡先を記述するためのもの。<br />
          通常は <code>footer</code> 要素の中に記述する。</td>
      </tr>
    </table>

    <h4>例</h4>
    以下は、W3C のサイトを参考にして書いたサンプルコード。<br />
    <div style="white-space: pre; font-size: 82%;"><code>
&lt;header&gt;
  &lt;h1&gt;全日本スローライフ推進委員会&lt;/h1&gt;
  &lt;nav&gt;
    &lt;hgroup&gt;
      &lt;!-- ヘッダー情報を拾い出すアプリケーションは、「関連リンク」を採用する --&gt;
      &lt;h1&gt;関連リンク&lt;/h1&gt;
      &lt;h2&gt;スローライフに関する他のサイト&lt;/h2&gt;
    &lt;/hgroup&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;http://www.nowhere1.org/history.html&quot;&gt;日本のスローライフ&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;http://www.nowhere2.org/&quot;&gt;全国スローライフ満喫協会&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/nav&gt;
&lt;/header&gt;
&lt;aside&gt;
  &lt;!-- aside をブログのサイドバーのリンクに使用した例 --&gt;
  &lt;nav&gt;
    &lt;h1&gt;お気に入り&lt;/h1&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;http://www.nowhere3.org/&quot;&gt;のんびり行こうよ、どこまでも&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;http://www.nowhere4.org/&quot;&gt;委員会議事録&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/nav&gt;
  &lt;nav&gt;
    &lt;h1&gt;最近の記事&lt;/h1&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;111111.html&quot;&gt;スローライフ推進委員会のお知らせ&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;111110.html&quot;&gt;新委員のご紹介&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;111109.html&quot;&gt;遅食い大会のスタッフが決まりました&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/nav&gt;
&lt;/aside&gt;
&lt;div&gt;
  &lt;article&gt;
    &lt;header&gt;
      &lt;h1&gt;第32回 遅食い大会開催のお知らせ&lt;/h1&gt;
      &lt;p&gt;&lt;time pubdate datetime=&quot;2010-07-10T10:28+09:00&quot;&gt;&lt;/time&gt;&lt;/p&gt;
    &lt;/header&gt;
    &lt;p&gt;恒例の遅食い大会を開催いたします。&lt;/p&gt;
    &lt;p&gt;...&lt;/p&gt;
    &lt;aside&gt;
      &lt;h1&gt;遅食い大会&lt;/h1&gt;
      &lt;p&gt;遅食い大会は、全日本スローライフ推進委員会が主催する遅食い競争の全国大会。&lt;/p&gt;
      &lt;p&gt;...&lt;/p&gt;
    &lt;/aside&gt;
    &lt;section&gt;
      &lt;h1&gt;コメント&lt;/h1&gt;
      &lt;article&gt;
        &lt;footer&gt;
          &lt;p&gt;投稿者: 十年寝太郎&lt;/p&gt;
          &lt;p&gt;&lt;time pubdate datetime=&quot;2010-07-11T19:10+09:00&quot;&gt;&lt;/time&gt;&lt;/p&gt;
        &lt;/footer&gt;
        &lt;p&gt;今年ももちろん参加します。&lt;/p&gt;
      &lt;/article&gt;
      &lt;article&gt;
        &lt;footer&gt;
          &lt;p&gt;投稿者: 56寸法師&lt;/p&gt;
          &lt;p&gt;&lt;time pubdate datetime=&quot;2010-07-12T09:15+09:00&quot;&gt;&lt;/time&gt;&lt;/p&gt;
        &lt;/footer&gt;
        &lt;p&gt;素敵なイベントですね。&lt;/p&gt;
      &lt;/article&gt;
    &lt;/section&gt;
  &lt;/article&gt;
  &lt;article&gt;
        ...
  &lt;/article&gt;
&lt;/div&gt;
&lt;footer&gt;
  &lt;p&gt;opyright &amp;copy; 2010 Japan Slowlife Lovers&lt;/p&gt;
  &lt;p&gt;&lt;a href=&quot;about.html&quot;&gt;About Us&lt;/a&gt; -
    &lt;a href=&quot;privacy.html&quot;&gt;Privacy Policy&lt;/a&gt; -
    &lt;a href=&quot;contact.html&quot;&gt;Contact Us&lt;/a&gt;&lt;/p&gt;
&lt;/footer&gt;
    </code></div>
<a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>技術メモ</category>
      <author>Ｋ/Ｉ</author>
                </item>
        <item>
      <link>http://k-ishik.seesaa.net/article/156673822.html</link>
      <title>HTML4/XHTML1 から HTML5 への変更点</title>
      <pubDate>Sun, 18 Jul 2010 00:20:25 +0900</pubDate>
            <description>        HTML5 が話題になってずいぶん経ったけれど、いったい何がどう変わったのだろう?      現状ではほとんど何の恩恵も受けていない気がする。    そういえば HTML5 が何者なのか、そもそもよく知らないではないか。            そんなわけで W3C のサイトを覗いてみたところ、こんなものが置いてあった。      『HTML5 differences from HTML4』      ありがたや、まさにこんな解説がほしかった。         ..</description>
            <content:encoded><![CDATA[
    <style type="text/css"><!--
ul.elemattr {
  margin-top: 0;
  margin-right: 0;
  margin-bottom: 0;
}
th.col_tag {
  font-weight: bold;
  text-align: center;
  background-color: #cccccc;
  vertical-align: middle;
  width: 10ex;
}
td.col_tag {
  background-color: #cccccc;
  vertical-align: top;
  width: 10ex;
}
th.col_add {
  font-weight: bold;
  text-align: center;
  background-color: #9999ff;
  vertical-align: middle;
  width: 28ex;
}
td.col_add {
  background-color: #9999ff;
  vertical-align: top;
  width: 28ex;
}
th.col_del {
  font-weight: bold;
  text-align: center;
  background-color: #ff9999;
  vertical-align: middle;
  width: 28ex;
}
td.col_del {
  background-color: #ff9999;
  vertical-align: top;
  width: 28ex;
}
td.elemcat {
  background-color: #cccccc;
}
table.elemlist {
  border: 1px #000000 solid;
  border-collapse: collapse;
  vertical-align: middle;
}
td.elemlist {
  border: 1px #000000 solid;
  padding: 0.2ex 0.5ex 0.2ex 0.5ex;
}
td.elemlist_cat {
  white-space: nowrap;
}
td.elemlist_desc {
  vertical-align: top;
}
th.elemlist {
  border: 1px #000000 solid;
  padding: 0.2ex 0.5ex 0.2ex 0.5ex;
  background-color: #ccccff;
}
--></style>
    <div>HTML5 が話題になってずいぶん経ったけれど、いったい何がどう変わったのだろう?<br />
      現状ではほとんど何の恩恵も受けていない気がする。</div>
    <div>そういえば HTML5 が何者なのか、そもそもよく知らないではないか。<br />
      <br />
      そんなわけで W3C のサイトを覗いてみたところ、こんなものが置いてあった。<br />
      『<a href="http://www.w3.org/TR/html5-diff/">HTML5 differences from HTML4</a>』<br />
      ありがたや、まさにこんな解説がほしかった。<br />
      <br />
      以下、この文書をもとに HTML5 の特徴をごく荒っぽくまとめてみた。<br />
      ※参照したテキストは "W3C Working Draft 24 June 2010" 時点のもの</div>
    <ul>
      <li>HTML4、XHTML1 と互換性はあるが、SGML との互換性は無い。</li>
      <li>1行目の書き方は、<br />
	HTML (HTML5) の場合:<br />
	<code>&lt;!DOCTYPE html&gt;</code><br />
        <span style="font-size: 90%">※SGML 準拠をやめたので DTD の指定は不要になった。</span><br />
	XML (XHTML5) の場合:<br />
	<code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</code></li>
      <li>MIME形式 text/html-sandboxed が追加された。(参考サイト:『<a href="http://www.infoq.com/jp/news/2010/02/HTML-5-Sandbox-IFrame">HTML 5 sandbox 属性による iFrame セキュリティの向上</a>』)</li>
      <li>ファイル先頭の BOM で文字エンコーディングが判断されるようになった。</li>
      <li>MathML と SVG の要素を直接記述できるようになった。</li>
      <li>IRI (Internationalized Resource Identifier) をネイティブサポートした。</li>
      <li><code>lang</code> 属性に空文字列を指定できるようになった。</li>
      <li>要素、属性が変更された。→<a href="#elem_changes">要素の変更点</a>、<a href="#attr_changes">属性の変更点</a>
      <li>各種 API が導入された (映像とか音声とかドラッグ＆ドロップとか)。</li>
      <li>HTMLDocument, HTMLElement の機能が拡張された。
	<ul>
	  <li>getElementsByClassName()</li>
	  <li>innerHTML</li>
	  <li>activeElement</li>
	  <li>hasFocus</li>
	  <li>getSelection()</li>
	  <li>classList</li>
	  <li>className</li>
	</ul>
      </li>
    </ul>
    <hr />
    <a name="elem_changes"></a>
    <h4>要素の変更点</h4>
    <table>
      <tr>
	<th class="col_add">追加要素</th>
	<th class="col_del">廃止要素<br/>
	  (存在しないもの、<br />
          推奨されないものを含む)</th>
      </tr>
      <tr>
	<td class="col_add">
	  <ul class="elemattr">
	    <li><a href="http://k-ishik.seesaa.net/article/156794848.html" title="→『HTML5 のセクション関連の要素』">section</a></li>
	    <li><a href="http://k-ishik.seesaa.net/article/156794848.html" title="→『HTML5 のセクション関連の要素』">article</a></li>
	    <li><a href="http://k-ishik.seesaa.net/article/156794848.html" title="→『HTML5 のセクション関連の要素』">aside</a></li>
	    <li><a href="http://k-ishik.seesaa.net/article/156794848.html" title="→『HTML5 のセクション関連の要素』">hgroup</a></li>
	    <li><a href="http://k-ishik.seesaa.net/article/156794848.html" title="→『HTML5 のセクション関連の要素』">header</a></li>
	    <li><a href="http://k-ishik.seesaa.net/article/156794848.html" title="→『HTML5 のセクション関連の要素』">footer</a></li>
	    <li><a href="http://k-ishik.seesaa.net/article/156794848.html" title="→『HTML5 のセクション関連の要素』">nav</a></li>
	    <li><a href="http://k-ishik.seesaa.net/article/157459568.html" title="→『HTML5 のコンテンツグループ化関連タグ』">figure</a>, <a href="http://k-ishik.seesaa.net/article/157459568.html" title="→『HTML5 のコンテンツグループ化関連タグ』">figcaption</a></li>
	    <li><a href="http://k-ishik.seesaa.net/article/157410309.html" title="→『HTML5 のテキストの意味付け関連タグ』">time</a></li>
	    <li><a href="http://k-ishik.seesaa.net/article/157410309.html" title="→『HTML5 のテキストの意味付け関連タグ』">mark</a></li>
	    <li><a href="http://k-ishik.seesaa.net/article/157410309.html" title="→『HTML5 のテキストの意味付け関連タグ』">ruby</a>, <a href="http://k-ishik.seesaa.net/article/157410309.html" title="→『HTML5 のテキストの意味付け関連タグ』">rt</a>, <a href="http://k-ishik.seesaa.net/article/157410309.html" title="→『HTML5 のテキストの意味付け関連タグ』">rp</a></li>
	    <li><a href="http://k-ishik.seesaa.net/article/157410309.html" title="→『HTML5 のテキストの意味付け関連タグ』">wbr</a></li>
	    <li><a href="http://k-ishik.seesaa.net/article/157189077.html" title="→『HTML5 の埋め込みコンテンツ関連タグ』">embed</a></li>
	    <li><a href="http://k-ishik.seesaa.net/article/157189077.html" title="→『HTML5 の埋め込みコンテンツ関連タグ』">video</a>, <a href="http://k-ishik.seesaa.net/article/157189077.html" title="→『HTML5 の埋め込みコンテンツ関連タグ』">audio</a>, <a href="http://k-ishik.seesaa.net/article/157189077.html" title="→『HTML5 の埋め込みコンテンツ関連タグ』">source</a></li>
	    <li><a href="http://k-ishik.seesaa.net/article/157189077.html" title="→『HTML5 の埋め込みコンテンツ関連タグ』">canvas</a></li>
	    <li><a href="http://k-ishik.seesaa.net/article/158008768.html" title="→『HTML5 のフォーム関連タグ』">datalist</a></li>
	    <li><a href="http://k-ishik.seesaa.net/article/158008768.html" title="→『HTML5 のフォーム関連タグ』">output</a></li>
	    <li>progress</li>
	    <li>meter</li>
	    <li>command</li>
	    <li>details, summary</li>
	    <li>keygen</li>
	  </ul>
	</td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>head 要素内での object 要素</li>
	    <li>basefont (CSS を使用)</li>
	    <li>big (CSS を使用)</li>
	    <li>center (CSS を使用)</li>
	    <li>font (CSS を使用)</li>
	    <li>s (CSS を使用)</li>
	    <li>strike (CSS を使用)</li>
	    <li>tt (CSS を使用)</li>
	    <li>u (CSS を使用)</li>
	    <li>frame, frameset, noframes</li>
	    <li>acronym (abbr を使用)</li>
	    <li>applet (object を使用)</li>
	    <li>isindex (フォームを使用)</li>
	    <li>dir (ul を使用)</li>
	  </ul>
	</td>
      </tr>
    </table>
    <a name="attr_changes"></a>
    <h4>属性の変更点</h4>
    <table>
      <tr>
	<th class="col_tag">要素名</th>
	<th class="col_add">追加された属性</th>
	<th class="col_del">廃止された属性<br />
	  (存在しないもの、<br />
          推奨されないものを含む)</th>
      </tr>
      <tr>
	<td class="col_tag">(グローバル属性)</td>
	<td class="col_add">
	  <ul class="elemattr">
	    <li>contenteditable</li>
	    <li>contextmenu</li>
	    <li>data-*</li>
	    <li>draggable</li>
	    <li>hidden</li>
	    <li>role</li>
	    <li>aria-*</li>
	    <li>spellcheck</li>
	  </ul>
	</td>
	<td class="col_del"></td>
      </tr>
      <tr>
	<td colspan="3" class="elemcat">●root要素</td>
      </tr>
      <tr>
	<td class="col_tag">html</td>
	<td class="col_add">
	  <ul class="elemattr">
	    <li>manifest</li>
	  </ul>
	</td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>version</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td colspan="3" class="elemcat">●文書メタデータ</td>
      </tr>
      <tr>
	<td class="col_tag">head</td>
	<td class="col_add"></td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>profile</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td class="col_tag">base</td>
	<td class="col_add">
	  <ul class="elemattr">
	    <li>target</li>
	  </ul>
	</td>
	<td class="col_del"></td>
      </tr>
      <tr>
	<td class="col_tag">link</td>
	<td class="col_add">
	  <ul class="elemattr">
	    <li>sized</li>
	  </ul>
	</td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>rev</li>
	    <li>charset</li>
	    <li>target</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td class="col_tag">meta</td>
	<td class="col_add">
	  <ul class="elemattr">
	    <li>charset</li>
	  </ul>
	</td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>scheme</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td class="col_tag">style</td>
	<td class="col_add">
	  <ul class="elemattr">
	    <li>scoped</li>
	  </ul>
	</td>
	<td class="col_del"></td>
      </tr>
      <tr>
	<td colspan="3" class="elemcat">●スクリプト</td>
      </tr>
      <tr>
	<td class="col_tag">script</td>
	<td class="col_add">
	  <ul class="elemattr">
	    <li>async</li>
	  </ul>
	</td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>language</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td colspan="3" class="elemcat">●セクション</td>
      </tr>
      <tr>
	<td class="col_tag">body</td>
	<td class="col_add"></td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>alink (CSS を使用)</li>
	    <li>link (CSS を使用)</li>
	    <li>text (CSS を使用)</li>
	    <li>vlink (CSS を使用)</li>
	    <li>background (CSS を使用)</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td class="col_tag">h1, h2, h3, h4, h5, h6</td>
	<td class="col_add"></td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>align (CSS を使用)</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td colspan="3" class="elemcat">●グループ化</td>
      </tr>
      <tr>
	<td class="col_tag">p</td>
	<td class="col_add"></td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>align (CSS を使用)</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td class="col_tag">hr</td>
	<td class="col_add"></td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>align (CSS を使用)</li>
	    <li>noshade (CSS を使用)</li>
	    <li>size (CSS を使用)</li>
	    <li>width (CSS を使用)</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td class="col_tag">pre</td>
	<td class="col_add"></td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>width (CSS を使用)</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td class="col_tag">ol</td>
	<td class="col_add">
	  <ul class="elemattr">
	    <li>start (復活)</li>
	    <li>reversed</li>
	  </ul>
	</td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>compact (CSS を使用)</li>
	    <li>type (CSS を使用)</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td class="col_tag">ul</td>
	<td class="col_add"></td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>compact (CSS を使用)</li>
	    <li>type (CSS を使用)</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td class="col_tag">li</td>
	<td class="col_add">
	  <ul class="elemattr">
	    <li>value (復活)</li>
	  </ul>
	</td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>type (CSS を使用)</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td class="col_tag">dl</td>
	<td class="col_add"></td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>compact (CSS を使用)</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td class="col_tag">div</td>
	<td class="col_add"></td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>align (CSS を使用)</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td colspan="3" class="elemcat">●テキストレベル</td>
      </tr>
      <tr>
	<td class="col_tag">a</td>
	<td class="col_add">
	  <ul class="elemattr">
	    <li>media</li>
	    <li>ping</li>
	    <li>target (復活)</li>
	  </ul>
	</td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>name (id 属性を使用)</li>
	    <li>rev</li>
	    <li>charset</li>
	    <li>shape</li>
	    <li>coords</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td class="col_tag">br</td>
	<td class="col_add"></td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>clear (CSS を使用)</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td colspan="3" class="elemcat">●埋め込み</td>
      </tr>
      <tr>
	<td class="col_tag">img</td>
	<td class="col_add"></td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>border (CSS を使用)</li>
	    <li>longdesc</li>
	    <li>name (id を使用)</li>
	    <li>align (CSS を使用)</li>
	    <li>hspace (CSS を使用)</li>
	    <li>vspace (CSS を使用)</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td class="col_tag">iframe</td>
	<td class="col_add">
	  <ul class="elemattr">
	    <li>sandbox</li>
	    <li>seamless</li>
	    <li>srcdoc</li>
	  </ul>
	</td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>longdesc</li>
	    <li>align (CSS を使用)</li>
	    <li>frameborder (CSS を使用)</li>
	    <li>marginheight (CSS を使用)</li>
	    <li>marginwidth (CSS を使用)</li>
	    <li>scrolling (CSS を使用)</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td class="col_tag">object</td>
	<td class="col_add"></td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>archive</li>
	    <li>classid</li>
	    <li>codebase</li>
	    <li>codetype</li>
	    <li>declare</li>
	    <li>standby</li>
	    <li>align (CSS を使用)</li>
	    <li>border (CSS を使用)</li>
	    <li>hspace (CSS を使用)</li>
	    <li>vspace (CSS を使用)</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td class="col_tag">param</td>
	<td class="col_add"></td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>valuetype</li>
	    <li>type</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td class="col_tag">area</td>
	<td class="col_add">
	  <ul class="elemattr">
	    <li>media</li>
	    <li>ping</li>
	    <li>hreflang</li>
	    <li>rel</li>
	    <li>target (復活)</li>
	  </ul>
	</td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>nohref</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td colspan="3" class="elemcat">●テーブル</td>
      </tr>
      <tr>
	<td class="col_tag">table</td>
	<td class="col_add"></td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>summary</li>
	    <li>align (CSS を使用)</li>
	    <li>bgcolor (CSS を使用)</li>
	    <li>border (CSS を使用)</li>
	    <li>cellpadding (CSS を使用)</li>
	    <li>cellspacing (CSS を使用)</li>
	    <li>frame (CSS を使用)</li>
	    <li>rules (CSS を使用)</li>
	    <li>width (CSS を使用)</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td class="col_tag">caption</td>
	<td class="col_add"></td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>align (CSS を使用)</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td class="col_tag">colgroup</td>
	<td class="col_add"></td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>align (CSS を使用)</li>
	    <li>char (CSS を使用)</li>
	    <li>charoff (CSS を使用)</li>
	    <li>valign (CSS を使用)</li>
	    <li>width (CSS を使用)</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td class="col_tag">col</td>
	<td class="col_add"></td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>align (CSS を使用)</li>
	    <li>char (CSS を使用)</li>
	    <li>charoff (CSS を使用)</li>
	    <li>valign (CSS を使用)</li>
	    <li>width (CSS を使用)</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td class="col_tag">tbody</td>
	<td class="col_add"></td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>align (CSS を使用)</li>
	    <li>char (CSS を使用)</li>
	    <li>charoff (CSS を使用)</li>
	    <li>valign (CSS を使用)</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td class="col_tag">thead</td>
	<td class="col_add"></td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>align (CSS を使用)</li>
	    <li>char (CSS を使用)</li>
	    <li>charoff (CSS を使用)</li>
	    <li>valign (CSS を使用)</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td class="col_tag">tfoot</td>
	<td class="col_add"></td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>align (CSS を使用)</li>
	    <li>char (CSS を使用)</li>
	    <li>charoff (CSS を使用)</li>
	    <li>valign (CSS を使用)</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td class="col_tag">tr</td>
	<td class="col_add"></td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>align (CSS を使用)</li>
	    <li>bgcolor (CSS を使用)</li>
	    <li>char (CSS を使用)</li>
	    <li>charoff (CSS を使用)</li>
	    <li>valign (CSS を使用)</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td class="col_tag">td</td>
	<td class="col_add"></td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>axis</li>
	    <li>abbr</li>
	    <li>scope</li>
	    <li>align (CSS を使用)</li>
	    <li>bgcolor (CSS を使用)</li>
	    <li>char (CSS を使用)</li>
	    <li>charoff (CSS を使用)</li>
	    <li>height (CSS を使用)</li>
	    <li>nowrap (CSS を使用)</li>
	    <li>valign (CSS を使用)</li>
	    <li>width (CSS を使用)</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td class="col_tag">th</td>
	<td class="col_add"></td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>axis</li>
	    <li>abbr</li>
	    <li>align (CSS を使用)</li>
	    <li>bgcolor (CSS を使用)</li>
	    <li>char (CSS を使用)</li>
	    <li>charoff (CSS を使用)</li>
	    <li>height (CSS を使用)</li>
	    <li>nowrap (CSS を使用)</li>
	    <li>valign (CSS を使用)</li>
	    <li>width (CSS を使用)</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td colspan="3" class="elemcat">●フォーム</td>
      </tr>
      <tr>
	<td class="col_tag">form</td>
	<td class="col_add">
	  <ul class="elemattr">
	    <li>novalidate</li>
	  </ul>
	</td>
	<td class="col_del"></td>
      </tr>
      <tr>
	<td class="col_tag">fieldset</td>
	<td class="col_add">
	  <ul class="elemattr">
	    <li>form</li>
	    <li>disabled</li>
	  </ul>
	</td>
	<td class="col_del"></td>
      </tr>
      <tr>
	<td class="col_tag">legend</td>
	<td class="col_add"></td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>align (CSS を使用)</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td class="col_tag">input</td>
	<td class="col_add">
	  <ul class="elemattr">
	    <li>autofocus (type 属性が hidden の場合を除く)</li>
	    <li>placeholder</li>
	    <li>form</li>
	    <li>required (type 属性が hidden, image, ボタン類 (submit など) の場合を除く)</li>
	    <li>autocomplete</li>
	    <li>min</li>
	    <li>max</li>
	    <li>multiple</li>
	    <li>pattern</li>
	    <li>step</li>
	    <li>list (datalist 要素と一緒に使用)</li>
	    <li>formaction</li>
	    <li>formenctype</li>
	    <li>formmethod</li>
	    <li>formnovalidate</li>
	    <li>formtarget</li>
	    <li>type 属性の値に以下を追加
	      <ul class="elemattr">
		<li>tel</li>
		<li>search</li>
		<li>url</li>
		<li>email</li>
		<li>datetime</li>
		<li>date</li>
		<li>month</li>
		<li>week</li>
		<li>time</li>
		<li>datetime-local</li>
		<li>number</li>
		<li>range</li>
		<li>color</li>
	      </ul>
	    </li>
	  </ul>
	</td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>align (CSS を使用)</li>
	  </ul>
	</td>
      </tr>
      <tr>
	<td class="col_tag">button</td>
	<td class="col_add">
	  <ul class="elemattr">
	    <li>autofocus</li>
	    <li>form</li>
	    <li>formaction</li>
	    <li>formenctype</li>
	    <li>formmethod</li>
	    <li>formnovalidate</li>
	    <li>formtarget</li>
	  </ul>
	</td>
	<td class="col_del"></td>
      </tr>
      <tr>
	<td class="col_tag">select</td>
	<td class="col_add">
	  <ul class="elemattr">
	    <li>autofocus</li>
	    <li>form</li>
	  </ul>
	</td>
	<td class="col_del"></td>
      </tr>
      <tr>
	<td class="col_tag">textarea</td>
	<td class="col_add">
	  <ul class="elemattr">
	    <li>autofocus</li>
	    <li>placeholder</li>
	    <li>form</li>
	    <li>required</li>
	  </ul>
	</td>
	<td class="col_del"></td>
      </tr>
      <tr>
	<td colspan="3" class="elemcat">●対話</td>
      </tr>
      <tr>
	<td class="col_tag">menu</td>
	<td class="col_add">
	  <ul class="elemattr">
	    <li>type</li>
	    <li>label</li>
	  </ul>
	</td>
	<td class="col_del">
	  <ul class="elemattr">
	    <li>compact (CSS を使用)</li>
	  </ul>
	</td>
      </tr>
    </table>
<br />
<blockquote>
【関連記事】<br />
<a href="http://k-ishik.seesaa.net/article/156794848.html">HTML5 のセクション関連タグ</a><br />
<a href="http://k-ishik.seesaa.net/article/157459568.html">HTML5 のコンテンツグループ化関連タグ</a><br />
<a href="http://k-ishik.seesaa.net/article/157410309.html">HTML5 のテキストの意味付け関連タグ</a><br />
<a href="http://k-ishik.seesaa.net/article/157189077.html">HTML5 の埋め込みコンテンツ関連タグ</a><br />
<a href="http://k-ishik.seesaa.net/article/158008768.html">HTML5 のフォーム関連タグ</a></blockquote>
<br />
【修正・2010年7月18日】<br />
表「属性の変更点」をカテゴリ分け<br />
【追記・2010年7月22日】<br />
「コンテンツのグループ化関連タグ」を追加<br />
【変更・2010年7月26日】<br />
「コンテンツのグループ化関連タグ」を別記事に独立<br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>技術メモ</category>
      <author>Ｋ/Ｉ</author>
                </item>
        <item>
      <link>http://k-ishik.seesaa.net/article/154580635.html</link>
      <title>Android アプリ開発環境の構築</title>
      <pubDate>Sun, 27 Jun 2010 00:29:18 +0900</pubDate>
            <description>Android SDK をインストールしたので、その作業メモ。Android Developershttp://developer.android.com/index.html1. インストール前の準備サポートされているOSは、Windows XP (32-bit) or Vista (32- or 64-bit)Mac OS X 10.5.8 or later (x86 only)Linux (tested on Linux Ubuntu Hardy Heron)今回は、W..</description>
            <content:encoded><![CDATA[
Android SDK をインストールしたので、その作業メモ。<br />
<blockquote>Android Developers<br />
<a href="http://developer.android.com/index.html" target="_blank">http://developer.android.com/index.html</a></blockquote>
<h4>1. インストール前の準備</h4>
サポートされているOSは、
<ul><li>Windows XP (32-bit) or Vista (32- or 64-bit)</li><li>Mac OS X 10.5.8 or later (x86 only)</li><li>Linux (tested on Linux Ubuntu Hardy Heron)</li></ul>
今回は、Windows XP を用いた。<br />
<br />
開発ツール (IDE) は、Eclipse が使える。<br />
バージョンは、Version 3.5.1 以上。<br />
<br />
JDKのみ、あるいは Ant を使ってもできるみたいだが、今回は Eclipse を使用した。<br />

<h4>2. インストール</h4>
<h5>2.1 インストーラの入手</h5>
インストーラ (SDK starter package) は、上記サイトの左メニューにある Download から入手できる。<br />
Windows版の現時点での最新版は android-sdk_r06-windows.zip だった。<br />

<h5>2.2 インストールの実行</h5>
前項でダウンロードした ZIP ファイルをインストール先フォルダ (場所は任意) に展開。<br />
今回は、<code>C:\android-sdk-windows</code> とした。<br />
フォルダ内のファイル、SDK Setup.exe を実行する。<br />
<br />
すると、なにやら不穏なダイアログが。。。<br />
<a href="http://k-ishik.up.seesaa.net/image/AndroidSDK01.gif" target="_blank"><img src="http://k-ishik.up.seesaa.net/image/AndroidSDK01-thumbnail2.gif" width="150" height="100" border="0" align="" alt="Android SDK Install #01" title="Android SDK Install #01" onclick="location.href = 'http://k-ishik.seesaa.net/upload/detail/image/AndroidSDK01-thumbnail2.gif.html'; return false;" style="cursor:pointer;" /></a><br />
Android SDK and AVD Manager というツールが Android SDK のレポジトリ情報をダウンロードしようとしているようだが、それがなぜかうまくいかない様子だ。<br />
エラーメッセージには "Failed to fetch..." と表示されているが、ブラウザなどから試すときちんとダウンロードできる。<br />
サーバーがダウンしているわけではないようだ<br />
<br />
いったん [Cancel] ボタンをクリックして画面を閉じる。<br />
Android SDK and AVD Manager の左メニューから [Settings] を選び、[Misc] の [Force <a href="https://..." target="_blank">https://...</a> sources to be fetched using <a href="http://..." target="_blank">http://...</a>] にチェックを入れる。<br />
<a href="http://k-ishik.up.seesaa.net/image/AndroidSDK03.gif" target="_blank"><img src="http://k-ishik.up.seesaa.net/image/AndroidSDK03-thumbnail2.gif" width="150" height="87" border="0" align="" alt="Android SDK Install #03" onclick="location.href = 'http://k-ishik.seesaa.net/upload/detail/image/AndroidSDK03-thumbnail2.gif.html'; return false;" style="cursor:pointer;" /></a><br />
すると今度はダウンロードがはじまった。<br />
これはひょっとして、とりあえずバグ回避するためにつくったオプションなのだろうか。。。<br />
<br />
さて、左メニューの [Available Packages] を見ると、今度はいろいろと表示されている。<br />
<a href="http://k-ishik.up.seesaa.net/image/AndroidSDK04.gif" target="_blank"><img src="http://k-ishik.up.seesaa.net/image/AndroidSDK04-thumbnail2.gif" width="150" height="87" border="0" align="" alt="Android SDK Install #04" onclick="location.href = 'http://k-ishik.seesaa.net/upload/detail/image/AndroidSDK04-thumbnail2.gif.html'; return false;" style="cursor:pointer;" /></a><br />
すべてにチェックを入れて、[Install Selected] ボタンをクリック。<br />
<a href="http://k-ishik.up.seesaa.net/image/AndroidSDK05.gif" target="_blank"><img src="http://k-ishik.up.seesaa.net/image/AndroidSDK05-thumbnail2.gif" width="150" height="75" border="0" align="" alt="Android SDK Install #05" onclick="location.href = 'http://k-ishik.seesaa.net/upload/detail/image/AndroidSDK05-thumbnail2.gif.html'; return false;" style="cursor:pointer;" /></a><br />
[Accept All] を選んで [Install] 実行。<br />
欲張って全部選んだものだから、ここはけっこう時間がかかった。<br />

<h5>2.3 Eclipse に ADT プラグインインストール</h5>
次は、Eclipse に ADT (Android Development Tools) プラグインをインストールする。<br />
Eclipse を起動し、[Help] メニューから [Install New Software...] を選ぶ。<br />
"Install" 画面が開くので、[Work with] 欄に
<code><a href="https://dl-ssl.google.com/android/eclipse/" target="_blank">https://dl-ssl.google.com/android/eclipse/</a></code>
と入力し、[Add] ボタンをクリックする。<br />
そして、"Add Repository" ダイアログの [Name] 欄にはわかりやすい名前 (たとえば "Android Development Tools (ADT)") を入力し、[OK] ボタンをクリック。<br />
<br />
下のツリービューの "Developer Tools" の下に "Android DDMS" と "Android Development Tools" が表示される。<br />
ついでなので両方とも選ぶ。<br />
あとは、画面の指示に従ってインストールを実行する。<br />
<br />
完了したら Eclipse を再起動し、[Window] メニューの [Preferences] を選択。<br />
左側のツリーに [Android] という項目が追加されているので、クリックして [SDK Location] に、Android SDK の展開先フォルダを指定し (今回の場合は "C:\android-sdk-windows")、[Apply] ボタンをクリックする。<br />
指定したフォルダが正しければ、下のリストビューに SDK ターゲットが一覧表示される。<br />
<br />
準備はこれで完了だ。

<h4>3. サンプルアプリの作成</h4>
Android Developers のサイトにチュートリアルがあるので、試しに最初のサンプルを作ってみる。<br />
<blockquote>Hello, World<br />
<a href="http://developer.android.com/resources/tutorials/hello-world.html" target="_blank">http://developer.android.com/resources/tutorials/hello-world.html</a></blockquote>
結果はこんな感じ：<br />
<a href="http://k-ishik.up.seesaa.net/image/AndroidSDK06.gif" target="_blank"><img src="http://k-ishik.up.seesaa.net/image/AndroidSDK06-thumbnail2.gif" width="150" height="106" border="0" align="" alt="Android SDK Install #06" onclick="location.href = 'http://k-ishik.seesaa.net/upload/detail/image/AndroidSDK06-thumbnail2.gif.html'; return false;" style="cursor:pointer;" /></a><br />
<br />
今回はここまで。<a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>技術メモ</category>
      <author>Ｋ/Ｉ</author>
                  <enclosure url="http://k-ishik.up.seesaa.net/image/AndroidSDK01.gif" length="17384" type="image/gif" />
                              <enclosure url="http://k-ishik.up.seesaa.net/image/AndroidSDK03.gif" length="24827" type="image/gif" />
                              <enclosure url="http://k-ishik.up.seesaa.net/image/AndroidSDK04.gif" length="35184" type="image/gif" />
                              <enclosure url="http://k-ishik.up.seesaa.net/image/AndroidSDK05.gif" length="35497" type="image/gif" />
                              <enclosure url="http://k-ishik.up.seesaa.net/image/AndroidSDK06.gif" length="39802" type="image/gif" />
                            </item>
        <item>
      <link>http://k-ishik.seesaa.net/article/151585574.html</link>
      <title>MeeGo を試してみた</title>
      <pubDate>Sun, 30 May 2010 18:58:43 +0900</pubDate>
            <description>モバイル向けLinuxプラットフォーム &quot;MeeGo&quot; の正式版がリリースされたので、Net PC で起動させてみた。Net PC 向けは Atom にのみ対応のようだ。今回は、Acer の ASPIRE one (BCM92045NMD) を使用した。※ちなみに、Celeron PC で試したら、最初の起動画面は表示されるものの起動しようとすると黒画面のまま先に進まなかった。VMware でも同じ。印象としては、全体的によく作り込んであると感じた。ただし、デフォルトの日本語..</description>
            <content:encoded><![CDATA[
モバイル向けLinuxプラットフォーム "MeeGo" の正式版がリリースされたので、Net PC で起動させてみた。<br />Net PC 向けは Atom にのみ対応のようだ。<br />今回は、Acer の ASPIRE one (BCM92045NMD) を使用した。<br />※ちなみに、Celeron PC で試したら、最初の起動画面は表示されるものの起動しようとすると黒画面のまま先に進まなかった。<br />VMware でも同じ。<br /><br />印象としては、全体的によく作り込んであると感じた。<br />ただし、デフォルトの日本語入力は SKK なので使いやすいとは言えない。<br />試した限りではひらがな入力はできても漢字変換ができなかった。<br />これはあくまで「プラットフォーム」なので、大きな問題ではないかもしれないが。<br /><br />さて、まずは MeeGo の公式サイトからディスクイメージをダウンロードする。<br /><a href="http://meego.com/" target="_blank">http://meego.com/</a><br />トップメニューの Downloads から、Netbook を選ぶと、"MeeGo v1.0 for Netbooks (Google Chrome Browser)" と "MeeGo v1.0 for Netbooks" の２種類が用意されている。<br />今回は "MeeGo v1.0 for Netbooks (Google Chrome Browser)" をダウンロードした (ファイルサイズ 800MB)。<br /><br />ファイルがダウンロードできたら、何らかの方法で USB メモリにコピーする。<br />たとえば、Unix系OSなら<br /><code># dd if=meego-netbook-ia32-1.0.0.20100524.1.img of=<it>デバイス名</it></code><br />などとすればよい。<br /><br />USBメモリが用意ができたら、あとはそこからブートするだけである。<br />Net PCの起動時にBIOS設定画面を表示させ、ブート順を変更する。<br />USB メモリは、たとえば USB HDD に相当するので、それをいちばん上に移動させる。<br />そして、作成したMeeGo USBメモリをNet PCに挿して起動すればMeeGoの起動画面が表示される。<br /><a href="http://k-ishik.up.seesaa.net/image/MeeGo001.GIF" target="_blank"><img src="http://k-ishik.up.seesaa.net/image/MeeGo001-thumbnail2.GIF" width="150" height="112" border="0" align="" alt="MeeGo #01 - 起動画面" onclick="location.href = 'http://k-ishik.seesaa.net/upload/detail/image/MeeGo001-thumbnail2.GIF.html'; return false;" style="cursor:pointer;" /></a><br />ここで "Installation Only" を選べばローカルディスクに MeeGo がインストールされるのだが、今回はとりあえず "Boot MeeGo" を選んで USB メモリから起動する。<br />※ローカルディスクにインストールすると、日本語環境になったり、設定が保存されたりするようになる。<br />　ただし、それ用のパーティションを切っておくか、Net PCを1台つぶす覚悟を決めるか、しておく必要がある。<br /><a href="http://k-ishik.up.seesaa.net/image/MeeGo002.png" target="_blank"><img src="http://k-ishik.up.seesaa.net/image/MeeGo002-thumbnail2.png" width="150" height="87" border="0" align="" alt="MeeGo #02 - Myzone" onclick="location.href = 'http://k-ishik.seesaa.net/upload/detail/image/MeeGo002-thumbnail2.png.html'; return false;" style="cursor:pointer;" /></a><br /><br />ヘッダ部にメニューが並んでいる。<br />それぞれ、以下のような画面が表示される。<br /><ul><li><a href="http://k-ishik.up.seesaa.net/image/MeeGo003.png" target="_blank">ゾーン</a></li><li><a href="http://k-ishik.up.seesaa.net/image/MeeGo004.png" target="_blank">アプリケーション</a></li><li><a href="http://k-ishik.up.seesaa.net/image/MeeGo005.png" target="_blank">ステータス</a></li><li><a href="http://k-ishik.up.seesaa.net/image/MeeGo006.png" target="_blank">ピープル</a></li><li><a href="http://k-ishik.up.seesaa.net/image/MeeGo007.png" target="_blank">インターネット</a></li><li><a href="http://k-ishik.up.seesaa.net/image/MeeGo008.png" target="_blank">メディア</a></li><li><a href="http://k-ishik.up.seesaa.net/image/MeeGo009.png" target="_blank">デバイス</a></li><li><a href="http://k-ishik.up.seesaa.net/image/MeeGo010.png" target="_blank">Bluetooth</a></li><li><a href="http://k-ishik.up.seesaa.net/image/MeeGo011.png" target="_blank">ネットワーク</a></li><li><a href="http://k-ishik.up.seesaa.net/image/MeeGo012.png" target="_blank">Time and Date</a></li></ul>まずはネットワークの設定。<br />利用できる無線LANの一覧が表示されているので、[Connect] ボタンをクリックしてパスワードを入力し、接続する。<br /><a href="http://k-ishik.up.seesaa.net/image/MeeGo013.png" target="_blank"><img src="http://k-ishik.up.seesaa.net/image/MeeGo013-thumbnail2.png" width="150" height="87" border="0" align="" alt="MeeGo #13 - WiFi接続" onclick="location.href = 'http://k-ishik.seesaa.net/upload/detail/image/MeeGo013-thumbnail2.png.html'; return false;" style="cursor:pointer;" /></a><br /><br /><a href="http://k-ishik.up.seesaa.net/image/MeeGo014.png" target="_blank"><img src="http://k-ishik.up.seesaa.net/image/MeeGo014-thumbnail2.png" width="150" height="87" border="0" align="" alt="MeeGo #14 - WiFi接続完了" onclick="location.href = 'http://k-ishik.seesaa.net/upload/detail/image/MeeGo014-thumbnail2.png.html'; return false;" style="cursor:pointer;" /></a><br /><br />Bluetooth も使える。<br />[Add a new device] ボタンをクリックするとデバイスを検索して表示してくれるので、[Pair] リンクをクリックしてデバイスを追加する。<br /><a href="http://k-ishik.up.seesaa.net/image/MeeGo015.png" target="_blank"><img src="http://k-ishik.up.seesaa.net/image/MeeGo015-thumbnail2.png" width="150" height="87" border="0" align="" alt="MeeGo #15 - Bluetoothデバイス検索" onclick="location.href = 'http://k-ishik.seesaa.net/upload/detail/image/MeeGo015-thumbnail2.png.html'; return false;" style="cursor:pointer;" /></a><br /><br /><a href="http://k-ishik.up.seesaa.net/image/MeeGo016.png" target="_blank"><img src="http://k-ishik.up.seesaa.net/image/MeeGo016-thumbnail2.png" width="150" height="87" border="0" align="" alt="MeeGo #16 - Bluetoothデバイス追加" onclick="location.href = 'http://k-ishik.seesaa.net/upload/detail/image/MeeGo016-thumbnail2.png.html'; return false;" style="cursor:pointer;" /></a><br /><br />ステータスというのはコミュニケーションサービスを表示する画面で、現在は Last.fm と twitter のクライアントが用意されている。<br /><a href="http://k-ishik.up.seesaa.net/image/MeeGo017.png" target="_blank"><img src="http://k-ishik.up.seesaa.net/image/MeeGo017-thumbnail2.png" width="150" height="87" border="0" align="" alt="MeeGo #17 - Twitter設定" onclick="location.href = 'http://k-ishik.seesaa.net/upload/detail/image/MeeGo017-thumbnail2.png.html'; return false;" style="cursor:pointer;" /></a><br /><br /><a href="http://k-ishik.up.seesaa.net/image/MeeGo018.png" target="_blank"><img src="http://k-ishik.up.seesaa.net/image/MeeGo018-thumbnail2.png" width="150" height="87" border="0" align="" alt="MeeGo #18 - TwitterのTL表示" onclick="location.href = 'http://k-ishik.seesaa.net/upload/detail/image/MeeGo018-thumbnail2.png.html'; return false;" style="cursor:pointer;" /></a><br /><br />メールは、Evolution が採用されている。<br />ただし、メールの送信がなぜかうまくいかなかった。<br />送信されずに送信ボックスに残ったままだ。<br />原因不明。<br /><br />ピープル画面は、メッセンジャーソフトのクライアントで、Facebook、Google Talk、ICQ、AIMなど、複数のサービスを使用できる。<br /><br />ちなみに、アプリケーション画面のシステムツールからターミナルを起動できる。<br />いざという時にはこれが使えそう。<a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>技術メモ</category>
      <author>Ｋ/Ｉ</author>
                  <enclosure url="http://k-ishik.up.seesaa.net/image/MeeGo001.GIF" length="60069" type="image/gif" />
                              <enclosure url="http://k-ishik.up.seesaa.net/image/MeeGo002.png" length="138210" type="image/png" />
                              <enclosure url="http://k-ishik.up.seesaa.net/image/MeeGo003.png" length="62968" type="image/png" />
                              <enclosure url="http://k-ishik.up.seesaa.net/image/MeeGo004.png" length="87132" type="image/png" />
                              <enclosure url="http://k-ishik.up.seesaa.net/image/MeeGo005.png" length="53702" type="image/png" />
                              <enclosure url="http://k-ishik.up.seesaa.net/image/MeeGo006.png" length="61022" type="image/png" />
                              <enclosure url="http://k-ishik.up.seesaa.net/image/MeeGo007.png" length="56351" type="image/png" />
                              <enclosure url="http://k-ishik.up.seesaa.net/image/MeeGo008.png" length="57890" type="image/png" />
                              <enclosure url="http://k-ishik.up.seesaa.net/image/MeeGo009.png" length="81797" type="image/png" />
                              <enclosure url="http://k-ishik.up.seesaa.net/image/MeeGo010.png" length="96492" type="image/png" />
                              <enclosure url="http://k-ishik.up.seesaa.net/image/MeeGo011.png" length="95330" type="image/png" />
                              <enclosure url="http://k-ishik.up.seesaa.net/image/MeeGo012.png" length="63866" type="image/png" />
                              <enclosure url="http://k-ishik.up.seesaa.net/image/MeeGo013.png" length="109075" type="image/png" />
                              <enclosure url="http://k-ishik.up.seesaa.net/image/MeeGo014.png" length="106178" type="image/png" />
                              <enclosure url="http://k-ishik.up.seesaa.net/image/MeeGo015.png" length="103143" type="image/png" />
                              <enclosure url="http://k-ishik.up.seesaa.net/image/MeeGo016.png" length="101320" type="image/png" />
                              <enclosure url="http://k-ishik.up.seesaa.net/image/MeeGo017.png" length="43639" type="image/png" />
                              <enclosure url="http://k-ishik.up.seesaa.net/image/MeeGo018.png" length="103665" type="image/png" />
                            </item>
      </channel>
</rss>

