Named Log

とあるエンジニアの歩み

Ceylonを触ってみる

はじめに

この記事はプログラミング言語『Ceylon』についてです。
聞いたことない方はこちらをご覧になってください。
検索してみて思ったのは、日本語ドキュメントが少ないなってことでした。
そこらへんのきっかけみたいなのも含めて記事を書いていきたいと思います。

きっかけ的な

この記事を書こうと思ったきっかけは、日本語ドキュメントの少なさや記事の古さにあります。
別に英語のドキュメントでも読めますが、やはり日本語で書いてあったほうが見返したときもわかりやすいな〜と。
他にも [Ceylon 入門]とか、[Ceylon コンパイル 実行]とかで検索しても目当てのものが出てこなかったり古かったりしたんです。
まぁ少なかったり古かったりするなら自分で書こう、と思ってHello Worldまでなんとかできるようにして記事を書くに至っています。

Ceylonという言語を知ったのは今日の昼です。
僕「(マルチパラダイムってよく聞くけど知らないな... 聞かれて知らなくて恥ずかしいのもなんだし調べとこう)」
Wiki「複数のプログラミングパラダイムをうんたらかんたら」
僕「(プログラミングパラダイムって略)」
Wikiオブジェクト指向型とか関数型とかうんたらかんたら」
僕「(オブジェクト指向言語って他に何があるんだ)」
WikiJava-1995年、C#-2000年、Ceylon-2011年......」
僕「(Ceylonってなんだ)」
WikiJavaの良いところ悪いところを意識して作られたRedHat社製の言語だで」
僕「やるしかない」

って感じで知りました。出会いはいつも突然ですね。
きっかけはここら辺にして環境導入へ行きますね。

環境導入

僕はMacBook Air(13-inch, Mid 2013)でOS X El Capitan v10.11.4です。
Homebrew導入が前提ですよ。Homebrew導入自体のドキュメントは腐るほどありますしコマンド一発なのでここには載せません。
Homebrewが入っていれば導入はいたってシンプルです。

$brew update
$brew install ceylon

Homebrew自体のインストール場所は特にいじってません。
Homebrewのインストール場所は変えるべき、と言っているサイトもありますがそこらへんはノータッチ。
Ceylonは公式でIDEを持っていますがEclipseプラグインという形で配布されています。
僕はIDEでの開発はあまりしない上にEclipseはあまり好きではありません。ここではコマンドライン上での話をしますよ。

さてたったの2コマンドだけで導入が完了しましたが、こっからが問題です。
きっかけにあった通り、ネットにあるドキュメントは結構古いです。その上、割と新参言語故の言語仕様の変わり方の速さが目立ちます(?)。
つまり、そのドキュメントのサンプルコードやコマンドを打っても動作しないってことが起きるんです。
ということでバージョン確認!

$ceylon --version

はいシンプル。この記事を執筆した当時は

ceylon version 1.2.2 13ebb05 (Charming But Irrational)

と出ましたよ。v1.2.2のbuild-13ebb05といったところでしょうかね。

では次にHello Worldプログラムの作成、コンパイル、実行に行きましょう。

書いてみよう

まだ完全には理解していませんが、とりあえず成功例として書いておきます。
まずはじめに言っておくと、この言語はディレクトリ単体ではおそらく動きません。
プロジェクトフォルダを作り、それなりに適切な位置にソースコードを置いてコンパイルをする必要があるようです。

ディレクトリ階層の表現の仕方をどうすればいいかわからないので適当に書きますがこんな感じです。

Hoge/Ceylon/ProjectFolder/source/source.ceylon

というようにソースコードをおきます。
source.ceylonの中身はこんな感じ。

shared void run(){
	print("Hello, World");
}

カレントディレクトリはProjectFolderとします。
ちなみにsharedはJavaでいうpublicみたいなもんです。
コンパイル

$ceylon compile --source=./source source/source.ceylon

で行います。コンパイルが完了すると

Note: Created module default

というメッセージが出ました。
意味はまんまです。『defaultって名前のモジュール作ったよ』
ではここで

$ls

しましょう。すると

modules source

と出ます。新しくmodulesというフォルダが生成されました。

$ls modules/

とすると

default

と出ます。これがモジュールってやつみたいですね。
では実行してみましょう。
実行は

$ceylon run default

です。少しすると

Hello, World

と出ました。成功です。
いろいろ試行錯誤しててわかったことは、

  • $ceylon runコマンドを使って実行するにはrun()の宣言が不可欠
  • run()はsharedでなければならない
  • ちょっと変なコマンドを打ってみるとJavaの例外が出てくる

ってことぐらいですかね。まだまだ勉強が必要そうです。

まとめ

Hoge/ProjectFolder/source/source.ceylon
$ceylon compile source=./source source.ceylon
  • 成功メッセージは
Note: Created module default
  • 実行は
$ceylon run default

って感じですかね。

おわりに

いかがですか、この記事2016年ですよ。Ceylon2011年生まれですよ。
この記事が少しでも多くの人の役に立てたらうれしいです。
引き続きCeylonに関しては勉強を続けて、何かあったらまた記事にします。
そろそろ全国高専プロコン募集要項配布なので忙しくなりそうです。そっちも頑張りたいと思います。

ではまた。