OCaml 5.0.0とは
OCaml 5.0.0はプログラミング言語OCamlの次期バージョンのことであり、フランス国立情報学自動制御研究所がアルファ版を2022年6月15日に公開したことで話題となりました。
プログラミング言語はバージョンアップされる際、いくつか機能が追加されたり、セキュリティ上の問題を解消したりしますが、今回のバージョンアップは通常よりも実験的なリリースとなっており、大きく機能が見直されたと推測されます。
たとえば、OCamlランタイムが完全に書き直されており、次のリリース時からバイトコードデバッガが利用可能になります。
OCamlは今話題になっているプログラミング言語の1つであり、特に研究所などで多く活用されています。OCaml 5.0.0の誕生が業界にどのような影響をもたらすか注目されています。
【参考】:Welcome to a World of OCaml
OCamlとは?
そもそもOCamlとは、どのようなプログラミング言語なのかについて解説します。他の言語とOCamlの違いや、なぜOCamlが評価されているのかについても説明します。
OCamlはオブジェクト指向を取り入れた関数型言語
OCamlとは、ML言語にオブジェクト指向を取り入れて開発されたプログラミング言語です。OCamlは元々Objective Camlという名前であり、OCamlのOはオブジェクト指向を意味します。
OCamlはオブジェクト指向型でありながら、関数型言語でもあります。両方の特性を揃えており、より簡潔かつ信頼性の高いソースコードを記述できると言われています。
OCamlは一般企業では現状あまり使われていませんが、大学の研究室などで多用されています。今後優秀さが認められていけば一般企業での活用も進むと推測されます。
関数型とは?
関数型とは、関数を組み合わせることでシステムやアプリを作る方法のことです。
関数とは、与えられたデータに対して処理を行って結果を返却するプログラムのことです。たとえば、足し算を行うプログラムに「1」と「2」と入力すれば「3」という結果が返却されます。関数は同じ値を与えた場合、必ず同じ結果が返ってくるのが特徴です。
関数をまったく使わずにソースコードを記述することも可能です。しかし、ある程度の処理のまとまりは関数にした方が、ソースコードの可読性を高めることができます。また、関数としてまとめておけば、他のシステムでもその関数だけをコピーして使うことが可能です。
また、関数型のメリットはソースコードがシンプルになりやすいことです。システムがどの関数をどの順番で使っているかさえ理解すれば、関数の中で何をしているかは分からなくても、大雑把にシステムの処理内容を理解することができます。システム改修を行う際も、どの関数を修正すべきなのか分かりやすいです。
オブジェクト指向とは?
オブジェクト指向とは、関連性のあるデータ・手続きを「オブジェクト」という単位にまとめ、オブジェクトの組み合わせによってシステムを構築する手法のことです。
具体的には、まずクラスと呼ばれるものを作成します。クラスでは、開発するプログラムの基本機能を定義しておきます。
たとえば、車の動作を再現するプログラムを作る場合、「アクセルを踏むと走る」「ブレーキを踏むと止まる」など、どの車にも共通する性能をクラス上に定義します。こうすることで、実際の車を作る際にクラスを用いて簡単に基本機能を構築でき、後は車それぞれの機能を付加させるだけで良くなります。このように、クラスを作ることで開発効率を上げられるメリットがあります。
また、オブジェクト指向を使うことで、プログラミング作業を分担しやすくなります。たとえば下請け企業に開発を依頼する場合も、クラスは自社で開発しそれ以外を任せる、といったことが可能です。作業の分担がしやすいことから、オブジェクト指向は特に大規模開発に使われます。
オブジェクト指向で書くことができる言語は、Java・Ruby・Pythonなどがあります。また、後付けでオブジェクト指向で書ける機能を追加した言語も多くあります。それだけオブジェクト指向が実務で有用ということであり、だからこそOCamlもオブジェクト指向に対応しています。
OCamlの使い方
OCamlはオープンソースであり、誰でも無料でインストールして使うことが可能です。OCamlの基本的な使い方について簡単に解説します。
OCamlのインストール方法
まず、OCamlの公式サイトからインストーラーをダウンロードします。ダウンロードしたファイルを右クリックして「管理者として実行」をクリックすると、インストーラーが起動します。後はインストーラーの指示に従って処理を行えばインストールが始まります。インストールには少し時間がかかることもあります。
【参考】:OCaml Download
OCamlの基本的な書き方
OCamlの基本的なソースコードの書き方を解説します。ここでは「Hello World!」と、コマンドプロンプト上に表示されるプログラムをみていきます。
print_endline "Hello World!"
上記のプログラムを「test.ml」で保存し、コマンドプロンプトで「ocaml test.ml」と実行すると「Hello World!」と表示されます。OCamlでは「print_endline」を使うことで文字列と改行を出力することが可能です。また、文字列を「(**)」で囲うことでソースコードにコメントを残すこともできます。
OCamlのメリット
OCamlのメリットについて解説していきます。メリットを知ることで、OCamlがなぜ業界内で評価されているのかが分かります。
処理速度が速い
OCamlは処理速度が速いのがメリットです。通常関数型は変数の型情報を保持しないといけない関係で、実行時オーバーヘッドが発生し処理速度が遅くなってしまいます。しかしOCamlは実行時ではなくコンパイル時に型の整合性をチェックするため、型情報を実行時に保持する必要がなく、オーバーヘッドが発生しなくなっています。
C言語やアセンブラなどの処理速度に特化した言語よりは遅いですが、それでもOCamlは関数型のなかではかなり速度が速いです。
型推論機能が優秀
OCamlには型推論機能というものがあります。型推論とは静的型付け言語に備わっている機能であり、変数の型を明示しなくても、コンピュータが周辺情報や文脈から型を推論してくれます。
型を明示しなくても良い分、ソースコードが短縮化されるメリットがあります。また、型宣言しなくて良いとプログラマーが他の箇所の作成に集中でき、業務効率化にもつながるでしょう。
なお、型推論機能は動的型付け言語の機能とはまた別です。動的型付け言語は、実行時に型を推論します。そのため、実行する度に変数の型が変化する可能性もあり、不具合が発生するリスクがあります。一方静的型付け言語の型推論は、実行時ではなくコンパイル時に型を決定します。そのため実行時に型が変化することはなく、信頼性が高いと言えます。
汎用性が高い
OCamlは汎用性が高く、Webアプリやソフトウェア開発に活用することが可能です。また、処理速度が速いことから人工知能や機械学習方面での活躍も期待されるでしょう。
コードの記述量が少ない
OCamlはコードの記述量が全体的に少ないのもメリットです。記述量が少なければ当然早く開発でき、短い納期にも対応しやすくなります。昨今のプログラミング言語は記述量が少ない傾向がありますが、OCamlもその流れを汲んでいると言えるでしょう。
OCamlのデメリット
続いて、OCamlのデメリットについて解説します。OCamlは個性が強い言語であり、状況によっては他のプログラミング言語を用いた方が良い場合も多くあります。
現状では求人数が少ない
現状ではOCamlの求人はそれほど多いわけではありません。そのためOCamlをマスターしても転職に結びつく可能性が高いわけではありません。とはいえ、今後OCamlの優秀さが広まればOCamlの求人も増えていくと推測されます。
ドキュメントが少ない
OCamlは日本語のドキュメントが少ないのが現状です。そのため、OCamlの文法を勉強する際や、他のプログラミング言語と比較すると、開発時に不明な点を調べる際には苦労することもあるでしょう。
ライブラリが不足している
OCamlはライブラリが現状不足している傾向があります。JavaやPythonのようにライブラリが多いわけではなく、開発効率を下げる要因になる可能性があります。とはいえ、最近はOCamlもライブラリを増やしつつあるので、今後に期待が高まります。
OCamlの将来性について
OCamlはTIOBEが算出したプログラミング言語検索ランキングによると、51位から100位の間にランクインしています。現状OCamlは知名度が高いとは言えませんし、OCamlを扱っている企業も多くはありません。
ただ、OCamlはブロックチェーンや仮想通貨関連の開発でも活用できることが期待されている言語です。ブロックチェーンなどは将来性が高い技術分野であり、Pythonをはじめそれらで活用できる言語は将来性が高い傾向があります。
また、OCamlは今後さらにバージョンアップを繰り返し、有用性の高い言語に進化していく可能性もあります。そのため、OCamlの将来性はそれなりにあると言っても良いでしょう。
【参考】:TIOBE Index - TIOBE
OCamlは習得しておいて損のない言語
本記事では、OCaml 5.0.0について解説しました。OCamlのメリット・デメリットや基本的な使い方、将来性などが分かりました。OCamlは関数型でありながらオブジェクト指向型でもあるという特性を持っています。今後一般企業でもOCamlを使う企業が増える可能性もあります。現状OCamlの求人数は少ないですが、将来性を見越して今からOCamlを習得しておくのも良いでしょう。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから