新刊ピックアップ

[そこが知りたい(!?)採用事例]関数プログラミング/関数型言語の注目プロダクトを探ってみよう!

この記事を読むのに必要な時間:およそ 1 分

ここ最近,プログラミング界隈で「関数(型)プログラミング」という用語が盛り上がりを見せています注1⁠。メジャーな命令型言語(C/C++,Java,Perl,PHP,Ruby,JavaScriptなど)で,注目の新機能として関数プログラミングにまつわる各種機能が搭載されています。

一方,関数プログラミング向けに作られている各種関数型言語も,続々と実践投入されています。その分野は「Webサービス」⁠金融」⁠ゲーム」⁠コンパイラ」と多岐にわたります。関数型言語は今,どんなところで採用されているのでしょうか? 以下,本記事では,注目プロダクト/サービスをピックアップしてお届けします。

Twitter

メジャーサービスの一つTwitterは,関数型言語Scalaを主要なインフラやライブラリなど大規模に採用しています。元々TwitterはRuby on Railsベースのシステムでしたが,ベースをJVM(Java Virtual Machine)上へと徐々に移行しました。その上で動作するScalaを使用し,Finagle(RPCフレームワーク⁠⁠,Kestrel(メッセージキュー)をはじめ多数のScalaフレームワークを利用しています。

LinkedIn

LinkedInはビジネス向けに特化したSNS(Social Networking System⁠⁠。世界規模のサービスであり,関数型言語の大規模事例の一つです。大量の検索クエリをさばくため,NorbertというScalaで実装されたフレームワークを利用しています。Norbertとは,クラスタアプリケーションを簡単に構築するためのフレームワークです。

manaba

manabaは,教育機関向けの学習管理システムで,(株)朝日ネットが開発する日本発のサービスです。200余りの教育機関で採用実績があり,学生の方々は学校ですでに導入されているかもしれません。出席管理/アンケート機能が関数型言語のHaskellで開発されています。リアルタイムに回答状況を確認できる等,モダンな作りが特徴のWebアプリです。

SCAWAR

SCAWARは,Android端末向けのシューティングゲームです。Punch Wolf Game Studiosが開発するフィンランド発のプロダクトで,Scalaで書かれています。関数型言語でどんなゲームが作れるのか,気になる方は事例の一つとして遊んでみるのが一番わかりやすいでしょう注2⁠。

大規模事例から注目株まで,広く浸透しつつある関数プログラミング/関数型言語。今後どうなっていくのか,気になる技術トピックの一つではないでしょうか。

注1)
関数プログラミングは,⁠関数」を構成単位にして,その関数を部品としてプログラムを組み立てます。ここで言う関数とは,いわゆる命令型言語で言う関数とは異なり,数学的な意味での「関数」であるのがポイントです。教科書で見るf(x)とかg(x)とか,そちらの方面の関数です。関数プログラミングは,その背景にあるラムダ計算は1930年代に登場しており長い歴史があります。
注2)
本記事執筆時点(2014年12月)で無償でダウンロード可能になっていました。

※初出:『関数プログラミング実践入門』コラムより,一部引用。