サンフランシスコを拠点とするプログラマのEdgar Aroutiounian氏が先日，Jeffrey A. Scofield氏が先頃公開したiOS用のOCamlクロスコンパイラであるOCamliOSのパッケージを開発した。InfoQはAroutiounian氏に話を聞いた。

OCamlコンパイラのパッチを長年メンテナンスしているScofield氏の説明によると，先日Gerd Stolpmann氏の協力のおかげで，それを公式のOCaml GitHubリポジトリのブランチ内に反映する方法が見つかったのだという。どこかの時点で，このブランチを公式OCamlリリースにマージする必要がある，と氏は述べている。

Scofield氏とStolpmann氏の開発成果であるOCamliOSを，Aroutiounian氏がOPAMパッケージにまとめあげて，OCaml開発者が簡単にインストールできるようにした。氏はさらに，OCamlコードをiOSのObjective-Cアプリに統合する方法を示す簡単なサンプルも提供している。以下のOCamlスニペットは，Objective-Cから呼び出されるコールバックを登録するものだ。

let make_string () = print_endline "Hello Word from OCaml"; "Hello World " let () = Callback.register "make_string" make_string

#define CAML_NAME_SPACE #import <Foundation/Foundation.h> #include <caml/callback.h> #include <caml/mlvalues.h> int main (int argc, char **argv) { caml_startup(argv); caml_callback(*caml_named_value("make_string"), Val_unit); NSLog(@"Now using objective-c code"); return 0; }

OCamlコードをスタンドアロンのiOS用実行ファイルにコンパイルすることは可能だが，App Storeを通じて流通するアプリや静的Ｃライブラリの開発には適していない。また，OCamlから利用可能なパッケージは，現時点では標準ライブラリに限られている。それ以外のパッケージサポートは，今後追加される予定だ。

InfoQはAroutiounian氏から， opam-ios とOCaml for iOSの詳しい使用方法を聞くことにした。

opam-iosは，実際には何を提供するのでしょう？

プログラマの利便性です。OPAMはOCaml用の高度なパッケージマネージャですから，これを使ってiOS OCamlコンパイラを，OCamlの世界で第一級市民にしたいと思ったのです。

iOSアプリ開発にopam-iosを使用することによって，どのようなメリットがあるのでしょう？opam-iosを通してOCamlを使用したiOSアプリとは，どのようなものになるのですか？

メリットは，OCamlが設計の開始時点から考えられた，真の関数型プログラミング言語であることです。非常にフレキシブルですし，GUIなどで必要ならば，C言語によるObjective-C呼び出しを使って既存コードを再利用することもできます。私が想定しているのは，ビジネスロジックをOCamlで記述して，Objective-CはGUI表示に使用するような方法です。ただしOCamlはオブジェクト指向プログラミングもサポートしているので，Objective-CオブジェクトをOCamlオブジェクトとしてラップするようなことも可能です。

OCamlのiOSサポートは完成の域に達していると考えてよいのでしょうか？今後どのような機能追加を考えていますか？

iOS用のコンパイラにパッチを書くのは，さほど難しくはありませんでした。基本的な状況としては，Appleが使用しているARMアセンブラは，基本的には古いバージョンからのフォークなので，Linuxのアセンブラの出力とは多少違う部分があります。ですから本当のヒーローは，それをセットアップしてパッチを当てたコンパイラで実行し，再現することに成功したGerd StolpmannとPsellos.comの連中なのです。今現在のこれはパッチ適用バージョンのコンパイラですが，近いうちに正式にコンパイラの一部となる予定です。 そのようなことなので，今後の追加予定としては，バージョン毎にパッケージを充実させていきたいと思っています。例えば，現在用意されているのはiOS SDK 8.3までですが，コンパイラを追加することでSDK 9.2あたりまでは対応できるようになります。PsellosのJeffが素晴らしい仕事をしてくれていて，つい先頃のリリースでは，最新で最高のOCaml 4.02.3とiOS SDK 9.2に対応しました。ほぼ最新バージョンといっていいでしょう。

OCamliOSはOS X 10.11で動作し，iOS 7.0以降を対象とするコードを生成する。 opam-iosは，OCamlのパッケージマネージャであるopamからインストール可能だ。