Archives for 5月2015

コーディングWebアクセシビリティを読んだ

5月14日木曜日にWebサイト設計・UI実装・アクセシビリティのモダンアプローチというイベントがありました。

そこでコーディングWebアクセシビリティ – WAI-ARIAで実現するマルチデバイス環境のWebアプリケーションというイベントに関連した書籍が販売されていたので、その場で購入したのでした。

その昔、アックゼロヨンというイベントがあった

その昔、2004年くらいにWebアクセシビリティ関連のイベントでアックゼロヨン(Ac+C’04)というのが開催されました。10年以上も前のことです。

ちょうど、JIS X 8341-3というWebコンテンツのアクセシビリティ規格が生まれた年です。僕もこのイベントに参加していました。

このアックゼロヨンというイベントは、日本ウェブ協会という団体が主催しており、Webサイト設計・UI実装・アクセシビリティのモダンアプローチの主催であるBAさんのオフィス内に一時期事務所がありました(その後の経緯などはちょっと存じていないのですが)

それから10年あまり、これといって僕はアクセシビリティ方面の活動はほとんどしていませんでした(ちょいちょい日本バリアフリー協会さん主催イベントのFlash Videoプレイヤーのアクセシビリティ対応他ちいさなお手伝い程度のことはしていましたが)

今年の2月末、とある病気で入院することになり、目の関係でPCに向かえないという自分の人生史上かつてないイベントがありまして、少しこちら方面への関心の高まりを感じていたところでした。

PCを取ったらただの人以下である自信を持つ僕にとって、もし何かしらの障害をかかえた際もこれまで通りの活動をしたいとの思いがあります(なんてことを書くとアクセシビリティの狭義の面ばかりがピックアップされるのでよくないということは承知しつつも)

しかし!

体も健康になり、元気に仕事ができるようになると、そういった決意のようなものは日々の仕事の中で失われていってしまっていたのです。この変化にもまたびっくりでした。

さて、そんな僕的機運が高まる中でのこの書籍です。

SPAが流行りのいまだからこそ取り組もう

長年、FlashやJavaScriptなどのリッチなコンテンツのフロントエンドやバックエンドを担当してきた人生を経て、高齢化が進む僕にとって大事なテーマの一つに違いないのがWAI-ARIAです。

コーディングWebアクセシビリティの書籍は、いわゆる難しい仕様がならぶというタイプのものではありません。よくわからないジョークなどもふんだんに盛り込まれており、楽しめる人には楽しめる内容となっています。

文字サイズも大きく、紙が厚くて、ページ数も少ないので、下手をすると立ち読みで済んでしまう危険がありますが、SPAをはじめとするダイナミックかつ非固定なHTML構造技術が注目を浴びるいまだからこそ、手元に置いてたまに眺めるのはいいのではないでしょうか。

これは個人的な推測なのですが、いまSPAで扱われているHTMLは、フロントエンドエンジニアよりもマークアップエンジニアが主役だったころの昔のWebに比べるとあまり文書構造について考慮がされていないのではないかという気がします(すみません、僕もです…)。

VirtualDOMによるHTMLの書き換え時に挿入されているHTMLは、ブラウザに渡されるときはHTMLになっていたとしても裏側の実装時には別のデータ構造だったり、謎のXMLだったりすることもあります。

コーディングWebアクセシビリティでは、Webアプリケーションのような利用者が使うタイプのコンテンツに焦点が当てられており、フォームを多用したりダイナミックに構造が変化したりするコンテンツに向けてのネタが多く含まれています。

ただ、フォームが多用する解説書は地味で事務的な雰囲気が漂ってしまいがちなところを、モダンなUIパーツ、例えばハンバーガーメニュー(個人的には正式名はナビゲーションドロワーだと思っていたけど、本書内ではナビコンと書いてあった)について解説されているので、いま読むと退屈しないでしょう。

ということで、興味ある方はぜひ!

Read More

Clojureのreduce関数でプチはまりした

Clojureを使ってて、あれ?っていう現象に遭遇しました(その後あれこれやって納得しました)

Clojureのreduce関数を使って、replでお試し実装をいろいろしていたときのこと。

(reduce #(if (>= %2 1) (conj %1 (+ 2 %2))) [] [1 2 3])

を実行すると、ベクタ内の各要素に対して2が足された

[3 4 5]

が返ります。適用していく関数として要素が1以上だったらと指定しているので、全部が処理されていくわけです。

でも、if文のところの条件を2以上だったらと変更すると

(reduce #(if (>= %2 2) (conj %1 (+ 2 %2))) [] [1 2 3])

こんな風に

(5 4)

と返ります。ベクタで返ると思っていたので意外な結果です。

個人的には

[4 5]

となるのかなと思っていたのですが。

Twitter上でつぶやいてみると、

とご指摘が(ありがとうございます!)

reduce関数には、計算途中を見ることができるreductions関数があります。

(reductions #(if (>= %2 2) (conj %1 (+ %2 2))) [] [1 2 3])

これを実行してみると

([] nil (4) (5 4))

と出力され、途中でnilになっていることがわかりました。左から順に実行されていった結果がリストとして出力されています。

その後は、リストとして処理されていっているのもわかります。

Read More

Tokyo.cljで静的サイト生成ツールCryogenについて話してきた

2015/05/16 (土) 12:00から17:30まで行われた

に参加してきました。実際に参加した時間は14時からです。

Tokyo.cljは初参加

十数名の参加者がすでに会場にはおり、もくもくタイムでした。16時からがLTタイム。

ここで僕は、ここ2週間くらい取り組んでいたClojure製の静的サイト生成ツールCryogenについて話しました。

静的サイトを楽に作れるCryogenについて話した

このツールは、実際に自社サイトである

  • Greative – グレーティブ合同会社

のバックエンドとしても使っていて、小さな規模のサイトをさくっと作ったり、ブログツールとして非常に良いと考えています。

各種設定はClojureらしく、edn形式を使ってできます。

スライドは、入門用としてまとめたもので、たぶんこれを見ると大体のことがわかるのではないかと思っています。

実際にサイトを作成する際に、いくつかやりたいことがあったので、Cryogenを拡張して使っています。

Cryogenは、そのまま使ってもいいですが、拡張しやすい構成になっているので、おすすめ。

ということで、みなさんCryogenを使ってサイトとかブログを作っていきましょう〜!

このブログでも引き続きCryogenに関する情報発信を行っていきます。

Read More