読者です 読者をやめる 読者になる 読者になる

rustcを通らないコードは間違っている

Rustを書いていると、慣れるまではrustcに頻繁に怒られる。慣れても結構怒られる。とにかくrustcに怒られる。きっと貴方はこう思うだろう、「Rustはなんて煩い言語なんだ!俺の愛する****(好きな言語の名前を入れてください)ならばこんなことはないのに!…

rust-bindgenのupstreamが変わった

cargo:bindgenのupstreamがYamakaky/rust-bindgenからservo/rust-bindgenに変わった。変わった結果どうなったかというと、C++のヘッダのパース機能が大幅に改善したりする。 rust-bindgenを知らなかった人に簡単に解説しておくと、clangを使ってC/C++のヘッ…

2016年やったこと

本業 色々あった 2016年も大変な一年だった 前半 Client-side JS for infeed layout native ad at fluct SSP // Speaker Deck 後半 今の時点で表に出せる内容はそんなにない 社内向け管理画面のGUIを再設計するみたいな仕事を細々とやってたけど、だいたい以…

備忘録: yarnpkgで依存パッケージのガーデニング作業を楽に行う

前提 yarnpkgのv0.17系 依存パッケージのガーデニングという単語の意味についてはググれ How to yarn outdatedとかで更新が必要そうなものを眺める いきなり2へすっ飛んでもいい バージョンをstableとかdevとかnextで指定している場合は出てきたり出てこなか…

Node学園#23で広告ジャバスクリプトの話をしてきました

スライドに書いてない詳細とか補足とかは, 勤務先のブログに書くかもしれないけど, もう少し私的な記録として. Node学園#23で, 今年の始め〜夏ぐらいにやっていた話をしてきた 元々, 東京Node学園祭2016にCFP出してたんだけど, 甲斐なく落選してしまったので…

東京Node学園#20でtry-catch使うなという話をしてきました

東京Node学園#20で「Don't use try-catch」というタイトルで話してきました。 option-tの話 最初は手前味噌なoption-tの話を主題にするつもりではあったんですが、そんなライブラリの話とかしたって特にトリッキーな実装をしているわけでなし、全然面白くな…

option-tにResult<T, E>型を実装した(簡易報告版)

概要 Error Handling - The Rust Programming Languageに書いてある API JavaScriptなのでownershipとかはないです 当該issue github.com 使い方(v0.17時点) CHANGELOG.mdの当該項目

ECMA262のIteration protocolsで遅延評価するIteratorを作る

これは何? ECMA262 6th以降にはiteration protocols(と呼ぶべきもの)が導入されている、というのは皆さんもちろんご存知のとおりだと思います。これを使ってIterator<T>.next()が呼ばれるまでmap()などを実行しない(lazy evaluationする)Iteratorを作って</t>…

RxJSで副作用を扱うにはどうするか - Schedulerを交えて

Rx.Scheduler RxにはSchedulerと呼ばれる主要概念がある. 値がpushで飛んでくるというRxのインパクトの後ろに隠れがちなSchedulerではあるが, これにより, 処理系のスレッドモデル(並行性)と時間軸にまつわるタイミングの制御を統一的に扱えるようにしてい…

Summary of the layered architecture for karen-irc’s client-side

This is the summary overview of karen-irc's client-side architecture. The history of my thought are wrote in the issue. I may talk about more details in somewhere. And I deployed the simplified design of this to my main work code. Perhaps …

open souce関係の2015年まとめ

本業がマクロでそれなりに忙しかったんで、その関係もあって、興味関心がエンタープライズアプリケーションアーキテクチャとか、GUIアプリケーションアーキテクチャに向いていたので、なんか2015年はServoとかRustよりも専らECMA262かTypeScriptばかり書いて…

コミュニティの受容の印象いろいろ:Rx編

2015年を通して、Rxに関して色々調べてみた結果、(国内の)コミュニティごとに受容の温度感がだいぶ違ったので、ちょっとおもしろかった。 .NET(C#)界隈 2009年くらいからRxに付き合ってるだけあって、なんというか熱狂期を過ぎた感じ。冷静に受け止めて…

ReactiveX: コレクションに内包された複数のObservableの変更を受け取りたい場合にどうするか

まあサンプルコードはRxJSベースで書いてるわけですが. Reactのようなone-way data flowなテンプレートエンジンとObservableを用いて, フォーム形式のアプリケーションを作っている場合, Observableの入れ子で表したいデータ構造をつくりたいことがある. た…

リアクティブとかファンクショナルとか言わないReactiveX入門

しばし見かけるReactive Extensions(ReactiveX, Rx)に関する説明の多くはファンクショナルだのリアクティブだのモナドといったキャッチーなフレーズを使っている。けれども、そういう方面に馴染みのない人を相手にして、そもそもの概念的に何を解決したか…

ソフトウェアの設計に思いを馳せた何か

http://www.slideshare.net/saneyuki/my-thoughy-about-beyond-flux (主にGUIの)アプリケーション設計的なものをぼんやりと考えていた時に、色々思いついたことを書いた。特にどこかで発表するという予定もないんだけど、作ったからには手元でタンスの肥や…

最近のJavaScriptはスクリプト言語のジャンルで必要な機能がだいたい揃った気がする(言語的な範囲では)

少し前にTypeScriptと素のECMAScriptとfb::JSXを混ぜてcompile -> linkする記事を勤務先のブログに書いたのだけれども、それ以後に色々思った小話を一席。 先述のエントリで示した構成を趣味プロジェクト含めて2~3度試した結果、現代のJavaScriptは書き捨て…

RxJSのいろいろ雑感(2015年8月末編)

8月末に書いたメモ書き どこに書いたか忘れそうなんで貼っておく

RxJSとRxJavaとでは旨味のコクが違うように思う

Rx(もしくはReactive ExtensionsないしReactiveX)には Observable Operators Subject Scheduler と云った概念がある(分類はReactiveX.io調べ)。 で、Rxを用いた非同期処理を実際に行うにあたっての実行計画を制御するための要素が Scheduler に当たり、…

breaking changeの整理

生きているソフトウェアに付き物の破壊的変更(breaking change)であるが、一口に破壊的変更と言っても、実際は複数の意味を包含している。 なお、「生きているソフトウェア」では主語が大きすぎるので、ライブラリであったりランタイムについての話とする…

Re: Rx.js, Immutable.js について

Rx.js, Immutable.js について - mizchi's blog ファイルサイズへの異論は無い。これを使わずとも解決できる問題があるというのも同意する。それでもイマイチ釈然としない。「使う必要のない」一般公理と「使いたくはない」私情の境界が曖昧に感じてしまう。…

銀の弾丸は川から流れて来ない

The Evolution of Flux Frameworks — Mediumを読んだ。自分がここ3ヶ月~半年くらい考えてたことと殆ど一緒で、若干の安心感を得たり。実装論の話も概ね同意ではあるのだけれど、自分は必ずしも同意しかねる面がある。 今のメモリマネージド言語のトレンド、…

RxJSをもくもくしてReactivePropertyの価値らしきものを気づかされた話(仮)

Reactive Extensions JS port(RxJS)をもくもくしていた結果、C#界隈がReactive Propertyを作り出した理由が(なんとなく)わかってきた。 Rxの流儀にのっとれば、ある値を使おうとする場合、その値を生成するObservableの結果を受けて、そのObservableも同…

makeのくびき

「gulpって何だよ、makeでいいじゃん(要約」論争について、私もちょっと一本講釈をぶってみることにする。あれやこれやといった実利的な話をするつもりはない。そういうものは既に書いた人がいるのでそちらを参照のこと。 Gruntの思い出 Gruntは、私の印象…

リュックサックを新調した話

リュックサックが欲しくなった 大学生3年の頃に、BERMASの42cmのブリーフケースを買って以来重宝している。単体で1.5kg弱あるんだけど、その変わり生地が非常に硬く、型もしっかりしている上、おまけにショルダーベルトまであるので非常に使い勝手がいい。ポ…

option-tにPromiseへのキャストメソッドを用意したりなど

自作RustスタイルECMAScript用Option型ライブラリoption-tをいろいろアップデートしたので、リリースノートがてら書く。ご存知ない方はこちらをどうぞ。要はOption<T>/Maybe型だ。 Promiseへのキャストメソッドを用意した ECMA 262の文化には、すでにMaybeもど</t>…

RxJSのObservableのHotとColdの実装を眺めた

更新情報 UTC+9:00, 2015/03/29, 3:30くらいに、サンプルコードとかロジックの説明とかを修正した UTC+9:00, 2015/03/29, 14:30くらいに、gistにした(エラッタの修正履歴を残すため)

Option/Maybeとかで解決していることを、さながらgolangのようにES6のdestructuring assignmentで解決する

ES6から使えるようになるdestructuring assignmentを使って、タプル的に返して受け取れば、複数の値を楽に受け取れるので、エラーハンドリング的なものが楽にできるようになりますよね!という話です。先日書いたライブラリで解決・緩和しようとしていた問題…

ES5の範囲でOption<T>型を表すライブラリ、option-t を作った

動機 初期状態で未選択なラジオボタンがあるようなフォームを作っている場合、ラジオボタンに対応するモデルの値を「この値は未選択である」というのをJSで表現するのは結構面倒くさい。チェックボックスであれば, booleanのどちらかで状態が確定するが、ラ…

CSSのcanvasとviewportとposition:fixedとpinch zoom

specを元にした概念の整理 間違いあったら教えて欲しい CSS 2.1におけるviewport CSS 2.1におけるviewportを説明するにあたり、以下のterminologyが必要となる canvas For instance, user agents rendering to a screen generally impose a minimum width an…

2014年やったこと(物書き業編)

log

MozillaのLevel 3 Committerになった だいたい三月ぐらいに。 Mozillaにはコミッタにアクセス権限がレベル形式で設定されていて、レベルに応じてパッチをlandできるリポジトリに制限がある。Core ProductsであるFirefoxなどのリポジトリ(mozilla-central/in…

Fluxとはなんだったのか + misc at 2014

はじめに VirtualDom - なぜ仮想DOMという概念が俺達の魂を震えさせるのか - Qiita を読んでいる前提で話を進めます。 結局”Flux”なんだったのよ 詳細については過去に自分が覚え書きを書いたのでそっちを読んでいただけると良いと思うけど、あれは 「MVCの…

Rustプログラミングにおけるデバッグ入門

これはRust Language Advent Calendar 2014の第1日目となります。 尚、本情報はRust 0.13.0-nightly@fac5a0767時点の情報を基にしております。 現実においてプログラムを書くにあたりデバッグを行わないということはありません。ですので、通常、我々はデバ…

Fluxの枠にURLルーティングを収める試行

JSer.info 200回記念祭の懇親会でざっくりアイディアだけ話していた記憶(酔っ払っていたので正確には覚えていない)なんだけど、実際に必要になったので試しに作ってみたという話。 モチベーション Fluxパターンを用いた設計を行なっている場合というのは往…

Fluxアーキテクチャの覚え書きを書いた

どこに書いたか忘れそうなので備忘でgist貼付ける Facebook提唱のFluxのメモ:http://facebook.github.io/react ...

React.js読んだ感想とかFluxアーキテクチャとか

この間、virtual DOM読んだついでにReactも読んでみた。 役に立つ話を書くつもりは一切無くて、感想だけ。 React.js 定数だけのファイルとか(まさに*hな感じ)、デザインや使い方について書かれたコメントなど、全般的にC++に類似するstaticなコードの流儀…

Virtual DOMのアルゴリズムが知りたくてvirtual-domのコードを読んだ話

Reactの登場以来気になっていた、Virtual DOMアプローチの具体的な差分抽出手法について、virtual-domを読んで確認してみた。 Reactをいきなり読むのは面倒くさかった・ミニマムな実装から読みたかったというのが、こっちを選択した理由。Reactのアルゴリズ…

Servoの現状(2014年Q2)

Servoの現況概説的なおはなし - snyk_s logの方を未だに参照されてる人がなんか多いみたいなので。 Servo parallelism from Tetsuharu OHZEKI スライド自体は先日のブラウザエンジン先端観測会で使ったものそのものなんだけど、2014年Q2現在の現状としてはこ…

LL Diver 夜の部『帰ってきただめ自慢』に #Rustlang 枠として参戦します

今年2014年のLL Eventである、LL Diverの夜の部、『帰ってきただめ自慢』にRust枠として出演する事となりました。 僭越ながら、日本Rust界の大家であるMasanori Ogino氏を差し置いての参戦となりますが、他の日本○○界を代表する歴々に負けずに、ぜひともRust…

Windowsを使うWebフロントエンドエンジニアだった頃の道具一揃え

前職ではWindowsを使ってWebフロントエンドエンジニアをやっていたんだけど、そのときに自分の開発機に入れていたツール群とかを徐々に忘れてしまいそうだったのでメモを兼ねて書いてみる。Web系=OSXということでノウハウがどれもWin向きではないということ…

JS界隈にIDLもしくはd.tsを併記・同梱する文化が根付いてほしい

前置き 最近、ウェッブフロントエンドエンジニアらしく各種JavaScriptのライブラリを眺めて、調査・選定しているのだけれども、その過程を通じたこととして、多くのライブラリが、ドキュメントのAPIの説明が貧弱すぎる。 jQueryのドキュメントが腐っていると…

ServoのDOMバインディングの話

Servoのリポジトリ内にDOMバインディングのデザイン覚え書きを投入したので、現時点での設計について、そろそろ日本語で説明しておく(英語版は結構前からServoのWikiに書いています)。 この記事の中で使うSpiderMonkey API用語は、結構古いものだったりす…

Web ComponentsとHTMLのセマンティクスと自分の将来予測

Custom Elements W3C Editor's Draft 18 June 2014を元に書いた。 昔、関連仕様のどこかで今回と似た話を見た記憶が有るんだけど、どこにあったか忘れたので、改めて自分の解釈として書いてみる。 Custom Elementで既存の要素を拡張する Web ComponentsのCus…

Rustで値のmoveが起こる場合

Rust v.0.11pre時点での情報です。 Rustにおけるムーブセマンティクス だいたいC++のそれと同じものと理解してるんだけど、おさらいとして。 Rustの言語セマンティクスの一つに、メモリの所有権(Ownership)というものがある。これは「このメモリ領域を自身…

状態を持ちたい訳ではないが全部関数の組み合わせにしたい訳ではない

何でもかんでもインスタンスを作る系統のオブジェクト指向は、本来持たなくても良い状態も持ってしまうコードを書きがちだしテストしにくいしデバッグしにくいので、基本的に参照透過な関数の組み合わせにするのが好きなのだけれども、そうはいってもArray.p…

ブラウザエンジン先端観測会というイベントをやります

やります http://atnd.org/events/52121 本当に中身を観測するだけの会です 好奇心を満たすのが第一目的 いつやるの 7月上旬 どうしてやるの 色んなところでブラウザエンジンの中身を話す人が増えてきたけれども、「効率的なWebアプリを作る」という文脈の話…

Apple SwiftについてのRustユーザーの感想

開祖Graydonの報告以外に何も言うことはありません。 get it now: http://www.rust-lang.org/ こちらからは以上です

#rustlang における構造体のmutabilityと`Cell/RefCell`

この記事はRust 0.10を基準に書かれている 前提 Rustの基本として、明示的にmutを付けて値の変更を可能にした(mutableにした)データ以外は変更することができない(デフォルトimmutableの原則とでも呼ぶべきかな)。これを構造体に適用した場合、構造体の…

訳語をむやみに作らない

自分が技術文書を翻訳するときに気をつけている(こだわっている)こととして、「訳語をむやみに作らない」というものがある。 Rustのドキュメントを読んでいると非常に色んな独自の用語が出てくる。arm, owned, borrowed, box, lifetime, etc...... 典型的…

ES6の前にES5のベストプラクティスを改めて考えたい

歴史認識 だいたい以下のような流れだと認識している。 IE8以前を含むECMAScript 3暗黒時代があった この時代をベースにベストプラクティスが構築 + HTML5ブームが発生した 暗黒時代なんで結構つらいし、IE9じゃないとECMAScript 5使えないし、結局辛い Coff…

見つけた便利MV**ライブラリを紹介するときにjQueryをスケープゴートにするのをいい加減に止めろ

オレオレMV**フレームワークを紹介する際にjQueryを引合いに出して語る事案が多く、そこで語られるjQuery批判が的外れもいいところなのが散見されるので書きました。 Abstract MV**便利フレームワーク・ライブラリを紹介するときに、jQueryの一番イケてない…