いう反応を頂いたので、それにまつわるお話を。いうことを念頭に置いています。ある程度distutils.core.Commandの思想というか、インターフェイスを残しています。いったメソッドなどなどは元のまんまです。抜いて好きにRakeをPythonで真似るとしたら、というのが今回メインのお話。最初にこんな感じでコマンドを定義しますよ、というのを出してしまいます。実行run()Rakeだとこうなる。endendPython版もなかなかシンプルで見やすいと思うんですがどうでしょう。あとちょっとtips。ほうが便利じゃないかな、と思います。タスクのメタ情報は引数のデフォルト値を使います。したほうがいいんじゃないの?と思う人もいるかもしれません。真っ当な意見だと思いますし、それがPythonicなやり方と思います。つけないとメソッドが呼び出せません。引数が何もない場合は空のカッコがつくわけです(まぁDescriptorでhogehogeすればできるんですがね)。これ、イケてないですよね。いうわけで引数のデフォルト値を使います。このタスク定義でタスクを実行するためのコードです。一応ちゃんと動きます。省略できるブロック(pythonではデコレータとwith_statementがありますが)によるものが多いと思っています。ことPythonとの対比では。「シンプルさ」「書きやすさ」なんかは好みかな、と(Rakeの例だとdocstringを持っている分Pythonの方がいい感じさえしてきます)。なんだよ、って言う人にはPythonのほうがウケがいいかもしれませんしそうじゃないかもしれません。そんなこんなで試しに書いてみたらいい感じだったんで、ちゃんと本格的にPython版Rakeとして開発を続けてみようかなあ。ところで言語内DSLといえばScalaでしょう。Rubyなんてちょろいもんですよ。