BT

OCamlがiOS開発に本格対応

作者: Sergio De Simone , 翻訳者 吉田 英人 投稿日 2016年3月9日 |

原文(投稿日: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からインストール可能だ。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション
サイト全般について
バグ
広告
記事
Marketing
InfoQ.com and all content copyright © 2006-2016 C4Media Inc. InfoQ.com and 株式会社豆蔵 InfoQ Japan hosted at Contegix, the best ISP we've ever worked with.
プライバシー
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.