Greative

Shift 8、今年も無事終了しました

CSS Nite LP38「Webデザイン行く年来る年(Shift8)」

毎年のことながら、CSS niteのShiftと呼ばれる年末の一大イベント

CSS Nite LP38 「Webデザイン行く年来る年(Shift8)」

が終わると、今年ももう終わりだなあと思ってしまいます。

実際にはあと2週間という日数が残っているので終わったりすることもないわけで、多くの場合ここからの2週間がさらに激しさを増したりするわけです。

そんなこんなで、あっという間にShift8から2週間が過ぎてしまいました。今年は珍しく年末をまたいだ案件というものはなく、今年納めるべきものも無事おさまり、新年を迎えることができそうです。

ということで、前のエントリーでも告知した通り、Shift8は無事終わりましたという報告エントリーです。

このイベント、75分というセッション時間の長さもさることながら、長谷川恭久さんによる基調講演をはじめ、マークアップセッション、アクセシビリティセッション、ツールと制作環境、スマートフォンと続いた最後に行われるセッションとなるため、参加された方は大変お疲れだったと思います。

350人と予定されていた会場もほとんど満員で、ぎっしりな感じの会場。年末の忙しいであろう中、本当にありがとうございました。

僕は今年も坂本邦夫さん、矢野りんさんというメンバーでデザイントレンドを担当しましたが、今年は来場された多くの方々も感じられた通り、節目の年となったと思います。

さて、今年の傾向は?

毎年、とにかく国内外の大量のサイトをリサーチしてきています。

その結果、特に海外サイトでは顕著だったのですが、PCサイト、スマートフォンサイトという区分ではなく、スモールスクリーン、ワイドスクリーンという形でフレキシブルなレイアウト構造を持ったサイトへの移行が一気に進んだなというのが全体的な傾向として感じられました。

実際、日本でもスマートフォンをはじめとするスモールスクリーンのフルブラウザ端末の普及がいよいよ7割を超えるという時代に突入したスマートフォンの普及率という調査結果もあり、一般の若い人だけでなく、その親世代もスマートフォンを持つ時代というのがやってきたように感じます。

こういったスモールスクリーン方面のムーブメントがあるかと思えば、Full HD以上の解像度を持つディスプレイが、液晶モニタだけでなく、ノートPCなどにも導入されていった年でもあります。

たとえば、タブレットPCのベンチマーク的なモデルであるSurface Pro 3でも、2160 x 1440の解像度となっていますし、4Kモニタもずいぶん安い値段で導入が可能になってきました。

そういった中、特に海外サイトにおけるナビゲーションドロワー(通称ハンバーガー、またはホットドッグ)の普及に見られるような小さな画面遷移がページで起こるようになり、今後どういったやりかたでキャプチャを行っていくかを悩んだ年でもあります。

多解像度化と、ユーザのブラウジングにおける新しいルールの確立というあたりをベースにした様々なデザインアプローチの結果が今年セッション内で発表した様々なトピックにかかってきているように感じます。

去年も言ってたような記憶がありますが、今現在、このデザイントレンドにおけるリサーチ的な部分はシステム化をしているとはいっても、かなりアナログ的な分析方法となっているため、2015年の目標は機械的な分析を推し進めていくというのが当面の課題だったりします。ということで、来年末のShift(にまた呼ばれればですが)では、もう少し多角的な分析を提供できればと考えています。

さて、来年はどんな傾向になっているのでしょうか。

Read More

「むしろサーバ初心者にオススメな Play 2.x Java」という発表をしてきた

Play framework Advent Calendar 2014の12日目(おい)です。
今頃書いてごめんなさい。

今回は、Playというものをまだ触ったことがない人のために書いています。

ちょっと前に月刊ライトニングトークというイベントが行われました。
IT系のでもいろいろなジャンルが雑多に展開されるLT大会なイベントです。

ここで急きょ飛び入りで「むしろサーバ初心者にオススメな Play 2.x Java」という発表をしてきました。

参加者はバックエンド系というよりはフロントエンド系な方々が多かったので、こういったタイトルにしています。

個人的には結構真面目に、バックエンドがそれほど得意でない方にオススメなのがPlay frameworkだと思っています。特にJava版ならJavaの入門書は山ほどあるし、調べてわからないことがあるというケースはそうそうないでしょう。

確かにPlay界隈は初心者だけでなくScalaでガチな方々も大勢いらっしゃいますが、そういうガチな用途だけでなく、フレームワーク全体に流れる思想に「なるべく間違いが起きにくくなるようにする」という部分が数多く感じられ、それは間違いやすい初心者の人にもきっと得られる恩恵だろうと感じたからです。

実際は3分くらいしか時間がなかったのでActivatorと呼ばれるビルドシステム(実行可能な状態にするツール)+エディタ+テストおよび実行ツールみたいなプラットフォームのデモに終始しました。

おすすめな理由その1:圧倒的に全部入り

Playの特徴の一つにフルスタック(全部入り)さというのがありますが、フルスタック具合はなかなかのものです。

まずフレームワークに、ブラウザ上でコードの編集からビルド、ユニットテスト(自動テスト)、実行まで行えるエディタが標準装備しています。

まず、こういうタイプのフレームワークはなかなかありません。

加えて、フレームワークにWebサーバが標準装備という点も魅力です。フレームワークについてくるWebサーバというと、開発用にしか使えない程度のサーバだったりしますが、Playについてくるのは、結構大規模なサービス運用でもガチで使えるようなシロモノです。つまり、動かしたものをそのまま本番環境に持っていける。

加えて、テストツールとテスト用のデータベース、ビルドツール、テンプレートシステム、IDE(統合開発環境。IntelliJ Ideaとか)用プロジェクト作成、並行並列処理のフレームワークなどがセットでついてきます。

ちょっと試す程度ならエディタすら用意する必要がないくらいに環境が整っているというわけです。必要なのはJavaのSDKくらいでしょう。

上記がまずオススメの一つ、環境編です。

おすすめな理由その2:間違いにくい

もう一つオススメなのが、「なるべく間違いが起きにくくなるようにする」という思想に裏付けられた数々の仕組みです。
とにかく初心者はよく間違えます。

たとえば、コントローラ(Webからリクエストをうけとってハンドリングする部分)からビュー(表示用テンプレート)になにかの情報を渡すとします。

しかし、実際は表示させた画面には何も出てこない。。
受け取るはずだった変数名が違っていたり、受け渡し漏れがあったりとかあるかもしれません。

Playだとこういうことは起きません。なぜかというと、ビューに渡される変数の型、数とコントローラからの呼び出し方が一致しないと、そもそもコンパイルエラーとなるからです。
これにより、ビューをどんどんカスタマイズしていくときに起きがちな変数の受け渡し漏れを防ぐことができます。

これういった仕組みは、URLルーティングにも使われており、IDEで作業するときにいちはやくミスを発見することにつながっています。

ということで冬休みPlayにトライしてみてはいかがでしょう。

Read More

play-clojure(Play 2アプリをclojureでつくる)その1

Play framework Advent Calendar 2014の19日目です。

しばらく間があいてしまってましたね。
ネタ投下します。

ここ1年くらい、新しい言語勉強としてclojureを使うことを心掛けてきました。

もともとPlay Javaを日々使っていたこともあり、これをミックスできないかと思い始め、play-clojureという企画をはじめてみました。

sbtには、sbt-clojure(https://github.com/Geal/sbt-clojure)というプラグインが存在しており、sbtを使ってclojureのコンパイルが可能になっています。

playは、sbt上で動いているのでこれを使うと面白いことができそうだというのがことの発端です。ScalaのパワーにClojureのシンプルさ!というわけです。

超簡単なhello worldを今回はやってみます。Play-Javaでプロジェクトを作成しおえた状態から始めます。

1. ビルド周りの定義

まず、build.sbtに下記を書きます

seq(clojure.settings :_*)

libraryDependencies += "org.clojure" % "clojure" % "1.5.1"

つづいて、project/plugins.sbtに下記を書きます

addSbtPlugin("com.unhandledexpression" % "sbt-clojure" % "0.1")

これでsbt-clojureの導入は終わりです。

2. コントローラの作成

app以下にclojureというディレクトリを用意し、その中にcontrollersというディレクトリを作成します。

そしてその中にmyController.cljというファイルを作成し、下記のように記述します。

(ns controllers.myController
  (:import (play.mvc Results))
  (:gen-class
    :methods [#^{:static true} [index [] play.mvc.Result]]
    :extends play.mvc.Controller))

(defn -index []
  (Results/ok "Hello world from Clojure!!"))

これでコントローラの記述はおわり。

3. routesにルーティングを記述

conf/routesに下記のようにルーティングを定義します。

GET     /                           controllers.myController.index()

以上で、作業は終了です。

$ sbt run

をすると、localhost:9000でアクセスすると、下記のような画面が表示されます!!

こんな感じでClojureでコントローラを書くことができました。

このシリーズのサンプルはここに今後まとめていきます。

karad/play-clojure
https://github.com/karad/play-clojure

Read More