Help us understand the problem. What is going on with this article?

資金力のないWeb系ベンチャーがHaskellを採用したらどうなったか

More than 1 year has passed since last update.

はじめに

僕の本業は酪農で、ヤギのさくらちゃんをお世話するのが仕事ですが、それだけでは食っていけないのが世の中の悲しさなので、副業でフリーランスのITコンサル(兼プログラマ)や株式会社UZUZっていう会社のひきこもり系最高技術責任者としてHaskellやElmを業務で使っています。
あと、個人的な趣味で株式会社ARoWっていう社員数2名のちっちゃいWeb系の会社を実験的に経営していて、そこでもメインにHaskellを使っています。

ヤギさん

Haskellを実際に小規模な会社やフリーランスで使っている人って、実は世の中にほとんどいないみたいです。
そこで、実際のところ「Haskellって資金力のない会社や個人が業務で使えるのん?」っていう疑問に対して率直にお答えします。

日本Haskell界の現状

まず、Haskell界隈の日本における現状についてお話します。
知ってる方も多いと思いますが、日本でHaskellをガリガリ業務利用している会社を下記に挙げます。

  • 朝日ネット
  • IIJ
  • Tsuru Capital
    • デリバティブ取引を行っている
  • ワークスアプリケーションズ
    • 決済者が現場をわかっていない大企業に業務パッケージを売ることでお金をたくさん手に入れるビジネスモデル
    • 前はいっぱいHaskellerが研究部署にいたけど、ほとんどみんな逃げた
    • だから今は「ガリガリ業務利用している」わけではないが、潤沢な資金があってすら、うまくいかない例として晒させていただく

実際にどんな企業で、どんな風に有効に活用されているかなどは、@syocyさんがまとめてくれた記事をご覧ください。

ただ、ご覧のとおりどこも会社として資金源がたっぷりあるところばかりですね。
逆にWeb系ベンチャーがHaskellを大々的に使っているっていう話は、国内ではほとんど聞きません。

GREEでHaskellを一時期使ってたようですが、その後音沙汰がありませんね...
あと、スポーツ経験があるエンジニアを歓迎している某企業がHaskellとElmで釣る求人を出していましたが、応募したらエンジニアじゃない社長が1人で書いたやばそうなPHPの保守をさせられるという噂があります。

やっぱりHaskellを採用してビジネスとしても採算があうのは、お金がたっぷりある企業だけなのでしょうか。

実際、HaskellをWeb系で活かすのは大変

諸説あるとは思いますが、現状ではHaskellに興味を示し、がっつり関わっている人たちの大半が

  • Haskellの理論的側面に主に興味があったり
  • Webフロントエンドみたいな沼なんてマジ近寄りたくねぇ

みたいな方々で構成されている印象です。

ちょうど、PHP界隈やRails界隈が「とにかくすぐに金にならなきゃ意味ねぇんだよ」な方が主流で、業務利用のことをよ〜く考えてくれている一方で、どうしても基盤技術がおざなりになる傾向があるのと反転したような状況です。
(個人の感想です)

もちろん基盤技術がおろそかになったらどうなるかは語る必要もないですが、このような状況ゆえに、Web系ベンチャーがHaskellを業務利用しようと思ったらめっちゃめちゃ辛いです。

このあたりについては、@melponさんがWandboxに関する記事のコメントで追記してくださった内容が多くを語ってくれています。
実際、YesodっていうHaskell界では古参で、みんながつい使っちゃう、Railsになりたかった系Webフレームワークは、業務利用しようと思ったらうんこです。
もちろん、「フロントエンドなんか絶対にやりたくないマン」の方が趣味でプロダクトを作る用途であれば、これほど頼りになるものはありませんが、一方でWebpackとかと一緒に使うことなんてまるで考慮してなさそうなShakespeareっていうオレオレテンプレートエンジンを勧めてきたり(詳細はこちら)、JSONを返す方法が公式チュートリアルでないがしろにされててマジ闇だったり(いまはどうか知らん)、「お前らフロントエンドに興味なさすぎやろ」感があふれています。

これは、Haskell界に「フロントエンドなんか絶対にやりたくないマン」が多いことが諸悪の原因だと思います。
もちろん、伝説の@notogawaさんみたいに、工学部数学科(俗称)出身で理論側もすげぇうえに、フロントエンドもおざなりにしない人も当然います。

でも覚悟があればなんとかなるよ!

僕はHaskellに以前から可能性を感じていて、ぜひ使いたいと思っていたのですが、最初に入った「前はいっぱいHaskellerが研究部署にいたけど、ほとんどみんな逃げた」会社で研修中に左遷されたりしたこともあり、その後不動産の営業をやったりして、最終的に会社員として生きることを辞めました。

しかたないので、営業経験とか問題解決力を活かして、なにを作るか(あるいは作らないか)から相談できるフリーランスプログラマとしての人生をスタートしました。
フリーランスなので、結果を出せないと仕事がなくなりますが、その中でHaskellを使ってなんとか生きてきました。
あとついでに、趣味でやってる会社も最近黒字化が見えてきました。

生きてこれた秘訣をいくつかにまとめてみます。

  1. Haskellに夢を見すぎない
    • 本当に必要な部分にHaskellを使えばいい
    • 結局多くの新規プロジェクトはバックエンドがHaskellだけどね!
    • でもGHCJSとかには手をださないでElmとか使うし、CSSとかVanilla JSとかも結構書いてる
    • 既存の意味わからん古代言語のプロジェクトだって、書き換えるよりそのまま継ぎ足した方が総合的にいい場合はそのまま継ぎ足しながら機をうかがってる
  2. 技術選択をおこたらない
    • みんながYesodを使ってても、それが適してるとは限らない
  3. 最悪自分で作る覚悟をもつ
    • 前述の状況によって、まともなライブラリがない分野も存在する
  4. 根性で長期的な投資をつづける

    趣味でやってる会社は、2年くらい役員報酬0円、社員への支払いは僕がフリーランスで稼いだ私財を投入することで経営してきました。死ぬかと思いました。
    その結果、ようやく最近になって黒字化が見えてきています。
    あと、実は私財を投入してめっちゃすごい社員のデニスさんにいろいろ調べてもらうことで、フリーランスとかCTO業の方の成果がめっちゃ上がって、そっちの方で先にpayしたりしています。

投資期間はどうしても長くかかるので、それにたえられないなら、Haskellなんかに中途半端に手を出すべきじゃないと思います。
逆に、それを根性でたえられるのであれば、きっとめっちゃハッピーななんかになると思います。
どんなハッピーになるかは、「普通のやつらの上を行け」で書かれていることに近いと思います。

でもね、ここだけの話、自分で根性でなんとかするよりも、すでに私財でなんとかやりくりしてノウハウを持ってる人にお金を渡したほうがコスパ良いと思いますよ。僕の立場上、半分営業だけど、半分は本気でそう思います:kissing_heart:
だって、これ以上Haskellでつらい思いする人が増えるの見てたら僕もつらいじゃんか。

まとめ

以上、ヤギさんを飼うことで、長期の投資が必要なHaskellの業務利用でも、精神の安定が保たれてさくらちゃんかわいいよ!うへうへへ!!
goat.jpg
さくらちゃんにご飯をあげる
もっとさくらちゃんを見る

追記

誤解があるかもしれないので追記しますが、ヤギは粗食に耐えうる動物で、戦後の物資が少ない時代にはその性質を利用してミルクを目的にヤギを飼うご家庭が多くありました。
なので、Haskellに投資して生活が厳しくなったとしても、ヤギさんはあまり家計に負担をかけません。

追記2

この記事を公開してからだいたい1年が経過したのでその後どうなったかの追記です。

体重は当時の16kgから25kgになってだいたいラブラドールレトリバーくらいの重さになりました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away