「Haskell」を業務アプリ開発にフル活用する岡本和也さんは、「UZUZ」のCTOを務めると同時にソフトウェア開発会社「ARoW」を経営し、さらにフリーランスエンジニアとしても活動する。Haskellにこだわる理由、“複業”エンジニアとして活動する理由を聞いた。
岡本和也さんは、既卒、第2新卒向け転職支援サービスを提供する「UZUZ(ウズウズ)」の最高技術責任者(CTO)だ。それなのに「月に2日程度しか出社しない」という自由な働き方で仕事に取り組んでいる。
UZUZのCTO職を務めるのと同時に、ソフトウェア開発会社の「ARoW(アロー)」を経営し、さらにフリーランスエンジニアとしても活動する。得意技として駆使するプログラミング言語は「Haskell」だ。純粋関数型言語として知名度が高いが、業務利用はまだ珍しい
複数の仕事に同時に取り組み、希少なHaskell技術者でもある岡本さんの自由な働き方の背景には、どのような考えがあるのだろうか。話を聞いてみることにした。
岡本さんは、もともとプログラミングや電子工作が好きだった。
小学6年生でVisual Basicと出会い、大学の学部3年の授業でHaskellに触れた。岡本さんはたちまちHaskellの魅力にとりつかれた(なぜHaskellを学ぶと良いかなどの記事も執筆している)。
「Haskellプログラミングには、パズルを解くのと同じ種類の楽しさがある」と岡本さんは語る。「関数型言語としての側面はあまり強調したくない」とも言う。
「関数型言語といえばまずLispを連想するが、HaskellはLispとはまるで違う言語。カッコがたくさん出てくるわけでもない」
岡本さんが考えるHaskellの特徴は「型が厳密。型に関してコンパイルエラーが出ないように書くところにパズル的な面白さがある。コンパイラを通ったプログラムは、まずランタイムエラーが出ない」というところ。確かに、エラーが出にくいことは業務上のプログラミングでも有用な性質だ。
Haskellは、他の大抵の有名な言語と設計思想が違う。数学的なバックグラウンドもある。使いこなすには能力が必要──はっきり言うと、頭が良くないと使えないのではないだろうか? ところが岡本さんは、堂々と「僕は頭が良くないのでHaskellを使っています」と話す。どういうことなのだろう?
岡本さんによるとHaskellは、「言語仕様が大きくない。というよりも、いかに機能を削ぎ落としていくかを追求した言語。何しろ変数に値を代入して書き換えることができない。その制約の中でプログラミングすると、知らず知らずのうちにバッドノウハウが入らないプログラムになる」とのことだ。さらに「うっかりミスがあり得ない。コンパイルを通ればランタイムエラーが出ない」と続ける。
他の言語の話をすると、例えばRubyは型宣言を書かなくて済む動的言語で、自由で多様な書き方ができるので人気がある。ただし、動的言語はプログラムを実行させないとバグを発見しにくい。そこでRuby活用の現場ではテスト用のコード(テストケース)をプログラムと一緒に書き、実行時にバグを発見して修正することを繰り返すテスト駆動開発(TDD)の考え方が広がっている。
ところが岡本さんは「僕はRubyは厳しいですね。きっと実行時エラーを出してしまう。でもテストケースを書きたくない」というのだ。
これは言語や手法の批判というより、立場が違うということだろう。ここで筆者にはテスト駆動開発の普及に取り組むあるプログラマーの顔が脳裏に浮かぶ。「……これは話がかみ合わないだろうな……いや、意外と面白い対話になるかもしれないぞ……(取材者の心の声である)」。
岡本さんの考え方は、多数派の開発者の考えとちょっとだけ違うかもしれないが、岡本さんにとってHaskellは“ちょうどいい”言語だったのだ。
Copyright © ITmedia, Inc. All Rights Reserved.