Material Design とは2014年の Google I/O で Android Lollipop の新しい UI として発表したデザインです。Google のアプリではそれ以前の Android や Web でも使われています。

Google が出している Paper Elements というものを使ことで、そんな Material Design を自分のアプリやWebサイトでも使うことができます。

自分たちでUIをデザインする労力を省けますし、特にAndroidでは他のアプリと統一されたデザインにすることで、ユーザにとって使い方がわかりやすいものにすることができます。

インストールする

bower を使ってインストールするのが推奨されているので、それを使います。

$ bower install Polymer/paper-elements

依存関係も一緒にインストールしてくれます。

インストールが終わったら、こんなHTMLを用意しておきます。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Paper Elements</title>
    <script src="bower_components/webcomponentsjs/webcomponents.min.js"></script>
    <link rel="import" href="bower_components/polymer/polymer.html">
</head>
<body>
    <!-- ここに色々書いていく -->
</body>
</html>

使ってみる

手始めにボタンを作ってみます。さっき作ったHTMLに以下の内容を書き込みます。

<paper-button raised>This is button</paper-button><br>
<paper-button>This is flat button</paper-button><br>
<paper-button raised noink>This is flat button (no effect)</paper-button><br>
<paper-button noink>This is flat button (no effect)</paper-button><br>

<paper-button> というのは Paper Elements によって定義されたHTMLタグです。このように独自に定義されたHTMLタグを使うことで、UIを作っていきます。どのような要素が使えるかはここを見ればわかります。

ブラウザで確認してみます。普通にファイルをブラウザで開くだけだとエラーが出てきちんと表示されないので、サーバを立てる必要があります。

一番簡単なのは、おそらく Python を使う方法です。HTMLのある場所で以下のコマンドを実行します。

$ python -m SimpleHTTPServer

これで8000番のポートにサーバが立つ。ブラウザでアクセスできるようになったはず。

Paper Elements を使ったボタンが縦に4つ並んだスクリーンショット

こんな画面が出ました。上2つはクリックするといい感じにアニメーションします。

CSSで色も変えることもできます。詳しくはここに書いてあります。

もっと使ってみる

ボタン以外にも多くの要素があります。例としてスライダーでページの背景色を変えてみます。

<paper-slider min="0" max="255" value="255" onchange="
    document.body.style.backgroundColor = '#' + this.value.toString(16) +
        this.value.toString(16) + this.value.toString(16);
"></paper-slider>

Paper Elements を使ったスライダーで背景色が変更されたスクリーンショット

ブラウザで確認すると、いい感じのスライダーが表示されます。

onchange に書いたJavaScriptによってスライダーを動かすと背景の明るさが変わるようになっています。

まとめ

  • Material Design とは Google が発表したUIのデザインです
  • HTMLから使うことができます
    • $ bower install Polymer/paper-elements
  • いろいろな要素がデザインされています
    • 例で使ったのは <paper-button><paper-slider>