タグ

ブックマーク / blog.dodgson.org (18)

  • リアルな DOM はなぜ遅いのか - steps to phantasien

    これは VirtualDOM Advent Calendar 2014 に勝手に参加する記事です。 あたたかい春の昼下がりのこと、あるブラウザベンダの社内を不穏な噂が駆け巡った。 「React.js なるライブラリ、どうも仮想 DOM というやつのせいで速いらしいぞ」 もうリアルな DOM はお役御免、ブラウザも商売上がったりか・・・。雇用に不安を覚える人(私)がいる一方、 そのアイデアをとりこんでブラウザの DOM を速く出来ないかと考える人たちもいた。 仮想 DOM はなぜ速いのか。誰かのつてを辿って React.js チームにおいでいただき、速さの秘密をテックトークしてもらう。 イミュータブルなデータ構造による単純化、非同期適用による処理のバッチ化、差分アルゴリズムによる副作用の最小化… いくつかのアイデアはブラウザからはどうにもならないが、たとえば非同期化なんかは形は違えどブラウザ

  • 書類仕事を追いかけて - steps to phantasien

    大きなコードベースの真ん中あたりをさわっていると、仕事の大半はリファクタリングに費やされる。機能を足そうと書くコードも 8 割リファクタリングで新緑は 2 割。失敗して捨てるものも多いから、かける時間は 9 対 1 くらいかもしれない。 それどころかリファクタリング自体がプロジェクトにもなりうる。「今四半期はこの腐ったコードどもをなんとかするのが目標」というように。私もいま大きなリファクタリング、あるいはリアーキテクティング、の手伝いをしている。仕事時間のほぼすべてがリファクタリングに費やされる。今の勤務先で通用する唯一の特技がリファクタリングな私にとってこれはたぶん適職だ。 リファクタリングにコーディングの大半を捧げる人は他にもいる。 プログラマ相手の管理職をエンジニアリング・マネージャと呼ぶ。ほぼ全員プログラマ出身。現場に近いマネージャは多くがコードも書く。ただ血気盛んな人を除くと新機

  • Life of Touch - steps to phantasien

    いいかげんあんどろでも勉強するかと 6 年遅れくらいで重い腰を上げかけている。気が重い。スマホとか知らないっすよ・・・。 あんどろ、というかスマホ固有の話題は色々あれど、その一つがタッチベースの UI なのは間違いない。そういえばタッチというのはどうやって実装されているんだろうか。それを一通り眺めれば、少しは気の重さが晴れるかもしれない。ということで今日はタッチイベントの実装を眺めてみたい。実装といっても静電容量だの電磁誘導だのではなくユーザー空間の話です。そして老人の勉強記録であり目新しい話はありません。間違ってたら教えてください。 参照するコードは何も考えず repo sync で降ってくる AOSP master。たぶんだいたい 4.4.x 相当(だよね?) View#onTouchEvent() あんどろプログラマからみたタッチイベントはふつう View#onTouchEvent(

  • 趣味はキーノート鑑賞 - steps to phantasien

    趣味は何かときかれたらインターネット企業ウォッチですと答えるかもしれない。そのへんの企業ゴシップに気を取られるよりコードでも書いてた方が百倍くらい有意義だとわかってはいる。でもついニュースを眺めて過ごしてしまう。職業上の便益を損ねるくらいだからこれは趣味と呼んで差し支えなかろう。中でも各種企業イベントのキーノート・スピーチ鑑賞はそんなおっかけ業のハイライトだ。 インサイダーからすると、キーノートは学芸会みたいなもの。隣のクラスの出来映えにやきもきすると同時に、自分のコードの晴れ舞台、たった一つの台詞を見守る。 インサイダーでないキーノート・・・つまり大半のキーノートは、言って見れば近所の高校の文化祭に行くようなものだろうか。あ、こういう学校なんだ、これが流行ってるんだ、なんてのが透けて見える気がして面白い。メディアが報じるキーノートは空気を伝えない。自分でビデオをみてこそ愛好家というものだ

  • 星を観にいく - steps to phantasien

    あるとき Dark Matter Programmer という言葉をみかけた。ウェブやコミュニティに存在感のない、当人もそれを気にかけていない、プログラマをさす言葉。言い出しっぺの主張は、そういう人々の存在を忘れたり、見下したりすべきでないというものだった。 ダークマターはうまい比喩だと思う。正体がよくわかっていないらしいから適当さの粗が目立たず、その割にイメージは鮮烈。 他の比喩との相性もいい。たとえばスター。スタープログラマはダークマタープログラマの対極にいる印象だけれど、意図に立ち戻ればそれほど大げさでもない。何らかの可視性があればスターといえる。僕もあなたもスターなのがオンラインのコミュニティなのだろう。 さまざまな星 なんてきれいごとはさておき、乱暴に言ってダークマター以外がスターならスターにも色々ある。細かい隕石やガスなんかをさておくとしても、まず明るさ、等級が違う。あるいは自

  • にわか TOEIC マニア - steps to phantasien

    社内で開かれたワークショップ形式の研修に参加したのは一年前、ちょうど今頃のこと。 それはたぶんチームワークのような何かを学ぶ会だったはずだけど、 私の感想は題と関係なく「いいかげん真面目に英語を勉強しないとあかん」だった。 話が通じないとチームワークどころじゃない。 米国資勤めの会社員からすると、英語はグローバル云々以前に仕事用 DSL みたいなもの。 英語ができないまま騙し騙し働くのはたぶん、 SQL が書けなからと ORM の上だけでコードを書こうとするのに似ている。できなくはないけど、いろいろしんどい。 幸い私は Web 開発者じゃないから SQL はわからなくていい。でも英語はやらないとダメっぽい。 入社二年半、ようやく現実を直視した。 最初はしゃべる練習をしようかと思ったけれど、そもそもしゃべる以外の英語すらできるといえるのか。怪しい。 むしろまず典型的日人として英語ができ

  • にわか Podcast ファン - steps to phantasien

    出張中。時差ボケ修正のためキータイピングで眠気を払おうと試みているところ。 いつになくどうでもいい内容につき見逃してください。 最近はやりの Podcast 番組 Rebuild を聴きはじめた勢いで他の番組も聴くようになった。にわかポッドキャスト好き。 にわか欲があるうちに聞いている番組を紹介したい。といってもだいたい ”オススメ Tech Podcast 5選” の記事にあるやつなんだけど。ちなみに私の Podcast 歴がどれだけにわかかというと、rebuild.fm の序盤はブラウザから mp3 をダウンロードして聴いていたくらい。 Podcast はとっくに滅びたメディアだとおもっていた。でも Blog が生き残っている程度には元気だと知りました。 私の聞いている番組は基的にアホらしい内容のものが多く、情報収集というより娯楽。 ニュースほど早口でも無味乾燥でもなく、講演ほど背筋

  • 最近のおっさんたち - steps to phantasien

    Gisted のドッグフードをかねて InfoQ のインタビューやプレゼンを見るようになった。 いくつか面白かったのを紹介したい・・・とおもってるうちにバックログを溜めすぎた。一度に紹介するのは諦めて何度かにわけよう。 今日はおっさん、具体的には ThoughtWorks 周辺の面々を追いかけてみます。InfoQ 中心だけどそれ以外も若干あり。 When Geek Leaks “プロダクティブ・プログラマ ” の著者 Neal Ford が あるキーノートにつけたタイトルは ”When Geek Leaks“。 ここでの Leak は前向きだ。Geek の情熱がその主たる関心の外にも影響を与えていくといいですね、という話。 ファインマンが物理学という専門以外で発揮した数々のいたずら心、 ”Now Every Company Is A Software Company” という Forbes

  • WDYT? - steps to phantasien

    仕事用の inbox に “Happy Anniversary!” というメールが届いていた。 入社してから三年経ったらしい。我ながらよく頑張った。 今の仕事にはまあまあきついところもあり、きついといってもデスマ的なきつさとは違うんだけど、 たとえば自己主張の強い人々と議論するなんてのはきつい。 気の弱い私はなるべく成り行きに任せることでしんどさを小さくしようとしている。 けれど成り行きに任せすぎると意思決定の無力感が板についてしまう。バランスはあやうい。 今のところの私が完全な無力サイドにおちず踏みとどまれているのは、 チームの同僚やリードによるところが大きい。 苦手な仕事 私は日頃ブラウザのバグをとったり、 JavaScript から使える新機能の API を生やしたりといった仕事をしている。 嗜好に限った話をすると、API を生やすよりバグをとる方がすきだ。 バグをとると皆ハッピーに

  • Gisted: Ideas Worth Pasting - steps to phantasien

    TED の動画はまあまあ面白いのでときどき暇つぶしに見るのだけれど, 動画ではなく音だけ (mp3) で聴きたいことがある. 動画ばかりは疲れる. あとあんどろ機器や iPod に入れて持ち出すのも音声がいい. 動画だとサイズが大きい上にバッテリーの減りも速いからね. 幸い TED は多くの動画にダウンロード用の mp3 を用意してくれている. あとは transcript (原稿) があればいうことない. 実際, TED のサイトには transcript もある. ただサイトのつくりが持ち出し派につらい. 持ち出しビューがないし, サイトから手元に切り出そうもコピペがやりにくい. それに切り出したテキストを Instapaper なんかのテキスト表示機に取り込むのは, いずれにせよ面倒がある. 私は移動中に原稿つきでスピーチ聴きたいだけなんよ. 音声だけで足りるほど英語できない… とい

  • エデンの園でおきたこと - steps to phantasien

    有給を駆使し一足早くクリスマス休暇に突入、ヒャッホイ Ingress やるぜーと 意気込んでいた矢先ノロウイルスにやられダウンした。かなしい。鎮まれ俺の胃袋・・・ そんな腹痛日和の気晴らしとして今日は Garbage Collection Advent Calendar に参加してみることにしました。 Advent Calendar 初体験につきよくわかってないけど勝手に参加していいんですよね? GC というとジェネレーショナルだのパラレルコンカレントだのといった話が目立ちがちだけれど、 現実の問題というかブラウザを相手にするとそれ以外の細々とした面倒が目につく。 GC つき言語 (JavaScript) のコードと C++ で書かれたコードとの連携は最たる面倒の1つ。 たとえば WebKit の DOM は C++ で実装されており、 C++ のオブジェクトは JavaScript 処理

  • 下から目線のコードレビュー - steps to phantasien

    WEB+DB の新しいやつがちょっと前にでてます. コードレビュー特集だそうな. 時が経つのは早い. まだ次の原稿書いてないのに… そういえば前にコードレビューの話を書いた気がして, 見なおしたところ かきかけ だった. せっかくなので続きを書いてみることにします. といっても何書くつもりだったか覚えてないのでだらだらと. WEB+DB PRESS の特集は, 主にこれからコードレビューを導入したい人に向けて書かれている. 幸か不幸か私はコードレビューを義務付けれたプロジェクトで働いているため, 導入には苦労していない. かわりにレビューをちょろまかせない面倒はある. ある意味でコードレビューを <やらされている>. もちろんこの言い分は大げさだ. 必要性に異議を唱える気はない. ただ異議はさておき自分の意向とは無関係にコードレビューに参加している気分を書いた話は あまり目にしないので,

  • コードレビューいろいろ - steps to phantasien

    コードレビューの話をいくつか見かけた. (1, 2, 3) 私もはやりにのってなにか書いてみたい. といってもリンク先についてどうこう言う気はない. ふだんからぼんやり感じていることをテキストにしてみたい. コードレビューの様式 コードレビューのやりかたは色々ある. 話の背景をあきらかにすべく, まずは私が参加したり見聞きしたりしてきた方法を紹介したい. ただとりとめなく列挙しても見通しが悪いから, 方法を評価する軸を見立てておこう. コードの粒度: 一回のレビューでレビュアが目を通すコードの量はどのくらいだろう. プロジェクト全体? モジュール単位, 機能単位, それともクラス単位? 古典的なレビュー様式はこれら <論理的な単位> でレビューをすることが多い. 最近はブランチやコミットのような <ひとまとまりの変更> を単位とする方法に人気がある. Github の Pull Reque

  • ホッピングの話 - steps to phantasien

    友人知人など、私のまわりには転職しようと考えている人がいつも少しずついる。 彼らに限らず、プログラマは割と頻繁に転職している気がする。よしよし、と思う。 世の中にとって良いことなのかはしらないけれど、 ジョブホッパーの身からすればそういう人が増えるほど私自身の角が立たなくてすむ。 類として呼ぶ友を求める心境。 私ほどのヘビーホッパー(ぜんぜん自慢になってない)ともなると、 たまにホッパー予備軍から「転職どうなんですかね」と水を向けられることがある。 そんなとき、酔った勢いなどで私はいつもでたらめを口走り後悔している。 そこでシラフのうちに自分用のテンプレを書いておくことにした。 正誤はともかくせめて主張を一貫させたい。 さいわい今の職場はもうしばらくいる気がするから、テンプレの陳腐化は心配しなくてよかろう。 私はおおむね行きがかりと衝動で職場をホップしており、そこに長期的な思惑はない。 た

  • 炭坑の庭師 - steps to phantasien

    Chromium と WebKit は二つの独立したプロジェクトだ。 ソースツリーはそれぞれ別で、そこにはインテグレーションの苦労がある。 WebKit 以外にも V8 や Skia など Chromium が依存している外部のプロジェクトは山ほどあるけれど, WebKit とは特にぴったりくっついている。 そのぶん二つの足並みをあわせる手間も際立つ。 以前、書籍 ”アジャイル開発の質とスケールアップ” で リリーストレイン という大規模プロジェクトのインテグレーション手法を読んだ。 プロジェクトの内部で一段細かい時限リリースを設け、そのタイミングでインテグレーションする方法。 内部リリースにあわせてプロジェクト同士が依存している相手のバージョンを上げ、 壊れたところをなおすわけ。 Chromium と WebKit もこまめに相手のバージョンを新しくする。 主たる依存の向きは Chro

  • WebKit2 と愉快な仲間たち - steps to phantasien

    ある ニュース記事を同僚に教わった。 この記事によるとタッチデバイスの会社は WebKit2 に対応しているのに検索の会社は旧バージョンにとどまっており、HTML5 に課題は多いのだそうな。 そりゃ課題は常に山積みだよね…と思っていたら記事は誤解だと別の同僚が説明を書いている。 リンク先の記事はさておき、世間の関心をいまいち集められていない気がする WebKit2 についてざっと説明をしてみたいとおもう。 この記事を読み終われば WebKit2 と Chromium WebKit, Webkit1 の違いを知ったかぶれるようになる予定。 WebKit2 は 2010 年の 4 月にアナウンスされた WebKit の新しい API レイヤで、Mac 版 Safari などが使っている。 大きな特徴はレンダリングエンジンを別プロセスで動かせること。 Chromium でやっているのと同じような

  • ファイルたちの王 - steps to phantasien

    Wired に GiHub 礼賛記事 が載っており、 いちファンとして楽しく読んだ。そして記事の最後をみると 「原稿を GitHub に載せといたよ」 と書いてある。なかなかシャレがわかる子だな。 私はこのごろ野良翻訳からほとんど興味をうしなっていたけれど、 今回は釣り針がキラキラしすぎにつきつられてみました。ヒマな人はごらんください。 https://github.com/omo/Lord-of-the-Files/blob/master/Lord-of-the-Files.ja.md ほぼ 1-pass で無推敲につき、さらにヒマなかたは適当にフォークしたバージョンをつくられるといい暇つぶしになるかもしれません。 Pull request ごっこしましょう。 -> Upstream されたので pull request は流にどうぞ。 表題の Lord of the files は「

  • 殺伐荒野コーディング - steps to phantasien

    ある朝会社にいくと git.webkit.org がダウンしている。仕事にならない・・・。 意気消沈したが くだを巻く口実ができたとウェブをひやかしていた 少し距離をおいて日々の業務を見直すいい機会だと調べものをしていたところ ソーシャルコーディングの講演で使われたスライド が紹介されておりふんふんと眺めた。 ソーシャルコーディングというのは GitHub なんかで fork と pull request みたいな対話を通じ 友達百人できるかんじですすめる民主的で人類賛歌なソフトウェア開発のことを指す(と私はおおまかに理解した)。 たしかに GitHub で送った pull request が “Nice! Thanks!!” とかいって受け入れられるとうれしいよね。 プログラマやっててよかった気分になる。 私が仕事でやっているのはコミッタレビュアそれ以外の身分差別と中央集権型 SCM,

  • 1