タグ

ブックマーク / anatoo.hatenablog.com (8)

  • JavaScriptのUIライブラリはどうあるべきかという話とOnsen UIのアーキテクチャ - id:anatooのブログ

    Onsen UI Advent Calendar の12/9の記事です。 Onsen UIは、モバイルアプリのネイティブライクなUIHTML + CSS + JavaScriptで簡単に構築することを目的としたUIライブラリです(UIフレームワークともたまに呼ばれます)。 ↓みたいなネイティブなモバイルアプリっぽい画面をサクッと作ることができます。 私は数年前から開発メンバーとしてOnsen UIの設計開発を行っています。この記事では、Onsen UIに求められるUIライブラリとしての要件とそれを解決するためにどのようなアーキテクチャを取っているのかについて解説します。 特定のフレームワークに依存しない jQuery UIReactの上に乗っかっているUIライブラリなどのように特定のフレームワークの仕組みを使って実装されたUIライブラリというのはたくさんありますが、ある特定のフレームワ

    JavaScriptのUIライブラリはどうあるべきかという話とOnsen UIのアーキテクチャ - id:anatooのブログ
    efcl
    efcl 2016/12/11
    特定のUIフレームワークに依存されないUIフレームワークの基盤をどのように作るかという話。 CSS Components層、Web Components層、フレームワークバインディング層のレイヤー分けについて
  • JavaScriptでのDOM操作は重いのかという話とForced Synchronous Layoutについて - id:anatooのブログ

    2015年にもなるのにJavaScriptでのDOM操作のパフォーマンスについて書く。ウェブページにインタラクションを持たせたい時に、JavaScriptでDOM操作を行うことがよくある。このDOM操作のパフォーマンスについて、よく聞く意見を大別すると次の2つがある。 JavaScriptによるDOM操作は重たい レンダリングが重いだけで、DOM操作そのものはそれほど重たくない JavaScriptでオブジェクトのプロパティを操作したりする単体の処理は通常1ミリ秒もかからないが、DOM操作をするとレンダリングが完了するまでに数十ミリ秒程度かかったりする場合がある。1番目のDOM操作が重たいと言っている人は経験則的にそう言っていることが多い。 レンダリングの仕組みを知っている人は2番目の意見を言うが、重箱の隅をつつくような話をするとこれも必ずしも正しいわけではない。DOM操作するコードによっ

    efcl
    efcl 2015/10/15
    forルール内でのstyle変更みたいなのをForced Synchronous Layoutというのか
  • JavaScriptでパーサコンビネータのコンセプトを理解する(「正規表現だけに頼ってはいけない」の続き) - id:anatooのブログ

    前回の記事の続き。前回は、正規表現が使えない時はパーサコンビネータを使ってみると良いということを書いた。 パーサコンビネータのためのライブラリは、以下のように各言語ごとにいくつかある。 JavaScript - Parsimmon Ruby - rparsec treetop Python - parsy PHP - PHPPEG 各言語でいくつかあるのだが、正規表現と違ってパーサコンビネータには統一的な書き方があるわけではないし、ライブラリによって使い方も様々である。なので、今まで正規表現だけ使ってきた開発者がちょっと使ってみようと思っても、使い方がよくわからずに面らってしまうことがある。 パーサコンビネータはテキストをパースするための非常に強力な仕組みだが、その背後にある考え方を理解しなければこれらのパーサコンビネータのライブラリを使う際の障害になるだろう。逆に言うと、それさえ理解で

    JavaScriptでパーサコンビネータのコンセプトを理解する(「正規表現だけに頼ってはいけない」の続き) - id:anatooのブログ
    efcl
    efcl 2015/04/29
    JavaScriptでパーサコンビネータを実装して、パーサコンビネータについて学ぶ話
  • 新しいCSSの設計規約、AMCSSに関する個人的なまとめ - id:anatooのブログ

    CSSの設計規約というと、BEMが有名ですが、最近またAMCSSという新しいCSSの設計規約が出てきました。この記事では、このAMCSSについて簡単に紹介したいと思います。 個人的なBEMの好きでない所 仕事でBEMをよく使っていて、優れた設計規約だとは思いつつも、使っていて気になる点がいくつかあります。BlockとElementとModifilerという3つの概念をクラス属性だけで表現しようとするため、非常に記法が見難いのと冗長なところです。 例えば、fooブロックのbarエレメントのhogeモディファイヤーを表現すると、以下のようになります。 <div class="foo foo--hoge"> <div class="foo__bar foo--hoge__bar"> ... </div> </div> "__"や"--"という文字を区切りに使っているため、非常に冗長に見えます。ま

    efcl
    efcl 2014/09/25
    クラスじゃなくて属性を使ったCSS コーディングルールについて
  • タスクランナーgulp.js最速入門 - id:anatooのブログ

    相変わらず仕事ではデザインやりつつJavaScript書いている。 タスクランナーとしてGrunt.jsを使っていたけれども、使ううちに段々不満がでてきた。遅かったり、記述が冗長になりがちでつらかったので最近になってgulpに乗り換えた。 gulpは良い。タスクは自動的に並列に実行され、かつストリームで処理されるので速いし、タスクの記述もストリームベースの書き方のおかげでGrunt.jsに比べるとだいぶ短くなる。 ただ、そこらにあるgulpをちょっと試しただけの日語の記事やドキュメントをみてても実際のプロジェクトで使えるレベルまでの知識を得られず学習に一日かかった。 この記事では、gulpをまともに使えるようになるまでに必要な知識を書く。 導入とHelloWorld まずは導入。npmからgulpをインストールする。 $ npm install gulp -g $ gulp -v [gu

    タスクランナーgulp.js最速入門 - id:anatooのブログ
    efcl
    efcl 2014/04/20
    gulpのタスクの定義の方法について。 タスクを非同期する方法と依存関係なしで順番に実行する方法、streamのマージ方法について等のTipsが書かれている
  • クライアントサイドJavaScriptでのビューの作り方4つ - id:anatooのブログ

    追記: 指摘により、UIオブジェクト型を追加した(thx @kanreisa)。 クライアントサイドJavaScriptでのビューの作り方を大別すると、3つ4つある。 DOM操作型 テンプレートエンジン型 UIオブジェクト型 データバインディング型 ここでいうビューの作り方とは、有り体にいうとJavaScriptからどうやってDOM要素を生成したりするかどうか。イベントリスナーの登録とかも含む。 DOM操作型 昔ながらのやり方。jQueryとか使って直接DOM操作してビューを作る。 // 例えば、<div class='hoge'>fugafuga</div> みたいなDOMを表示する var myView = $("<div class='hoge'/>"); myView.text('fugafuga'); // body以下に挿入 $(body).append(myView); 長所

    efcl
    efcl 2013/02/26
    JavaScriptでDOMを作るアプローチの種類. DOM API,テンプレート,UIオブジェクト、databinding
  • MacOSX用の作業効率化キャプチャツールMaptureの紹介 - id:anatooのブログ

    年末からMaptureという作業効率化のためのキャプチャツールの開発を進めてきて、最近やっと普通に利用できるクオリティになってきました。この記事では、作業効率化のためのキャプチャツール、Maptureを紹介します。 Maptureとは Maptureは、画面の一部をキャプチャして付箋化するMacOSX用のアプリケーションです。 通常のキャプチャツールと違って、画像をキャプチャして共有するためのアプリと言うよりも、画面をキャプチャして最前列に表示することによって、エンジニアやプログラマなどのPCを使って一日中作業する方の作業を効率化するために作成しました。 導入 Maptureのウェブサイトよりアプリケーションをダウンロードできます。ダウンロードした後、Applicationフォルダに解凍して下さい。 Maptureを起動すると、右上のメニューバーにおにぎり型のアイコンが現れるようになります

    MacOSX用の作業効率化キャプチャツールMaptureの紹介 - id:anatooのブログ
    efcl
    efcl 2012/04/08
    画面をキャプチャして付箋化するアプリ
  • PHP5.4のリポジトリに新たに[]による配列の文法が追加 - id:anatooのブログ

    今までPHPでは配列を書くのにarray()という記法を使う必要があったが、PHP5.4のリポジトリに新しい配列の文法が追加された。[]で囲むことで配列を表現することができるようになっている。連想配列についても同様。 add short array syntax as defined in https://wiki.php.net/rfc/shortsyntaxforarrays, 2nd solution using => only http://svn.php.net/viewvc?view=revision&revision=313641 以下、配列の新しい文法に関するテストケースを引用。 --TEST-- Testing array shortcut and bracket operator --FILE-- <?php $a = [1, 2, 3, 4, 5]; print_r(

    efcl
    efcl 2011/07/25
    配列が[]ブランケット表記で書けるようになる
  • 1