検索
特集/連載

「PureScript」が「JavaScript」より優れる点、劣る点 開発に役立つのは?HaskellとPureScript【後編】

「PureScript」は「JavaScript」に変換されることを目的としたプログラミング言語だ。強力な型システムや型推論といった、PureScriptが備える特徴と、活躍する場面を紹介する。

Share
Tweet
LINE
Hatena

 数学的な関数を組み合わせたプログラミングである「関数型プログラミング」において、不変データ構造(作成時以降は変更できないデータ構造)は重要な要素だ。関数型プログラミングによる変数の不変性が、ソースコード中のバグを減らすことに有効な場合がある。関数型プログラミング言語「Haskell」「PureScript」の主要な特徴を紹介する本連載のうち、本稿はPureScriptを取り上げる。

PureScriptとは何か? JavaScriptより好まれる点は?

 Haskellと概念的に似ているPureScriptは、シンプルなものから複雑なものまでフロントエンド(エンドユーザーとの接点になるシステムの構成要素)アプリケーションを開発できる。インストールやアプリケーションのビルド(実行可能プログラムへの変換)は、簡単な手順で実行できる。動作を変えないまま内部構造を修正する「リファクタリング」やデバッグ(エラー修正)、テストも実施しやすい。

 PureScriptは、変数や式が扱う値を特定の型に制限する「強い型付け」の性質を持つ、純粋関数型のプログラミング言語だ。純粋関数型とは、関数型プログラミングのうち、プログラム外部の状態を変更する操作(副作用)を許容しないなどの特徴を持つものを指す。PureScriptのソースコードは、スクリプト(簡易プログラム)言語「JavaScript」のスクリプトにコンパイルされ、再利用可能なソースコードを作成できる「型クラス」を提供する。型クラスは、共通のインタフェースを定義し、それに対して一連の操作を提供する仕組みのことだ。

 こうした特徴から、簡単かつ安全にインストールやビルドを実行したい開発者、関数型プログラミングの概念を学びたい開発者がPureScriptを好む傾向にある。PureScriptの型システムはJavaScriptの型システムよりも厳密であるため、より安全かつ再利用性に優れたソースコードを記述する際に有用な場合がある。

 ソースコード共有サービス「GitHub」では、PureScriptのパッケージ(拡張機能)とメタデータのリポジトリである「PureScript Registry」が公開されている。PureScript Registryはパッケージの登録、更新、転送、公開解除を実行するAPI(アプリケーションプログラミングインタフェース)も提供している。

 特にPureScriptが向いているのは、シングルページのWebアプリケーションのフロントエンド(エンドユーザーとの接点になるシステムの構成要素)開発だ。ただしバックエンド(システムの構成要素のうちエンドユーザーの目に見えない部分)開発においては、特定の開発作業に適したライブラリが欠けている場合があり、手作業が増える可能性がある。

 PureScriptにはデータを扱うためのレコード型があり、レコードの作成や更新、アクセス専用の構文を備える。PureScriptのレコードには多相性(ポリモーフィズム:同じ操作を複数の異なる型に適用できる能力)があり、開発者はレコード取得/アクセスのための関数を記述可能だ。PureScriptのコンパイラは型を推測し、ソースコードにエラーが生じるのを防ぐ。

 多相性や型推論などの特徴を備えたPureScriptの型システムは、冗長なソースコードや抽象化機能の欠如など、関数型プログラミングの複雑さを軽減する。表現力のある型と型推論により、型注釈(型情報を明示的に指定する操作)の機会も削減可能だ。一方で実行速度についてはJavaScriptの方が優れている場合もある。そのため、PureScriptで関数型プログラミングの恩恵を受けつつ、JavaScriptで速度を重視するといったバランスを取ることは有用だ。

 「Pursuit」は、PureScriptのAPIドキュメントを公開しているWebページだ。開発者はPursuitでPureScriptライブラリの機能を調べ、さまざまなアプリケーション開発に活用できる。ただしHaskellからPureScriptにライブラリを移植すると、型の不一致、データや変数に関連するパフォーマンス低下が発生する可能性があることに注意しなければならない。


 Haskellは型に焦点を置いた言語であるため、Haskellを学ぶことは、洗練された複雑なソースコードを書くスキルを育てる。PureScriptは再利用可能なソースコードやレコード、多相性に対するアプローチが分かりやすいため、フロントエンド開発で効力を発揮する。

TechTarget発 エンジニア虎の巻

米国TechTargetの豊富な記事の中から、開発のノウハウや技術知識など、ITエンジニアの問題解決に役立つ情報を厳選してお届けします。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る