Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

『プログラミングの基礎』を読み進めるためにMacBookにOCaml用の環境を整備した

More than 3 years have passed since last update.

未経験のエンジニアとしてRubyやらJavaScriptに触れ合いつつのらりくらりやってきましたが、2年目になったことですし、
プログラミングの基礎』という書籍を用いて基礎から勉強し直そうと思いました。

そこで、OCamlという見慣れない言語を使うことになるのですが、そのための環境を整えた話です。
プログラミングの基礎』を読み進める上では以下に紹介する環境で十分かと思います。

マシン環境

MacBook Pro (Retina, 13-inch, Early 2015)
macOS Sierra (Version 10.12.4)
Homebrewはインストール済みという前提です。

OCamlのインストール

OCaml自体のインストールは単純で、以下のbrewコマンドで完了します。

$ brew install ocaml

以下のように、ocamlコマンドでインタプリタが立ち上がればOCamlのインストールは完了です。

OCamlインストール確認
$ ocaml
    OCaml version 4.04.0

#

※ちなみに、Ctrl+Dでインタプリタが終了します。

困った点とその対策

カーソルキーが使えない!

デフォルト状態のインタプリタでは、カーソルキーが使用できません。
カーソルの位置を調整してtypoの修正ができなかったり、「↑」キーで直前のコマンドを再入力できなかったりで
とても不便です...

この問題は、rlwrapというツールを導入すれば解決します。
こちらもbrewコマンド一発でインストールできます。
$ brew install rlwrap

rlwrap ocamlというコマンドでOCamlインタプリタを起動すれば、カーソルキーが使用できるようになります。

毎回rlwrap ocamlと入力するのはダルいので、以下のようにaliasを設定しました。

alias ocaml='rlwrap ocaml'

日本語が表示できない!

OCamlのデフォルトの文字コードがEUC-JPであり、『プログラミングの基礎』でもEUC-JPで進めることになっています。
しかし、EUC-JPのまま進めるにはターミナルの文字コード設定の変更が必要だったりで面倒くさいので、
OCamlの文字コードをUTF-8に変更しました。

ホームディレクトリに以下の内容の.ocamlinitというファイルを追加すればOCamlの文字コードがUTF-8になります。

~/.ocamlinit
let printer ppf = Format.fprintf ppf "\"%s\"";;
#install_printer printer;;

禁じ手

OCamlの環境構築方法を調べると、opamというツールが各所でオススメされているのですが、
opam initするとMacが落ちるという現象に遭遇しました。

複数回試してみても、OSがYosemiteの別端末で試してみても致死率100%を誇り、
また、opamを使わなければならないほどリッチな環境にする必要もないので、opamの導入は諦めました。

f-scratch
ビッグデータ×人工知能を主軸に事業を展開するデータテクノロジーカンパニーです。現在は、マーケティングテクノロジー領域の次世代型マーケティングプラットフォーム「B→Dash」の開発・提供を中心に事業を展開しています。
https://f-scratch.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away