http://inside.pixiv.net/entry/2015/04/27/170944
2015年にもなるのにJavaScriptでのDOM操作のパフォーマンスについて書く。ウェブページにインタラクションを持たせたい時に、JavaScriptでDOM操作を行うことがよくある。このDOM操作のパフォーマンスについて、よく聞く意見を大別すると次の2つがある。 JavaScriptによるDOM操作は重たい レンダリングが重いだけで、DOM操作そのものはそれほど重たくない JavaScriptでオブジェクトのプロパティを操作したりする単体の処理は通常1ミリ秒もかからないが、DOM操作をするとレンダリングが完了するまでに数十ミリ秒程度かかったりする場合がある。1番目のDOM操作が重たいと言っている人は経験則的にそう言っていることが多い。 レンダリングの仕組みを知っている人は2番目の意見を言うが、重箱の隅をつつくような話をするとこれも必ずしも正しいわけではない。DOM操作するコードによっ
背景 Javascript で Web アプリを作ろうとすると、よくわからないことだらけで超混乱します。 npm と bower の違いは? npm はサーバーサイド用、bower はクライアントサイド用らしいよ えっ、でもなんで bower のインストールに npm が必要なの? サーバーサイドは Rails で書きたいから npm 要らないと思うんだけど・・・ ていうかサーバーサイドJSとか node.js って何? よく見る browserify って何? こういった疑問が沸き上がるのは、各ツールが生まれた文脈がよくわかっていないからです。いろいろ調べてやっとちょっとわかってきたのでメモします。間違いがあったらご指摘ください。 「CommonJS」誕生 - Javascript は汎用プログラミング言語へ その昔、Javascript 大好きおじさんは言いました。 Javascrip
(注記:7/15、いただいた翻訳フィードバックを元に記事を修正いたしました。) 子供の頃、私の興味は互いに関係性のない様々な分野に及んでいました。数学も歴史も大好きでした。 ルネッサンスマン 、つまり 博学者 と言う、複数の分野に秀でた人になりたいと思っていました。これはとても難しい課題で、私は突如として、器用貧乏な人になってしまう危機に直面したのです。 私は特定の分野に特化しなくては、と考え始めました。そうすればたとえルネッサンスマンにはなれなくても、少なくとも、器用貧乏にならなくても済むと思ったのです。どうしたらソフトウェア開発をするのに必要な広い知識を保ちながら、1つの分野で専門性を高めることができるのでしょうか。 この記事では、過去5年間、私が良いJavaScript開発者になるために使ったテクニックとリソースの概要をお伝えしようと思います。 最近の多くのWeb開発者は、ある共通の
今日はWebサイトやWebアプリの描画パフォーマンスをどう改善したらいいのか、ということについて取り上げようと思います。私たちWeb開発者にとって、この分野は比較的新しく注目し始めたエリアで、 ユーザエンゲージメントとユーザ体験 に影響があるため重要です。 フレームレートはWebにも影響がある フレームレートとは、 連続した イメージを端末がスクリーンに映し出すレートのことです。秒間フレーム数(FPS)が低ければ肉眼で個別のフレームを判別でき、FPSの数値が高ければユーザにとっては反応が速いと感じられます。ゲーム業界ではおなじみの概念となっているものですが、Webにも当てはまるのです。 長時間に及ぶイメージのデコード、不必要なイメージのリサイズ、重いアニメーションとデータ処理はすべてフレーム落ちを起こす可能性があり、結果としてフレームレートは下がり、jankが多いページになってしまいます。
JSer.infoというサイトを4年半ぐらいやってるのですが、2015年1月から半年ぐらい経ったので軽く振り返りをしてみました。 途中で出てくるグラフとか数値はJSer.infoでの言及数を元にしていて、これはjser/stat-jsを使って出したものです。 なので自分の主観的な数値に過ぎないので、一般的とは値とは異なる可能性があることは覚えておいてください。 言及数: タグ、タイトル、紹介文にキーワードが含まれると+1 2015-01-06のJS: ESLint 0.11.0、Browserifyとwebpack、TypeScriptの本 - JSer.info browserify vs webpack 新たなWeeklyサイトがでてきた 2015-01-13のJS: 6to5、ES6とjspm、リファクタリングJavaScript - JSer.info 6to5 2.0リリース 認
JavaScriptには、「部分適用」や「カリー化」といった考え方が存在します。 ココらへんは定義がわかりづらかったり、筆者自身も完璧に理解できているとは言いがたい部分もありますので、ざっくりと全体像でもお伝えできればと思います。 関数の適用、部分適用、カリー化の順番でお話していきます。 関数の適用とは そもそも、関数プログラミング言語においては、関数は「呼び出されるもの」というより、「適用されるもの」と捉えるほうが正確です。JavaScriptにはFunction.prototype.apply()メソッドがあります。 つまり、関数の呼び出しはapply()メソッドの糖衣構文(シンタックスシュガー)である、ということです。実際にapply()を使ってみます。 一つ目の引数には、関数の内部でthisに束縛されるオブジェクト、 二つ目の引数には、引数の配列で、関数の内部で使用したい値の配列を
最も誤解されているプログラム言語として名高いJavaScriptの誤解を解きつつ、中級者(プログラム開発においてある程度戦力として計算できる)になるためには何から抑えればいんだろう、というのを考えた記録とリンク集です。 考えたというか、自分が勉強中です。 ※追記 KENJUさんが完全に上位互換な内容の投稿を公開されていましたので紹介。 中上級者になるためのJavaScript【知識編】 対象 何かしらのプログラム言語は書ける 多少JavaScriptを書いたことはあれど、言語の仕様はよく知らない レベルの基準 中級ってどんな人なのさ? JavaScriptの業務スキルレベル 判別表 (5段階) あなたはJavaScriptを知らない JavaScriptでよく使われるクロージャやプロトタイプの考え方を理解すること 代表的なライブラリ(jQueryとか)が使えること、最近ならNode.jsな
6/25(木)に21cafeにて開催されたグッドパッチ協賛のイベント「JSオジサン #5」のレポートをお届けします。 JSオジサンとは? JSオジサンはJavaScriptにまつわるLT(ライトニングトーク)を、気軽にアルコールも入れつつ、普段の勉強会とは一味違う感じで楽しむイベントです。 LTの内容はオジサンらしく濃い話ばかりで、普段の仕事への活用の意味でもネタの意味でも好評をいただいております。 こんな名前のイベントですが若い方はもちろんのこと、多くの女性にも参加・登壇いただいています。 昨年3月に行われた第1回から数えて、ついに第5回目。今回も定員80名のところに200名あまりから参加希望をいただきありがとうございました! 残念ながら参加できなかった方も、この記事をで少しでも雰囲気がつたわればと思います。 LT紹介 それでは、各登壇者さんたちがどのようなLTをされたのかを紹介していき
最近またLocal Player (Chrome Player)を実装しなおしています. 一応説明しておくと, Local Playerは, 完全にローカルで動作する音楽プレイヤーです. シンプルさを求め(実装がめんどくさいだけ), 操作しやすく(これは大事), 良い感じのプレイヤーです. 半年前に, ソースコードがスパゲッティになって, 開発を中断していましたが, 最近また書きなおし始めたのです. 音楽プレイヤーをブラウザー上で実装するのには, 音楽ファイルをJavaScriptで読み込まなければなりません. そこでHTML5ですよ!!! <audio src="url/to/musicfile.mp3" type="audio/mp3" /> みたいな感じで, 音楽を再生できます. 詳細は他のページに譲ります. さて, 音楽ファイルを再生するには, ローカルファイルからurlをaudi
こんにちは。@shibe97です。 みなさん、HTMLのアウトラインをちゃんと理解していますか?? 実はかなり奥が深くて、間違って理解している方も実は多いのではないかと思います。 アウトラインとは 文書の階層構造のことを指します。 暗黙的なアウトラインと明示的なアウトラインの二種類が存在します。 暗黙的なアウトライン ルール1:暗黙的なアウトラインは、見出しタグを使用すると自動的に生成される 以下のように、見出しタグを用いるとアウトラインが生成されます。 この際、h1はh1のレベルを持ったアウトラインを生成し、h2はh2のレベルを持ったアウトラインを生成します。 ルール2:自分自身と同レベル以上の見出しが出現した場合、暗黙的に閉じられる 以下のようにh2が生成したアウトラインは別のh2が現れることによって暗黙的に閉じられます。 明示的なアウトライン ルール3:明示的なアウトラインは、HTM
6. 例えば • こんなコードが書きたい • 「hoge APIを叩いて∼」 • 「その結果を元にリクエスト作ってmoge APIを叩いて∼」 • 「さらにその結果をもとにfuga APIを叩いて∼」 • 「それをページに表示させたいヾ(ó `o)ノ」 8. こうなる/(^0^)\ $.get("http://api.hoge.com?hoge=hoge", function(err, hoge) { if(err) { console.error(err); return; } $.get(“http://api.moge.com?moge="+hoge, function(err, moge) { if(err) { console.error(err); return; } $.get(“http://api.fuga.com?fuga="+moge, function(err,
■Functionコンストラクタによる定義 関数がオブジェクトであるというならば、もしかしたらnew演算子で関数を宣言できるのではないか ―― しかり。JavaScriptでは、確かにFunctionコンストラクタとnew演算子を用いることで関数を定義することが可能だ。 前述(リスト3)のadd関数を、Functionコンストラクタで定義すると、以下のように記述できる。
this はインスタンス自身を指す、ただそれだけの話でしょう? そんなふうに考えていた時期が私にもありました。そう、JavaScript の this に出会うまでは・・。 用語について 私は Java 脳で書いてるので、言葉遣いが JavaScript と若干違う部分があると思います。 下記のようなイメージで言葉を使っています。 用語 意味 クラス インスタンスオブジェクトの元となる設計図 コンストラクタ クラスのコード部分で、new したときにコンストラクタの内容で初期化する インスタンス クラスを元に実体化したオブジェクト メンバ変数 クラスやインスタンスに属するローカル変数 メソッド クラスやインスタンスに属する命令(関数) オブジェクト指向とプロトタイプと this JavaScript のオブジェクト指向開発では、元になるクラスを new することで、インスタンスを生成します。
普段Javascriptをよく書いているのですが、設計が今の自分の弱点だなぁと思い、 積読になっていた JavaScriptデザインパターン – オライリー・ジャパン を引っ張りだして勉強したことを紹介していきます。 内容に関して何か間違いや問題があったらご指摘ください。 デザインパターンとは デザインパターン – wikipedia “ソフトウェア開発におけるデザインパターン(型紙(かたがみ)または設計パターン、英: design pattern)とは、過去のソフトウェア設計者が発見し編み出した設計ノウハウを蓄積し、名前をつけ、再利用しやすいように特定の規約に従ってカタログ化したものである。” デザインパターンというのは、テンプレートの様なものと考えるとわかりやすいかもしれませんね。 また、Javascriptデザインパターンでは次のように提唱されています。 パターンは実績のある解決策で
社内向け資料。自分が書いたコードを説明するために資料作る羽目になった。 昔のことはうろ覚えで雰囲気で書いてる部分もあるので、そこらへん勘弁。 古の時代(~2010) 前提としてJavaScriptは名前空間がwindowの一つしかない。 昔Prototype.jsがあった。もうみんな忘れたけどあの時期はプリミティブなオブジェクトのprototypeを生やしまくって、それが衝突しまくってprototype良くない的な雰囲気が生まれたり生まれなかったりした。 その反省があってか(歴史的に若干微妙な気がするが) jQueryは名前空間を一つに集約した。いわゆる jQueryPlugin は、jQueryのプロトタイプにヘルパを生やしまくっていた。グローバルを汚すのは駄目だけどjQueryの名前空間を汚すのはいいよね、ぐらいの考え。 jQuery非依存なライブラリは、「GoodParts」として、
2015年02月05日16:34 カテゴリ 今、クライアントサイドのJavaScriptを書く前に知っておきたいこと ~ 2014年トレンド総まとめ 皆さんこんにちは。adingoにてFluctという広告配信システムの管理画面を中心にクライアントサイドの開発を行っております、大関です。 今回は、先日、社内のエンジニア向けに開催した「2014年のJavaScriptのトレンド総まとめ」というコンセプトの勉強会の内容について紹介します。 JavaScriptトレンド総括(2014) from Tetsuharu OHZEKI それでは、スライドに書ききれなかった前提事項について、何点か補足と解説をします。 補足と解説 前提: なぜ「2014年」なのか JavaScriptを用いた開発、特にWebフロントエンドとも呼称されるクライアントサイドJSのトレンドは、非常に速いサイクルでの進化を見せて
HTMLファイ部のほんだです。 気づきTips! Σ(・ロ・) カヤックの中でもHTML5のWebフロントエンド実装を担当する エンジニアを集めた部署「HTMLファイ部」では、 制作にあたってはまったことや、気づいたことをメモ的に蓄積・共有しています。 通常は、 1. 制作で何かわからないことがでた ▼ 2. Google等で検索して解決の糸口をさがす ▼ 3. こんな方法があったのか〜 と気づきを得る というフローでスキルアップしていくことがもっぱらだと思うのですが、 学びを増やしていくためには違うアプローチも必要なんじゃないかと思います。 カヤックHTMLファイ部では、 1. みんなで蓄積したTipsをざぁっと読む ▼ 2. こんな方法があったのか〜 と気づきを得る ▼ 3. 制作の際に導入していく というフローを繰り返し実践していくことで、 検索では気づけないことを学び、実装力アップ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く