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