二人のイケメンについて考える






Evan You 氏と Armin Ronacher 氏の二人は、若い時にそれぞれ Vue.js と Flask という偉大なフレームワークを作ってくれました。Vue.js と Flask で、なんとなく似てるな、と思うのは、いい感じにかけるような雰囲気になっている気がします。具体的に言えば、2つのフレームワークは、副作用を積極的に使っているということです。

副作用を扱うコードのメリットは、カジュアルに、自由に書ける気がします。デメリットは、その影響範囲を覚える、あるいは把握しないといけないので、脳、いわゆるワーキングメモリへの負担が大きいです。

書き味の良い自由でかつワーキングメモリへの負担の高いコードというのは、「若い」、「イケメン」、「天才」みたいなキーワードを、個人的に連想します。

例えば Vue.js については React がなるべく副作用のないコードを書くようなフレームワークなのに対して、Vue.js は副作用のあるコードをかけるようにしてくれています。いまのところ感じている Vue.js と React の違いは、個人的には template 構文, JSX と副作用への対処の仕方の2点かなと思っています。

Flask については、コンテキストというグローバルな副作用を扱う大きな箱があります。これもどことどこが繋がっているか理解していないと、途中で引っかかります。

Python という言語が、なぜ誕生したのか、ということについて考えると、それは、Guido van Rossum が ABC という教育用の言語の影響を受けて、天から地上に降り立ち、ワイのようなワーキングメモリプアな人間の視点に立って、ワーキングメモリへの負担の少ない文法を意識してくれたからだと思います。ワーキングメモリへの負担の少ない文法というのは、一貫性です。

Special cases aren't special enough to break the rules.
PEP 20






反面表現力に乏しく窮屈ではありますが、そういった窮屈さが、個人的に心地よかったです。

React も関数型言語の考え方で、副作用がないわけではないせよ、なるべく副作用を制限するような書き方を取り入れ、ワーキングメモリへの負担の少ないコードが書けるようになっている気がします。Hooks のコードを少しだけ見た時に、本当に、すごいなと思いました(語彙力)。

反面 Flask にしても Vue.js にしても、「若い」、「イケメン」の「天才」によって作られました。脳のワーキングメモリをガンガンに使う仕様になっています。副作用の面でもそうですし、記述の一貫性の面においてもです。

副作用の面というのは、暗黙的に状態を保持しています。オブジェクト指向の場合、多くの場合、レシーバ、Python の self であったり、JavaScript の this に寄せられています。データ(プロパティ、属性)の持ち主であったり、あるいは処理(関数、メソッド)の対象がわかります。が、Flask にしても Vue にしても、いくらかそうではないところがあります。

記述の一貫性というのは、Flask や Vue.js で「なんでこう書くのか?」に対する答えは、「それが書きやすいから」になります。反面デメリットは、個々の書き方や表記は、それぞれ覚えていかないといけないし、いざとなったときに深掘りしにくいことがあります。

たまにネットを覗いていると Vue.js への批判ではないにせよ、何か、こうネガティブな意見を見かけると、指摘される内容は確かに、とも思いもするのですが、上記のことを踏まえると、うーん、と感じてしまうことも稀にあります。型システムではなく副作用の話ですが、megmin1 氏のコメントをなんとなく思い出します。

自分の未熟さをカバーするために、型システムがあるんですよ
megmin1 氏





そんな天才向けのフレームワークがなぜ日本で人気なのかは、すこし疑問でした。日本人はやっぱりお気持ちを察する文化です。例えば、日本語も、主語や目的語を省略したりしますし。そのためシステムの採用でも、パッケージに合わせるのではなく、業務に合わせるという力学が働きやすいような気もします。





副作用あるいは状態を使うコーディングは、どことなく、このお気持ちを察する、共有する日本の文化と近い気がします。そう言ったところも Vue.js が日本で人気を白しているところの一つかなとも思ったりもします。

Evan You 氏と Armin Ronacher 氏の動画見ていて思ったのは、Evan You 氏は、上品な話し方をされていて、すごく考えながら話してるな、という気がしました。とても噛み砕いて説明してくれているにも関わらず、動画の内容はほとんど理解できていないのですが、表現そのものについていえば、もしかしたら伝わり辛い表現をされているかもな、と思いました。

対して Armin Ronacher 氏は、ざっくばらんな印象です。「いやー、とある会社でハックされたんだよね草」みたいなことを軽いノリで言われている時は、すこし笑ってしまいました(これは Flask に問題があるのではなく、Flask を使っていた会社が脆弱性のあるコードを書いたからですが)。

二人のイケメンについて考えた時に、確かにざっくばらん過ぎるといざという時に隙をつかれて守るべきものを守れなくなる、という問題もありますが、なんとなく Armin Ronacher に好感が持てますし、改めて Flask が好きになったりもします。

しかし、なんちゅうタイトルの文章を書いてしまったんや... orz