はじめまして!
アメーバゲーム部門でディベロッパーをしております、なるげと申します。

現在、私は「ガールフレンド(仮)」チームに属していますが、前は「フレンダリアと魔法の指輪」というファンタジーRPGで、モンスターのアニメーションを担当していました。
ガールフレンド(仮)でも一部CSSアニメを使用してキャラクターを動かしています。

今回は、ガールフレンド(仮)に登場するガールを例に、キャラアニメの制作をご紹介したいと思います。

ガールフレンド(仮)とは

「ガールフレンド(仮)」とは、ユーザーが主人公となり、様々な女の子と出会っていく学園恋愛カードゲームです。


チュートリアルガールのアニメーション

今回ご紹介するのは、現在チュートリアルで登場しているガールです。
このガールは、CSS3アニメーションを使用して動かしています。



百聞は一見に如かず!! ということで

≫ 実際に動くサンプルはこちら ≪


ガールの動きは、プランナーさんやイラストレーターさんと相談して決めていきます。

場面はチュートリアルなので、複雑な動きはせず、
「息遣いをしつつ、静かに頷く」という動きをつけることになりました。
3年生の先輩ガールなので、落ち着いた印象の、穏やかな動きをイメージです。

このガールをpsdからパーツごとに書き出し、スプライト化したものが以下です。


これらのパーツを<div>タグの背景にして、<div>タグの組み合わせでアニメーションさせます。

チュートリアルガールの構成は以下です。
<div class="naviko play">
  <div class="all_FRAME_ANIME"> ←ガール全体を動かすアニメ
    <div class="body_ANIME"> ←体を動かすアニメ
      <div class="body"></div> ←体パーツ
    </div>

    <div class="head_FRAME_ANIME"> ←頭全体を動かすアニメ
      <div class="hair_ANIME"> ←髪のアニメ
        <div class="hair"></div> ←髪パーツ
      </div>

      <div class="head"></div> ←頭パーツ

      <div class="eye_blink_ANIME"> ←瞬きのアニメ
        <div class="eye_blink"></div> ←瞑った目のパーツ
      </div>
    </div>
  </div>
</div>

入り組んでいるように見えますが、図解すると下のようになります。


下準備ができたので、いよいよ動きをつけていきます!


パーツに動きをつける

1つのパーツの動き方がわかれば、あとは応用させるだけですので
ここでは、髪(サイドテール)のアニメを例にして、お話したいと思います。

髪の部分のCSSは以下です。
/* 髪 */
.naviko .hair{
  position: absolute;
  top: 40px;
  left: 3px;
  width: 82px;
  height: 141px;
  background-image: url("girl/sptite.png");
  background-size: 335px 431px;
  background-position: -200px -150px;
}
.naviko.play .hair_ANIME{
  -webkit-transform-origin: 52px 54px;
  -webkit-animation: hair_ANIME 4s ease 0 infinite;
}
@-webkit-keyframes hair_ANIME{
  0%{ -webkit-transform:rotate(0deg); }
  5%{ -webkit-transform:rotate(0deg); }
  30%{ -webkit-transform:rotate(-4deg); }
  55%{ -webkit-transform:rotate(2deg); }
  100%{ -webkit-transform:rotate(0deg); }
}

CSSアニメの基本の説明は省いてしまいますが、複雑なことは特にしていません。
アニメ全体の長さは、ゆったりとした動きを出したかったので4秒(4s)にし、infiniteで動きを繰り返すようにしています。

あとはタイムラインを強く意識して、@Keyframesでアニメの進行に合わせた動きをつけていくだけです。
サイドテールはゆらゆらと左右に揺れるだけですので、rotate(回転)だけ設定しました。

ここで重要なのは、
  -webkit-transform-origin: 52px 54px;

です。
これは回転の原点を決めています。
これを定めないと、中心を原点として回転してしまい、変な動きになってしまいます。

今回の場合、ちょうど髪の結び目あたりを原点として揺らしました。




「入れ子」のアニメ

»完成の動き« を一度見てもらうとわかるのですが、サイドテールは
髪自体のゆらゆらする動き+頭全体の頷く動きが必要です。

この動きを出すにはアニメーションを「入れ子」の構成にする必要があります。

hair部分を見てもらうとわかるのですが、
    <div class="head_FRAME_ANIME"> ←頭全体を動かすアニメ
      <div class="hair_ANIME"> ←髪のアニメ
        <div class="hair"></div> ←髪パーツ
      </div>

      …略…

    </div>

と、hair_ANIMEの上に、頭全体の動きをつけるhead_FRAME_ANIMEというclassがあるのがわかります。



髪自体には、揺れる動きのみをつけ、
頷く動きは頭全体を動かすdiv(サイドテール、頭、瞑った目を含めたdiv)につけます。
これで、髪自体が揺れつつ頭も動かすことができました!
この作りは、目の瞬きでも同様です。

このように「頭全体のアニメーションの中に、さらに髪が揺れるアニメを入れ込む」といったような階層構造を持たせる(入れ子にする)と、複雑な動きも表現できます。


さいごに

今回はrotate(回転)のみを使いましたが、translate(移動)scale(拡縮)opacity(不透明度)を適宜組み合わせていくことで、さらに複雑な動きもつくれます。

冒頭で少し触れましたが、「フレンダリアと魔法の指輪」というゲームではモンスターが毎月たくさん登場していました。
今年3月にクローズしてしまったので、今は見れないのですが、


ズラリ…と並ぶすべてのモンスターごとにユニークな動きがついていました。
≫フレンダリア モンスターサンプル≪
(とても滑らかなアニメーションなのでスマートフォンでもご覧ください)

これらをイチから手作業でやるとなるととてつもなく大変ですが、実際にゲームで制作する際には、運用を考えて一部ツールで自動化していました。
今回はフローのみに触れる形となってしまいましたが、また機会があればご紹介したいと思います。


アニメーションは本当に奥深く、
実際に動かしてみたら、なーーんか不自然…
流れが"平たん"になってしまって面白みに欠ける…

などなど毎回試行錯誤の連続ですが、イメージ通りに動いた時の嬉しさは格別です!

私自身、今後も日常の些細な動きにも注目しつつ、新たなアウトプットができるよう精進していきます。

最後までお読みいただきありがとうございました。m(_ _)m



ぷちガールちゃんもよろしくね♪ ≫ガールフレンド(仮)≪


こんにちは。スマートフォン版Amebaでディベロッパーをしている宇納です。

本日は普段の業務とは離れて、ちょっとだけ便利なTipsのご紹介です。

Mac OS用のクリップボード・ユーティリティソフトClipMenuをJavaScriptで拡張する方法と、それを使ったサンプルをご紹介します。
とても簡単にできますので、プログラミングが苦手な方も是非挑戦してみてください!

ClipMenuとは

クリップボードの履歴を保持しておけるフリーのアプリケーションで、これを使うとコピー+ペーストを何度も繰り返さなくても、コピーした履歴から呼び出してペーストができます。
また、よく使う定型文を保存しておいて、簡単に呼び出すスニペット機能もあります。


http://www.clipmenu.com/

有名なソフトですので、すでに使われている方も多いのではと思います。
僕もずっと使っていますが、個人的には、コピーしたテキストをJavaScriptで加工できるJavaScriptアクション機能が素晴らしいと思っています。
本日フォーカスしたいのはこの機能です。


あらかじめ用意されているアクションを使ってみる

まずは自分で書く前に、ClipMenuにあらかじめ用意されているアクションを使ってみましょう。

試しに「Ameba」というテキストをコピーして、ショートカットキーでClipMenuを開きます。


リストから「Ameba」を選択してCtrl + Enterを入力すると、さらにメニューが開きます。
ここでは Case → UPPERCASE.jsを使ってみます。
(メニューが開かない方は環境設定を確認してください。)

「AMEBA」と全部大文字に変換されてペーストされましたね。これが基本的な使い方です。

あらかじめ用意されているアクションをさらに追加してみる

大文字・小文字を変換したりできるのももちろん便利ですが、
実は最初からもっと色々と用意されているので使ってみることにします。


環境設定の「アクション」を開きます。
「タグで囲む...」というのがあるので追加してみましょう。
左側のメニューに追加されたら、設定画面を閉じて完了です。

試しに使ってみると、


プロンプトが開いて、タグ名を入力すると、そのタグで囲んでくれました。
とても簡単ですね。

さっき設定画面にあった「Markdown → HTML」というのも気になりましたよね。
これも追加して使ってみましょう。


はい、本当にMarkdownがHTMLに変換されました。

オリジナルのアクションの追加方法

それではいよいよ、自分でアクションを作ってみましょう。
まず、フォルダを用意して、新しくJSファイルを追加する必要があります。
場所はこちらです。
/Users/<ユーザ名>/ライブラリ/Application Support/ClipMenu/script/action/


ここに以下のような内容のJSファイルを、「test.js」という名前で保存してみます。
return clipText.split('').join('\n');

処理の仕組みは、あらかじめclipTextという変数にクリップボードのテキストが入って実行されるので、これを使って加工して、最後に結果をreturnしてあげるだけです。

保存すると、設定画面のアクションからUser'sのメニューに追加されていると思います。
(反映されない場合はClipMenuの再起動を試してみてください。)
あとはこれを先ほどと同じように選択して左側のメニューに追加して使います。


さて、1文字が1行ずつに変換されたでしょうか。
これが何かの役に立つかはわかりませんが、仕組みはこんな感じです。

また、先ほどの「タグで囲む...」というアクションでもあったように、
prompt()を使って、実行時に入力した文字列と組み合わせることもできます。

アクションのサンプル集

それでは、試しに作ってみたサンプルをいくつかご紹介します。
JavaScriptがわからない方は、リンク先のコードをコピペして使ってみてください。
(画像をクリックするとgithubに遷移します)

行ごとに引用記号を追加するアクション


"> "を各行の先頭につけただけです。チャットとか、メールとか、テキストエディタとか、アプリケーション問わずよく使うものはClipMenuのアクションにあると役立ちます。


行番号を追加するアクション


先ほどの"> "のかわりに、"1. ", "2. "...と行番号を追加していきます。100行あったとしても、行のラインが崩れないように工夫するのがコツです。


URLのクエリストリングをパースするアクション


たくさんクエリのついた長いURLを、見やすくペーストできると嬉しい時ありませんか?URLとJSONの形で複数行になるように書いてみました。


カラーコードの16進数←→RGB 相互変換アクション


おなじみのカラーコード「#FFF」←→「255, 255, 255」を相互変換できるようにしてみました。CSSを書く時とかにちょっと便利かも?今まで16進数と10進数の変換をするような機会はなかったのでちょっとした頭の体操にもなりました。


Windows←→Macの共有ファイルパス 相互変換アクション


共有ファイルサーバーなどを利用していると、Windowsユーザーから\(バックスラッシュ)区切りのファイルパスで場所を共有され、Macユーザーがそれを/(スラッシュ)区切りのファイルパスに書き換えないといけないとか(その逆とか)が発生することがあるので書いてみました。


ExcelからコピーしてMarkdownのテーブル記法に変換するアクション


Markdownで表を書いていると、だんだんわけがわからなくなってくるのは僕だけでしょうか。修行が足りないのかもしれません。Excelからコピーするとタブ区切りになるようなので、それを利用してMarkdownに変換してみました。他のWiki記法にも応用できるかもしれませんね。


JSONを整形するアクション


色々なツールを使ってもいいですが、JSON.stringify()の第三引数を使えば簡単に整形できてしまうので、用意しておいても損はないでしょう。サクッとコピーしたJSONをメモ帳やWikiなどに貼る時に便利です。パースできない文字列が渡されてJSエラーになるのを回避するために、try catchを利用しています。


JavaScriptを整形するアクション


Chrome Dev ToolsでMinifyされたJSを展開してデバックできたりしますが、僕はたまにライブラリの一部のメソッドのコードだけをコピーして、そこの部分だけ展開してサクッと読みたい、ということがあったりします。そこで、以前GPLライセンスで配布されていた、JS製JSデコーダーのライブラリを利用して、整形アクションを作ってみました。

ここでは、ライブラリの部分をscript/lib配下に置いて、ClipMenu.require()を使って呼び出してみました。require()の戻り値が、Node.jsのようなモジュールへの参照ではなく、読み込み結果を示す値になっていて、ライブラリの参照はグローバルからになる点に注意してください。

おわりに

大雑把な解説となってしまい申し訳ありませんが、なんとなくご理解頂けたでしょうか?
「ClipMenuは前から使っていたけど、JSで拡張ができるなんて知らなかった」という方もいらっしゃるのではないでしょうか。

今回は触れませんでしたが、リッチテキストの状態でコピーされたデータのフォントを変更するなんてこともできるようです。興味がある方は、公式サイトの解説のページか、アプリケーションと同梱されている「JavaScriptアクションの書き方.txt」などを読んでみることをオススメします。

普段JavaScriptを書く方はもちろん活用して頂きたいですが、そうでないデザイナーの方やディレクターの方もこの機会にチャレンジ頂けたら嬉しいです。
「こんなことできたらいいなー」という気持ちが、きっとプログラミング学習の意欲をかき立ててくれるはずです・・・!!

ではまた。

http://www.clipmenu.com/


はじめまして。
mama&crowdのデザイナー、長谷川彰之介です。

今回は、WEBサイトの「余白」や「ブロックサイズ」「WEBサイトの横幅」に対して

「最適な値は存在するのか?」

について考えてみたいと思います。
少々長いですが、お付き合いのほどよろしくお願いします。

目次
--------------------------------------------------
【第1部】8の倍数
【第2部】iPhoneのUI
【第3部】グリッドデザイン
【第4部】画面解像度のトレンド
【第5部】黄金比とフィボナッチ数列
【第6部】バナーガイドラインを導入
【第7部】最小余白の設定
【第8部】デザインは8の倍数でできている
【第9部】実例集
【第10部】あとがき
--------------------------------------------------

最初に「余白とブロックサイズ」の説明です。

余白とは「ボックスとボックスとの間」「文字と文字との間隔」を指します。
WEBデザインではマージンやパディングとも呼びます。
ここでは区別せずに、余白と呼ぶことにします。



ボックスサイズとは、「ヘッダー」「コンテンツ」「ナビゲーション」などの
ひとつひとつの固まりの大きさ(サイズ)を指します。




【第1部】8の倍数


WEBサイトのUIをデザインしていて悩まされるのが「余白」です。

「ここは3px…いや4pxか。もっと空けたら見やすくなるかもしれない。6pxでいこう!」
「10の倍数をベースにしよう。PhotoshopでのShift移動は10pxが基本だし使いやすい」
「9 + 4nをベースにすれば最強かもしれない!」

最適な余白の値は存在するのだろうか?
それとも、好みやセンスの問題でしかないのだろうか?

すぐに答えは出せず、関わるプロジェクトごとに見た感じで決めていました。
8の倍数に気がついたのは、「ディスプレイの解像度別サイズ表」を見ていた時です。

iPhone、Android、Mac、Windows。多くは8の倍数による画面サイズでした。


--------------------------------------------------------
Vector Video Standards2
出典:wikipedia
--------------------------------------------------------

よくみかける数字を、実際に8で割ってみます。
240÷8=30 320÷8=40 480÷8=60 640÷8=80 1024÷8=128 1440÷8=180 1920÷8=240 2560÷8=320

見事に割り切れます。
そしてひとつの仮説が生まれました。

「デザインは8の倍数でつくることができる」

より具体的にいうと、こうです。

「WEBサイトの余白やブロックサイズ、サイトの横幅は、
8の倍数ですべて定義することができる」


これが完成すれば、もう数字で迷わなくなる。
「ゴールはWEBサイトを8の倍数だけで制作できること」
これを実証してみたいと思います。

まずは、この仮説自体をWEBサイト制作の条件とします。

--------------------------------------------------------
1 余白やブロックサイズは8の倍数で設計
--------------------------------------------------------


【第2部】iPhoneのUI


普段の生活に馴染んでいるもので、8の倍数を基本としたモノがありました。
iPhoneのUIには8の倍数が多く含まれています。


--------------------------------------------------------
Size of iPhone UI Elements
出典:iPhone Development 101
--------------------------------------------------------

iPhone iOS7のホーム画面のアイコンサイズは 120 ×120
iPhone UXガイドラインにおける推奨の最小タップエリアは44px(retinaで88px)

8の倍数でない数字も多く使われています。
しかし、何かベースにできそうな匂いはしてきました。


【第3部】グリッドデザイン


次は「WEBサイトの横幅」に話を移します。

mama&crowdでのデザイン業務は多岐にわたります。
WEBサイトのUIだけでなく、ランディングページやページ内コンテンツも制作します。

そこで、余白同様に難しいのが「WEBサイトの横幅」です。

「YAHOO! は950pxなので、これでいこう」
「最近は横長のディスプレイが多いので1024pxぐらいまでだったらいける」
「ファーストビューを考慮すると、横幅はおさえた方が見やすい」
「最近は横幅を可変にするべき、特に横幅は定義しなくてもOK」

意見は様々で、ネット上を調べても簡単には「この値でお願いします」
という核心的なものに出会えません。

そこでカチリとハマったのが、「960pxグリッドシステム」でした。

WEBサイトの横幅は960pxが適切であると提唱し、そのガイドラインを発表しています。




--------------------------------------------------------
960GRID SYSTEM
出典:960 GRID SYSTEM
--------------------------------------------------------

ちなみに、グリッドシステムとは一定の間隔で縦と横に画面を区切り、
ルールに従ってデザインを行っていくシステムです。

グリッドで情報を整理することで、伝えたい情報が的確に伝わります。
ルールを一部壊すことで、意図的な強弱も作り出すことができます。


--------------------------------------------------------
グリッドシステム-サイトへの有効活用法
出典:coliss
--------------------------------------------------------

この960pxグリッドシステムですが、
WEBサイトの横幅を960pxが理想とする理由に、下記のとおり説明しています。

●最近のモニターは1024x768の解像度を多くサポートしており、
960pxを表示するには十分である。

●960という数字は、2, 3, 4, 5, 6, 8, 10, 12, 15, 16, 20, 24, 30, 32, 40, 48, 60, 64, 80, 96, 120, 160, 192, 240, 320, 480と多くの数字で区切ることができ、
フレキシブルにグリッドの設計を行える

--------------------------------------------------------
ページの幅960pxを基準にして、設計するグリッドデザイン
出典:coliss
--------------------------------------------------------

今回注目した点は、960を分割できる数字として8の倍数を多く含んでいる点です。
2, 3, 4, 5, 6, 8, 10, 12, 15, 16, 20, 24, 30, 32, 40, 48, 60, 64, 80, 96, 120, 160, 192, 240, 320, 480

「8の倍数」を実証するために、WEBサイトの横幅を960pxとして定義できれば、
「デザインは8の倍数でつくることができる」の実証に大きく近づきます。


【第4部】画面解像度のトレンド


ただし横幅が960pxというのは、PCのディスプレイサイズの多くが1024 x 768pxの時代です。
デザイントレンドを掴むには、つねに現状の位置を知り半歩前に進んでいることが肝心です。

現在のPCのトレンドでは、画面サイズは横に長くなってきています。
--------------------------------------------------------
もっとも良く使われるディスプレイ解像度が1024×768から1366×768にアップ
出典:TechCrunch Japan
--------------------------------------------------------

OS別に見てみると、
例えばMacBook Air の11inchで1366×768、
Windows 8の画面解像度は、システム要件として1366×768ピクセル以上と定めています。

今後のことを考慮して、960pxという数字を更新してみます。

1024 : 960 = 1366 : X
X = 1280

解は1280pxです。

この値は偶然か、8の倍数で割り切れます。また1280という数字も見慣れた数字です。

「いきなりこんな大きな画面では作れない」という場合は、
960~1280の間を80の倍数で区切って値を設定してもいいかもしれません。
( 960 1040 1120 1200 1280 )

今回は1280pxを最適値として「デザインは8の倍数でつくることができる」
を実証するための定義として追加します。

--------------------------------------------------------
1 余白やブロックサイズは8の倍数で設計
2 PCサイトの横幅は1280pxで設計
--------------------------------------------------------

次は、より強固なグリッドシステムを構築するために
話をもっと飛躍させていきたいと思います。


【第5部】黄金比とフィボナッチ数列


自然界でもっとも美しいと言われている比率は、黄金比だと言われています。
黄金比による、美しい長方形の比率は1:1.618になります。


--------------------------------------------------------
黄金比のいろいろ
出典:gakuen
--------------------------------------------------------

次にフィボナッチ数列とは、隣合う数字の和が、
次の数字になって連なっていく数列のことを指します。

1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , 55 , 89 , 144 , 233 , 377…

1 , 1 , 2 , 3 , 5 , 8 までを長方形で表すと図のようになります。
この区分の仕方は、最終的にWEBサイト製作の骨子になる重要な比率です。

A

この比率を使って美しく設計されたとされている、有名なWEBサイトとアイコンの実例です。


--------------------------------------------------------
Twitterのアートディレクター「新デザインは『黄金比』で造られている」
出典:DDN JAPAN
--------------------------------------------------------


--------------------------------------------------------
神秘の調和、アップル社のプロダクトデザインに隠された「黄金比」
出典:DNA
--------------------------------------------------------

話を戻して、
黄金比とフィボナッチ数列の関係をまとめます。

「フィボナッチ数列の隣り合う数字は、黄金比である」

1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , 55 , 89 , 144 , 233 , 377…
例) 377 ÷ 233 = 1.61802575107 ≒1.618

以上が黄金比とフィボナッチ数列の関係です。

この黄金比とフィボナッチ数列の関係に、先ほど定義したものを代入します。

--------------------------------------------------------
1 余白やブロックサイズは8の倍数で設計
2 PCサイトの横幅は1280pxで設計
--------------------------------------------------------

8の倍数はこちらです
8,16,24,32,40,48,56,64,72,80,88,96,104,112,120,128,136,144,152,160…

1280から1.618を割ったあと8の倍数の近似値にします。そして隣り合う数字を減算して数列をつくります。
1280 792 488 304  184 120 64

64より下は計算できません。64を基準として、もう一段階数列をつくります。
64 40 24 16 8 これで8の倍数による2段階のフィボナッチ数列が完成しました。

1280 792 488 304  184 120 64 | 64 40 24 16 8

「隣り合う数字の和が次の数字」となり且つ「8の倍数であること」を満たせています。
最後に、この値をフィボナッチ数列の長方形に代入します。



792 + 304 + 120 + 64 = 1280
にて、4辺の和が1280となりました。

黄金比とフィボナッチ数列の関係も8の倍数デザインの定義として使えそうですので、
3番目の定義にします。

--------------------------------------------------------
1 余白やブロックサイズは8の倍数で設計
2 PCサイトの横幅は1280pxで設計
3 隣り合う比率は、黄金比とフィボナッチ数列で設計
--------------------------------------------------------

次は、WEBサイトをつくる上で、抑えておくべき数字の話です。


【第6部】バナーガイドラインを導入


WEBルールの標準として確固たる地位を気づいているバナーガイドライン、
国際ルールとしても共通のものとなります。

代表的なバナーサイズから、参考になりそうな値を抽出します。


--------------------------------------------------------
バナーサイズの国際標準
出典:http://www.yuzuriha.sakura.ne.jp/
--------------------------------------------------------

8の倍数になっている箇所を赤くしました。

実際にどう使うのか、現時点で判断できませんが、無視はできません。
これも、新しい定義に追加します。

--------------------------------------------------------
1 余白やブロックサイズは8の倍数で設計
2 PCサイトの横幅は1280pxで設計
3 隣り合う比率は、黄金比とフィボナッチ数列で設計
4 バナーガイドラインを考慮して設計
--------------------------------------------------------

次が、最後の定義です。


【第7部】最小余白の設定


最後に、最小余白の値を設定します。
8の倍数がベースとなっていますので、「8」か「16」か「24」で最小余白を設定します。

最小余白とは「ボックスとボックスとの最小の余白」を指しています。



今回は、最小余白を「16px」に設定します。


【第8部】デザインは8の倍数でできている


WEBサイトを制作する上で、必要な定義がすべて揃いました。
実証の前に、整理をしたいと思います。

まず、今回の目的はこれでした。



具体的な言葉で置き換えます。



そして、使用する定義です。



そして使用する8の倍数の数字たち



それでは、今回はPCの3カラムレイアウトで実証してみたいと思います。

それでは、結果発表のデザインになります。
※クリックで拡大



【結果】
・余白はすべて8の倍数で構成することに成功
・ブロックサイズの90%以上を8の倍数で構成することに成功
・レイアウト構成にフィボナッチ数列と黄金比を盛り込むことに成功
・広告に関しては、8の倍数ではない300x250を入れこんだ

「結論、デザインは8の倍数でつくることができる」

これでもう「余白選び」や「ブロックのサイズ」「WEBサイトの横幅」に
迷うことはなくなります。
マークアップもベースがあれば効率的に制作や依頼できるようになります。

「WEBサイトの余白ルールやブロックサイズ、WEBサイトの横幅は、
8の倍数ですべて定義することができる」

実証は以上になります。

せっかくなので名前とロゴも考えてみました。

Eight Times UI Guideline (エイト・タイムズ・UI・ガイドライン)



実際に使用する場合の、手順です。



例外ルールも設定してみました。



以上となります。これで実証はおしまいです。
最後に、実例集と簡単なあとがきだけ書いて終わりとさせてください。


【第9部】実例集


実際のデザインの現場で試してきた、8Tのガイドラインです。

mama&crowd トップページ
※クリックで拡大



mama&crowd フォームページ
※クリックで拡大



大人のブカツ bk2 スマートフォン
※クリックで拡大



実例は以上です。ルール以上に例外も多く含んでいますので、
「どれぐらい許容してもいいのか?」の参考にはなると思います。

最後はあとがきです。


【第10部】あとがき


いかがでしたか?

今回は「余白」という切り口で、デザイン思考のプロセスを追いかけてみました。
実は「デザインは8の倍数で間違いない」の証明ではなく、
本題はデザインプロセスの公開にありました。

余白に関していうと、8倍でも6倍でも倍数が混ざっていてもたいした問題ではないです。
情報が整理され伝わりやすく、デザインがキレイであれば基本は言うことありません。
クライアントやプロデューサー、ディレクターがOKを出せばサクっと世に出ます。  

されど、余白1つとってもその無限に存在する値の中から選びとるのは
担当するデザイナーであって、必ず理由が存在していると考えます。

色、写真、フォント、サイズ、テイスト、トーン、テクスチャー、グリッド、比率、コピー…
それらは無数にあり、ビジュアルの中に分割されながらも複合的に存在し、
どれひとつとっても、それが正解かどうかの判断が非常に難しいものです。
その反面、多くの経験や研ぎすまされたセンス、あるいは妥協さえしてしまえば
判断は容易です。

さらに、その結果に対しては、ある人は正解だといい、あるひとはNGを出すでしょう。

重要なのは「何故それを選んだのか?」ただひとつの理由だと思います。
それを自分の中で持っているかどうか?考えた時間の総量をもってしてビジュアルに落とし、
勝負できているものがつくれているのか?その上で、仮想敵に挑んでいるのか?

どうせ1つ、たった一つの理由を選ぶなら、デザイナーとしてより良いものを選んでいきたい。

その1つ1つが高精度な選定理由により組み合わさると、
通常のデザインを越える、スーパーデザインを生み出すことが可能となります。

デザインのその先にある、スーパーデザインを生み出すための新しいパーツのひとつとして
今回のプロセスを含めていただけたら、大変光栄なことです。

長くなってしまいました。
また、機会があれば新しいデザインパーツに挑むつもりです。

最後までおつきあいいただき、ありがとうございました。

mama&crowd
designer
長谷川 彰之介
hasegawa_akinosuke@cyberagent.co.jp
こんにちは。アメーバ事業本部の佐藤歩です。

今回は、所属部門で行っているワーキンググループというフロントエンドにおけるナレッジ共有の取り組みについてご紹介します。

もったいない問題

社内におけるナレッジのもったいない話。

所属部門では、およそ30前後のサービスについて日々開発・運営が行われています。チーム毎で密な開発を進めているので、その中で生まれた属人的なナレッジは、特に機会がなければそのまま埋もれてしまいがちです。

非常に「もったいない」話です。

他にも「●●●っていう技術が熱いらしいけど、時間が無い or 機会が無い」という損失をそのままにするのも、もったいない。今のうちにキャッチアップしておくことで、有効な手段を見つけられるかもしれませんし、逆に早めに見限ることができるかもしれません。

ということで、これらの「もったいない」を解決するため、前期からワーキンググループという取り組みを始めました。

解決策としてのワーキンググループ

ワーキンググループ(作業部会)の活動はいたってシンプルで、技術的なテーマを決めて3~4ヶ月ほどの活動を通してナレッジ集約を行います。ちなみにワーキンググループという呼称は、もちろんW3Cの部会に対するリスペクトを含んでいます。

・興味 or 需要の高まっているテーマを集中的して扱う
・1グループは 5~6名くらい
・期間は 3~4ヶ月
・活動のゴールイメージを決めておく
・何らかのアウトプットをする(ドキュメント・ライブラリetc)

潜在的な社内ナレッジについては議論と集約をする機会になりますし、新技術の研究・調査にとっては先行投資の機会になります。

ワーキンググループそのものは、技術に取り組むための機会しか提供しませんが、ゴールとアウトプットのイメージを固めておくことで、社内活動としての適度な緊張感と、着地点の精度がグンと増します。

社内共有会の様子

社内共有会の様子

Sassワーキンググループの場合

前期に行った、Sassワーキンググループでは、下記のような問題に対して「実際のところ、皆使っててどうなの?」という議論を経て、部門的なベストプラクティスをGitHub Enterprise内にドキュメント化することをゴールにしました。

・変数は本当に便利なのか
・ネストのスパゲッティ問題
・@extendの使い過ぎに注意しろと言われてるけどなんで?
・@if, @for, @each, @while の使い所

ひとりの力でもこれらの問題に学びを得ることはできますが、学びを広めるにはエネルギーが必要なので共有知としてなかなかスケールしません。グループで取り組むことで、複数名が同じ問題に向き合うことになるので、少なくともその中では共有知になりますし、一人で取り組むよりはスケールも期待できます。

前期は他にも、UI実装やSEO対策のワーキンググループを実施しました。特にSEOについては社内の専門部署とも情報交換をすることで、非常に濃いノウハウが集約されていました。

副次的な効果

前期はグループリーダーを中~上級者層にお願いして、他のメンバーは新卒から中堅に至るまで幅広いレベル感で構成しました。おかげで、上級者の日常的な疑問から、新卒の素朴な疑問までを広くカバーできる、偏りのないアウトプットを作り出せていたようでした。

あとは単純に、初級者から上級者までをミックスしたことで学びを得る機会があったこと、今まで絡む機会の少なかった人達と知り合う機会を増やせたこともあります。

アウトプットの主体化と組織還元のサイクル化

技術的なことをアウトプットするには色々な手段があります。技術ブログを書く、GitHubにソースコードを公開する、勉強会でライトニングトークをする etc…。

昨今のフロントエンド技術について出回っている情報を俯瞰してみると、目新しいAPIの紹介であったり、広まってきたツールの入門記事であったりが多くを占めます。そのように新しい知識・情報が好まれる反面、「実際みんな、それ使ってどうやってんの?」という情報発信はハードルが高さから、それほど活発ではありません。

ナレッジの展開サイクル
ナレッジの展開サイクル

個人の興味やトレンドはすぐに移り変わるかもしれませんが、現場で本当に必要とされているのは長期運用の実践的なノウハウのはずです。同様に、対外的にも価値が高いのは、そういったノウハウのアウトプットだと考えています。

ワーキンググループを通して、自分たちのナレッジを主体的にアウトプットする機会をつくり、有益な現場ノウハウの価値を最大化して組織に還元することがワーキンググループ自体のゴールです。

おしまい

以上、簡単にですが部門内の取り組みをご紹介しました。

今期のワーキンググループはまだ準備中なのですが、取り扱う予定のテーマとしては、みんな大好きAngularJSや、データビジュアライゼーション、電子工作(!!)が検討されています。

これらワーキンググループの活動成果(技術的なアウトプット)が、今後外向けにもシェアできればと考えていますので、そのときは是非ご覧ください。
こんにちは!
アメーバ大喜利でフロントエンジニアをしています母良田です。

今回書くテーマは、社内でも「違う技術を学ぶ」傾向になってきているので、
フロントエンジニアと近しい関係の「デザイナー」向けに、マークアップをする際のコツをお届けします。

マークアップする際には、デザインの各要素を構分けをして正しく記述することが重要です。
構造分けをイメージ出来るようになれば、比較的楽にマークアップを簡単に理解出来るようになると思います。
この記事を見てちょっとでも何か得る物があると嬉しいです。

まずはこのタグ

HTMLには様々なタグがあります。正直タグがありあすぎて自分でも知らないタグはありますし、ほとんど使った事の無いものもあります。
HTML5がでてから新しいタグも増えて覚える事が増えてしまいましたが、使い方によってSEOに影響を及ぼします。

ここでは「このタグだけは覚えてほしい!」というものをご紹介します。

<body> プラウザに表示される要素。この中に表示して行く要素を記述していく。

<div> divタグ自身に意味はありませんが、<div>~</div>で囲んだ範囲を1つの要素としてもつことができます。

<p> 1つの段落として使ったりします。テキスト文がある時はpタグを使ったりします。

<h> 見出しタグです。h1~h6まであり数字が少ない程、最も重要な見出しになります。ページのロゴに使ったりします。

<ul><li> リスト構造を表示したい時に使います。が、ナビゲーションメニュー等に使ったりします。

次はこの4つのタグを実際どのように使っているか説明していきたいと思います。
もっと詳しくタグについて知りたい方はこちらへ。

実際に見てみよう

PC版アメーバ大喜利を例に説明をしていきます。
以下はPC版アメーバ大喜利のトップ画面になります。まずはパッと見てどのような構造で分けられているかイメージできるしょうか?



これを要素ごとに大きく分けると・・・。



①に当てはまるのが<body>タグ。一番外側の大きな枠組みの役割をしています。
②ここは<div>タグ。場所としてはナビゲーションメニュー部分。
③ここも<div>で④と⑤を囲う1つの要素です。
④ここも<div>タグ。④は左側の要素。
⑤ここももちろん<div>タグ。右要素。


そしてこれが基本的なHTMLのテンプレートです。
<!doctype html>
<html>
  <head>
    <title></title>
    <meta charset="UTF-8">
  </head>
  <body>ここに記述していく</body>
</html>

bodyタグに先ほどのサンプルの要素を加えて行くと以下のようになります。
<!doctype html>
<html>
  <head>
    <title></title>
    <meta charset="UTF-8">
  </head>
  <body> ①の要素
    <div></div>  ②の要素
    <div> ③の要素
       <div> ④の要素 </div>
       <div> ⑤の要素 </div>
    </div>
  </body>
</html>


少々分かりずらいかもしれませんが、 一番外側に①<body>があります。
ナビゲーションメニュー部分に②<div>
と同じ階層に③<div>
の中に④<div>、⑤<div>があります。

最初はイメージしにくいかもしれませんが、色々なHPを見た時にパッと全体の構造がイメージ出来るようになると、コードをスムーズに書く事が出来ます。

自分なりのイメージですが、<body>という一枚の大きな紙の上に、<div>という名の紙を重ねて、並べて作り上げて行くイメージです。

装飾しよう

続いては要素に色や大きさ等を指定出来るCSSについてです。
今回はナビゲーション部分を例に説明していきます。


まず<div>に名前を付けます。ナビゲーション部分なのでnavと命名します。
class=""と書いて""の間に記入します。コードにすると下記のようになります。

 <div class="nav"> </div>

命名は自由ですが、その要素が何であるのか分かりやすい名前を付けるのがベターです。
例えばロゴの要素だとしたら<h1 class="logo">のような感じです。

そして次にCSSで装飾をしていきます。
先ほど命名したnav要素は一番外枠の部分です。
デザインを見てみると、上下に黒の線が入っているのと、背景の色が緑色になっているので、これをCSSで指定してあげます。
.nav {
 background-color: #548219;
 border-top: 4px solid #111;
 border-bottom: 4px solid #111;
}

CSSで書くと上記のようになります。
background-colorは指定した色を背景色として指定できます。
border-top、border-bottomは指定した要素の上下に
これで.nav要素の上下に幅4pxの黒い線が出来ます。

そしてナビゲーションにはロゴとナビゲーションボタンがあります。
これらは最初に説明させていただいた、タグを使って作っていきましょう。
まずはul,liタグを使って横に並べる要素を作っていきます。

 <div class="nav">
   <ul>
     <li>①ロゴ要素    </li>
     <li>②ナビゲーション要素    </li>
     <li>③ログインボタン要素    </li>
   </ul>
 </div>

また要素として分けると
①ロゴがある要素
②ナビゲーションボタンがある要素
③ログイン・新規登録ボタンがある要素

の3つに分ける事が出来ます。



そして①にはロゴを表示させたいために、<h>タグを指定します。
ページとって一番重要な見出しなのでここは<h1>になります。
コードに書き込んで行くと、以下のようになります。

 <div class="nav">
   <ul>
     <li>①ロゴ要素
       <h1 class="logo">画像が入る       </h1>
    </li>
     <li>②ナビゲーション要素    </li>
     <li>③ログインボタン要素    </li>
   </ul>
 </div>

全部説明すると長くなってしまうので、②・③はどのようになるか是非考えてみて下さい!

最後に

デザイナーからデザインを貰った時は、まず頭の中で要素ごとに構造分けをしてからマークアップをしていきます。従って、まず初めにどのような要素で分けるかをイメージする所から始めることをお勧めします。
それからGoogle Chromeのディベロッパーツールを使って気になったサイトのコードを見て、
どのようにマークアップしているか見ると勉強になります!

上手く説明できなくて申し訳ないですが、ここまで読んで頂いてありがとうございました!


みなさんこんにちは。アメーバ事業本部の泉水(@1000ch)です。

今日はHTMLをコンポーネント化するWeb Componentsという新しいHTMLの仕様と、
その機能を補完するPolymerというライブラリについてお話させていただきます。

Web Components

Web  Componentsについては、2013年のHTML5 ConferenceでGoogleの夷藤さんがセッションされていました。夷藤さんはChromeチームで、Web Componentの周りの実装をされていたり、Shadow DOMの仕様の編集をされています。


セッション中で夷藤さんは、Web Componentsの役割を以下のように述べています。

「ブラウザが標準で用意しているタグと同じような本質的なパワーを持ったエレメントを開発者が独自に作れるようにする。」

ブラウザが標準で解析出来るタグは簡潔ですが、ひとたび凝ったUIになったりすると、たちまちHTMLとCSS、およびそれらをコントロールするJavaScriptが複雑化してしまうのは周知の事実でしょう。HTMLとCSSには他のプログラミング言語に備わっているようなスコープが存在しないため、複雑なUIを構成するためのCSSは命名を工夫し、他のパーツとの衝突を避けなければなりません。また、JavaScriptも全てのDOMにアクセス可能な状態から指定のUIのみを操作するというリスクを抱えたまま実行されています。また、スコープがない故に再利用の難しさも生み出しています。


これらの問題を解決してくれるのがWeb Componentです。Web Componentを学習する上で、いくつか覚えておきたいポイントがあります(以下の3つに加えてデコレータという概念がありますが、今回は割愛します)。


Shadow DOM

今までのDOMツリーは前述の通りスコープの概念が存在していませんでした。例えば、div {font-size: 20px;}というCSSを新たに定義すればそのHTMLに存在する全ての<div>が影響されます。正確に言えばiframe<style scoped>だけはスコープ形成します。iframeによってロードされたHTMLに対しては、ロード元からアクセスが不可能であり、iframe内の要素もインクルード元に対して干渉することもありません。しかしコンポーネント化を考えると、iframeは拡張性に欠けています。


そこでShadow DOMの登場です。Shadow DOMの仕様がHTMLに追加されることによってHTMLはスコープを利用することが可能になります。通常のDOM Treeに属するElementは、DOM Treeの他にShadow Treeを持つことが可能になりました。形成されたShadow Rootを除いて、CSSとJavaScriptでShadowTreeにアクセスすることは出来ないようになっています。


Custom Elements

Custom Elementsの概念が生まれたことで、開発者側で自由に要素を定義することが可能になりました。ブラウザが解釈出来ないタグ はHTMLUnknownElementインターフェースを継承しますが、後述のdocument.registerElement()を使ってきちんと(?)定義された要素は、HTMLElementインターフェースを継承します。


HTML Import

別のHTMLドキュメントをロードし、再利用するための仕組みです。ここでは作ったカスタムエレメントをインポートするために使っています。

これらのうちCustom Elementsと前述のShadow DOMを合わせてコンポーネントを作り、つくったコンポーネントをHTML Importをして利用するという流れになります。


カスタムエレメントの作成

それでは実際にカスタムエレメントを作成してみましょう。こちらのコードは、Google Chrome Canary 36.0.1924.0で動作確認をしています。


x-elementタグの作成

まず、何も機能を持たないXElementというカスタムエレメントを作ります。HTMLElementを継承するオブジェクトを生成し、それをdocument.registerElement()に渡しています。第一引数にはタグ名とし てx-elementを、第二引数にはx-elementの性質を指定するパラメータオブジェクトを渡します。カスタムエレメント名には、x-elementcustom-tagのように、 ハイフンを含んでいる 必要があります


x-elementの他にyelementというハイフン無しのカスタムエレメントを定義しようとしていますが、コンソールで Uncaught InvalidCharacterError: Failed to execute ‘registerElement’ on ‘Document’: Registration failed for type ‘yelement’. The type name is invalid. とエラーが出力されているのが確認出来ます。

パラメータのprototypeに対してHTMLElementのプロトタイプを渡すことで x-elementはそれを継承します。その他のパラメータに関してはw3cのCustom Elementsの頁を参照してください。さっそくXElementをHTMLに追加してみましょう。



追加した後にHTMLを見てみると、x-elementというタグが追加されているのが確認出来ます。以前まではdocument.register()というAPIでしたが、document.registerElement()に変わったようです。恐らくregister()という名称が、短く汎用的過ぎたのでしょう。


既存のHTML要素の継承

パラメータにextendsという属性に対しタグ名を指定することで、既存のHTML要素を継承することが可能です。この場合のカスタムエレメントは、指定したタグ名になります。

また、document.registerElement()でカスタムエレメントを登録する時に、extendsに指定するタグのプロトタイプを指定することにも注意してください。buttonを拡張するのであれば、HTMLButtonElement.prototypeをプロトタイプに指定します。


このYElementがHTMLに追加されると、<button is='y-element'>という形式で生成されます。

カスタムエレメントの各種イベントの捕捉

カスタムエレメントでは、以下の4つのタイミングでイベントが発生し、それぞれにコールバック関数を指定することが可能です。

  • createdCallback - カスタムエレメントが生成された時
  • attachedCallback - カスタムエレメントのインスタンスがHTMLに追加された時
  • detachedCallback - カスタムエレメントのインスタンスがHTMLから削除された時
  • attributeChangedCallback - インスタンスの属性が追加・削除・更新された時

先程定義したXElementで、これらのイベントを捕捉してみましょう。


XElementに対して初期値を指定する場合には、createdCallbackの中で設定します。例えばこの場合はHTMLElementですが、HTMLInputElementinputタグ)を継承して、valueの値を予め設定したい場合であったり、HTMLButtonElement(buttonタグ)を継承してクリック時のイベントを予め設定したい場合等にはここで行うようにします。また、attributeChangedCallbackでは、変更された属性名と、変化前後の値を取得することが可能です。

templateとShadow DOMでカスタムエレメントを作成

今度は<template>タグを使ってShadow DOMを生成し、カスタムエレメントを更に拡張をしていきます。<template>タグもHTML5で新たに定義された要素です。テンプレートの明示的な宣言に利用します。template要素の仕様についてはこちらを参照してください。



これをHTMLに記述し、カスタムエレメントのShadow Rootとして使います。<template>タグは描画されませんが、HTMLの中に実体として残ることを認識しましょう。例えばCSSのセレクタ(:first-child)などには干渉するので、考慮したHTMLとCSSを組む必要があります。


Shadow DOMはChromeのDevToolsから確認できますが、Shadow DOM Visualizerという可視化ツールもあります。


カスタムエレメントを複数追加してみる

先程のXElementを幾つか生成してdocumentに追加してみます。もちろん、HTMLの中に<x-element>と記述することでも利用可能です。

// XElementを生成する
document.body.appendChild(new XElement());
document.body.appendChild(new XElement());
ここまで実装したサンプルが以下になります。

グローバルな空間で、inputをCSSで input { color: red; } p { font-size: 12px; } といったようにスタイリングをしています。しかし、カスタムエレメント内のinput要素には適用されず、カスタムエレメント内のCSSも外部に干渉することはありません。JavaScriptからdocument.getElementsByTagName()等でinput要素を探索しても、カスタムエレメント内のinputを取得することは出来ません。

Polymerを使ったカスタムエレメントの作成

非常に便利なWeb Componentsですが、ブラウザの実装が進んでおらず現状で導入するのが難しいです。その問題を解決してくれるのがGoogleが開発しているPolymerです。

Polymerは実装されていないブラウザに対しWeb Componentsの機能を保管するとともに、更に便利に利用するためのフレームワークです。大きくわけて3つのパーツに分類されます。

  • Platform - カスタムエレメントのロード等のPolyfill
  • Polymer - Polymerのコアライブラリ
  • Others - Polymerから提供される様々なコンポーネント(ajax機能やUIパーツ等)で、Polymerコアを継承している

Diagram

from Polymer/docs

Web Componentsもまだ仕様に動きがありますので、その変化する仕様のギャップなどを吸収する役目も今後担っていくでしょう。

Web Componentsによって変わるWeb

UIパーツやライブラリを、作成する時はもちろん、Web Componentsで導入する時に現状存在しているパーツ達に干渉しないので、安全に利用することが出来ます。現状のフロントエンドの開発形態は、

  • デザインする人
  • マークアップする人
  • JSを書いてインタラクションを付ける人

のように分かれていることが多いと思います。がWeb Componentの登場によって、2と3がより密接になり 機能単位でコンポーネントとして実装するというフローにシフトしていくのではないでしょうか。

また、今までのHTMLとCSSの仕組みでは難しかった再利用も飛躍的に向上するので、Webの実装コスト・メンテナンスコストはきっと軽減されていくでしょう。

おわり

以上、簡単ではありますが、Web Componentsのお話をさせていただきました。HTML/CSSにスコープが作れるのは非常にアツいですね。近い未来、Web ComponentsがWeb開発のスタンダードになると思っていますので、私もキャッチアップを続けていけたらと思います。

最後まで見て頂いてありがとうございました!

JS Girls 開催レポート


こんにちわ、アメーバ事業本部クロスイノベーション室でデベロッパーをしています、石本(@t32k)です。


今日はJS Girlsというコミュニティ活動について話します。JS Gilrsは文字通り、JavaScriptを学ぶ女性のためのコミュニティで、より多くの女性がJavaScriptを学ぶためのキッカケを多くつくることを目指しています。サイバーエージェントはJS Girls Tokyoの第1回目から、この活動を支援しています。



私の職種はデベロッパーで、フロントエンドのHTML/CSS/JavaScriptといった技術を使い開発をしていますが、同僚となる女性デベロッパーは圧倒的に少ないです。プログラミング自体、腕力なども必要ありませんし、本来であればこの比率はもっと同じくらいでも良いと思いますが、フロントエンドのカンファレンス等に参加しても、やはり女性は少ないです。


例えば、私がお菓子の料理教室に行こうと思っても、たぶん大半が女性参加者で、その中に男一人で参加しようとするのはだいぶ気が引けます。その逆も同じで、JavaScriptを学ぼうと思っている女性がもっと気軽に参加できる勉強会が増えていけばよいと考えています。


JS Girls Tokyo #1


そのためのJS Girls Tokyo #1が2014年3月8日(土)、Google Japanで無事開催されました。




もともとデベロッパーな方やデザイナー、大学生など約30名の女性の方が、朝の10時から夜の18時までみっちりJavaScriptに関して学びました。


今回のお題はGoogle Chromeの拡張機能でしたが、私自身、最初にJavaScriptを書いたのがGreasemonkeyのUser Scriptで、それからChrome Extensionを作るようになり、Titanium Mobile、Node.jsとより大きなもの・複雑なものを作るようになっていきました。


やはり、JavaScriptで『Hello, World!』ができても、正直単純すぎてつまんないですよね?それよりもブラウザのアイコンをクリックしたら何かが作動する、ブラウザの設定を変更したりできるといったことを少ない記述で実現可能なChrome Extensionは、学ぶモチベーションが持続しやすくて良いテーマかなと考えています。



勉強会の終わりには7名の方がライトニングトークで自作のChrome Extensionについて発表していました。どの方も活き活きとして自分の作ったものを発表していたのが印象的でした。


JS Girls コミュニティへの参加方法


第1回目のTokyo開催は終了しましたが、皆さんの住んでいる地域でJS Girlsを開催することが可能です(主催者、チューター(講師)の方は男性でも構いません)。


JS GirlsはRubyのRails Gilrsという世界的な素晴らしいコミュニティ活動を参考にしていてますが、まだいろいろ不備等あるかと思います。皆さんの出来る範囲でお力を貸していただければ幸いです。


開催内容は基本的に『手を動かす(実際にコードを書く)』時間が設けられていたら問題ありません。今回のChrome Extensionsのハンズオン資料を使って開催してもらっても構いませんし、ほかのJavaScriptの技術テーマにもとづいて開催しても構いません。


開催告知には、JS Girlsの公式サイトを利用することができます。



上記のGitHubのレポジトリをフォークしてもらい、developmentブランチに対して、あなたの地域のイベント情報を追加しプルリクエストを送ってもられれば、こちらで確認後、デプロイ・公開という流れです。



また、主催される方にはJS Girlsのステッカーも在庫ある限り郵送いたしますので、Twitterでメンションください。


今後の活動予定


次は4月26日(土)に北海道札幌市でJS Girls Sapporo #1が開催予定です。お近くにお住まいの方は是非参加してみてください。私もチューターとして参加します!



また6月にはJS Girls Fukuoka #1JS Girls Osaka #1が開催予定で、海外からはJS Girls Milan #1が(たぶん..)開催予定です。こちらも公式サイト、公式SNS等をこまめにチェックしてみてください。


好評を博したJS Girls Tokyoも、時期は未定ですがNode.jsをテーマに第2回を弊社で開催しようと考えていますので、こちらも楽しみにしていてください!


はじめまして。
2013年度新卒入社、DETOXでデザイナーをしているSonokoと申します。
今回はDETOXで用いたフラットデザインについてお話したいと思います。


DETOXとは



DETOXとは言いたいことも言えないこんな世の中で、ネガティブな発言や失敗や愚痴を気心の知れた友人同士で共有できるニュータイプSNSです。
「SNS疲れ」などで溜まった現代のココロの闇を「ポイズン」として吐き出せます:)
DETOXでは、iOS 7の普及に伴いフラットデザインを搭載しました。

トレンドの「フラットデザイン」ってなに?

まずはどんなものか、百聞は一見にしかず、世の中のかっこいい実例を見てみましょう。


applove


Figure


Task app


clique


こんな感じです。
その他にもフラットデザインを見たい方は、fltdsgnpinterestに素晴らしいものがまとまっていますので、よかったら参考にしてください。

今Web業界ではフラットデザインという言葉がキーワードのように溢れかえっていますが
そもそもフラットデザインの定義について私なりにまとめてみました。

・グラデーションや影などの立体感を排除する
・質感をほとんど無くし平面的な外観にする
・グリットレイアウトのような配置にする
・シンプルなタイポグラフィ
・コントラストの強いカラー使い
・機能や目的がひと目でわかる


派手な装飾を抑え、無駄なものを排除することで、文章や写真などのコンテンツを引き立たせる事が特徴だと分かります。
つまりデザイン云々の前に、コンテンツが最重要となるという事です。
Webにとって美しい外観や流れる操作性は重要ですが、最も大切なのはコンセプト、つまり中身です。
フラットデザインは、コンテンツをよく理解して、いかにそれを強調するかを考えないと失敗してしまいます。

(´-`).。oO(なにそれ?難しい…)

とお思いの貴方に、
何かに簡単に例えるならば、「ナチュラルメイク」が近いかなと私は思います。

ナチュラルメイクは自分の魅力を最大限に引き出しつつも、
わざとらしくなく美しく整えるものですよね。
その人(中身)の魅力を最大限に魅せてあげるための、一つの技術だと思います。

フラットデザインは新しいのか?


swissted

フラットデザインは言われているほど新しいわけではなく、
スイス系のグラフィックデザインのリバイバルという説が大きいです。
スイスデザインは平面的なグリッドが基礎となっているので、
どちらかというと静的なレイアウトで要素も文字と色のみでの構成が多く、
フラットデザインと近似している理由はここにあると思います。

Webデザインの移り変わりはとても早く、すでに世界中でフラットデザインをベースにした新しいスタイルトレンドがどんどん出てきています。
今風にアレンジされたものが、流行として時代でプラスされながら創られていくのですね:)

デトックスのフラットデザイン

DETOXでフラットデザインの実例を紹介します。

■ロング・シャドウエフェクト




特によく見かける、斜め45度で影を追加するロング・シャドウエフェクト
この技法はあえてシャドウを長く伸ばすことによってフラットデザインの良さをそこなわずに立体的に見せることを可能にしました。DETOXでは特に目立たせたい場所に使用しています。

↓ロング・シャドウエフェクトに便利なジェネレーターをご紹介します。
Long Shadow Generator(CSS)Long Shadow Generator(PSD)

■グリッドを用いたピクトグラム




レイアウトや構成を極力シンプルにするので、キービジュアルとなるアイコンやイラストはあまりシンプルにしすぎると無味乾燥で退屈なイメージを与えてしまいます。
そのためはグリッドを使って緻密に設計するのはもちろんですが、少しユニークさをプラスしています。

■カラーの使い方


フラットデザインにとって色は重要な要素です。
DETOXでのキーカラーはこの「パープル」で、キーカラーは使う頻度や面積が多くなってくるのでサービスのブランドを象徴するものになります。
完了ボタンの「グリーン」はアクセントカラーで、ユーザーの行動を導く為に特に目立つ色を使用しています。

↓フラットデザインらしいカラーのサンプルがみれるサイトをご紹介します。
flatuicolors

フラットデザインの特徴としてシャドウやグラデーションを用いないので、
リッチデザインと比べてデータサイズを削減できます。
このためデータの受信・表示までの時間が短くなり、より早く表示されるようになるメリットがあります。

■半透明でレイヤー感を出す


DETOXアプリで、上下のナビゲーションバーはわずかに半透明にすることを採用しました。
これについてはAppleのiOS7を参考にしています。

"真のシンプルさは、単に不要なものや装飾を省くだけでは生まれません。それは複雑さに秩序をもたらす作業なのです。機能ごとに分かれたレイヤーは、階層や順序をつくり出しました。"
Apple/iOS7

このように全く単純なフラットデザインではないですが、
バーの下にも画面があることを示すことで
「スクロールすればその先も見ることができる」と直感的に訴えかけています。

■番外編/ポリゴンデザイン


2014年流行の兆しにある、ポリゴンデザイン。最近じわじわ目にします。
フラットデザインとはまた違う表現なのですが、
前衛的なイメージが強いので、ここぞという所で使用してみるのもいいかもしれません。

↓ポリゴン風画像のジェネレーターをご紹介します。
Flat Surface Shader

まとめ

フラットデザインはシンプルで余計なものが無いデザインですが、
ただ単に簡素にするのではなく

見た人が一瞬で「理解でき、目を奪い、心を掴む」ような仕掛けを創り、
インパクトを与えるものです。


メッセージ・製品・ブランドなどを強調したい時のデザイン手段として、知っておいて損はないと思います。

しかしまだまだ進化するフラットデザインに正解はありませんし、一つの手段に過ぎません。

私が思うにデザインは、使ってくれる人(ユーザー)へのメッセージを届ける
ラブレターみたいなものであり、
書き方も自由であるし、受け取ってくれるか、捨てられるか、その後付き合ってくれるかは受取人次第です。

制作チームの想いをしっかり色付けして届ける役目を背負うデザイナーは
大変重要な役目だと思いますので、
日々精進して、これからも試行錯誤していきたいと思います :)

長くなりましたが、最後までお読み頂きありがとうございました。

Follow me!!


はじめまして!2013年度新卒入社、ブログ事業部デザイナーの伊藤弘希と申します。

アメーバブログのUIデザインや配布用ブログデザイン制作を行っています。


今回は社内で行われたデッサン研修についてお話したいと思います。


デッサン研修について

サイバーエージェントではアメーバピグをはじめ、ガールフレンド(仮)天空のクリスタリアなどデフォルメから美麗といった様々なデザインコンセプトをもったサービス制作を行っています。


弊社Ameba事業本部デザイン戦略室の企画で、
「モノをありのままにとらえるデッサン力を養おう」
というテーマのもと湘南美術学園様を講師としてお招きし、4日間にわたってデッサン研修を実施致しました。
本研修は美術系大学出身者ではない、デッサン経験の少ない若手デザイナー45名が参加し、基礎を学びました。



美術系大学出身ではないデザイナー

私も工業系の大学でインフォグラフィックという情報やデータを簡潔に視覚化する手法についての研究を行っていました。乗り換える駅名などが簡潔に描かれた電車の路線図を例に挙げれば分かりやすいかもしれません。資料収集をし、分析をするような研究だったので、アーティスティックに手を動かすというよりは理論を文章に書き上げることが多かったです。
そのため、入社当時は美術系大学出身者とのレベル差をひしひしと感じていました。それでもなんとか今日までデザイン業務に携われているのはデッサン研修をはじめとした手厚い研修制度と尊敬する先輩デザイナーのおかげと言えます。



1日目 構図をきめる

初日は目の前に置かれた石膏マスクを何の説明もなく、自己流でデッサンを行いました。
参加者に共通していたのは「輪郭線を描くこと」と「細部のパーツを個別に描きすすめること」でした。
自己流で描き終えた後は皆で作品を並べ、品評会を行います。自分の作品が客観的にどう見られているのかとても分かりやすい体験です。

講師からはフィードバックとして、

・実際のモノには面と面が隣接しているだけなので輪郭線などないこと

・光の角度や設置の感覚をパーツごとにではなく全体の構図を見て進めること

を教えて頂きました。



2日目 道具の使い方と影の大切さ


自己流の前回とは違い、鉛筆の削り方から教えて頂きます。
デッサン未経験の私にはデッサン用に削られた鉛筆の先端が想像以上に鋭く、それだけで驚きました。練り消しゴムの形を用途に合わせて変えること、スケールで構図を決めるなど、本当に基礎からです。



講師から3DCGソフトを使用して影について講義をして頂きました。
初日にもあったように、デッサンに慣れていないと目や鼻といった細かなパーツを1つ1つ描き進めてしまいますが、彫刻を掘り進めていくように、全体を見ながら骨格を掘り進めていくこと。

また、その際に影の面と光の面がどこなのか、注意深く観察し、影の部分をしっかりと捉えることで全体の構図がおのずと浮かび上がってくるというお話でした。

画像にもあるように、影が分かるだけで、顔の輪郭が浮かび上がってきます。



3日目 白黒だけで色を付ける

鉛筆だけをつかって濃淡を6階調つくってみます。
鉛筆を紙に強く押し付けて真っ黒にしたものから、紙のそのままの白さの間に段々と濃さの変化をつけていきます。

するといかに自分のデッサンには濃さの強弱がなく、決まった薄い色でしか描かれていないことが分かります。白い石膏と赤いリンゴの違いを出すには、思い切って濃い色を載せていく必要を、この階調をつくる作業で理解することが出来ました。


色をつけていく際にも、輪郭に沿って色をつける「塗り絵」ではなく、影の部分を見つけ、立体を浮き彫りにするための「着色」を意識します。すると平面だった絵が段々と盛り上がって存在感を帯びていくのが分かりました。



最終日 「見る」ではなく「観る」

これまでの講義を経て、実際に描いたものと、初日に自己流で描いたものとを比べ、その差に驚きました。
輪郭線が描かれてイラストのように描かれていたものが、影と光を捉え、空間を切り取ることができるようになっていました。


ぼんやりと「見て」自分なりの解釈をしてデフォルメして描くのではく、客観的に観察をする。光と影、設置のリアリティを観察によって発見し、その発見を何度も紙に書き留めていく「観る」ということがリアリティを与えていくのだそうです。



最後に

デザインは感覚的なもののように思えがちですが、まったくの逆で、
1つ1つのディテールに1つ1つ説明ができるほど理論の塊のようなものです。

私の業務の中心はUI設計のなのでデッサン研修と言われた時にピンときていませんでした。
しかし「モノをありのままにとらえるデッサン力を養おう」というテーマの通り、デザインを客観的に観る良い訓練になりました。

研修の成果を活かしこれまで以上にクオリティーの高いデザインをアメーバブログで制作していきます。


デッサン研修を企画したスタッフのレポートは、広報&IR担当のオフィシャルブログにてご確認いただけます。あわせてご覧ください。

最後までお読み頂きありがとうございました、
これからもアメブロをよろしくお願い致します。

皆さま、初めまして。
天下統一クロニクル(以下天クロ)」というゲームで
カードのアートディレクターをしております、古川麻生です。

今回は、イラストの描画クオリティを上げる以外でどのような取り組みによって
カード価値を創出しているかについて当ゲームの事例を紹介します。

『価値のあるカード』って何だろう?

まず、「価値のあるカード」と思ってもらうためにはこんな方法があります。

・有名な作家様に描いていただく
・構図を工夫する
・美男美女にする


以上のように、カードにおけるクオリティを上げるには
イラスト自体を良くすることが最も手っ取り早いです。

とはいえ、イラストを描いて下さる作家様も人間です。
体調や調子がイラストの出来に反映されることも少なからずあります。
ユーザーを求める「欲しいカード」を安定して供給することはとても難しいです。

イラストを楽しんでもらうために

そうなるとイラスト以外で努力しなければなりません。
天クロをはじめ、他社様も下記のような努力をしています。

・ボイスをつける
・パラメーターを強くする
・アニメーションする
・マンガが読める


上記のような付加価値は、多くのカードゲームで実装されています。
どれもキャラクターの魅力を引き出すには十分な努力です。
しかしそれらも徐々に目新しさがなくなってしまったり、
楽しさを損なってしまうのが現状です。

例えば、キャラクターの魅力を引き出すためにボイスやアニメーションは楽しんでもらえます。
しかし実装しすぎた結果、ゲームの読み込み時間が長くなり、快適に遊べなくなってしまいます。
それでは、せっかくお金と時間と労力を費やしてもゲームの魅力を伝えることができません。

天クロだからできること

天クロでは最もゲームとの親和性が高いものをシンプルに落とし込み、
実装まで持っていくということをしています。

日本を題材とした世界観にどのような付加価値をつけてきたのか、
それでは実例を見てみましょう。

その1【百人一首カード】2013年11月登場


・多くの日本人にとって、百人一首がなじみがある
日本の文化人で、短歌をたしなむキャラクターは天クロでも数多く出ています。
『和歌』という付加価値を付けることでグッと雰囲気が出ています。
戦国ゲームで実装しようとするとこういった文化人は世界観に合わず、
美少女ゲームだと、美少女と百人一首の繋がりが見えません。
天クロならではのやり方ですね。

・3進化というゲームの仕様と、「下の句」「上の句」という百人一首の仕様が合っている

もしも百人一首ではなく俳句をテーマにしたとしたら・・・

初めの五音が表示されていても、続きがなかなか連想されずテーマが伝わりません。

・筆文字が和の世界に合っている
和風と感じるものの一つに『毛筆』があります。
天クロという日本を題材としたゲームの世界観だからこそ、親和性を持たせることができました。

その2【名刀&剣豪カード】2014年1月登場


・武人+刀というキャッチーさ
【刀の擬人化】(刀に取り付いた精霊のようなキャラ)と【刀の持ち主】が
ペアになるようなテーマで絵を作っています。
共通のアイテムを持たせることはよくあるのですが今回の場合は、
詳細までのデザイン画を天クロ側で用意しました。
それに沿って作家様に描いていただくことで『武人との』パートナー感を演出しています。


今回は、それぞれの題材(「伊達政宗」「村雲江」などカード名になるもの)の
雰囲気を一番表現してくれる作家様に描いてもらいました。
多忙な作家様ではありますが、もし作成時間を確保できるのであれば、
二枚を同じ作家様に描いてもらうということもできます。

・ユーザーへのアピール
また、ゲーム内で名刀に関する豆知識を掲載し、ユーザーの興味がわくような紹介ページを作っています。
よく聞く名刀の詳細って、何だかワクワクしますよね!


その3【宝石カード】2014年3月登場



・天クロでは珍しい西洋モチーフ 
天クロは日本をモチーフにしたゲームです。
なので基本的には西洋風のものを登場させることはできません。
登場させるには何かしらの工夫が必要となります。
今回は宝石をテーマとすることで、普段は描くことのできない西洋風のモチーフを入れることができました。

・特別な「カード」としての魅せ方
背景部分は、西洋モチーフをより目立たせるために
タロットカードのようなレイアウトにしています。
普段は風景などを描いてもらうことが多いのですが、
今回は宝石を目立たせるためにもキャラ以外の情報量を抑える狙いがあります。



・「カードが光る」「宝石が光る」という2つの掛け合わせ
通常のキラカードとは違った「輝く」ことに意味を持たせています。
キラカードは特別感の演出として、どんなカードも全体が光ります。
宝石カードの場合は、「宝石は輝くもの」というシンプルな連想から宝石部分を主に光らせています。
※SR以上のカードが光ります。



カードの世界観のマッチング

このように、今回は3つの例を紹介しましたが
総じて「テーマとクリエイティブがいかにゲームの世界観にマッチするか」が重要です。

・テーマとユーザー層が一致しているか
・見る人がテーマを連想しやすいか
・世界観との親和性が高いか
・テーマを伝えるために最適なクリエイティブか


これらを検討して、初めて作家様への発注へ進めるのです。


まとめ

イラストだけがカードではありません。
カードと売り方を含めたものが「カードのクリエイティブ」です。
『カード』という限られた枠の中でも、創意工夫で新たな価値を生み出すことができます。
もととなるゲームが変われば、また違った試みができるでしょう。

これからますます面白く新しいカードが出てくるための、アイデアの参考となれば幸いです。

今後とも『天下統一クロニクル』のカードにご期待ください!