NINA 2017 のためにバンクーバーに行ってきた

NodeInteractive North America 2017 に参加するのにバンクーバーに行ってきた。

カンファレンスという名目で旅をするのは楽しいもので、さらに今回は初めて会社がサポートしてくれて、仕事としてカンファレンスに参加してきた。休日ではないので、09:00 - 17:00で余裕のある時間は仕事に費やさなければならず、一長一短だなぁとか思いながら行きの空港でも3コミットくらい投げ込んだ。もちろんビールはコミットした後に飲んだ。

f:id:watilde:20171010171307j:plain

長距離フライトは本当に慣れなくて、落ち込みながら9時間の間に映画を4本くらい見ながら過ごした。気が乗らないまま映画を流してたんだけど、a dog's purpose だけは本当に良かった。実は最初に見た映画で、飛行機に乗り込んでからすぐに見始めて、離陸直後には既に泣いててCAの人にめっちゃ心配されたのを覚えてる。今年見た映画の中で1, 2番目によかった。

www.youtube.com

バンクーバーについてからは、今回の旅で快く寝床を貸してくれた GitLocalize 社の Sam と合流。街はどこかサンフランシスコに似ていて、それでいて緊張感のない過ごしやすい空気。

f:id:watilde:20171003150202j:plain

到着してすぐカフェで軽く仕事して、ホテルで休んで、そっから日本から参加している Yosuke さんと @kysnm さんと合流してロブスターをやってきた。

そのレストランで、たまたま @mylesborins@ohhoe と会って、次回の東京Node学園祭楽しみだねぇなんて話をした。二人は11月の学園祭で登壇をしてくれる予定になってる。その後は泥のように眠たくなって、ホテルで即就寝。

寝て起きて会場、周辺めっっっっちゃきれい。

f:id:watilde:20171004071805j:plain

130 CAD ほどで、プロペラ機で15分位の観光フライトもできたらしい。

f:id:watilde:20171004072713j:plain

そしてメイン会場。前回のNIEUもすごかったけど、今回もLinux財団のパワーを思い知らされる。

f:id:watilde:20171004081616j:plain

最初のキーノートでいくつか大きい発表があった。

nearFormがMicrosoftとの協業を発表。Azureに関するコンサルを増やしていく。

f:id:watilde:20171004094554j:plain

V8チームが、Node.jsのcoreを壊すバージョンアップはしない、と発表。そして、Node.js財団のプラチナスポンサーになる。

f:id:watilde:20171004100518j:plain

全体を通して、この2つが一番財団的には大きい発表だったんじゃないかなと思う。

あとは、興味のある発表がないときは誰かと話したり、水辺で人だめクッションで仕事したりした。

久しぶりのアジア食でわりとテンションがあがって、1日2食ほどラーメン行って、毎晩誰かしらと飲み行って、ウイスキーのショット飲んだりしてヘロヘロしてた。

f:id:watilde:20171005214609j:plain

もういっこだけ。カンファレンスとは別に、コミッターたちの会議があって標準化+テストの議論に参加してきた。

このテーブルには bocoup の CEO の @boazsender が来ていて、tc39 teamとの歩み寄りがうまくできたように思う。今年の頭にJoyeeやTimothyと一緒にWeb platform testsをNode.js coreにWHATWG URLのために入れたんだけど、彼らも同じくTest suiteをNode.jsで走らせる方法を模索していたみたいで、いい具合にduplicateした。結論として、test262のNode.js版を作ってみよう、という結論に至った。作ったらまた記事書きます。

各発表の詳細や、Yosukeさんのナイスな発表については別の方がまとめるかなぁと思うのでおいておくとして、

日本や中国からの発表が徐々に増えてきて、大陸レベルでの国際交流が微増してきていた。ヨーロッパで見られるような多国籍な人が一同に会して話しまくる、とはいかないけど、居心地が良いグループが形成されてきて、それこそが多様性をリードする良い方法なんだなとわかってきた。 @KimCrayton1Keynote で話していたように、「それぞれの人にとって心地よい部屋を作り、本音を言える安全な場所を作る」というもの。今後も、このへんを気をつけていきたい。

自分も本音を話せる場が見つかって、今回はしみじみと行ってよかったなぁと思えるようになった。日本人の参加者が増えたのは本当にやりやすくなったし、Yosukeさんは今まで一人で飛び込んでたの本当に大変だっただろうなぁと、ちょっと労いたくなった旅となった。

いずれNodeInteractive Asiaを開催するべく、みんな積極的に参加していってほしい。知らないで終わるには惜しい体験が得られる。

いい感じの開発者になる8つの心がけ

これは @yoshuawuyts のブログから持ってきたもの。自分も同じことを常に考えていて、特に車輪の再発明、あるいは再構築を大事にしている。再発明といえども、決して同じ車輪を作ってるわけじゃなくて、気付いたら自分なりによりよい車輪を作ってることになる。その過程を楽んでいくうちに、好奇心の幅が広がり、プログラミングコミュニティ内で友達ができていって深く沈んでいけるものなんじゃないかなぁて思ってる。

というわけでざっくり翻訳したのをメモ:

いい感じの開発者になる8つの心がけ

  1. 車輪を再構築する。多くの人は、それを止めてくるが、止めてくる人は再構築をしたことがないことが多い。彼らは、おそらく車輪について理解していない、かもしれない。きっと、新しい車輪が必要な際に新しい車をまるまる買うタイプの人。車輪の作り方を学んでいく。

  2. 既にある車輪を使うタイミングを知る。車輪を作る時間がないときもある。そこでは既存の車輪で凌いで、また時間ができたら車輪作りを再開していく。

  3. すべてを書き記す。記憶は完璧ではない。試しに使ってみたパッケージ、テクニック、あいまいなコマンドのフラグなど、メモを取り、未来の自分を手助けする。良いメモを作り上げるには時間がかかるが、継続することこそが近道。

  4. すべてを自動化する。コードの自動生成と自動化は、コンピューティングの中心にある。まさに、私たちが何をして価値を生んでいるか、ということ。短いスクリプトでコードジェネレーターを作り、コーディングの一部とする。

  5. OSSのコードを読み、ベストな作品から学ぶ。OSS開発者たちも同じことをしており、だからこそベストなものを作り上げている。会社のコードだけに身を収めないようにする。

  6. やったこと、すべてを公開する。どんなに小さいものであれ、世界に送り出す。品質が悪くても、それを気にする人はいない。それが有用なものなら、人々に感謝される。メンテナンスの予定がなくても、リファクタリングの予定がなくても、そんなことは関係ない。今すぐリリースをするか、二度とリリースしないか。

  7. 他の人に説明をするのに、時間をかける。カルマのようなもので、もしすべてを書き記し、自動化をし、公開をしていたら、それは簡単なはず。

  8. 今やっていること、すべてを楽しむ。憂鬱になる日もあるけど、それでもいい。いずれ、また興味がそそられるものが見つかるはず。毎日の開発に飽きたら、テーマを変えてみる。開発者でありつづけることは、財産。それを継続するためなら、専門分野を変えてみるのは有効。

元記事 medium.com

最近したblockchain + front endあたりのキャッチアップ

友だちに誘われてBlockchainなスタートアップに入ってみたんだけど、2週間が経過してだいぶ熟れてきた。どうやって何をキャッチアップしていったのかメモしてく。

P2P 周り

Blockchainそのものの前に、P2Pって何?っていうところから理解が必要だったので軽く調査した。Datprojectのtech stackを深掘りしていくことで全体像を把握していったんだけど、一番の疑問だったネットワークへの参加部分が一番興味深かった:

github.com

合わせて @kyorohiro さんのgitbookにも助けられた。ありがたや。

www.gitbook.com

ついでに、先日リリースした Node.js のための小さな package manager の depjs では、P2P network 上にある dependency を install できるように Dat protocol のサポートをした。あと、今朝 Dat project のリーダーの Max が開発チームに参加してくれたので、もうひとがんばりしていきたい。

Blockchain 周り

Web3, ethereumjs, ethjsを中心に読み進めつつ、PoW/PoSの概念やICOの仕組み、ERC20とsolc-jsとかを順番に読んでいった。今は、周辺技術のOSSにpatchを書きはじめてるんだけど、これがまた飽きない。来年末くらいまでは少なくとも楽しめそう。

自社のCrypto Currency構築

まだリリースしてないプロダクトなのであんまり説明できないんだけど、0x protocol とか SWAP protocol あたりが必要でWhite paperを読んで、実装がない部分は自分たちで実装していってる。これも飽きない。まだ実装がない分野って面白い。

Front Endそのもの

最後に仕事でちゃんと使ったのBackbone.jsだったけど、Angular2 + ngrx + TypeScript にはすんなり入れたように思う。Decoratorsの@Effectとか@Injectableが分かったあとは、reducerを中心に考えることができるようになって、自分たちのアプリに必要な機能の設計をside effectを強く意識しながら0からできるようになった。

angular-cliがpeerDepsとdepsのconflictが非常に多かったので、そのうちpatch書いていきたい。

テスト環境

Front end 周りは protractor を使うことで、わざわざ手書きで document.querySelector とかしなくても良くなったのでe2eテストは非常に快適。Smart contract周りは、Rinkby networkに向けてtransactionするテストを書いてるんだけど、今月中に testrpctruffle を試して徐々に移行していく予定。


まだまだできることが大量にあるからあんまり人に言いたくないんだけど、ETHホント面白い。この調子でのめり込んで、そのOSSコミュニティに貢献していきたい。