めざましTech

Subscribe to RSS feed

HTML5、CSS3 で作るポラロイド風写真

, ,

HTML5 Advent Calendar の12日目です。
本来のAdvent Calendarとは、12月1日からクリスマスの25日まで、カードに作られた窓を1日に1つずつ開けていくというものです。一方、技術系の Advent Calendar は、12月1日から25日までの間、毎日違う人が特定のテーマに沿ってブログ記事を書くというものです。ここでは、「HTML5」がテーマになります。他にも面白い記事が公開される予定ですので興味のある方は是非チェックしてみてください:http://atnd.org/events/21987

五つのステップでブログとかに活用できるポラロイド風の写真を HTML5 と CSS3 で作りたいと思います。似たデモがあっちこっちにありますが、もう少し本物っぽくなるように第5段階でアニメーションの追加があります。 完成すればこういうふうになります: HTML5、CSS3 のポラロイド風写真 さぁ、スタートしましょう!

1. まずは HTML5

figureとfigcaptionを使った画像とメッセージ最初にマークアップを用意しましょう。HTML5 ではいくつかの新しい要素があります。どれをどういうふうに使うかは混乱しやすいですが、一つの簡単な要素は <figure> です。画像かビデオに使う要素で、実はそれだけであまり利点がなさそうですが、画像やビデオに説明の文章がある場合、<figcaption> との併用で役立ちます。使い方はこんな感じです:
<!-- HTML ファイル -->
<figure id="polaroid">
  <img src="santa.jpg" alt="本物のサンタさん">
  <figcaption>Merry Christmas !</figcaption>
</figure>
現在のブラウザはこれで満足していますが、IE の古いバージョンでは HTML5 要素に CSS の摘要できません。解決方法の一つは Remy Sharp 氏が作った簡単な JavaScript です:
<!-- HTML ファイル -->
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->

2. 次はポラロイド風に

画像を少しポラロイド風にした状態ポラロイド写真のような効果はもちろん白い紙が必要なので、画像の周りにマージンを追加し、背景を白にします:
/* CSS ファイル */
#polaroid {
  background: #fff;
  color: #111;
  display: block;
  height: 425px;
  margin: 2em auto;
  width: 350px;
}
#polaroid img {
  border: solid 1px #ddd;
  margin: 24px;
}
#polaroid figcaption {
  display: block;
  font-size: 32px;
  line-height: 1;
  text-align: center;
}
ところで、HTML5 パーサーの入っていないブラウザは <figure><figcaption> みたいな要素が認識されず、インライン要素として扱われます。そのため、display: block; を指定します。そうすると、IE6 でもポラロイドっぽく見えます。

3. CSS3 で面白く

CSS3 で本格的にやっと CSS3 の番になりました。細かい効果を追加するともう少し本格的になります。例えば影の引用、少しの回転、そして角を微妙に丸くしましょう:
/* CSS ファイル */
#polaroid {
  box-shadow: 0 2px 4px #777;
  border-radius: 3px;
  -moz-transform: rotate(5deg);
  -ms-transform: rotate(5deg);
  -o-transform: rotate(5deg);
  -webkit-transform: rotate(5deg);
  transform: rotate(5deg);
}
多くの CSS3 プロパティの長所は古いブラウザで表示されなくてもデザインが崩れることは殆どありません。ただ、最も最新のプロパティができるだけ多くのブラウザで表示されるように、上記みたいにベンダープレフィックスが必要になります。

4. 一言メッセージをおしゃれに

ウェブフォントでメッセージが手書きっぽい今のところ、結構完成に近い感じがしますが、画像の下にあるメモはメモらしくないですね。ここでウェブフォントを使いましょう。ウェブフォントを使う時はもちろん利用する許可が必要です。このデモに使うフォントは Jesús Gorriti がコピーライト無しで公開している Gorri Sans です。 ウェブフォントは IE6 を含めてたくさんのブラウザで使うことができますが、ちょっとしたコツが必要です。Paul Irish 氏、Richard Fink 氏や Ethan Dunham 氏が色んな環境でテストして、一つの結果としてはこのコードがあります:
/* CSS ファイル */
@font-face {
  /* Font source: http://gorriti.com/2009/02/05/mi-aportacion-al-mundo-brutista/ */
  font-family: 'GorriSans';
  src: url('GorriSans.eot?') format('eot'), url('GorriSans.woff') format('woff'), url('GorriSans.ttf') format('truetype');
}
#polaroid figcaption {
  font-family: GorriSans, arial, sans-serif;
}
因みに上記のフォントフォーマット(EOT式、WOFF式など)への変換は、Font Squirrel の @font-face ジェネレーターをおすすめします。

5. フェードイン効果の追加

いよいよ最後の仕上げになりましたが、それはもちろん写真の現像です。本物のポラロイド写真みたいに、このデモの写真が目の前でゆっくりと現れます。JavaScript を使うことが可能ですが、CSS のみの方法でやってみましょう。アニメーションそのものは簡単であり、画像の透明度にトランジションを利用します。つまり、1分の間、opacity が 0(透明)から 1(不透明)に変わります。 どのトランジションでも、二つ以上の状態が必要です。この場合、ページ自体が第1状態になり、第2状態を作るには target の疑似要素(pseudo-element)を使います。トランジションを起動するには、<body> 要素に「demo」という ID を加え、ページの URL にも「#demo」を追加します。そうすると、ページがロードする時、画像が透明の状態から段々画像が見える target の状態に変わります。
<!-- HTML ファイル -->
<body id="demo">
  ...
</body>
/* CSS ファイル */
#polaroid img {
  opacity: 0;
  -moz-transition-duration: 60s;
  -ms-transition-duration: 60s;
  -o-transition-duration: 60s;
  -webkit-transition-duration: 60s;
  transition-duration: 60s;
}
#demo:target #polaroid img {
  opacity: 1;
}
完成したデモ: http://people.opera.com/danield/css3/polaroid/index.html#demo さぁ、これで更にクリスマスの雰囲気になったでしょうか?来年の HTML5、CSS3などのウェブ技術の発展が楽しみですね。皆さん、have a Merry Christmas and a Happy New Year!

SVG のお勧めの資料

,

ご無沙汰しています。

SVG は新しい技術ではありませんが、最近けっこう注目されています。私もちょっと触ってみています。今のところは SVG のゲーム位置情報のデモだけですが、勉強するにはよく参考にする3つのホームページを見つけました。自分はまだ初心者レベルですが、ここで私にとっての最も役に立つ資料を紹介したら面白いかなと思いました。下記の資料は全部英語ですが、コードが多いなので文章を読まなくても勉強になるでしょう。

  • SVGBasics
    それぞれのページは短いですが、SVG の基本ならとても見やすいです。タグ名の綴りや属性の使い方を忘れた場合は役に立ちます。
  • carto:net
    上記の SVGBasics ほど見やすくないですが、説明は細かく書いてあります。私がよく読む部分は Manipulating SVG Documents Using ECMAScript です。なぜなら Internet Explorer 9 は SVG をサポートしますが、アニメーション用の SMIL は対応していません。このため、IE でも動く SVG のアニメーションを作りたいのであれば、JavaScript を利用する必要があります。
  • SVG Essentials
    さすが O'Reilly さん。本全体をオンラインで公開しています。相変わらずとてもプロフェッショナルな感じであり、コードの事例や画像が多いです。ちなみに印刷版もあります

Opera の社員ですからもちろん弊社の開発者向きの SVG 記事集も忘れずに。最後に、右上の画像は Nicu Buculei さんの作品であり、無料な SVG 画像をたくさん提供しています。

他の資料、又は参考にできる事例をご存知であれば、是非コメントでお知らせください!

Event: Mobile Web Tips & Techniques (英語)

, , , ...

So former Tokyo-ite and manager of the Opera Developer Relations Team, Andreas Bovens, is returning to Tokyo next week and we suddenly thought we should have a little meetup. With Andreas having recently spoken at Mobile 2.0 Europe 2010, we've decided to have an evening dedicated to discussing mobile web development techniques. We'd like it to be fairly informal and are planning it as follows:

  1. Mobile web development techniques (Andreas Bovens)
  2. Opera's mobile development tools (Daniel Davis)
  3. Discussion of ideas, tips and examples of good mobile web design (open to all)

The event will be in English but at an easy level to accommodate non-native speakers.

Some more details:
Event topic: Mobile Web Tips & Techniques
Date/Time: Thursday 15th July 2010, 19:00 - 21:00 (doors open from 18:30)
Place: Opera Japan breakroom. ORIX Meguro building 9th floor, 1-24-12 Meguro, Tokyo. 〒153-0063 (Map)
Entry fee: Totally free
Seats: 40 (first come, first served)
Target audience: People with an interest in or experience in mobile web design/development.

If you'd like to attend, please send a short email to us mentioning the event topic (Mobile Web Tips & Techniques) and your name to: contact-japanアットopera.com (don't forget you need to insert a real @ sign).

Look forward to seeing you there!

イベント:Tomorrow's Web Today

, , , ...

新年度に合わせて新しいイベントを発表いたします。

Opera Software の共同創業者である Jon von Tetzchner と CSS の概念を初めて提唱した Håkon Wium Lie(Opera の CTO)が来日しますので「今日考える明日のウェブ」についてのセミナーを計画しています。allWebクリエイター塾講師、Web Directions East LLC 代表の菊池 崇氏もスピーカーになりますので、ウェブ関連の皆様、是非ご参加ください。

詳細は下記のようになります:
イベント名:"Tomorrow's Web Today"(日本語で行います)
日時:2010年05月14日(金) 19:00~21:00(開場 18:30)
場所:六本木ヒルズ 40階 アカデミーヒルズ (地図)
入場料:無料
人数:150人(先着順)

申し込みはメールで行っております。参加したい方はお早めに「Tomorrow's Web Today」の件名で「contact-japanアットopera.com」までご連絡下さい。待ってま~す!

今回参加できない方は申し訳ありませんが、今後もイベントの開催を考えていますので、又宜しくお願い致します。

Media Queries でデバイスの対応

, ,

あるウェブサイトは iPhone 専用のバージョンがあります。しかし、Opera Mini が Apple さんの App Store に入りましたので、iPhone ユーザのブラウザは必ずしも Safari だけではありません。

あるウェブサイトはモバイル専用のバージョンがあります。しかし、iPad みたいなタブレットなどが現れるとモバイルと呼ばれるデバイスがファジーになりました。

いろんなデバイスのため、複数のウェブサイトバージョンを別々に作って、管理するのが大変。このため、一つのサイトをいろんなデバイスや画面の大きさに対応するの方が楽だと思います。

以前、HTML5 をサポートしないブラウザでも Modernizr を使って HTML5 が利用できることについて書きました。、JavaScript の window.innerWidth も画面の幅を判断して機能のカストマイズができます。ところがデザインはどうすれば良いでしょう?CSS3 がオタスケマーンになります!

Read more...

ウェブスタンダードの良さ (The beauty of web standards)

, , , ...

日本語で記事を書くのが苦手ですから今回はビデオにしようと思いました。
撮影が終わったらやはり話すことも苦手だなと思いましたが、まぁ、とにかく「ウェブスタンダードの良さ」をそのままアップロードしました。

Download OGG file (28MB)

JavaScript を勉強すべきか

,

昨日はあるソフト開発会社と HTML5 についてとても面白い話ができました。HTML5 はもちろんバズワードで注目されているものですが、ある面では HTML5 の新しい技術の知識より JavaScript の知識の方が重要であるかも知れません。私が前から思っていたことの一つは、 HTML や CSS を利用しているウェブデザイナーが JavaScript を少しでも勉強しないと仕事がなくなる恐れがある、ということです。しかし、昨日の話のおかげでウェブアプリケーションが人気になればなるほど、いわゆる一般的な開発者も JavaScript を勉強する必要性が出てくると気づきました。いつも C++ を使っているプログラマーでも、いつも Photoshop を使っているデザイナーでも、JavaScript を理解するためのキーポイントは同じです:

  • JavaScript を使う前に詳しく勉強する必要はありません。一行でもホームページに挿入して試してみることができます。
  • JavaScript は厳しくないです。いろんな間違いを許してくれます。例えば、変数の宣言を忘れたり、セミコロンを忘れたり。
  • コーディングしやすい言語です。例えば、変数のタイプは指定しません。
  • 一応安全な言語です。どうすれば良いか分からない時、何でも試してみても大丈夫です。最悪の場合、ブラウザの再起動が必要になります。
  • 開発ツールがあります。最も簡単なのは OperaFirefox に入っているエラーコンソールです。ちゃんとしたデバグツールなら Opera の DragonflyFirefox の Firebug がお勧めです。開発用の IDE がほしい方は Eclipse(英語)や Aptana(英語)が利用できます。

しかし、私にとって最も重要なポイントは:
  • JavaScript のパワーです。以前はくだらないアニメーションによく使われていましたが、その時代は終わりました。成長しました。

JavaScript と他のウェブ言語(HTML、CSSなど)でできるものは C++、Javaなどでできるものに急速に近づいてきています。jQuery みたいなライブラリーのおかげでその差がますます小さくなっています。一般的な開発言語との概念はほぼ一緒ですが、異なるところはプラットフォームです。ネットワークを利用するデバイスが多くなればおおくなるほど、OS のための開発よりブラウザのための開発の方が一般的になるでしょう。

参考資料

プログラミング経験がない場合:

プログラミング経験がある場合:

お勧めの本

最後に、Opera 社員でいることにも関わらず、Mozilla さんの JavaScript ガイドリファレンススタイルガイドはプログラミングしながらのとても役に立つ資料です。

Modernizr で HTML5 の使用が楽に

,

「それぞれのブラウザはどこまで HTML5 を対応していますか。比較表はありますか。」
最近よく聞かれます。聞かれると最初の反応は「oh no!」です。

ブラウザの対応を調べようとすると、このような問題が出てしまいます:

  • ブラウザのバージョンは日々変わっています。
  • HTML5 仕様そのものは日々変わっています。
  • あるブラウザは、今日の◯◯版の対応は昨日の◯◯版の対応と違うかもしれません。
  • あるブラウザの Windows 版の対応は Mac 版、Linux 版、携帯版、テレビ版、ゲーム機版やタブレット版の対応と違うかもしれません。
  • HTML5 対応は true/false ではなく、部分的な対応の方が普通です。
  • 既存の比較表は例外がとても多く、分かりづらいです。
  • ユーザーエージェントはよく嘘を付き、ブラウザの判断としては理想的ではありません。

比較表をいつも更新するのは限りがない作業で大変だし、比較表をいつも参照しないといけないウェブ開発者がかわいそうです。
この道を辿ればストレスが溜まりアッという間に白髪が増えてしまいます。おかげさまで楽な方法があります:

ブラウザの対応ではなく、使いたい機能の対応を調べましょう

JavaScript を利用すればある要素、若しくはある属性の存在を調べることができます。このための関数を作ることは難しくありませんが、便利な HTML5 や CSS3 の対応が検出できるライブラリーは既にあります:Modernizr

Modernizr は開発中のため、SVG や Opera 10.5 のトランジションとトランスフォームの検出はまだできませんが、HTML5 がすぐに使いたいウェブ開発者にお勧めです。残念ながら日本語の資料はまだ少ないようなので、使い方を簡単に説明したいと思います。

他の JavaScript ライブラリーと同じように、まずウェブページの <head> にリンクを挿入します:

<script src="modernizr-1.1.min.js"></script>

次は使いたい HTML5 の機能を対応しないブラウザのためのコードを書きます。JavaScript を対応しないブラウザや JavaScript を無効にしているユーザーのため、ベーシックな HTML だけを利用します:

<select id="level">
	<option disabled selected>選択してください</option>
	<option value="0">0</option>
	<option value="1">1</option>
	<option value="2">2</option>
	<option value="3">3</option>
	<option value="4">4</option>
</select>

実際に使いたい機能(例えば HTML5 Forms の「range」スライダー)の対応は下記のように Modernizr のオブジェクトで判断できます:
// JavaScript
if (Modernizr.inputtypes.range) {
    ...
}

ブラウザが対応する場合、不必要になった要素を削除し、使いたい要素をページに追加します:
// JavaScript
var fieldset = document.getElementById('fieldset');

// 不必要なセレクトボックスを削除する
fieldset.removeChild(document.getElementById('level'));

// スライダーの input を作る
var level = document.createElement('input');
level.setAttribute('id', 'level');
level.setAttribute('type', 'range');
fieldset.appendChild(level);

上記のコードを利用して簡単なデモを作りました:HTML5 対応を判断する事例

このような方法で行うと、過去のブラウザでも、未来のブラウザでもユーザビリティが良く、そして常に変化している HTML5 のサポートを気にする必要はありません。是非機能の対応を判断しながら HTML5 を使ってみて下さい。

アクセシビリティイベント:thank you!

,

水曜日に Opera Japan で開催された「アクセシビリティ:Let's reach out to users!」のイベントへいらっしていただいた方々、本当ありがとうございました。

参考になって、そしてネットワーキングの機会にもなったことを願っています。

プレゼンターの Chaals が資料を少し更新しましたので公開します:

The modern Web: Accessibility

(Opera で見るとフルスクリーン表示(F11)でスライドショーになります。)

イベントのリポートは Choose Opera 日本支部のブログをご覧下さい。

又今度ウェブ関連のイベントを開催したいと思っていますのでよろしくお願いいたします。
Once again, thank you!

アクセシビリティのご紹介:無料のイベントのお知らせ

,

Happy New Year!
先月の HTML5 イベントの続きとして、ホームページのアクセシビリティについてのイベントを今月も開催いたします。
アクセシビリティはよくバリアフリーのウェブデザインと思われていますが、実はモバイルユーザ、検索エンジン対策(SEO)にも効果的ですので、是非参加していただいて、ユーザを増やしましょう!因みにアクセシビリティの知識を持っていなくても大丈夫です。


今回のスピーカーは久しぶりに来日する Opera の CSO(Chief Standards Officer)チャールズ・マクシネヴィルです。
その上、アクセシビリティが得意な MITSUE-LINKS の木達一仁氏が Q&A セッションでチャールズと皆様のご質問に回答していただきます。

詳細は下記のようになります:
イベント名:アクセシビリティ:Let's reach out to users!(日本語で行います)
日時:2010年01月20日(水) 19:00~21:00(開場 18:30)
場所:Opera Japan のブレイクルーム。〒153-0063 東京都目黒区目黒 1-24-12 オリックス目黒ビル 9階 (地図)
入場料:無料
人数:40人(先着順)
対象者:アクセシビリティに興味を持っているウェブ開発者

プレゼンテーションの他にも、話す時間やネットワーキングの時間はたっぷりあります。楽しいイベントができることを期待しています。

申し込みはメールで行っております。参加したい方はお早めに「アクセシビリティイベントの参加希望」の件名で「contact-japanアットopera.com」までご連絡下さい。待ってま~す!

今回参加できない方は申し訳ありませんが、今後もイベントの開催を考えていますので、又宜しくお願い致します。