タグ

ブックマーク / havelog.aho.mu (21)

  • requestAnimationFrame とタイマーの今更な比較とデモ

    フレーム描画のタイミング制御モデル 今更 requestAnimationFrame() だなんて Can I use を見ても IE 10 ですら実装していて、世界の 9 割以上で動作しうるカバレッジなわけですが改めて setTimeout() との違いを表現しうるサンプルをこさえてました。 それぞれの仕様の詳細や挙動についてはそれこそ今更なのでググっていただくとして、この記事ではサンプルについて曖昧な説明を添えていきます。 CodePen - setTimeout vs requestAnimationFrame (with CSS Transitions) See the Pen setTimeout vs requestAnimationFrame (with CSS Transitions) by Ayumu Sato (@ahomu) on CodePen. 比較のポイントとシ

    requestAnimationFrame とタイマーの今更な比較とデモ
  • HTML6 でも CSS4 でもない Web 技術のゆくえ - WCAN 2015 Winter に登壇してきました

    @kazumich さんにお声がけいただき、WCAN 2015 Winter でおよそ 60 分ほどのセッションを登壇してきました。32:9 のスクリーンがあるという、TED でもやるんかオイという特殊な環境でした。普段はプロジェクター的な投影なので、スクリーンの前に立つのが微妙なんですが、ここはディスプレイが壁面に大量に並んでいて自ら発光するので、部屋を暗くしなくてもテレビのように十分に見えますし前に立っても平気です。 一緒に登壇したのが @yhassy さんと @Hidehisa さんということもあり、近年まれに見る胃痛を伴う緊張を味わいながらお話させていだきました。(リアルにセッション終了後、1時間くらい胃痛がズキズキしてました) 技術的なお話でした 参加されたみなさま、メインセッションや LT に登壇された各位、ならびに運営されたスタッフの方々、ひとまずお疲れさまでございました。貴

    HTML6 でも CSS4 でもない Web 技術のゆくえ - WCAN 2015 Winter に登壇してきました
  • Isomorphic Architecture を実装してるときの細かいアレコレ

    Isomorphic あらため Universal ? 一時期火がついていた Isomorphic について。各自がプロダクションの事例を作り上げる潜伏期に入ったのか、はたまた当に一過性で火が消えたのか、コモディティ化を遂げたのか分かりませんが、あまり耳にすることがなくなった印象です。 そんな中ですが先日、Universal JavaScript — Medium が公開され、なるほど Universal ってキモチになったので、タイトルに反して以下は Universal と呼称します。 今回の話題にするのは module レベルではなく Universal な JavaScript architecture のほうです。アーキテクチャのレベルで Universal なコードが役立つ代表的ケースは SPA (Single Page Application) と SSR (Server S

    Isomorphic Architecture を実装してるときの細かいアレコレ
  • yahoo/fluxible による SPA + Server Rendering の概観

    Single Page Application + Server Rendering yahoo/fluxible を使って、Single Page Application と Server Rendering の良いとこ取りのアーキテクチャを目指す。ある程度の複雑性と引き換えに、双方の利点で双方の欠点を打ち消し合うことができるため、全体的には良好なユーザーインタラクションを期待できる構成。 なぜ Single Page Application なのか 画面遷移時するたびにJavaScript/CSS のパースと評価をしなくて良くなる 画面遷移時のトランジションを柔軟に適用できる 画面遷移をまたがった実装が可能になる(あくまで可能になるだけ) なぜ Server Rendering するのか 初期表示の Critical Rendering Path を短縮できる SEO における保守信仰

    yahoo/fluxible による SPA + Server Rendering の概観
  • npm とフロントエンドのパッケージ管理の未来

    JavaScript 系パッケージマネージャの重複問題 npm は言わずもがな Node.js のパッケージマネージャだが、フロントエンド開発においては Bower も利用するのが一般的になっている。この現状の問題点は、package.jon と bower.json という似たような管理ファイルを二重で管理しなければならないということだ。 現状の使い分けをおさらいをしておくと、次のような感じになる。 タスクランナー(Grunt/gulp)・モジュールシステム(browserify/webpack)・テストスイート(karma/testem)などの開発環境系の管理が npm の主なお仕事。インストールされたパッケージは node_modules 内に展開されて、CommonJS スタイルのモジュール管理から利用する。 題につながる話としては、ブラウザで動くライブラリの一部は npm にも

    npm とフロントエンドのパッケージ管理の未来
  • iOS6 スクロール中のタイマー発火絡みのバグ備忘

    Fxck iOS6!!! と思っている方々も少なからずいらっしゃるのではないでしょうか。ぼくは今わりとそう思っています。 だって、Androidでposition: fixedとか、z-indexとか、怪しげなモノって使わずに避ける、慎重に触れるとかまだ何とかなるじゃないですか。伝家の宝刀「Androidですから…」って言い訳も少なからず使えますし。けれども、AjaxとかTimer周りって、必須すぎて避けようがないんですよ。任意のタイミングで再描画起こすためにsetTimeoutとか使いますよね。遅延描画的な溜め込みとか、ほら、いろいろ。しかもそれ、iOSの最新版ですよ。 そんなわけで、ぼくはiOS6があまり好きではありません。(前置き) でまぁ、Ajaxについては下記によくまとまっていますし、9月ごろの情報ですね。 Understanding the iOS6 AJAX bugs | G

    iOS6 スクロール中のタイマー発火絡みのバグ備忘
  • Concatだけでビルドを済ませてた例(Backbone.jsとAngularJS)

    Concatでどこまで戦えるのか @jxck_ browserify使ってるんだけどあんま意味ない感じになっててつらいんだよねーっていうのを昨日 @ahomu に話したら、concatで全然いけますよって言われたからさっき乗り換えた。 — Kazuhito Hokamura (@hokaccha) August 6, 2014 (^ω^) 全然いけますよ 依存管理をサボってconcat 以下、「依存管理に労力を割きたくない」という理由で依存管理を省略した場合に、concatだけで破綻無くビルドするためにやっていたパターンの紹介。いけますと言った手前はあるが、最終的には現場によってケースバイケースということで、どうかひとつご容赦願いたい。 Case 1: Backbone.js Backbone.jsの場合、extends に代表されるクラスベースのオブジェクト指向モデルに多少の制約が必要に

    Concatだけでビルドを済ませてた例(Backbone.jsとAngularJS)
  • Angularそっちのけで、Vue.jsについて所感

    Vue.js 軽量でパワフルなデータバインディングMVVM, vue.jsで遊んでみた - mizchi's blog を読んで触発されたので、自分も外見的に良いなと思ったポイントだけ書き留めてみます。さすがに実戦投入できていないので、そのあたりの精度は悪しからず。 サンプルコードの雰囲気 サンプルコードとか自分でちょっと触ってみたときの感触からは、以下のポイントが気に入りました。data-bidingsとかは前提として便利です。はい。 覚え切れそうな分量のAPI Class: Vue - vue.js 脳みそちっちゃいので助かります。それに尽きる。 プロパティによる宣言っぽさ Angularだとイベントハンドラ類を書くにも、$scopeに都度ハンドラを仕込んでいくのがあまり好きでないです。工夫で回避できそうですが、与えられたスタートが下記のような状態であることには変わりません。 angu

    Angularそっちのけで、Vue.jsについて所感
  • Componentによるフロントエンドのパッケージ管理

    直近で、新規案件に関わることになりそうなので、ライブラリ選定やタスクランナー、そして今回の依存管理のようにベーシックな話が続いてます。次第に、具体的な実装やコード設計のポストが多くなる・・・はず。 今回はVue.jsでも触れましたが、改めてcomponent - modular javascript frameworkについて。 概要 Componentはパッケージマネージャー兼、依存解決込みのビルドツールです。クライアントサイドについて、JSのパッケージマネージャーやビルダーは既にありますが、Componentは HTML/CSS/JSをセットにして扱うことができます。 npmでいうpackage.jsonと同様に、component.jsonという定義ファイルによって、パッケージの依存関係やリポジトリなどの各種情報を示します。 component/component コア部分のリポジト

    Componentによるフロントエンドのパッケージ管理
  • いぇーい yield と co と koa

    express の後継だけあって期待が高まってる Koa ですが、あの珍妙な yield による同期処理っぽい記述がどのようにして支えられているかメモってみます。 年末年始を経てヤル気が高まってきたので、久々にnodeの話。 visionmedia/co さて題。 早速ですが、koa の middleware における、あの特徴的な yield 天国は、koa ではなく co というモジュールによるものです。サンプルを見るのが早いです。 件は yield を使うので、現時点では node v0.11.x を --harmony オプション付き実行が必要なことに注意してください 下記は co を単品で利用した場合のサンプルです。 /** * GETリクエストを非同期処理するモジュールを想定 * @example get('http://example.com')(function() {

    いぇーい yield と co と koa
  • Underscore.jsのtemplate触ったメモ

    以下、Underscore.jsが1.3.3当時の情報です。 template _.template(templateString, [data], [settings]) Underscore.js Utility template Backbone.jsを試すついでに、Underscore.jsについてるtemplateを試してみました。他のテンプレートライブラリ持ち込んでくるのも億劫だったので。 <script id="tmplString" type="text/template"> <h3>店舗情報</h3> <div id="store"> <p><a href="<%- data.store.url %>"><%- data.store.name %></a></p> <img src="<%- data.store.image %>" alt="店舗写真" /> <dl>

    Underscore.jsのtemplate触ったメモ
  • フロントエンドチューニングの箇条殴り書き

    普段気をつけてるよリスト "モバイルで、WebViewとブラウザのコンパチで、特にセオリー化されていないデザインモジュールのなか、装飾画像もふんだんに使うぞ系サービス開発" の文脈における、パフォーマンス確保のため気をつけてるよリスト。 よく、パフォーマンス「向上」とか「確保」とか申しますが、メンテナンスコストなどと天秤にかけて、「必要十分」のラインを狙うのが重要だと思う次第。 画像リソース 画像リソースを揃えるときのセオリ。圧縮率とか最適化とか細かいチューニングはあれど、大雑把に下記を守る。そしてImage Optim(or 相当の処理)。 JPEGはプログレッシブで画質60くらい(オレ目安) PNGは差し支えない範囲で色数をきちんと削る 50px未満のサムネイルは@2.0xなリソースにしない 案外、Androidあわせの@1.5xや@1.0xでも大丈夫なことすらある GIFアニメを入れ

    フロントエンドチューニングの箇条殴り書き
  • `that = this` について思ったこと

    thatに思いを馳せる JavaScriptにおいて that = this とか self = this なパターンを頻繁に使うと、作業者の理性が保証されない場合に下記に示す2点の問題が起こりう得ると思っている。 「あー、どうなのかなー、うーん」と思いながら書いてみる。 1.メソッド分割が適切におこなわれない雰囲気 ちょっと極端かも知れないが、Backboneっぽいコードを例にしてみる。 initialize: function() { var that = this; this.listenTo(this.entity, 'success', function() { var bar = that.foo(); that.$el.find('.qux').text(bar); // long. // long.. // logic... }); this.entity.execute(

    `that = this` について思ったこと
  • jQueryについての所感

    昨今jQueryについての所感とつきあい方を考える はじめはPHPとa-blog cmsがメインだったこのブログも、いつの間にかJavaScript(jQuery)とご飯レシピブログという謎な方向への珍走を遂げています。 そんな中、個人的にjQueryとのつきあい方について色々聞いたり思ったりで、だらだらとアウトプットしてみます。オチはつきませんでした。ダラァ...('A`) ってこれ、今年の3月に大半書いていて、なぜか8月も末の今頃に加筆修正かけたので色々アレなところあったらごめんなさい!!!もったいないから公開させてください、、てへぺろ(・ω<) なぜjQueryなのか jQuery周辺のノリ(何でもjQuery・コスト感なくjQuery・jQueryスニペット信仰)などに、正直ネガティブな感情抱くこともありますが、素直な気持ちで見ればjQueryはとても効率的だと思います。Web上

    jQueryについての所感
  • ぼくが実際に運用していたGitブランチモデルについて

    オペレーションとかインフラ系のエンジニアリングからは少々離れそうなので、個人的な備忘録がてら、Gitのブランチモデルについて。淡々と書くよ。 見えないチカラ: A successful Git branching model を翻訳しました 基的に、このA successful Git branching model(上記は翻訳記事)を参考にしています。ですが、完全ではありません。運用しながら都合よく省略していますし、悪く言えば曲解もしています。あくまで、わたしが都合良く解釈して取り回した結果と考えてください。 さて、このようなドッシリとしたブランチモデルが、あらゆる規模のプロジェクトに対して有効であるかといえば、もちろんそうではありません。コツコツ個人で開発しているライブラリなどは、ブランチを使わなくても良いケースがあるでしょうし、作ってもバージョン番号ブランチぐらいのケースだってザラ

    ぼくが実際に運用していたGitブランチモデルについて
  • 続Grunt + phantomjs + jasmineで自動テスト環境

    目標はgrunt + phantomjs + jasmineの自動テスト環境 先日の大なごやJS Vol.3で、@_tk84さんが発表なさっていた、PhantomJSで自動テストにインスパイアされて、Gruntでそのあたりをコントロールできるようにしました。 今回のポイントは下記。 .coffeeを保存したら、.jsに自動でコンパイル .jsの更新を検知して、SpecRunner.htmlを自動生成 このとき更新された.jsと、対になるテストコードを含んだSpecRunner.htmlが生成される phantomjsで、SpecRunner.htmlを実行した結果を標準出力 出力をgrowlnotifyに渡してデスクトップ通知 @_tk84さんの元ネタのほうでは、EmacsとRubyな環境でしたが、自分はエディタには依存せず、nodeの実行環境だけで何とかできるように構成しました。 aho

    続Grunt + phantomjs + jasmineで自動テスト環境
  • 人気そうなGruntで、StylusとかCoffeeScriptをビルドする

    ナウいらしいからgruntいれてみるよ cowboy/grunt GruntはJSで作られている、Rakeみたいなビルドタスクの管理ツールといえばよいのでしょうか。LESSやCoffee Scriptのようなコンパイルを必要するファイルの処理や、minify・concatなどもタスクとして実行できます。 デフォルトで、ファイル更新を監視するwatchタスクもあるため、コンパイル操作の自動化などにも使っていけます。npmでもgrunt関係のタスクが多数公開されているので、簡単にタスクを追加できます。 まずはnpmでgrunt体をインストール。 # ng npm instlal grunt npm WARN prefer global grunt@0.3.11 should be installed with -g # ok npm install -g grunt あ、グローバルじゃないと

    人気そうなGruntで、StylusとかCoffeeScriptをビルドする
  • socket.ioを試すときは,ポートの開き忘れとcookieに注意(いろいろ追記・修正)

    2011/03/02:いろいろ間違ってたので追記・修正 WebSocket = 3000じゃないですね.どっかで誤認したまま記事を書いてたようです.すみません.(手探り系だとよくあることですよね!) はてブのコメントに私信 port 3000 で動かしてる node.js にapache でリバースプロキシしてるなら、単に apache が websocket の proxy に対応してないだけでは?WebSocket に対応した Reverse Proxy ならポートなんてあける必要ないよ。http://bit.ly/gKplDu コメントありがとうございます. 構成はnode.jsとsocket.ioを使って接続する実装サンプルと,ポートの設定周りをごく基的にな感じでして,apacheは使っていないです.ポート開けなくても済むならそのほう良さそうなので,もうちょい迷走してみます. 2

    socket.ioを試すときは,ポートの開き忘れとcookieに注意(いろいろ追記・修正)
  • node.jsとsocket.ioを使って接続する実装サンプルと,ポートの設定周りをごく基本的に

    インスパイアされて試してみた node.js+socket.ioを使ったライブコーディングwebアプリを作ってる - すぎゃーんメモに影響されて,ちょうどnode.jsを触っていたので,自分もnode.js+socket.ioを試してみました. コードや設定は別途調べて自分なりに書いてみたり.なかなか勉強になりまして,ちょっと分かってきました.試してみたらワクワクしてきますね! リアルタイムな実装が,こんな簡単にできるなんてすごい, 今回は,それらのごくごく基的な実装と設定周りをまとめました.サンプルコードは,socket.ioを動かすところまでを最小限に記述しています. node.jsを動作させ始めるまでの道のりはnode.js用の環境作り - ディレクトリ構成とnginxの設定から起動テストまでとか,node.jsとnpmのインストールをしたメモとかを. サーバーサイドの実装と設定

    node.jsとsocket.ioを使って接続する実装サンプルと,ポートの設定周りをごく基本的に
  • HTML5的にmanifestファイルをゴニョった

    とりあえず自サイトのために 当はもっと深遠な用途があるんでしょうけれども、jQuery系のデカいけど滅多に変更がないファイルをどうにかするためにHTML5のアプリケーションキャッシュを試してみました。(という建前) Javascriptとかでガシガシやるような、エンジニア系の風情はありません。なるべくチョロい感じで。 manifestファイルをつくるよ ともかく、HTML要素の属性としてmanifestファイルを指定しないと始まらないので、以下のような内容のファイルを用意しました。 CACHE MANIFEST # Revision: 20100201-2300 ############################################################ ## キャッシュ対象のコンテンツ CACHE: themes/havelog/syntax/scripts

    HTML5的にmanifestファイルをゴニョった