プログラマ視点からみるマークアップ

Kazuhito Hokamura

Kayac Inc.

April 16, 2009

自己紹介

外村の写真

名前
外村和仁(ほかむらかずひと)
所属
面白法人カヤック 技術部
職業
プログラマ
マークアップエンジニア
ブログ
Webtech Walker

自己紹介

今流行りの草食系男子です

自己紹介

今流行りの草食装飾系男子です

面白法人カヤックの紹介

カヤックサイト

書籍の紹介

FLASHでつくる AIRアプリケーションレシピブック   瀬尾浩二郎

今日の内容

対象の規模

JavaScriptやサーバーサイドプログラムを使った
中規模~大規模サイトを担当する装飾系エンジニア向け

例えば...

楽天

楽天

http://www.rakuten.co.jp/

mixi

mixi

http://mixi.jp/

こえ部

こえ部

http://koebu.com/

1. 効率アップの鍵は
"プログラマとのコミュニケーション"!

こういうことありませんか?

どうすればいいの?

プログラマとコミュニケーションをとる、
これだけ。

この連携が円滑にいくと開発の効率がよくなる

図

コミュニケーションの例

  1. プログラマとマークアップエンジニアの作業領域を確認
  2. HTMLデータ渡すときにマークアップの意図を伝える
  3. プログラマが組み込んだ後のソースをチェックする

2. プログラムと相性のいいマークアップ

要点

  1. HTMLはできる限り共通化しよう
  2. JavaScriptが得意なことはJavaScriptで
  3. フォームのマークアップは要注意!

HTMLの共通化

共通化できるところを切り出して他のページでも使う

グローバルナビゲーションの例

HTMLを共通化しない場合

<ul class="gnavi">
    <li><a href="/">トップ</a></li>
    <li><em class="current">ニュース</em></li>
    <li><a href="/ranking">特集</a></li>
</ul>

グローバルナビゲーションの例

HTMLを共通化する場合

<body class="news">
...
<ul class="gnavi">
    <li id="gnaviTop"><a href="/">トップ</a></li>
    <li id="gnaviNews"><a href="/news">ニュース</a></li>
    <li id="gnaviSpecial"><a href="/special">特集</a></li>
</ul>

共通化とマークアップ

HTMLが共通化できるところはできるだけ共通化したほうがいいが...

プログラムに合わせて無理にHTMLを変える必要ない。

↓

プログラマと話して落としどころを見つけよう

JavaScriptが得意なことはJavaScriptで

CSSだけでやろうとすると手間がかかるが、
JavaScriptだとすぐできるということも多い。

例えば...

要素の高さを揃える例

要素の高さを揃える例

一番高いブロックに全ての要素の高さを合わせるレイアウト

高さ揃え

要素の高さを揃える例

要素の高さを揃える例

JavaScriptだとこれでできちゃいます(jQuery使用)。

var maxHeight = 0;
$('ul.itemList li').each(function() {
    height = $(this).height();
    if (maxHeight < height) {
        maxHeight = height;
    }
}).height(maxHeight);

フォームのマークアップ

フォームのマークアップ

  1. formの要素はHTMLを変更したほうが効率がいいこともある
  2. form要素をCSSのセレクタにかかない

3. 一歩上をいくマークアップ!
外部サービスで利用されることも想定しよう!

外部から利用されるケース

たとえば、こんなものに使われます

サービスとしてはこちら

外部プログラムに対するアクセシビリティ

つまり

一歩先を行くマークアップは自分たちだけじゃなく
外部サービスにも優しい!

本日のまとめ

本日のまとめ

採用情報

オープンでコミュニケーションのとりやすいカヤックのプログラマ達と一緒に働いてみたい装飾系エンジニアを募集しています。

ありがとうございました。