2014年7月10日

イマ旬キーワード

型推論

最近のモダンなプログラミング言語は、型推論という機能を備えています。プログラムの保守性や生産性が向上するこの機能についてご紹介します。

技術開発本部 岡田 譲二

プログラミングにおける型

Javaを始めとして多くのプログラミング言語は、変数や関数の引数にint(整数)やchar(文字)などの「型」を指定します。このようなプログラミング言語を「静的型付け言語」と言います。このように型を指定したプログラミングを行うと、エラーを早期(具体的にはコンパイル時)にチェックできるといったメリットがあります。例えば、int(整数)を10倍にするという関数の引数にchar(文字)型のデータを渡すとコンパイルエラーになる、といった具合です。しかし、全ての変数や関数に一つ一つ型を指定するという大変面倒な作業をしなければいけないデメリットもあります。

一方で、JavaScriptやRubyなど型を指定しなくても良いプログラミング言語もあります。こちらの言語は「動的型付け言語」と言います。動的型付け言語はプログラムを短く簡潔に書くことができる反面、静的型付け言語で可能なチェックが実行時にならないとできないデメリットがあります。

このように、静的型付け言語と動的型付け言語は一長一短です。しかし「型推論」という機能を用いると、両者のいいとこ取りをすることができます。

モダンな言語に浸透する「型推論」

型推論は、必要最小限の型を指定すれば、そこから「推論」できる型は自動的に指定してくれるという機能です(図)。この機能を用いれば、全ての変数や関数に型を指定しなくてもよく、エラーを早期にチェックできるというメリットも享受することができます。この型推論は、今年の3月にリリースされたJava8参考1や、6月に発表されたSwift参考2など、最近発表される静的型付け言語の多くが備えています。また、近年注目を浴びている関数型言語参考3のHaskellやScalaなどのプログラミング言語もこの機能を備えています。

今後は、型推論を備えたプログラミング言語が用いられることで、今までよりも少ない手間で静的型付け言語のメリットを享受できるようになると考えられます。NTTデータでも、リエンジニアリングツール参考4の開発で型推論を活用し、多くのデータ型の整合性を取りながら効率化を図っています。

【図版】

図:変数の方を推定する仕組み

著者プロフィール

【写真】

技術開発本部 岡田 譲二

要求工学とプログラム解析に関する研究開発・技術適用に従事。最近は関数型プログラミングや、形式手法に興味がある。

お気軽に
お問い合わせ
ください

モダンなプログラミング言語に浸透する「型推論」に関するお問い合わせ

お問い合わせフォーム