Rubyが社会に浸透したいまだからこそDSLについてもう一度考えてみた
フィンランドNokiaのQt Development Framework部門によって、ドイツ・ミュンヘンで開催された「Qt Developer Days 2009」。Trolltech時代からのユーザーに混じって、会場ではQtを使い始めたばかりという開発者も多数見られた。UIへのフォーカスやクロスプラットフォーム開発へのニーズが高まっているようだ。 Matthias Ettrich氏 会期中、参加者の関心を集めたのが、最新のUI記述言語「QML(Qt Markup Language)」だ(QMLは開発コード名)。KDEの設立者としても知られるMatthias Ettrich氏(Nokia Qt Development Frameworksの研究開発部門)が初日の基調講演で、「開発者とデザイナーのギャップを埋める」として披露した拡張機能だ。 15年前と比べると、PCをはじめとしたグラフィック
http://www.jetbrains.net/confluence/display/GRVY/Scripting+IDE+for+DSL+awareness IntelliJ, SUGEEEEEEEEEE!!!!! 何がスゴいかって言うと,GroovyDSLと呼ばれるスクリプトをIntelliJに読み込ませることで,特定のDSLやダイナミックなメソッドやプロパティを,IntelliJに把握させることができるんだって。つまり,コード補完やら型推論なんかができるようになるってこと。あ,そうそう。こっちも参照してね。 → Use GroovyDSL in IntelliJ IDEA Community Edition - Messages from mrhaki 冒頭のリンク先にあった例を取ると。下記のようなDayCounter.groovyってスクリプトがあるとする。 Integer.me
今回は内部DSLの詳細、またその実践としてRubyを例にした実装について解説します。 内部DSLに適した言語 - Ruby 2005年12月にRuby on Railsの正式版のリリース以降、そのフレームワークのみならず、プログラミング言語Rubyを支持、採用するプログラマーが増えてきました。 そのことを端的に表しているのが、達人クラスのプログラマー、そしてアーキテクトの存在です。一人は『達人プログラマー[1]』『プログラミングRuby[2]』などの著書で知られているDave Thomas氏です。もう一人は『エンタープライズ アプリケーションアーキテクチャパターン[3]』などで著名なアーキテクト Martin Fowler氏です。Fowler氏が属している会社 - ThoughtWorks社[4]の多くのプロジェクトは、Rubyで開発していると聞いてます。 なぜ、彼等は、Ruby
Step1:ベタなコードで書いてみる まずはDSLなどを使わずにべたにコードを書くとリスト1のようになります。 まず①で固定長電文のファイルを読み込み、バイト配列に変換しています。バイト配列はそのままでは「配列の一部を取り出す操作」などが面倒です。ですので、②③で「ByteArray」という自作ユーティリティクラスを使用して、バイト配列を扱いやすくラップしています。 parseメソッドはデータの読み込み処理です。データがなくなるまで読み込み処理を繰り返します。④でそれぞれのデータ項目のサイズだけ順番にデータを読み込んでいます。同時にDate型への変換(toDate)や両端文字列の除去(trim)、Integer型への変換(toInteger)を行っています。⑤で1件分のデータを標準出力へ出力しています。実際に実行してみると図2の出力が得られます。 リスト1 Step1:ベタなコード p
良いコ-ドへの道―普通のプログラマのためのステップアップガイド 第5回メタプログラミング―Excelを使ったDSLを作ろう―その1 メタプログラミングとは? おっす、おらメタプログラマ! 前回まで「良いコードとは?」という観点から、「名前付け」「スコープ」「処理の分割」といったプログラミングで必須の基礎内容を解説してきました。今回は少し趣向を変えてメタプログラミングを取り上げます。メタプログラミングは「プログラミングをプログラムする」と言われますが、なんだかつかみどころがない概念に感じませんか? 実際、「メタプログラミングとは何ですか?」と聞くと、人によって回答がまちまちです。そんなメタプログラミングですが、使いこなすとたいへん強力です。それでは、メタプログラミングについて考えを深めていきましょう。 メタプログラミングの悩み まずは毎回好例、各界の代表者にメタプログラミングについて
class CruiseShip property :direction property :speed end このコードを構文解析してロードしてみた。だが、まだこんなエラーが残っている。NoMethodError: undefined method 'property' for CruiseShip:Class これを解決するには、簡単な事実に気づけばよい。Rubyのクラスを定義した場合、それは単に宣言しているというだけではなく、クラスがロードされる時に実際に実行しているということなのだ。以下の行がロードされた時に、 property :direction "property"という関数を探して、":direction"というパラメータとともに呼び出している。この時、"property"メソッドを使えるようにするには、どうすればよいだろうか?そこで、こうしてみよう。 def prope
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く