Qiitaは、利用者の良識と善意があれば、素晴らしいサービスである。しかし、今、その前提にある「利用者の良識と善意」が危機的な状況にある。
Qiitaの記事の一つのステータスとして「ストック数」がある。その名前の通り、「あとで読む/使う」「ためになりそう」といった感覚で押せば、ユーザーのストックのリストに追加されるという仕組みだ。まったく同じ感覚で、はてなブックマークやTwitterでリンクを共有する人も多い。しかし、これは一つの問題を孕んでいる。
人々が「あとで読む/使う」「ためになりそう」と判断するのは、記事の__印象__であり、__内容__ではない。したがって、たとえ用語をでたらめに使っていたとしても、好奇心を煽ってさえいれば共有され、__評価のバブル__が生まれるのだ。
もちろん、知的好奇心は尊ぶべきものであり、それを侵害するようなことがあってはならない。ところが、無意味に長いでたらめな文章を餌に、人々を釣る悪質な存在がいる。多くの読者は、それが誰であるかはご存じだろう。
不適切であっても、不当に高い評価を得た記事は、Googleの検索でも上位になりがちである。また、SNSでも、連鎖的に「この記事は参考になる」と評価が広まったり、あるいは「この分野はおかしい人が多い」といった評価が生まれたりしているのが現状だ。結果として、執筆者とその分野の人々の間で不毛な争いが発生している。
Twitter、はてなブックマーク、ストック数に共通する、「あとで読む/使う」「ためになりそう」という評価方法は原因の一つとなりうる。「読んだ」「有用だった」という評価基準ならば、評価のバブルをいくらか解消できるだろう。私はストック数のようなむなしい基準を好まないため、基本的にQiitaを技術情報の共有には使わなくなった。
Qiitaは技術とは関係ない記事を排除する方針のようだが(https://twitter.com/camloeba/status/558669170225590272, https://twitter.com/yuku_t/status/558670957011664897 )、もはやQiitaは独裁的な方法が通用するほど規模は小さくないのではないだろうか。このような姑息(誤用ではない)な方法では何の問題も解決できないだろう。運営のこの対応には心底銷魂した。
この記事はどのようにしてもかまわない。事実とともに何らかの形で共有すればいいのだから。
最後に、有名なセリフを引用して記事を締めくくろう。
「ブッ殺す」…そんな言葉は使う必要がねーんだ
なぜなら、オレや、オレたちの仲間は
その言葉を頭の中に思い浮かべた時には!
実際に相手を殺っちまって_もうすでに_終わってるからだッ!
だから使った事がねェーッ
ペッシ、オマエも_そうなるよな_ァ~~~ オレたちの仲間なら…
わかるか?オレの言ってる事…え?
『ブッ殺した』なら、使ってもいいッ!
ここからが本題で、最近私はHaskellで拡張可能レコードとバリアントを実装するためのライブラリを開発しています。こんな感じでレコードを表現できます。
{-# LANGUAGE TemplateHaskell, DataKinds, TypeOperators, KindSignatures, TypeFamilies, FlexibleContexts #-}
import Data.Extensible.Record
mkField "foo" [t|String|]
mkField "bar" [t|String|]
mkField "baz" [t|Int|]
hoge = foo @= "lorem"
<: bar @= "ipsum"
<: baz @= 42
<: Nil
興味がある方はぜひ試してみてください。コントリビューションやバグ報告も歓迎です。
レコードの実装については、ぼくのかんがえた最強の拡張可能レコードで解説しています。近々、対数時間で検索できる、要素の型が異なるコレクションの仕組みについても執筆する予定です。