BT

Your opinion matters! あなたのご意見でInfoQが変わる!

OCamlがiOS開発に本格対応

| 作者: Sergio De Simone フォローする 5 人のフォロワー , 翻訳者 吉田 英人 フォローする 0 人のフォロワー 投稿日 2016年3月9日. 推定読書時間: 4 分 |

A note to our readers: As per your request we have developed a set of features that allow you to reduce the noise, while not losing sight of anything that is important. Get email and web notifications by choosing the topics you are interested in.

原文(投稿日: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でリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT