BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース OCamlがiOS開発に本格対応

OCamlがiOS開発に本格対応

原文(投稿日:2016/01/28)へのリンク

サンフランシスコを拠点とするプログラマの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を通じて流通するアプリや静的Cライブラリの開発には適していない。また,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からインストール可能だ。

この記事に星をつける

おすすめ度
スタイル

BT