SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

7分でわかるCurl言語の特徴(AD)

7分でわかるCurl言語の特徴

Curlを言語的特徴から俯瞰する

  • このエントリーをはてなブックマークに追加

8 DSLとしてのCurl

 DSLは「ドメイン固有言語」の略で、特定の用途のために使われる言語です。GUIの画面構成や設定の記述など、専用の言語や構文を作ることが多かったのですが、「まるでその構成を記述するための言語であるかのように使える」というのを「ある言語をDSLとして使う」と言います。

 先ほど、ボタンを配置するサンプルを実行しました。ボタンを表示する部分を、もう少し複雑にして次のようにしてみましょう。

{VBox halign="center", spacing=3pt,
    {TextField width=5cm},
    {HBox spacing=5pt,
        {CommandButton
            label="こんにちは"
        },
        {CommandButton
            label="こんばんは"
        }
    }
}

 これを実行すると、以下のようにコンポーネントが配置されます。

コンポーネントの配置
コンポーネントの配置

 VBoxはコンポーネントを縦に並べるためのもので、HBoxはコンポーネントを横に並べるためのものだと思ってください。そうすると、幅5cmのTextFieldとHBoxを縦にならべ、そのHBoxの中に「こんにちは」ボタンと「こんばんは」ボタンを横にならべる、という構造になっていることが分かります。これは、Curl言語の標準的な文法を使って実現されていますが、GUIを構築するための言語で記述されているかのように見えます。

 このように、CurlはDSLとして使えるような構文になっています。Javaで記述しようとすれば、おそらく次のような手続きとしてのコードになるでしょう。

VBox v = new VBox();
v.setHalign("center");
v.setSpacing(3);
TextField t = new TextField();
t.setWidth(5);
v.add(t);
HBox h = new HBox();
h.setSpacing(5);
h.add(new CommandButton("こんにちは");
h.add(new CommandButton("こんばんは");
v.add(h);

 もちろんJavaでも、次のように書けるようライブラリを設計することで、DSLに近づけることはできますが、やはり少し無理があります。

new VBox(
    new TextField().
        setWidth(5),
    new HBox(
        new CommandButton().
            setLabel("こんにちは"),
        new CommandButton().
            setLabel("こんばんは")
    ).setSpacing(5)
).setHalign("center")
 .setSpacing(3);

 細かいところで、値を指定するときに「cm」や「pt」などの単位を指定できるのも、Curlの面白いところです。さらにCurlでは、ビジュアルデザイナを使って画面をデザインすることが可能です。

ビジュアルデザイナ
ビジュアルデザイナ

次のページ
9 オブジェクト指向言語としてのCurl

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
この記事の著者

きしだ なおき(キシダ ナオキ)

フリーのプログラマ。Javaでの業務アプリケーションからC++での小型端末などさまざまなプログラムを開発。また、入門者向けのJavaセミナーなども行う。そのセミナーで鍛えられたテキストが、著書である「創るJava」。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4682 2009/12/17 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング