タオルケット体操

サツバツいんたーねっとでゲームとかガジェットのレビューとかをします

「Reactの難しさ」を分解しよう

  • 他のライブラリと比べるまえに
    • まず、ReactとjQueryと比べるのはやめよう
    • 「テンプレートエンジン」として捉えて、シンタックスを攻撃するのをやめよう
  • ライブラリとしてのReactはとても簡単
    • Reactの思想を理解するのはチョットムズカシイ
    • 環境構築が難しい
  • JavaScriptそのものが難しい
  • GUIが難しい
    • jQuery時代からのパラダイムシフト
    • フレームワーク関係者の情報量が多い
    • SPAはとりわけ難しい
  • まとめ

ずっと感じてたもやもやを書き連ねたら長くなってしまったが、ぼんやりとReactとかなんか難しそうだしめんどくさいから新規案件だけどjQueryでやろっかなどうしよっかなーと迷っている人の指針になってくれればうれしい。

他のライブラリと比べるまえに

まず、ReactとjQueryと比べるのはやめよう

出た時から延々と言われ続けているものの、やっぱり今でもjQueryとReactを「比較」するようなことは行われていたりする。
これらは「DOMを操作する便利API集」と「GUIを構築するためのViewライブラリ」で、両者は戦場が同じだから下レイヤの操作はブラウザのDOMを叩いているというだけで、そもそも思想や目指している部分は全く違う。

そして今やWebアプリというものは、本格的なGUIアプリケーションを作る場所へとなりつつ(あるいはすでに)ある。
そういう世界観で、ブラウザAPIが簡単に叩けるだとか、タイプ数が少なくて済むという話があまり本質的でないのはお分かりいただけるだろう。各ブラウザベンダーが少しづつ足並みを揃えて標準化が進み、リッチなユーザ体験を提供するという段になって必要になるのは思想でありアーキテクチャであり、それを落とし込んだフレームワークだ。Win32 APIとMMVMのどちらが優れているかという議論をする人はいないだろう。それと同じである。

GUIアプリケーションを構築する際のハードルについては色々と存在するが、まずStateとViewの関係性を健全に保つことの重要性は皆同意するところだとおもう。MVCがやりたいことも突き詰めればそれだ。
ReactはViewがもつState*1とそのPresentation(ブラウザであればDOM)の流れを管理するというのがその目的で、addEventListenerは長いから短くしましょうとか、DOMの操作をメソッドチェインでクールにキメるぜというのはその思想の外側に存在する。

「テンプレートエンジン」として捉えて、シンタックスを攻撃するのをやめよう

後述するが、つまるところReactの目的は状態の管理と、そこからレンダリングされるViewが常に再現可能なことにある。ReactがシンプルにしたいのはStateをどうレンダリングするかの流れで、テンプレートのシンタックスなんかはその本質から少しはずれる。
なのでJSXは、単純にJavaScript側でオブジェクトのツリーを人間にやさしい形で構築できるようにするためのDSLで、それは目的でも手段でもない。

一時期、Riot.jsとかが炎上マーケティングっぽいものをしかけてきててもイマイチ盛り上がらなかったのも恐らくそこが原因で、当時Reactにうおーすげーってなっていた人が見ていたのは関数型的な思想をWebのViewの世界へ良い感じに持ち込んできたところで、そこに「HTMLの中に書けるシンタックスでコードが短い!」というぶつけ方はまるで見当違いだったのだ。もちろんイケてるシンタックスでコードが短いのは大事なことだけど、その下敷きになっている思想がセクシーであることが重要になる。

ライブラリとしてのReactはとても簡単

*1:誤解を招きそうな表現だが、Storeで管理されているStateとComponent特有のStateというのは管理されてしかるべきで、ReactがStateを持つのもそういった理由による

続きを読む

君はiPhoneからcoaster beerを使ってどこにいても最高のクラフトビールを手にすることが可能だと気が付く

このブログは一応エンジニアブログなので、エンジニアリングについて書く。ITエンジニアは何故かクラフトビール好きが多い。つまりクラフトビールの話題はエンジニアリングの話題だといっても間違いないだろう。
ちなみに僕はアルコホリック・ハラスメントをする奴が大嫌いなのでこのエントリは極めてポリティカルにコレクトネスであることを前もって言っておく。ノミ・ホーダイとかいう不届きな日本文化がアルコホリック・ハラスメントの温床になって久しいときく。とにかくノミ・ホーダイとかいう薄暗い場所でションベンみたいな謎の液体を飲むのをやめて、春めいた陽気の元、楽しくクラフトなビールを飲んで欲しいと切に願う。

続きを読む

肩こり腰痛に悩まされるデスクワークの人にオススメの格安スタンディングデスクを色々と探してみた

Improvised Standing Desk

一度だけ、一週間ほどデンマークで仕事をして以来*1スタンディングデスクに恋焦がれる毎日ですが、労働環境後進国である日本で電動式のスタンディングデスクを手に入れるのは非常に困難です。
数年前からオカムラが販売しているSwiftというスタンディングデスクがあり、これは前職で利用しておりかなり快適だったのですが、15万以上するのでカジュアルにホイホイ買える選択肢ではありません。それとどうでもいいんですけど、オカムラとオカモトってめちゃくちゃ紛らわしくないですか?

本国のIKEAで、日本円にして7万前後でスタンディングデスクが買える! というニュースが去年だかくらいに少々バズったりしたせいで、せめてIKEAのクオリティと比較してから購入したいなーというのを言い訳にSwiftは見送り、時々思い出したかのように日本IKEAのBEKANTラインナップを眺めては失望する日々を送っていました。
そしてつい先日、特に何のプレスもなかったとおもうんですが、気がついたら日本IKEAのカタログにBEKANT ergonomiが追加されているじゃあありませんか。

*1:かの周辺国では、従業員がスタンディングデスクを求めたら会社は購入する義務があるようです。それは流石にエクストリームですね

続きを読む

MMOに時間を吸われまくっている(黒い砂漠をプレイしています)

気がついたら2ヶ月以上もブログの更新が滞っている。なぜならネトゲをしていたから。
今も気を抜けばPCの前に吸い込まれそうになる中、必死のおもいで作り出した時間に筆をとっている。

いまプレイしているのは黒い砂漠という名前のMMOだ。美麗なグラフィック、MOではなくMMO、そしてノンターゲティング型の戦闘、自由度の生産システム……それが謳い文句だ。少し前の韓国製MMOであれば、この手のゲームは全て企画倒れのクソとして歴史の闇に葬り去られていただろう。TERA、Blade and Soul、Archeage……全て腰抜けだった。
だが黒い砂漠は今までの似たようなコンセプトをうたうタイトルよりも一段上のクオリティで作られている。MMOといいつつ、スカイリム以降のオープンワールドゲームの文脈もうまく取り入れており、またC9と同じスタジオが制作しているだけあって戦闘のスピード感もなかなかだ。なおC9と同じく、バランス調整が大味なために対人戦は格ゲーというよりは世紀末スポーツゲームに近い雰囲気となっている、がそれもまたよし。

続きを読む

プログラマーが読むべきプログラミング以外の書籍

「〜べきXX」みたいなブログを書いてみたかった。

プログラマーという人種は控えめにいって啓蒙書やビジネス書の類を読まない(僕もそうです)傾向にある、というか馬鹿にして嫌っているようにおもいます。しかし全く読まずにバカにするのもフェアじゃないよなぁ、とおもって去年はあえていくつか有名な本を読んでみました。
しょうもない本もあったけど、流石売れるだけあって「これを食わず嫌いしてたのはもったいなかったかな」みたいな本もいくつかありました。今回はその中でもとりわけ印象的だったものを紹介してみます。

なんか有名っぽいタイトルばっか並んでる気がするんですけども、それは僕が「別ジャンルに入門するときは有名アーティストのベスト盤から入れ」派閥の人間だからです。

続きを読む