コーディングガイド

この資料を作ったときに在籍していた企業では、mindtouchを使ったwikiで技術情報等を共有していたのですが、いろいろありすぎて、全部読むのが大変な状態でした。
私個人の意見としては、社内で共通のルールに則ってコーディングすることは悪いことではないとは思うものの、あまりそれにこだわりすぎると、そのページに特化した工夫や最新のコーディング技術の導入の弊害にもなるので、そういうのは緩くて良いのではないかなと思います。
その企業のweb制作チームはデザイナー中心で、コーディング専門の人は少なかったので、デザイナーさんたちにも直ぐに使えるコーディングのコツとかあったらいいよねってことで頼まれたので、絶対ルールではないけれど注意したいことをまとめた資料を作りました。

web制作のルール(W3C的なもの・web標準)やトレンドはころころ変わりますし、あくまで一企業ではこんな感じでしたという資料です。
その企業ではHTML4またはXHTMLでコーディングしていたので、HTML5についてはここでは余り触れられていません。
流行のものや最新のものが正義とは限りませんが、その時の主流のものを取り入れて実践で学ぶことも良いことだと思います。
これ間違ってるよ!最近はこうするのが正しいとされているよ!というところがあれば、そちらの方を優先にコーディングしてください。

上記はページ内リンクです。全部丁寧に読む必要はないので、気になる項目や再確認したい項目をクリックしてチェックしてください。


できた!の前に確認すること(見た目以外もチェック)

デザイナーさんがコーディングすると、几帳面な人はそんなことまで?ということもチェックしてくれたりするのですが、どうしたって見た目(文言や画像、ボタン画像のマウスオーバー/アウトの処理など)のチェック(しかも自分が使い慣れているブラウザだけ)で最終確認を終えてしまいがちです。
デザイナーさんは次から次とデザインの仕事が待っていたりするので、なおさらです。
でも、ユーザーは自分と同じ環境でそのwebページを見ているわけではないので、もう少し時間を割いて、他にも色々チェックしましょう。

上記はページ内リンクです。全部丁寧に読む必要はないので、気になる項目や再確認したい項目をクリックしてチェックしてください。

クロスブラウザチェック

最低でも自社の(クライアントの)サイトポリシーなどに掲載されている推奨環境に則って、チェックしましょう。
余裕があれば、IE6など多少古いブラウザでも、表示崩れが起きていても最低限テキスト情報は読める程度の品質を確保するなど、ユーザーが困らないように気を遣ってあげてください。

  • OSの種類とバージョン(Windows/MacOS/iOS/Androidなど)
    PC向けなのか、スマートデバイス(スマートフォンやタブレットなど)向けなのか、その両方なのかで、確認すべきOSは異なってくると思います。この資料を作った企業では、Windowsパソコンもしくはスマートデバイスしかサポートしていませんでしたので、MacOSを確認することはありませんでした。
    ターゲットユーザによってはUNIXやLinuxの環境も確認する場合があるかもしれません。
  • Firefox(以下FF)、Chrome、Operaの最新版
    これらに関しては、古いバージョンの確認をチェック対象とする企業は少ないと思います。
    参考:Firefoxを複数バージョン共存させる方法 - 覚え書き.com
    参考:古いバージョンのChromeと複数共存させる方法 - モノワスレ
  • IE
    IEは最もサポート対象となるバージョンが企業によって異なるとおもいます。とはいえ、古くてもIE6ぐらいまでかと思います。
  • Safariの最新版
    SafariはWindows向けの提供が終了しているので、Windows環境では無視しても良いとおもいますが、MacOS等Apple製品では標準ブラウザになるとおもいますので、どの企業でもMacOSやiOSがサポート対象なら必ずチェックすべきかと思われます。
  • Microsoft Edge(Windows10以降)
    まだ正式リリースしていないですが(2015/07/29にはリリースされるようです)、Windowsの次期バージョンからIEではなくEdgeというブラウザになります。
    すでに準備している企業もあるかもしれませんね。

    正式リリースして久しいですが、企業での導入はどんなものなのでしょうかね・・・。検証用に1台導入されれば良い方だったりするのが実態なのかもしれませんが、ユーザーの方はアップグレードしていたりするので、チェックは必要です。
  • スマートデバイスのみで展開しているブラウザ
    Android標準ブラウザや、PC向けではあまり有名ではないにも関わらずスマートデバイスではわりとユーザーが多いブラウザ、スマートデバイスでのみ展開しているブラウザもあります。
    それらすべてをチェックするのは大変なので、どれをチェック対象にすべきか、自社サイト・クライアントサイトの責任者とよく話し合っておきましょう。
  • Vivaldiなど新しいブラウザ
    ブラウザはFFやIEなどメジャーなもの以外にもいろいろあります。ほとんどがメジャーなブラウザなどをベースにしていたりしますが、独自路線のものもあります。
    多くの場合は無視して良いほどユーザーが少なかったりしますが、メジャーブラウザの仲間入りしそうなものもあるので、たまには個人的に情報を集めて、そういうブラウザでもチェックしてみると良いと思います。

titleタグ/description/keywords/Copyright/フッター表記

見た目だけではなく、htmlソースの確認もしましょう。
特に、titleタグ/description/keywordsの内容はコーディング開始時は決まってなくて、最終的に差し替えるという段取りだったりすると、忘れてしまいがちです。
また、既存のファイルをコピペしてコーディングした場合は、headタグ内が古いテキストのままだったりします。
内容が決まっていなくても、うっかり忘れたまま公開してしまってもいいようなテキストを最初の段階で入れておくと、被害が最小限ですみます。
遊び心は大切ですが、仮テキストを入れる場合はくれぐれも冗談やしゃれ、内輪ネタなどユーザーに見られたらまずいテキストを入れないように・・・本当にうっかりでは済まない事態になった事件も過去にはありました。

Copyrightやフッター表記は基本的には、たいてい新規案件でも早い段階で決まっているはずなので、正確なテキストやリンク先などの情報をなるべく早く回してくれるよう頼んでおきましょう。
共通画像やインクルードファイルにしておくと、例えば西暦などをコピーライトに入れておくタイプの場合など、変更があった際に作業が楽になります。

表記チェック

自社サイトなら自社サイトの(複数サイトあるならそのサイトごとの)、クライアントならクライアントごとの表記ルールが存在することがあります。
たとえば、英字の社名ならすべて半角大文字で表記するとか、「受け取る」ではなく「受取る」に統一するなどといったルールがあるのであれば、それらのチェックもしましょう。

実際のコーディング業務では、excelやword、テキストファイルのような電子ファイルで原稿が送られ、それをコピペすることが多いと思います。
なので、表記ミスに関しては原稿担当者の責任の範疇でしょうが、人間ですから間違いや変換ミスは当然あり得ます。
(1文字抜かしてコピペしたなど、コーダーによるミスもあり得ます。)

ななめ読みでも何でもよいので、コピペしたついでに目を通したり、最終チェックでさらっと文章や画像テキストにも目を通しましょう。
画像の場合はフォントにもよりますが、テキストの場合は慣れるとさらっと目を通しただけでも、半角英数にすべきなのに全角英数になっているとか、わりとすぐに見つけられます。

また、日付に曜日がついているようであれば、その日付と曜日の整合性がとれているかも、できればチェックしてあげると(当然コーディング後に原稿担当者やディレクターなどもチェックするでしょうから)、何重ものチェックになって良いでしょう。

画像の代替テキスト

タイトル画像やボタン画像など、意味のある画像には必ず代替テキストを入れてください。
代替テキストとはimgタグにおけるalt属性や背景画像としてcss設定した(CSSスプライト)タイトル画像やリンクボタン等の要素内テキストのことです。ちなみにimgタグの場合は空で良いのでalt属性は必ず入れてください(空とは半角スペースなども入っていない状態です)。
何らかの理由で画像が表示されなかった場合の対策、SEO対策、音声読み上げブラウザ対策といった理由があります。

  • 画像のテキストと代替テキストは一致するように
    例外としては、例えば画像に含まれるテキストが「詳しくはこちら」だけの場合、前後の文章などで何について詳しくか判断できないなどといった理由があるならば「○○についてはこちら」などより親切な文言にしても良いです。
    また、やたらと長い文章が画像になっている場合は、要約やキーワードのみでも良いでしょう(特にaltの場合はIEでマウスオーバーしたときにツールチップが邪魔して見辛くなるうえに、修正時の整合性を保つのがたいへんなので)。
    とはいえ、企業によっては代替テキストをどの程度にするべきかルールが明確になっていることもあると思うので、社内のルールに従ってください。
  • 代替テキストに日付・金額が入っている場合は特に注意
    コーディング作業中やwebページ公開後に修正が入ると画像は修正したものの、代替テキストはそのままだったりして整合性がとれていないことがあります。特に日付は応募締切など、間違っていると厄介なものが多いです。そういう意味ではプレゼント内容や製品の金額なども要注意です。
  • HTML5におけるalt属性
    HTML5ではalt属性について、取り扱いが大幅に変更され、より厳密になりました。詳しくは以下のリンクを参照するか、google先生に訊いてみてください。
    HTML5: img 要素の alt 属性 の仕様alt 属性

リンクの確認

正しくリンク先にジャンプするか、確認してください。とくに、未公開ページへのリンクはURLがちゃんと指定通りか確認しましょう。
コーディングしたwebページが公開された直後にも確認するとなお良いです。

SNSの設定

Facebook(以下FB)の「いいね」ボタンや「シェア」ボタン、Twitterのツイートボタンやタイムラインなどを設置することがあります。
設置する場合はFBの場合はogpの設定および各ボタン用のスクリプト、Twitterもスクリプトの記述に誤りがないか確認してください。
とくにFBの場合、公開されないと最終確認ができないので、注意が必要です。

  • FB用OGPの記述(ページのタイトル、タイプ、説明、URL、FB画像のパス、サイトタイトル等)に誤りはないか
  • FBのスクリプトのオプション(特にdata-href)に誤りはないか
  • Twitterのスクリプトのオプション(特にdata-text、data-url、data-hashtags)に誤りはないか

設置方法についてはFB側やTwitter側の都合でしょっちゅう仕様が変えられるので、ここではあえて説明しません。
最新の情報はGoogle先生によろしくです。

FB側やTwitter側の方で、古いブラウザへのサポートを終了しているようです。たとえば、IE7以下でFBのいいねボタンが表示されなくても問題ありません。また、IE8以下でtwitterウィジェット(ツイートボタンやタイムラインなど)が表示されなくても問題ありません。いずれも、提供元のサポートが終了しているので、どうしようもありません。(2015/01現在)

トラッキングコードや広告タグなどのコードミス・設置場所

google Analyticsのようなwebページのアクセス解析をするためのコードや広告用タグなど、本来のwebページに関係ないコードを挿入する場合もあると思います。
企業のwebサイトである以上、解析などはどうしても必要になってくると思うので、正しいコードを適切な場所(bodyの終了タグ直前に入れるとか、headタグ内に入れるとかいろいろルールがあります)に設置してください。
ブラウザでの表示だけを気にしていると、こういったコードを挿入し忘れたりするので、注意が必要です。

Google Analyticsの設置方法は、コードのバージョンによって異なります。google側の仕様変更も突然あったりするので、詳しくはgoogle先生に訊いてみてください。

バリデートチェック

この資料を作った企業では、できるだけweb標準に則った形でコーディングすることになっていました。
あまりweb標準について気にしない企業もあるので、その辺りは社内のルールに従ってください。
web標準に準拠するのであれば、見た目が大丈夫でもHTMLやCSSのソースとしては誤っている場合もあるので、HTMLやCSSの妥当性をチェックしてください。
ただし、JavaScript(以下js・・・jquery等を含む)や開発コードや広告タグの関係上、あるいは古いHTMLコードの改変が難しい等(あまりに複雑なtableレイアウトのためうっかり修正すると表示が崩れるなど)の理由で厳密にはW3C等のルールに従えない場合もあります。バリデートチェックでエラーが消えないからと言って、神経をすり減らす必要はありません(担当が神経質なディレクターさんとかプロデューサーさんだったら、がんばって説得してください)。
見た目がデザインに沿って表示されており、動作も問題なく、ユーザーに見える形でエラーが表示されず、セキュリティ的に問題がないなければ、納期優先です。

web標準で大事なのは記述の誤りをなくすこともそうですが、ページの構造を理解し、それを正しく組み立てることです。
例えばh1タグのテキストについて説明した文章(pタグなど)が、そのh1タグに関連していることがわかる構造(同じ親タグ内にあるなど)にします。
妥当な構造を組み立てられることは、今後主流になるはずのHTML5を使いこなすためにも重要です。
web標準の重要性については、以下のページあたりを参考にしていただければ・・・。

もっと詳しく知りたい場合は、例によってGoogle先生へどうぞ。

というわけで、コーディングを極めたい人はこのあたりのことも理解してください。
そうでもない人は、とりあえずバリデートチェックして、可能な限りエラーをなくしてみてください(上記のとおり、妥当な理由があればエラーを無視しても結構です)。


コーディングを始める前に

話は前後しますが、上記はコーディング業務がある程度できる人向けで、手っ取り早く何を確認すべきかという資料でした。
では、そもそもコーディングする前に何を準備したらいいかという話です。
もちろん、仕様やデザインはすでに手元にある前提です。

上記はページ内リンクです。全部丁寧に読む必要はないので、気になる項目や再確認したい項目をクリックしてチェックしてください。

フレームワークは何?

Dreamweaverなどのエディタのみを使ってのweb制作(コーディング)というのも、いまどき少ないと思います。
svnをつかってコード管理をし、Eclipseのような開発環境を使用したり、Ruby on RailsやASPといったフレームワークを使用したり、あるいはCMSを使っている場合もあると思います。一つの企業で複数のフレームワーク(等)を使用している場合もあるでしょう。
何を使用しているかでファイル構成が違ったり、開発・運用ルールが違ったりするので、なにを使用しているか、コーディングの前に意識しましょう。

Doctypeの確認(XHTMLかHTML4か、あるいはHTML5か)

XHTMLかHTMLか、およびそのバージョンによって、htmlコードの記述の仕方が多少違います。
できるだけweb標準に準拠する形でコーディングするためにもDoctypeを確認してください。

また、XHTMLやHTML4の場合、DTDの種類にも注意してください。
多くの場合はTransitionalだと思います。
DTDの種類によって非推奨の要素および属性の扱いが変わってきます。
また、表示や動作に思わぬ影響が出る場合があるので、DTDの変更には注意してください。

文字コードの確認(UTF-8やshift-jisなどcharset)

文字化けの原因になるので、文字コードが何であるかは常に意識してください。
UTF-8やshift-jisがほとんどだと思いますが、EUCなど他の文字コードを使っている場合もあります。
HTMLファイルだけではなく、cssファイル・jsファイルについても同様です。

  • metaタグや@charsetを見る
    htmlファイルはmetaタグを、cssファイルは@charsetをみると文字コードがわかります。
  • metaタグに記載がないときはDWで確認
    コードビューを見ると右下あたりに、文字コードの表示があるので確認してください(もしかしたら、バージョンによって多少違うかも)。
  • リッチテキストエディタで確認
    サクラエディタなどのリッチテキストエディタでファイルを見ると確認できます。

たまにmetaではUTF-8を指定しているのに、shift-jisで保存されているもの(またはその逆)があります。
DW等エディタの環境設定がそうなっているからだと思うのですが、あとから気づいたら、変更しておいてください。

  • Dreamweaverによる文字コードの変更 - clear sky source
    ただし、DWで文字コードを変更すると、文字化けるときがあります(古いのなんかだとそうだった)。
    なお、SVNを使用しているのであれば、うっかりそのまま保存して閉じてしまったとしても、SVNのログから戻せます。
  • リッチテキストエディタで別名保存して文字コードを変更する
    サクラエディタなどで別名保存をするときに、文字コードを変更する方法もあります。こちらの方が、文字化けの心配がないかもです。

なお、htmlファイルはshift-jisなのに、読み込んでいるcssファイルやjsファイルはUTF-8ということもあります。
htmlファイルと読み込む外部ファイルの文字コードが一致しているのが理想ですが、場合によってはそのまま利用せざるを得ません。この場合、例えばjs ファイルにエラーメッセージが日本語で入っていたりすると、html側でそのエラーメッセージを表示させたとき文字化けたりします。
そういうわけで、ファイルを読み込むときに一工夫必要です。

<script type="text/javascript" src="script.js" charset="utf-8"></script>
<link href="style.css" media="screen" rel="stylesheet" type="text/css" charset="utf-8" />

文字コードが一致しないときはこのようにcharset属性で指定してください。

その他metaタグ(headタグ内の要素)を確認・・・titleタグ、descriptionおよびkeywordsの内容など

XHTML1.0、HTML4.01、HTML5で必須のmetaタグ(不要なmetaタグ)が違います。
また、企業によって(クライアントによって)必要とするmetaタグ等もあります。
事前に良く確認しましょう。
なお、既存ページをコピペして使い回すと楽ですが、titleタグの内容やdescriptionなどテキスト部分をそのページに合わせて書き換えるのを忘れないようにしましょう。

共通の注意点

  • metaタグのcharset(文字コード)の指定はできるだけheadタグ内の上の方に(日本語が出てくる前に)記述
    でないと、指定する意味がないです。
  • <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    この資料を作ったときに在籍していた企業では、IE10が出てきたときに、当初初期モードでFlashが表示されなかったり(ユーザがFlashに対応するモードに変更すれば表示された)、いろいろ問題があったため、content="IE=edge"の「edge」部分をIE8とかEmulateIE8とかにして古いIEに合わせて表示するようにしていました。
    しかし、これを指定してしまうとせっかくCSS3を(ある程度)使えるIE10以降なのにCSS3が表示されなかったり、Twitterウィジェットが表示されなくなったり(IE8以前はサポートされなくなった)、ちらほら問題が出てきました。
    何より、最新のIEを使うユーザーも増えてきたことですし、古いIEに合わせる意味がなくなってきたので、最新のIE(もしくは表示しているIEのバージョンそのもの)を優先するようにcontentの値をIE=edgeとするようになりました。
    個人的にはそもそもこの記述がいらないのでは?と思ったりもしなくもないですが・・・
    とはいえ、お勤めの企業やクライアントによっては、互換表示させることになっているところもあると思うので、社内ルールに従ってください。
    (>の直前の半角スペース+スラッシュはHTML4の場合は削除してください。HTML5の場合は合ってもなくても良いです。)
    <参考>IE11のX-UA-Compatibleの使い方/動作仕様IEに互換表示をさせないX-UA-Compatibleの指定META タグと将来の互換性のロック
  • OGP(主にFB向け)
    OGPを正しく記述していないと、FBのいいねボタンやシェアボタンが正しく機能しません。
    なお、OGPはmixiなどFB以外でも設定することがあります。
    <参考>Facebook以外のSNSでのOGPに関する話
  • titleタグ、descriptionおよびkeywordsの内容確認
    SEO対策として重要視している企業もあります。記入漏れに気をつけましょう。
    特に、仕様書やデザインができた段階でもまだこの部分の内容について未定だったりすると、仮のテキストを入れておいたりすると思います。うっかり修正忘れが発生しても問題がないように、当たり障りのないテキストやそのwebページの内容に沿ったテキストを入れておきましょう。
    既存ページのソースをコピペしたときも、コピー元のテキストが残っていないように注意してください。
  • ショートカットアイコンの有無
    ブラウザのタイトルバーに表示するアイコンですが、たまに(もともとないのではなくて)ファイルパスが間違っていて表示されないwebページに遭遇します。正しいパスを指定しましょう。
  • google-site-verification
    GoogleウェブマスターツールのMETAで、ウェブマスターツールで所有権を確認できるそうです。
    必要とされたら入れてください。contentの値はそのwebページの制作を依頼した依頼元(企画とかディレクターとか)に確認しましょう。
    <参考>Googleがサポートしているメタタグ
  • robots
    これも必要であれば入れてください。たぶん、SEO対策に一生懸命なところは必要だと思います。
    robotsの正しい記述の仕方は、ネットにたくさん落ちているので、いろいろ見て参考にしてください。
  • 外部CSSファイル、JSファイルを正しく読み込む
    headタグ内(やbodyタグ内)に直接記述するのではなくて、CSSやjsを外部ファイルにして読み込んでいる場合は、正しいパスを指定してください。
    正しく読み込めないと、思うように表示しなかったり、動作しなかったりします。
  • google Analytics codeの有無
    google Analyticsをつかってアクセス解析しているのであればAnalytics用のスクリプトをheadタグの終了タグ直前に記述してください。
    google側の仕様変更などによって、スクリプトや記述位置が変更される可能性があります。
    トラッキングコードの誤りがないかの確認を忘れないでください。

以下はheadタグ内の記述の一例です。

HTML 4.01 Transitional
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>ページタイトル</title>
<meta name="description" content="ページ概要">
<meta name="keywords" content="キーワード1,キーワード2">
<link href="ショートカットアイコンのパス" rel="shortcut icon">
<link href="cssファイルのパス" rel="stylesheet" type="text/css">
<script type="text/javascript" src="jsファイルのパス"></script>
</head>

<body>
<!--ここにコンテンツ-->
</body>
</html>
XHTML 1.0 Transitional
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<title>ページタイトル</title>
<meta name="description" content="ページ概要" />
<meta name="keywords" content="キーワード1,キーワード2" />
<link href="ショートカットアイコンのパス" rel="shortcut icon" />
<link href="cssファイルのパス" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jsファイルのパス"></script>
</head>

<body>
<!--ここにコンテンツ-->
</body>
</html>

FB用OGPを記述する際はhtml開始タグ部分が
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://ogp.me/ns/fb#">
になります。

HTML5
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="format-detection" content="telephone=no">

<title>ページタイトル</title>

<meta name="description" content="ページ概要">
<meta name="keywords" content="キーワード1,キーワード2">
<link href="ショートカットアイコンのパス" rel="shortcut icon">
<link href="cssファイルのパス" rel="stylesheet">
<script src="jsファイルのパス"></script></head>

<body>
<!--ここにコンテンツ-->
</body>
</html>

FB用OGPを記述する際はhead開始タグ部分が
<head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# website: http://ogp.me/ns/website#">
になります。

HTML5はスマートデバイス向けに使用されることが多いであろうことから、viewportもいれました。
<参考>これがスマートフォン向けサイトを作るときの viewport 設定3パターンだ

条件付きコメントは使用しない

IEのバージョンごとに使い分けができる便利な手段ですが、IEの独自仕様なので、本来使うべきではありません。
とはいえ、便利なので結構使っているwebページはあります。
しかし、最新バージョンのIEでは条件付きコメントをサポートしなくなりました。
他にもバージョンごとのファイルの管理が煩雑になるなど問題をはらんでいることから、今後は使用をやめましょう。
<参考>IE条件付コメントまとめ条件付きコメントがサポートされなくなった

font-family

フォントファミリーはなんですか?
既存のページを修正したり、既存をコピペして新規ページを追加するときは、それほど意識しなくてもよいかもしれませんが、新しくサイトを立ち上げたりする際や、HTMLをまるっと最初からコーディングするときなどは意識しましょう。

cssできちんと設定されているか、確認しましょう。
サイト全体ではサンセリフ系のフォントファミリーで統一されていたのに、とくに理由もなく1ページだけセリフ系のページが存在したりすると、サイト全体の統一感がなくなります。

もちろん、視覚効果を狙うなどわざとほかのページとは違うフォントを使うこともあります。

日本語フォントでは可読性や汎用性からMS P ゴシックやメイリオ、ヒラギノやOsakaなどのサンセリフ系をフォントファミリーとして設定しているところが多いようです。

なお、Windows8.1で游ゴシック(Yu Gothic)が搭載されました。游ゴシックはMacOSやiOSにも搭載されているため、今後はこのフォントを採用するサイトが増えるかもしれません。
ただ、今のところWindows7ユーザーも相当数いると予想され、本来の游ゴシックとwindows8.1に搭載された游ゴシックとでは、差異もあることからユーザに受け入れられない可能性もあり、すぐにどうこうということではないです。
あ。もちろんOS Xの游ゴシックとも差異があるようです(笑)

ちなみに、Windows10でもシステムフォントに採用されるとの噂なので、游ゴシックがすぐに消えるということもなさそうです。

広告タグの有無の確認

お勤めの企業やクライアントによっては、広告タグの挿入が必要な場合があります。
たいていbodyの終了タグ直前に挿入します。
広告タグのscriptタグにはtype属性が入っていない場合があります。たいていjsなのでtype="text/javascript"を追加してください(HTML5の場合は不要です)。

ファイルの設置場所・命名規則

webページ(htmlファイル)とそれに付随するファイル(cssファイルや画像ファイルなど)とでアップするサーバが違うことがあります。自社のサイトやクライアントサイトがどうなのか確認してください。
ディレクトリ構造はhtmlファイルと付随するファイルで同じになることが多いと思いますが、サーバが違っている場合はアップするサーバを間違えないようにしましょう。

また、お勤めの企業やクライアントによってはファイル名(フォルダ名)の名づけルールが存在している場合があります。
その場合は、それにしたがってファイル名やフォルダ名をつけましょう(クライアントやディレクター等から事前にどんな名前にするか指示がある場合もあります)。
一般的な命名規則についてはの話は以下にまとめてあります。
<参考>名づけルール

なお、テストサーバと公開サーバでファイル名やフォルダ名を変更することがある企業にお勤めの場合は、FBのいいねボタン設置などでは、本番URLがわからないと困るので、公開前に責任者に確認しましょう。

デザインを見て全体的な構造を大まかに考えてからコーディングを始める

デザインした人以外がコーディングする場合は、まず、デザインの全体をみて、大まかに構造をとらえてください。
ここはh1タグで、ここはdivで一つにくくってから中のオブジェクトを組み立てて、ここはリスト構造に・・・となんとなくhtmlの構造が浮かんだら、いよいよコーディングを開始してください。

なんとなくでも良いのでページ全体の構造を把握すると、構造的に意味のあるwebページをコーディングできます。


コーディングするうえで気を付けたいこと

作業するwebページのことを把握できたら、いよいよコーディングを始めるわけですが、どんなことに気を付けたいのか、また、よくあるパターンとして具体的なテクニックをまとめたいと思います。

上記はページ内リンクです。全部丁寧に読む必要はないので、気になる項目や再確認したい項目をクリックしてチェックしてください。

できるだけweb標準に準拠する

諸事情により難しい場合もあるかと思いますが、できるだけweb標準に則った形でコーディングしてください。
詳しくはバリデートチェックの項を参照してください。

HTMLソースの書式(インデント、タブサイズ、改行、コメント)については、基本、見やすければ良いと思います。
他の人が修正する場合を考えて愛あるコーディングをお願いします(社内ルールがあるようであれば、それに従ってください)。
好みにもよりますが、インデントもつけすぎるとかえって見辛くなったりもするので、適当にいい感じにするとよいのかなーと。

ユーザビリティ・アクセシビリティを意識する

仕様・原稿作成段階、デザイン段階で意識していると思うのですが、コーディングの際も意識してください。
下にごちゃごちゃ書いてますが、端的に言ってしまうと「ユーザへの愛をふんだんにこめて、コーディングしてください」ってことです。

usability ユーザビリティ

簡単に言うと「使いやすさ」なのですが、誰にでも使いやすいということではないです。
国際規格のISO 9241-11では、ユーザビリティを「特定の利用状況において、特定の利用者によって、ある製品が、指定された目標を達成するために用いられる際の、有効さ、効率、利用者の満足度の度合い」と定義しています(読点多すぎ)。
つまり、web環境下でターゲットユーザにとって使いやすい(わかりやすい)かどうかということです。
もっと狭く言うと、そのwebページ内で今使っているユーザが今したいことを成すにはどうしたらいいか直感的にわかるかどうかです。
webサービス提供側の都合でいえば、そのユーザにストレスなく特定の行動をさせるためにどう誘導するかと言い換えることもできます。
ユーザにある行動をさせるのに迷わせない、考え込ませない、あきらめさせないとも言えます。

では、コーディングの際どうユーザビリティ向上させるかですが、それはご自分(あるいは会社や部署)で考えてみてください(考えることがユーザビリティを向上させる第一歩です)。
例えば、htmlやcssをできるだけシンプルにコーディングするのもユーザビリティ向上の一つの手段です。シンプルにすることでファイルサイズを小さくし、webページの表示速度を早くすることでユーザのストレスを軽減できます(ページがなかなか表示しなくて次のページへ移動することをあきらめるといったことが回避されます)。

ちなみに、関連用語としてユーザインタフェース(UI)、ユーザエクスペリエンス(UX)という言葉も憶えておいてください・・・いろいろ調査するときにキーワードになります。

accessibility アクセシビリティ

こちらは「誰にとっても使いやすいかどうか」ということが重要になります。
健常者・障碍者・高齢者・子供・・・誰もがストレスなく使えることを目指します。

とはいえ、小さな子供にも分かるようにテキスト全部をひらがなにしてしまうと、漢字のわかる一定年齢以上の人たちにはかえって読みにくくなります。
このようにアクセシビリティの向上には限度があるので、さまざまな工夫が必要です。
たとえば、webページの文字サイズをユーザの好みで選択できるようにするというのも一つの工夫です。
こういった場合、その選択肢(やその説明)の表現にはユーザに不快感を与えないような言葉の配慮も必要です。

運営しているサイトの特性上、ターゲットユーザが比較的限定的(たとえば会員しか利用しないサイトでそのほとんどが10代後半から30代程度とわかっている場合など)であれば、とくにアクセシビリティを意識する必要はないのかもしれません。しかし、現在のユーザが若者ばかりでもいずれ高齢化することは予想できますし、一定年齢に達すると退会しなければならないといった規約でもない限り、やがてそのサイトも年齢の幅が広いサイトになっていくでしょう。
理想を言えば、サイトを開設する前の仕様制作段階からそのような見通しを立て設計するのがよいのですが、すでに運営中なのであれば、制作コストとの兼ね合いも考慮しつつ早めに(余裕があるうちに)準備をしておくとよいと思います。

コーディングの際にできる工夫としては、たとえばimg(画像)にaltを入れるというものがあります。音声読み上げブラウザ(音声ブラウザ)を使用せざるを得ないユーザには画像に代替テキストが入っていないと何の画像かわからないので、altを適切に設定するのは重要です。

なお、関連用語としてユーザインタフェース(UI)、ユニバーサルデザイン、(web制作関連ではあまりお目にかからないとはおもいますが)フールプルーフ、(そのうえアクセシビリティとあまり関係ないですがついでに)フェールセーフという言葉も憶えておいてください・・・いろいろ調査するときに キーワードになります。

ちなみに、アクセシビリティの理念とは離れてしまいそうですが、逆に特定のユーザ(たとえば子供)の危険回避のために使いにくくするということもあります。webでわざと使いにくくする場面はなさそうですが、手段としては覚えておいくと何かのアイデアの参考になるかもです。

画像のみのページにしない

画像を貼り付けただけのhtmlソース的に中身のないページにはしないでください。
altにテキストを入れるなり、ブラウザの表示領域外にテキストが入るようにするなり(下記参照)、そのページの内容を要約でもいいので多少は入れてください。
何らかの障害により、テキストしか表示されないといった状況でも、せめて何のページかわかるようにしてください。

ブラウザの表示領域外にテキストを挿入する(テキストを非表示にする)方法:画像置換

例えば、タイトル画像を背景としてh1タグにcssで設定し、そのタイトルテキストはh1タグに挿入しつつ、テキスト自体は見た目に非表示にする方法です。
CSSスプライトなどで使うテクニックですが、例をいくつかあげます。
他にも方法があると思いますが、この目的ではtitle属性は使用しないでください。

ちなみに、画像置換についてはgoogle先生にスパム扱いされちゃうぞという噂がまことしやかに流れていましたが、なんでもかんでもスパム扱いされるわけではないようです。

スパム扱い云々については、いろいろ検索すると古い記事から比較的最近の記事までさまざまな意見や勘違い、解釈の違いが混在しています。もちろん、仕様が変更されて完全NGになる日が来ないとも限らないわけで、このあたりは社内の規定があれば、社内の規定に沿ってください。
そうでなければ、疑問に思ったら都度ご自分でよく調べて、最善の方法をご選択ください。
(以下のリンクでもこの点についてはさまざまに書かれているので混乱すると思いますが、ご容赦ください。)

text-indentを使わない方法

これは、text-indentやdisplay:noneを使わずにoverflow:hiddenを利用して非表示にします。

<h1 class="i_replace">タイトル</h1>
.i_replace{
display:block;
height:0;
overflow:hidden;
line-height:2; /* 通常は不要・・・画像からテキストがちょっとはみ出すというときはこの方法で調整してみる */
/zoom:1;
}

h1{
background:url(画像のパス) center top no-repeat; /* 背景画像を適宜指定 */
width:600px;      /* 幅指定をする必要がない場合は指定しなくてよい */
padding-top:80px; /* 高さはpaddingで指定するのがミソ */
margin:0 auto;    /* marginは必要であれば指定・・・positionなども適宜使用可 */
}

たとえば、上の例ではh1タグでpadding-topを設定しなければ、webページ内にh1は存在しているのの、表示領域には見えていない状態になるので、あえて背景画像も設定せずに見えないオブジェクトを入れることができます。
ただし、ページに関係ないテキストを入れるとスパム扱いとなるので、そのページの目的に合ったテキストを入れるようにしてください。

text-indentを使う方法

h1{
background:url(画像のパス) center top no-repeat; /* 背景画像を適宜指定 */
width:600px;
height:80px;
margin:0 auto; /* marginは必要であれば指定・・・positionなども適宜使用可 */
text-indent:-999999px; /* テキストのみ画面外に追いやる */
}

値(-999999px)は絶対に表示されない位置を指定すればいいので、これにこだわる必要はありません。
ただ、この方法だと見えないだけで表示領域が値の分だけ実は確保されていて、パフォーマンスに影響があるとかなんとか・・・。
PCの場合はあまり気にならないと思いますが、スマフォなどの場合は多用しない方が良いかもしれません。

そこでoverflow:hiddenも使って、画面外ではなくて、h1の背景画像の表示領域外に出す方法にすれば、text-indentが確保する領域が最小限にすみます。

h1{
background:url(画像のパス) center top no-repeat; /* 背景画像を適宜指定 */
width:600px;
height:80px;
margin:0 auto; /* marginは必要であれば指定 */
text-indent:100%; /* テキストのみh1の領域外に追いやる */
white-space: nowrap;
overflow: hidden;
}

この方法はちょっとクセがあって、場合によっては表示が崩れることもあります。

visibility:none;

visibility:noneは見た目に見えなくなりつつ、表示領域が確保されます。
表示領域を確保しても問題ないデザインであれば良いかもしれませんが、場合によっては表示領域を打ち消すためのstyleを個別に設定する必要があります。

display:none; はおすすめしない

display:noneを使うとgoogle先生にスパム扱いされるというのは都市伝説らしいとはいえ、多少の問題があります。
display:noneは見た目が非表示になるだけでなく、領域が確保されません。
それはそれで使い勝手が良い面もあるのですが、display:noneされた中身をjsとかスクリプト側で認識できない場合もあるという問題があります。
例えば、display:noneを設定されたdivタグ内にimgタグで画像を貼り付けていたら、表示されないだけで画像そのものはブラウザに読み込まれています。しかし、子要素がimgタグではなくpタグなどで、その子要素に背景画像として設定して画像を貼り付けていたら、画像は読み込まれません。
textareaのvalue値も認識しないそうです。
このあたり、ブラウザやそのバージョンによって違ってきたりもするようです。
また、音声読み上げブラウザにも認識されません。アクセシビリティ的によろしくないです。
以上の理由により、代替テキストとしての使用目的ではdisplay:noneはあまりお勧めしません。

title属性は(代替テキストの目的で)使わない

title属性は情報の補足説明の役割を担います。ブラウザやそのバージョンによって違いますが、title属性にテキストが入っているとマウスオーバーでツールチップが表示されます。時にはそれが画像情報(見た目の部分)を邪魔してしまいます。
代替テキストとしての使用目的ではtitle属性は使用しないでください。
もちろん、本来の補足説明の目的であれば使用可ですし、何らかのギミック的に使わざるを得ないなど妥当な理由があれば使ってください。

<参考> title属性title 属性

マウスオーバー/アウトでリンクボタン等の画像を切り替える方法

主にボタン画像になりますが、マウスオーバー/アウトで画像を切り替えることがあります。
cssやjsを使った方法がいくつかあるので、参考にしてください。

cssスプライト(等)を使う

上記の画像置換を使い、切り替えたい画像を背景画像として扱って実現します。
以下は「text-indentを使わない方法」を使用しています。

<a href="#" class="i_replace">リンクテキスト</a>

かならずaタグ内に内容にあったテキストを入れてください。

a.i_replace{
background:url(画像のパス) 0 0 no-repeat; /* 背景画像を適宜指定 */
width:100px; /* 必要であれば幅を指定 */
padding:30px 0 0; /* 高さをpaddingで指定 */
/* その他、表示位置など必要なものを設定する */
}
a.i_replace:hover{
background-position:0 -30px;/* CSSスプライトにせずに、マウスオーバー時の画像ファイルを別途用意してもよい */
}
  • class[i_replace]の設定については、省略しています。text-indentを使わない方法を参照してください。
  • 画像はCSSスプライトにせずに、マウスオーバー/アウトの画像を別ファイルにしてもよいです。

smoothRollOverを使う

わりとメジャーなjQueryプラグインで、smoothRollOverというものがあります。
マウスオーバー/アウトの画像を用意して、imgタグでwebページに設置します。
imgタグにはalt属性を忘れずに入れてください。

<使い方>後日説明ページを用意します

smartRolloverを使う

上記のと名前が似てますが、これもわりとメジャーなjsプラグイン(というかjsソース)で、smartRolloverというものがあります。
マウスオーバー/アウトの画像を用意して、imgタグでwebページに設置します。
imgタグにはalt属性を忘れずに入れてください。

<使い方>後日説明ページを用意します

自分でソースコードを書く(もしくはコピペする)

js(やjQuery)がわかる人は、自分でマウスオーバー/アウトの動作を書いてしまってもよいでしょう。
この程度のものであれば、短いソースコードで簡単に作れます。
google先生に訊いてみれば、自作のソースコードをネットに公開している人もいるので、使用条件を確認して問題なければコピペして使わせてもらってもよいかと思います。
imgタグを使用するときはalt属性を忘れずに入れてください。

<例>jQueryで画像をロールオーバーする方法2 - WEB Drawer

その他(あまりお勧めしない)

上記のほかにも似たようなプラグインや公開ソースコードがネットにいろいろありますが、商用利用の可/不可といった使用条件(ライセンス)が明示されていないものがあります。
そういうものを仕事で使うのはできるだけ避けた方がよいでしょう。どうしても使用したい場合は、作者に連絡を取って許可を取るのがベストです。

また、Dreamweaver/Fireworksでロールオーバーを組み込むと自動的に挿入されたjsコードがありました(最近のDreamweaver/Fireworksでもこれあるのかなぁ)。
ソースが複雑になるので、あまり使用を勧めしません。
どこもかしこもロールオーバーはこのjsを使っていた時期があったように思いますが、今は昔のお話です。

そもそも、これ、macromedia(adobeに吸収合併されますた・・・)のDreamweaver/Fireworksのビヘイビア(って言っても今の人にはわからないか・・・)だったようで。
Dreamweaver/Fireworksでロールオーバーを組み込むと自動的に挿入されたコードのようです。

マウスオーバー/アウトの画像ファイル名が似かよりすぎると(1文字違いとか)うまく動作しないことがあるっぽい・・・とか、画像をプリロードしておくと、表示がスムーズになるらしい・・・とか、なんだかめんどくさいことがいろいろあるし、今は上記のようなシンプルなプラグインとかも入手しやすいので、使用しない方が良いのではないかなーと思う次第です。

長らくリニューアルしていないwebページで使用してるとか、そういうので使わざるを得ない場合は、imgタグのalt属性を忘れずに入れてください。

左右振り分け(水平方向分割)レイアウトの方法

左右振り分けと書いてますが、応用すれば3分割でも4分割でも可能です。

float+clearfix

cssのfloatプロパティを使って左右振り分けする場合、後に続くコンテンツは左(または右)に回りこみっぱなしになるので、いずれ解除する必要があります。
本来clearプロパティで解除できるはずですが、あいにく「親要素の中にある子要素にfloatプロパティが設定されていると、内容をもたない親要素の高さが0になるという仕様になって」いるそうなので、思うような表示にならないこともしばしばです。
brタグなどの空要素にclear:bothを設定する方法もありますが、構造的な問題もあるし美しくありません。
そこで生み出されたのがclearfixという方法です(詳しい解説はリンク先をご覧ください)。

<div class="parent clearfix">
<div class="cont_left">左側コンテンツ</div>
<div class="cont_right">右側コンテンツ</div>
</div>

たとえば上記のようなhtmlを組んだとき(class[cont_left]/[cont_right]にfloatが設定されています)、これを解除するために親タグに[clearfix]をつかいます。
コツとしては、親タグ・子タグそれぞれに幅を正しく設定することです(単位はpxでも%でも良いですが子タグの合計幅が親タグの幅を超えないようにしてください)。 cssは以下のようになっています([parent]以下は汎用設定ではなく、個別設定になります)。

/* clearfix */
.clearfix:after{
content: ".";
display: block;
clear: both;
height: 0;
visibility: hidden;
}
.clearfix{
    min-height: 1px;
}
* html .clearfix{
    height: 1px;/*¥*//*/
  height: auto;
  overflow: hidden;
     /**/
}

/* float */
.cont_left{
float:left;
/display:inline;
/zoom:1;
}
.cont_right{
float:right;
/display:inline;
/zoom:1;
}

/* Block :: parent */
.parent{
width:1024px;
}
.parent .cont_left{
width:280px;/*その他、背景などを設定*/
}
.parent .cont_right{
width:744px;/*その他、背景などを設定*/
}

clearfixやfloatの設定をclass[parent](およびその子クラス)にまとめなかったのは、汎用性をもたせるためです。
もちろん、個別に設定しても良く、好みや社内のルールなどによって、どういう風にcssを設計するかを決めてください。
なお、左右のコンテンツに背景を設定している場合、どちらか高さの少ない方の背景が途切れるなど、デザイン上の不都合があります。その場合、あらかじめ左右の高さを指定しておいたり、親タグの方に背景を設定したり、何らかの工夫が必要になります。

float+overflow:hidden

上記float+clearfixではclearfixを使いましたが、これを使わなくても解除できます。

<div class="parent">
<div class="cont_left">左側コンテンツ</div>
<div class="cont_right">右側コンテンツ</div>
</div>

たとえば上記のようなhtmlを組んだとき(class[cont_left]/[cont_right]にfloatが設定されています)、これを解除するために親タグにoverflow:hiddenを設定します。
コツとしては、親タグ・子タグそれぞれに幅を正しく設定することです(単位はpxでも%でも良いですが子タグの合計幅が親タグの幅を超えないようにしてください)。 cssは以下のようになっています([parent]以下は汎用設定ではなく、個別設定になります)。

/* float */
.cont_left{
float:left;
/display:inline;
/zoom:1;
}
.cont_right{
float:right;
/display:inline;
/zoom:1;
}

/* Block :: parent */
.parent{
width:1024px;
overflow:hidden;
}
.parent .cont_left{
width:280px;/*その他、背景などを設定*/
}
.parent .cont_right{
width:744px;/*その他、背景などを設定*/
}

このfloat解除方法も完ぺきではなく、overflow:hiddenであるがゆえに問題が発生することがあります(一応問題が発生したときの回避方法なんかもありますが、ここでは詳しく解説しないのでgoogle先生に訊いてください)。
なお、左右のコンテンツに背景を設定している場合、どちらか高さの少ない方の背景が途切れるなど、デザイン上の不都合があります。その場合、あらかじめ左右の高さを指定しておいたり、親タグの方に背景を設定したり、何らかの工夫が必要になります。
<参考>たった一行でclearfixを使わずにfloatを解除するテクニックclearfixするためにoverflow:hidden;を使って困ったことがある人へ

position:absolute(固定的なデザインでないと後でめんどうなことになるかも)

positionプロパティを使ってしまうと、「左右振り分け」とは意味合いが違ってきますが、見た目には目的のレイアウトを構成できます。

<div class="parent">
<div class="cont_left">左側コンテンツ</div>
<div class="cont_right">右側コンテンツ</div>
</div>

たとえば上記のようなhtmlを組んだとき、親タグにposition:relativeを、子タグにposition:absoluteと表示位置を設定します。

.parent{
width:1024px;
margin:0 auto;
position:relative;
}
.parent .cont_left{
width:280px;
position:absolute;
top:0;
left:0;/*その他、背景などを設定*/
}
.parent .cont_right{
width:744px;
position:absolute;
top:0;
right:0;/*その他、背景などを設定*/

この場合、親タグに高さが指定されていないと、親タグの表示領域が確保されていないことになるので、親タグに背景が設定されていてもその背景は表示されません。
さらに親タグの外のオブジェクトも意図した位置に表示されなかったりします。
そういう場合は、親タグの高さを指定してやると問題を回避できたりするのですが、コンテンツによって高さが変わる場合にはこの方法は使えないので、ページの仕様を把握して構造的によく理解しておかないとあとで面倒なことになるかもしれません。
この方法はよく考えて使ってください。

CSS3を使う-Flexible Boxフレキシブルボックス(対応ブラウザは限定的)

display:boxを使うと悲しいくらい簡単に左右振り分け(というか分割)レイアウトが実現できます。
ただし、IEは10以降でないと対応していないなど、対応ブラウザは限定的です。なので、スマフォ向けページなどで使ってみてください。

<div class="parent">
<div class="cont_left">左側コンテンツ</div>
<div class="cont_right">右側コンテンツ</div>
</div>

cssは以下のような感じになります(ただし、以下は古い記述の仕方になります)。

.parent{
display:-moz-box;/*スマフォ限定ならベンダープレフィックスはつけなくてもいいかも*/
display:-webkit-box;
display:-o-box;
display:-ms-box;/*親タグの幅は指定しなくてもいいです(必要であれば適宜指定してください)*/
}
.parent .cont_left{
width:280px;/*その他、背景などを設定*/
}
.parent .cont_right{
width:744px;/*その他、背景などを設定*/

これが使えると、左右のコンテンツに背景を設定している場合、どちらか高さの少なくても多い方に合わせて背景が下まで表示されます(背景が揃う)。
いろいろな設定もできるので、使える状況であったら積極的に使ってみてください。
<参考>一瞬で横並びレイアウトができるdisplay:boxCSS3の「フレキシブルレイアウト」使い方まとめ
<コーダー日誌内解説>フレキシブルレイアウト(フレキシブルボックス)[旧]フレキシブルレイアウト(フレキシブルボックス)[新]

レイアウト構成目的でのtable組みはおすすめしない

正直、テーブルレイアウトは絶対悪ではないのです。
IE5とかの時代と違って、tableによるブラウザごとの表示の差もだいぶなくなってきましたし、cssと組み合わせればそれなりの使い勝手です。見た目としては不都合ありません。

それでも、レイアウトを構成する目的でtable組をするのをお勧めしないのは、タグの目的の問題です。
tableは表組のためのもので、レイアウトを構成するものではないのです。
WC3とかがhtmlをバージョンアップするごとに強化してきたのは文章構造です。
HTML5になると、それぞれタグの意味が厳格になってきています。間違った使い方をしても表示がおかしくなるとは限りませんが、見た目は問題ないから良いだろうの世界ではないのです。
webというかインターネットの世界はデータの世界で、データマイニングなんかを想像してもらえるとわかりやすいと思います。
たとえば、広大なネットの世界からあるデータを抽出するとき、h1タグならそのページをもっとも端的に伝える言葉、strongは重要なポイント・・・などと、どこかの人工知能が判断しやすくなるわけです(このへん量子コンピュータが汎用的になるとどうなるか知りません)。
ページ全体をテーブルレイアウトにすると、ページ(文書)の意味が伝わりません。
インターネットの恩恵を受けたければ、web標準に則っておいた方が都合がいいよってことです。

そのほかの不都合とか、テーブルレイアウトも悪くないじゃないとかいろいろ意見がネットに落ちているので、Google先生にきいてみてください (ただし、古い記事なんかはテーブルレイアウトからcssへの過渡期だったりするのでトレンドへの反発心が前面に立っているものとかCSS妄信者の記事とかあるから注意)。
<参考>レイアウトテーブルの使用は禁止されていない。何故テーブルレイアウトは駄目なのか?「別にテーブルレイアウトでもいいんじゃないの?」「いい訳ないだろ!!」のワケ

レスポンシブwebデザイン・リキッドレイアウト(可変長)について知識を深めておく

左右振り分け(水平方向分割)レイアウトの話から少しそれますが、レスポンシブwebデザインについても少し触れます。

近年デスクトップPCやノートPCのディスプレイサイズが巨大化していたのが、スマートフォンやタブレットなどの台頭で、物理的に表示領域が狭いデバイスが一般的になりました。
(ネット環境にもよりますが)小さいのに高画質でも表示にストレスがあまりかからず、ゲームなどの動きに耐えられるスペックを兼ね備えているという恐ろしい端末が、普通の人々の手元に当たり前のようにあるわけです(そのスマートデバイスも巨大化の動きが見え隠れしていますが、どうなるでしょうね)。

そういうわけで、スマートデバイスでPC向けサイトを見るユーザもそれなりにいます。
また、モバイルフレンドリーといった世の中の動きもありますし、現在、PC向けのwebサイトしか用意していない自社サイトやクライアントサイトでも、スマートデバイスで見られるように(見やすくなるように)したいという要望が出てくると思います。
予算や時間の関係で、レスポンシブwebデザインを導入することになるかもしれないので、知識を深めておくことは損ではないと思います。

レスポンシブwebデザインは単純に画面の幅に合わせて可変する(リキッドレイアウトにする)ということだけでなく、例えば、左右にメニューとメイン画面がわかれているデザインの場合、スマートフォンで表示したときにメニューは上下に間にメイン画面に・・・とcssなどを駆使して組み替えるといった考え方も含まれています。
合わせてグリッドシステムという言葉も憶えておくと良いと思います。
便利なプラグインや簡単に導入できるcssなどネットにいろいろ落ちているので、google先生に訊いてみましょう。

<参考>今からでも間に合う!レスポンシブWebデザイン作り方のまとめレスポンシブWebデザインのメリット・デメリットをわかりやすく!解説これ以上ないくらい簡単な例から学ぶ、レスポンシブwebデザインの作り方年寄りを困らせる「レスポンシブWebデザイン」
<コーダー日誌内解説>レスポンシブwebデザイン → モバイルファースト

応用・参考資料

z-indexがうまくいかないとき

オブジェクトを重ねるとき(背景とか)、どうにもz-indexがうまくいかないときがあるとおもいます。
とくにIEだと・・・
実はIEとほかのブラウザではz-indexの仕様が違っています(IE10以降とかだと直ってるのかな?)。
というわけで、z-indexの特性をよく知って、次のことに気を付けてください。

  • positionを設定
    重なるオブジェクト(タグ)にrelativeでもabsoluteでもいいので、都合のいい値を設定してください(ただしbodyタグには設定しない方がいいかも)。
    まずはそこからだ!です。
  • 親要素から順番に数値を加算していく
    親要素にもz-indexを設定してください。数値が大きい方が上になります。

<参考>z-index要素の重なりについて本気出して考えてみた(z-indexとか何とかとか)CSSでレイアウトするなら絶対覚えておきたい配置のルール:フロートや絶対配置、z-index とかいろいろ

ブラウザのウィンドウ幅を変更したときにオブジェクトの位置がずれるなら、min-widthを指定

ブラウザのウィンドウ幅を極端に狭めたときなど、positionなどを設定したオブジェクトの位置がずれてしまう場合があります。
コンテンツ全体を囲むタグにmin-widthを指定すると解決します(値は全体のコンテンツ幅と同じ)。
ちなみに、IE6はmin-widthに対応していません。とはいえ、IE6ではこの問題が発生しないようです。

コンテンツ幅とは、デザインカンプ(photoshop等で作成されたデザインファイル)のうち、背景を除く、テキストやボタン等アクティブな画像といったコンテンツ部分の最左端~最右端(ただし、ブラウザの端を基点として設置するようなページトップへ戻るボタン等は除く)のことです。

その他

css・jsの注意点

  • class名やid名、js等で使う関数名や変数名は社内(クライアント)の名づけルールに則って、命名する。
    一般的な命名規則については「名づけルール」の項を参照してください。
    • キャメルケースかスネークケースか
      企業によって、あるいはエライ人の好みによって、どちらかに統一していると思います。
      大文字小文字が混在していると打ち間違いを誘発しますし、判読性がやや劣るといった理由で、cssのclass/id名はスネークケースを採用している企業が多いような印象です。スネークケースの単語の接続はハイフンだったり、アンダースコアだったりしますが、これもどちらかに統一した方がよいでしょう。
      関数名・変数名は、わりとキャメルケースもスネークケースも混在していて統一していないところが多いのではないでしょうか(jsコードなどはいろんなところからコピペしてくるので、そういう傾向があるっぽい)。
    • 目的がわかりやすい名前(英単語)で
      これもそれぞれの企業のルールによりますが、たいていはわかりやすい英単語を用いるようにしていると思います。
      長い英単語や複数の単語をつなげる場合の短縮の仕方までルール付けされている企業もあります。
    • 同一ページ内で複数の同一id名は使わない
      これは一般的なルールです。特にインクルードファイルなど、複数のファイルを組み合わせて1ページを構成している場合は、id名が重複しているのに気付きにくかったりするので、注意してください。
    • 開発コードで使用しているclass/id名とかぶる名前にしない
      phpであるとかperlであるとか、動的ページでは開発コードが組み込まれます。htmlを組んでから開発コードを組み込むのか、その逆なのかは開発環境や企業によって異なってくると思います。
      htmlコーダーにも開発コードが見えるようにしている場合は、class/id名がかぶらないように気を付けることができますが、見えないようにしている場合はたまにかぶってしまうこともあります。 問題にならないケースもあるのですが、webページの動作や表示に問題が起きることもあります。開発さんから名前変えてほしいと要請があったら、開発側の方を変えた方が効率が良いとかそういうことでもない限り、速やかに変えてあげてください。
      同じ企業でwebページをたくさん作っているうちに、プログラマーが使いたがる名前の傾向とかわかってくるので、わりと避けられます(開発さん側もデザイナーやwebコーダーの傾向とかなんとなくわかってくるので避けてくれてたりします)。
  • reset.cssやプリント用のcssなどの取扱に注意する。
    企業によって、リセットcss(等)を導入していたり、プリントした時に適切に印刷されるようにプリント用のcssも用意しているところがあります。
    その場合、リセットcss(的なもの)を不用意に修正しないとか、ディスプレイ用に新しいcssを設定したら印刷の確認もする・・・といった運用上のルールがあると思うので、注意しましょう。
  • 個別css・jsファイルの管理に注意する。
    これも企業によってルールがまちまちかと思いますが、サイト全体で共通のデザイン用のcssのほかに、そのページでしか使わないようなcssを設定したい場合、個別にファイルを作って読み込むのか、共通のcssファイルに書き足していって、関係のないページにも読み込ませるのか・・・などといったルールがあると思うので、注意しましょう。
    同様に、jsなども機能ごとにファイルを分けて保存し、使う機能を使うページにだけ読み込ませるのか、1ファイルにすべての機能・プラグインをひとまとめにし、その機能を使う・使わないに関係なく、jsファイルを全ページに読み込ませるのかなどといった運用ルールがあると思うで、注意しましょう。
    ファイルを個別にすると管理が煩雑になる可能性があります。
    一方、ファイルをひとまとめにすると管理は楽になりますが、読み込みに時間がかかる可能性があります。
    そのあたりは好みや考え方にもよります。
  • CSSハック・@importはできるだけ使わない
    現実問題使わざるを得ないんですが、できるだけ使わないようにした方がよいです。
    本来、使うべきではない手段です。
    CSSハック・@importは最後の手段だと思ってください。
    もっとも、これも企業によってどのように扱うかは違ってくると思うので、社内ルールに従ってください。
    また、条件付きコメントも使用しないようにしましょう。
    <コーダー日誌内解説>oldIE(主にIE6)でもCSS3的な表示をしたい<2016/08>
  • プラグインのライセンスに注意する。
    フリーのプラグインでも商用利用には何らかの制限があることもあります。
    また、プラグインのバージョンによっても使用条件が異なることがあるので、使用前に確認してください。
  • 無駄なファイルを増やさないようにする。
    同じサイト内のページなのに、ページごとにディレクトリを作って、それぞれに同じプラグインを格納していたりすることがあります。
    共有フォルダを作るなどして、同じサイト内ならば、同じプラグイン(同じjsファイル)をそこから読み込むようにして、同じファイルがいろいろな場所に格納されないようにしましょう。
    管理が煩雑になりますし、ファイルサイズが小さいものも塵も積もれば方式で、リソースを圧迫することになります。

css・jsのリファレンス
個人で制作しているものや情報が古いものもあるので、あまり過信しないでください。
また、ネットにいろいろ落ちているので、google先生に訊いてください。

FLASH(swf)の注意点

AdobeのFlash Professional等を用いて作成されたswfファイルをhtmlページに埋め込むことがあると思いますが、SWFObjectというjsプラグインを用いる方法が一般的だと思います。

ここではflash動画・full flashのwebページの作成方法やActionScriptについての説明は行いません。

webページへ埋め込むのはそれほど難しくないのですが、いくつか問題があります。

  • ユーザーが自分でFlashプレーヤーをダウンロード・インストールしないと閲覧できない
  • Flashプレーヤーが動作しない場合の対策が必要
  • iOSの環境でのブラウザで閲覧できない(通常有料だが閲覧できるブラウザアプリはあることはある)
  • Flashプレイヤーの脆弱性
  • Chromeではメインの動画コンテンツ再生以外のFlashは、デフォルトで停止する

Flashプレーヤーの脆弱性については常々ニュースになっていて、しょっちゅうユーザーに更新を促しているのが現状です。
パソコン等IT機器に不慣れなユーザーは、更新をしないで使い続けてしまったり、更新しないがために一部のブラウザでは表示しなくなったりするので、flashをwebページに埋め込んでいる企業のサポートセンターには結構問い合わせがあるようです。

FlashコンテンツはHTML5へシフトしていくといわれていますが、現状、まだまだFlashコンテンツはさまざまなサイトで使用されており、コストや使い勝手、機能の差異の補完などの問題があるので企業としてもいきなりHTML5(等)へ変換するわけにはいかないと思います。
既存のFlashコンテンツを今後どうしていくか、また、新たにFlashコンテンツを作るときは、本当にFlashでなければならないのか、ほかにもダイナミックでインパクトのある表現があるのではないか・・・など、開発・運営コストのほかにもユーザビリティなどもろもろ考慮していきましょう。

なお、Chromeではメインの動画コンテンツ再生以外のFlashはデフォルトで停止するようになっています。停止されるのはあくまで、広告のようなメイン以外のFlashですが、この動きは見逃せません。
また、2015/07には、Firefoxでも古いバージョンのFlashを停止させる措置を取っています。こちらはFlashの脆弱性が原因なので、最新のFlash Playerがインストールされれば、解消されます。

ついにというか、Flashプレーヤーは2020年末にはアップデートと配信を終了するようです。既存のFlashコンテンツをどう扱うか、各企業は対処におわれることになりそうです。だいぶ前から予想されていた事態なので、急に言われてもとかゆー言い訳はできないですね。とはいえ、Flashで作ったゲームとかアニメーションとか名作といわれるものもあるので、少し寂しい気がします。

Chromeは年内にもFlashコンテンツのブロックを開始するようです(2016/05追記)。いよいよflashも過去の遺物となっていくのですかね・・・。昔カーナビのインタフェースを作っていた時は、flashを使っていましたが現在はどうなのでしょう?パソコンやタブレット以外のアニメーションを伴うインタフェースでもflashは使わなくなっているのでしょうか。
ちなみに、chromeでflashが全く動作しなくなるわけではないようです。デフォルトで動かなくなるだけで、ユーザーが許可すれば動作できるとのこと。まぁこの流れでFlashそのものの開発が終了されるという未来がそう遠くなくやってくるかも。

Firefoxも2017年3月でFlashのサポートを終了するようです(2016/07追記)。2016年8月から段階的に重要でないFlashコンテンツをブロックしていき、翌年3月までにはflashのサポートを終了する模様。

Adobeが2020年末にFlash Playerのアップデートと配信を終了すると発表したようです(2017/07追記)。EOL (エンドオブライフ)に向けた計画とか言われるとあれっすね・・・。Flashの終活ってことですかね・・・。2020年東京五輪の年は、Flash最期の年となるのですな。Flashで盛大な五輪コンテンツとか作ったりする人とか出てきそうですが。アナロ熊ちっくなキャラとか発生するかもですね。

PDFファイルや圧縮ファイルの注意点

ユーザーへ提供する情報の形式として、PDFファイルや圧縮ファイル、時には壁紙などの画像やexcelなどのオフィスソフト用ファイル、ゲームなどの実行ファイル(exeファイル)を、webページからダウンロードしてもらうようにすることがあると思います。

パソコン(インターネット)に不慣れなユーザーには、このダウンロード(場合によってはさらにインストール)という行動が思いのほかハードルが高かったりします。
方法がわからなかったり、過剰にウイルス感染を警戒したり(逆に恐怖心が全くないのも困りものですが)・・・。

  • ダウンロードの方法を明記する(右クリックして云々・・・など)
  • ファイルの安全性を明記する
  • ファイルの形式を明記する
  • 適切なファイル形式にする
  • ファイルのサイズが大きすぎる場合は、圧縮するなどの工夫をする(ファイルサイズも明記すると親切)
  • リンクとしてwebページにダウンロードファイルを設置すると思うが、target="_blank"にするなどして、別ウィンドウ(タブ)に表示するようにしておく

たとえばテキストファイルなどは、そのままリンクとしてwebページに張り付けた場合、単純にクリックするとテキストの内容がブラウザに表示されてしまうので、ユーザは戸惑うことがあります。
そうならないように圧縮ファイルにしてしまうとか、別ウィンドウ(タブ)に表示するよう設定してユーザが元のページを見失わないようにするなどの工夫をするとよいと思います。

pdfなど、そもそもダウンロードよりも表示させることが目的のものはやはり別ウィンドウ(タブ)に表示するよう設定してユーザが元のページを見失わないようにするとよいと思います。

とはいえ、こういうものも好みや会社の方針があると思うので、適宜ユーザビリティなどを考慮したうえで、設置方法を考えてください。

埋め込みタグ(YouTube、googleマップなど)の注意点

Flashプレイヤーもobject(embed)タグを使用した埋め込みタグですが、ほかにもwebページに動画や地図などを表示させるために、埋め込みタグを使うことがあります。

  • 独自(データ)属性がバリデートチェックでエラーになっても無視してよい
    YouTubeやgoogleマップなどは埋め込みタグに様々なオプションが用意されていて、パラメータ指定することで、例えばwebページが表示されると同時に動画を再生させるなど、いろいろな機能を利用することができます。
    また、独自の(データ)属性(接頭辞dataの属性など)が用意されていることがあり、それを使うことでバリデートチェックの際にエラーが返ってくることがありますが、そういった場合のエラーは無視してよいです。
  • jsとセットになっている場合は記述を忘れない
    htmlタグのほかにjsコードも必要な場合は、コピペ忘れしないように注意してください。
    jsコードはheadタグ内など適切な場所に貼り付けてください(bodyの終了タグ直前とか、場所が指定されていればそこに設置してください)。
  • jsとセットになっている場合はscriptタグにtype属性がなかったら追加
    jsコードが必要な場合、scriptタグのtype属性が省略されている場合があります。html5でない限りtype属性は必要なので、追加してください(type属性が動作に影響することはありませんが、念のため追加した後に動作確認してください)。

参考資料

共用ファイル(インクルードファイルなど)があるとき

ASPやRuby on Railsなどを利用しているならば、サイト全体で共通のグローバルメニューやフッターなどをインクルードファイルやテンプレートファイルとして利用していると思います。

設定やら何やらで、拡張子とかもろもろ細かいところは、環境によって異なるかもしれませんが、だいたい以下のようなことに気を付けるといいのではないかなーという感じです。

  • 既存のテンプレートファイルやインクルードファイルで事足りるどうか確認する
    新しくサイトを立ち上げるのでもない限り、普通グローバルメニューであるとか共通で使えそうなパーツは既存のもので何とかなるので、確認してください。
    同じテンプレートファイルやインクルードファイルがたくさんあると管理が大変になり、修正の際などに手間取ったり、どれを使ったらいいかますますわからなくなるので、無駄に増やさない方がよいです。
  • テンプレートファイルやインクルードファイルのファイル名はできるだけ汎用的なものにする
    たとえば、Ruby on Railsのテンプレートファイルをcampaign201507.html.erbなどとしてしまうと、2015年7月以外は使えなさそうな感じになってしまうので、 キャンペーンページで共通のテンプレートファイルならばcampaign.html.erbとか、毎年12月に使う特殊なキャンペーンページならばcampaign_dec.html.erbとしてみるとか、わかりやすくかつ汎用的な名前になるよう工夫しましょう。
    ほかの人が適切なテンプレートファイルやインクルードファイルのがすでに存在していないかどうか探すときにわかりやすくなります。
  • テンプレートファイルやインクルードファイルの構成はできるだけ汎用的にする
    テンプレートファイルやインクルードファイルはサイト内の複数のページで共通で使うパーツであることが多いので、できるだけどのページでも使える汎用的な構成にします。
    たとえば、class名はほかのページで使うものとかぶらないようにつけるとか、逆に特殊すぎる名前を付けないようにします(製品ページ以外でも使うメニューなのに個別の製品ページに移動するわけでもないものにmenu_productionなどとつけると会社情報になぜこのメニューが??とかになったりして混乱します)。
    また、たとえばRuby on Railsのテンプレートファイルに
    <title>お正月のお知らせ | サイト名</title>
    と直書きしてしまうと、お正月のお知らせでしかそのテンプレートファイルが使えなくなります。実際はお知らせページ全体で共通のテンプレートをつかえた方が使い勝手がよいでしょうから、お知らせページ全体で使えるテンプレートにするために、
    <title><%= yield :subtitle %><%= render "layouts/common/title" %></title>
    などのように記述し、部分テンプレートファイル(インクルードファイル)である_title.html.erb(パスやファイル名は適切なものを指定)には「 | サイト名」を記述しておきます。サイト名だけで独立させておくと、お知らせページ以外でもこの部分テンプレートファイルを使えるようになります(後でサイト名が変更になってもこのファイルだけ変更すれば良いわけです )。
    ビューファイル(枠となるテンプレートファイルに対し中身となるhtmlを記述したファイル)には
    <% content_for :subtitle do -%>お正月のお知らせ<% end -%>
    と記述しておいて、テンプレートファイルのyieldで指定した箇所にテキストやコードが挿入されるようにすると、汎用的に利用しやすくなります。
    このようにテンプレートファイルやインクルードファイルは仕様をよく確認し、共通で使える部分、個別ページで変わる部分を確認して汎用的な構成にすると、使い勝手がよくなり、管理もしやすくなります。
    そのためには、仕様段階でしっかりと設計しなければならないのですが、コーディングに入っても仕様が固まってなかったりするのが現実だったりしますorz
  • 見た目もmetaタグなども1ページしか存在しない構成・内容なら、無理にテンプレートファイルやインクルードファイルを作らなくても良い
    好みや、その会社のルールにもよるのですが、突発的なキャンペーンページなどで、サイト内の既存のページのデザインを踏襲する必要のないページの場合、ブラウザで表示する部分だけでなくmetaタグなど見えない部分の記述も固有のものであれば、無理にテンプレートファイルを作ったり、インクルードファイルを作ったりしなくてもよいと思います。
    Ruby on Railsなら、
    <%= yield :layout %>
    だけのレイアウトファイルを使用して、ビューファイルの方はdoctypeからすべてイチから記述してしまってもよいででしょう。
    metaタグなどheadタグの中身だけは共通ならば、汎用的に使えそうなので、テンプレートファイルを作っても良いでしょう。
  • 変数(パラメータ)の活用
    テスト用サーバと公開用サーバではurlのドメイン部分が異なるので(さらにファイルサーバが異なっている場合もあります)、リンクurlや画像などを絶対パス(フルパス)で指定することになっている場合(社内の制作ルールでそうなっている会社もあります)、テスト用ページと公開用ページでファイル指定が必要な部分を書き換えなければならない手間があります。
    しかし、ASPやRuby on Railsなどを利用している場合、urlのドメイン部分を変数にして、サーバーによって自動で切り替えるようにしておくこともできます。
    開発(システム)担当者と相談して変数を活用すれば、いろいろと作業がはかどります。

参考資料

会社によって、ASPやRuby on Railsの運用の仕方は異なると思うので、あくまでも参考まで。
このほか、CMSなどでも同様に、テンプレートファイルを安易に増やさないとか、そもそもテンプレートファイルにアクセスできる人が決まっているとか、運用ルールがあると思うので、なぜそうするのかとか考えつつ、ルールに従ったり改善したりすると良いと思います。

HTMLメールマガジン

個人的にはHTMLメールマガジンはあまり好きではないので、業務でもあまり携わってこなかったのですが、企業によってはこれもまだまだ現役の情報提供手段なので、仕事で作成することは多々あると思います。

HTMLメールはこれまで書いてきたこととは異なり、比較的美しく表示させるためにはテーブルレイアウトを用います。
ユーザが使用しているメーラーやwebメールによって、うまく表示されなかったりするので、その場合の対策も施してください。

  • HTMLメルマガに限らずメールマガジンは配信してしまうと、取り返しがつかないので配信前に、かならずテキストチェック・リンク先チェックをしましょう。
    社内からしかアクセスできないテストページにリンクがつながっているとか、よくあるミスです。
    テスト配信した時の「テスト」などといった文言がメールタイトルに残ったまま本配信とか、泣きたくなります。
  • HTMLメールはメーラーやwebメールの種類によって、表示が崩れたりすることがあるので、代替ページをweb上に作っておくなど対策をしておきましょう。
    よく使用されるwebメールシステム(GmailやOutlook.com、Yahooメールなど)にテスト配信して、事前に確認することも大事です。
  • HTMLメルマガに限らず、通常メルマガは配信システムなどを使って配信すると思います。
    メルマガ配信システムは、特定の特徴(特定の県に住む女性のみ・・・など)を持つユーザーに絞って配信したりすることができるものがほとんどだと思いますが、その設定を間違えると、配信すべきではないユーザーに配信してしまったりするので、注意しましょう。
    同様に配信日時の設定があるときも、間違えると場合によっては悲惨な結果になるので、よく注意しましょう。
    メルマガ配信担当者(責任者)が別にいる企業もあります。

モバイルの場合

スマートデバイス

スマートデバイスは、スマートフォンのほかipadなどのタブレット端末も含みます。
上記PC向けの注意事項はほとんどスマートデバイスにも当てはまるので、参考にしてください。

スマートデバイスの場合、OSはiOS(iPhoneやiPadなど)とAndroidが主流です。
Windows phoneやfirefox OSなどは今のところ(2015/07現在)無視してよいレベルのシェアのようです。

ブラウザは、iOSの場合はSafari、Androidの場合は標準ブラウザまたはChromeもしくはFFのシェアが多いようです。

  • 特にスマートフォンは日本は多少世界と違った進化をしてきたので、サービスが国内限定ならば、日本国内に絞ったデータを確認した方がよいと思います。
  • ネットで公表されているデータ・情報は、その調査・分析した会社によって多少の差異があります。なので、過信は禁物です。
    また、特定のサービスでは一般的なデータが当てはまらないこともあるので、社内にアクセス分析をしたデータがあるでしょうから、自社やクライアントのwebサイトやサービスではどうなのかという分析もした方がよいと思います。

というわけで、制作したwebページの表示・動作の確認をする場合は、社内やクライアントがユーザー向けに推奨環境を発表していると思うので、その環境での確認するのは当然として、時折シェアの確認をして、推奨環境以外の確認が必要そうであれば、その環境での確認もするようにすると良いと思います。

ちなみに、2015/01/26にAndroid 4.3以前の標準ブラウザーは修正パッチの提供を打ち切る方針との記事が出ました。
androidは古いバージョンを使っているユーザーが多いので(端末のハード性能への依存度が高いのでユーザによるOSのバージョンアップが困難)、今後は特に4.3以前についてはChromeとFFのチェックもした方がよいでしょう。
Chrome(と最新Opera mini)はAndroid 4.0以降に対応しているため、それより古いandroidを使用しているユーザは必然的に標準ブラウザ・Chrome以外になります。そのうち比較的シェアがあり、IT系の知識に疎いユーザでも知ってそうなブラウザはFFになってくると思われるので、FFのチェックをするとよいでしょう。

Android 4.3以前の端末から標準ブラウザがなくなるわけではないので、標準ブラウザを使用し続けているユーザーはそれなりにいると思います。

スマートデバイスはHTML5やCSS3にかなり対応しているので、スマートデバイス向けwebページのコーディングは、HTML5+CSS3で行われていることが多いと思います。
とはいえ、XHTMLなどで組んではいけないということではないので、既存ページの修正などはDoctypeに注意しましょう。
そのほか、CSS Media Queriesを使用したり、webフォントを使用したり、jQueryMobileなどのフレームワークを使用していたり・・・といったことがあるので、それらにも気を付けてください。

コーダー日誌内参考資料

フィーチャーフォン(ガラケー)

最近は撤退する企業も出てきたこともあり、フィーチャーフォン(ガラケー)向けのwebページを制作する機会が減ってきているかもしれません。
とはいえ、まだユーザーも相当数いることから、フィーチャーフォン向けのwebページのコーディングがすぐになくなるわけでもないとおもいます。

PC向けやスマートデバイス向けのコーディングに慣れている人は、フィーチャーフォンのコーディングに少し戸惑うかもしれません。
いろいろ制約があって、思わぬ隙間とか発生しやすいので、注意してください。

  • xhtmlでのコーディングが望ましい
  • 原則としてweb標準に従ってコーディングする
    一応バリデートをかけてください。デザイン上もしくは組み込むシステム上、web標準に則ることができない場合があるのは仕方がないと思います。
    また、構造の「意味」までは厳密に求めなくても良いと思います(無理なので)。
  • shift-jisでのコーディングが望ましい
    組み込むシステムの関係上UTF-8を選択せざるを得ない場合があるかもしれませんが、機種によってはUTF-8だと文字化けを起こすものがあったはず・・・
  • CSSファイルは100kb/fileまで
    キャリア/機種によっては100kb超えると読み込んでくれないため・・・でもファイルを分割すると何とかなったりします。
    そういうわけで、cssの改行やインデントは極力少なめにしましょう(ファイルの軽量化のため・・・とはいえ、見やすさも大事。ちなみに改行や不要なスペースを一括削除して整形し直してくれるツールも世の中にあります)。
  • htmlソースにインデントを入れない
    機種によって、妙な隙間を表示してしまうため
  • divの入れ子構造を基本とする
    ブロックタグの上下に隙間が表示されてしまう機種があるため・・・特に背景色を指定しているときは注意
  • (body内で)使うタグは原則div、p、span、a、table系、br、form系、object(param/embed)
    ただし、pタグについては改行のつもりで使うと改行されない機種もあるようなので、あまり使わないようにしたほうがよいかもです(cssなどで使わないことになっているタグをうっかり使ってしまったときのためにあらかじめ対策を取っておくと良いかもしれません)。
  • オブジェクトの周囲にスペースを設けたい場合は、スペーサー(1pxの透過GIF画像)やbrタグを利用する
    marginなどのcssを無視する機種があるため
  • tableは入れ子にしない
    機種によって表示されないことがあるため
    <参考>ケータイサイトのtableタグの特徴と、5つのデザイン例&ソース - LINE Corporation ディレクターブログ
  • 区切り線としての画像は背景ではなく、画像としてimgで挿入
    基本、背景として画像を使えるのは1ページ1タグなので、bodyタグで背景画像を使うと他では使えないため
  • 英数字およびカタカナの入力については特に理由ががない限り、半角とする
    記号も半角で表現できるならば、半角にすると限られたスペースを有効活用できるでしょう。
    なお、英数カタカナが全角になっている原稿を渡されて、あとから半角にしてと言われたりすることもあると思いますが、サクラエディタなどの高機能エディタであれば変換機能がついていたりするので、そういうものを活用しましょう。
  • 絵文字はキャリア(もしくは機種)によって違うので、開発担当者とどうするかあらかじめ決めておく
    キー操作を案内するために絵文字を使わざるをえないとおもうので、そのあたりをどうするかあらかじめ決めておいて、コーディングしましょう。
    たとえば、htmlでコーディング時は「i絵文字」を使用して、docomo向けの絵文字をshift-jisバイナリで入力しておき、サーバー側で他キャリアを判定して絵文字を切り替えるといった方法があります。
  • 表示確認は、手元に端末がない場合はとりあえず適当なエミュレータで行う
    もちろん、最終的には実機での確認をしてください。
    通常は企業にお勤めなら、お勤め先で検証機を用意してくれると思うのですが、自前の端末や他の社員の方の端末を借りて行うのが慣習化されているところもあります(雇用側との間で通信費等の問題をクリアしていない限り、こういうのは良くないです)。
    なお、検証機のレンタルや検証の代行を行っている企業もあるので、そういうのを利用できるように上の人たちに掛け合ってみるのも良いかもしれません。
    <参考>携帯やスマートフォン用サイトのシュミレーターでPCで見え方を確認して見た!一押しのモバイルシュミレーターとは? - Webと人のアマモ場
    ちなみに、手元にスマートフォンがある場合は、アプリを使ったりすることもできます。
    <参考>Angel Browser 「多機能で使いやすい」をコンセプトにした国産ブラウザー「Galapagos Browser」の上位版 多機能さはそのままでさらに使いやすく!ケータイサイトの閲覧も可能 - softnic

そのほかにも細々と注意することがあるので、下の方にある参考資料をご覧ください。

なお、フィーチャーフォンサイトの企画や原稿を作る人がよくわかっていないと、出来たページを見て無茶な修正を要求してくることがあるので、あらかじめ以下のようなことを理解しておいて貰うと良いかもしれません。

  • 文字サイズはPC向けのページのように自在に指定できない
    文字サイズは、たとえ12pxなどと数値を指定しても、見た目上キャリア/機種ごとに表示が異なります。12pxでもかなり大きく見える機種もあれば、小さすぎると感じる機種も・・・。
    実際、文字サイズ指定はx-small、mediumといったキーワード指定になり、機種ごとのデフォルト設定に依存します。
  • 特定の範囲に文字を収めることは困難
    PC向けwebページで良くありがちな1行に納めてくれ問題なのですが、フィーチャーフォンの場合、上記のように文字サイズの問題があるので、キャリア/機種によって1行に収まる文字数に結構な幅があります。
    とある機種で1行に収まっているものが、別の機種では改行されてしまってもあきらめて貰うしかありません。改行されても良いようなデザインを追求するか、文字数を減らして貰うようにしてください。
  • 太字は無理
    太字表示をしてくれる機種もありますが、表示しないものもあるので、無理ってことで。
  • キャリア/機種によって、表示に反映されるcssと反映されないcssがある
    これはデザイナーさんにも理解して貰う必要があるかもですが、機種によって一部のcssプロパティが反映されない場合もあるので、機種によってはデザインの再現をあきらめざるをえないこともあるかもしれません。

参考資料

続きはいずれまた・・・

戻る

Top