PR

求人紹介や就職サポートを手掛けるUZUZの最高技術責任者(CTO)である岡本和也氏。同氏は、関数型プログラミング言語のHaskellの使ってシステムを開発している。Haskellを使う理由や、エンジニアとしての仕事に対する考え方を聞いた。

(聞き手=大森 敏行)

HaskellをWebシステムの開発に活用していますね。

 私はUZUZと自身が設立したARoWという2つの会社で仕事をしています。これらの会社でWebアプリケーションのサーバーサイド開発にHaskellを使っています。

 大学時代にHaskell出会った頃は、プログラミング言語自体に興味がありました。関数型やスタック型といった様々なパラダイムの言語を触りたいと思っていました。しかし今は、関数型プログラミングにこだわっているわけではありません。

 Haskellを使っている理由は主に2つです。1つめは、言語として制約が多いからです。なぜ制約が多いことが利点なのか不思議に思うかもしれません。制約が少ないと複数の書き方ができます。その中には良い書き方も悪い書き方もあります。制約が多いとルールに従った書き方しかできません。逆にいえば悪い書き方ができないということです。ほぼ間違いなく高品質なコードを書けます。

 例えば、Haskellには変数の再代入ができないという制約があります。変数の値によってプログラムの状態が変わることを気にする必要がなくなり、ロジックの記述に専念できるようになります。

 2つめの理由は、強い静的型があるからです。Haskellでは型を厳密に記述するフォーマットが決まっているので、そのフォーマットに従って型のドキュメントを書くことで、型が共通言語になるのです。実際に、Haskellのプログラマー同士が会話するときは、関数の仕様を型で説明します。また、引数や返り値がどの型を取るかが厳密に決まっており、実装したプログラムがそれに合っていない場合はコンパイラがエラーを出してくれます。型レベルでのテストが可能です。

ARoWで開発しているHaskell向けのオープンソースソフトウエア(OSS)について教えてください。

 Haskellには弱点もあります。RubyのWebアプリケーションフレームワークであるRuby on Railsなどに比べて、簡単なものを作るのにも時間がかかる点です。その代わり、保守性が高いソフトウエアを開発できます。

 この弱点を克服するために取り組んでいるOSSが「Tonatona」です。プラグイン形式でいろんな機能を簡単に使えるようにするアプリケーションフレームワークです。

 Haskellは強力な機能を持ちますが、普通の人にとっては使いこなすのが大変な言語です。またHaskellを学んでいると、目的を達するのに必ずしも必要ではない高度な機能に心を奪われてしまうこともあります。その結果、シンプルな解決法があるのに、複雑かつ難解で保守性が低いコードを書いてしまう。

 Tonatonaは、Haskellの初学者であっても、Haskellの難しい機能を学ぶことなくアプリを開発できることを目指しています。ビジネスの場でHaskellを活用して普及させるという数少ない役割を果たしているという自負があります。

UZUZUのCTOとARoWの代表という2つの立場でどのように仕事をしていますか。

 UZUZでは2014年4月にフリーランスで仕事を始め、2016年1月に正社員になって、同時にCTOになりました。当時から月に数回ぐらいしか出社していませんでしたが、今は月に1回ぐらいしか出社していません。日によってUZUZの仕事をしたり、ARoWの仕事をしたりしています。ARoWは2015年2月に設立しました。