35
Seasar Conference Seasar Conference 2008 Autumn 2008 Autumn 2008 Autumn 2008 Autumn Groovy GroovyででProjectZero ProjectZero 軽量 軽量 J J な世界 な世界 軽量 軽量+Java +Javaな世界 な世界 Javaと軽量言語はどう交わっていくのか? Java読書会:根本和郎 Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved. 1 Seasar Conference Seasar Conference 2008 Autumn 2008 Autumn Java読書会:根本和郎

GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

Seasar ConferenceSeasar Conference2008 Autumn2008 Autumn2008 Autumn2008 Autumn

GroovyGroovyででProjectZeroProjectZero軽量軽量 JJ な世界な世界軽量軽量+Java+Javaな世界な世界

Javaと軽量言語はどう交わっていくのか?

Java読書会:根本和郎

Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.1

Seasar ConferenceSeasar Conference2008 Autumn2008 Autumn

Java読書会:根本和郎

Page 2: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

DisclaimerDisclaimer

所属はIBMですが、個人参加です

記述内容は個人的見解に基づきます記述内容は個人的見解に基づきます

2Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

Page 3: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

はじめにはじめに

Web界で多用されている軽量言語が、エンタープライズ界にどう導入されてエンタ プライズ界にどう導入されていくのかを予想する

考察点考察点

– 過去のコード資産

– Javaの為にある環境の移行コスト

• Webサーバーとの親和性 (WebSphere)Webサ バ との親和性 (WebSphere)• 開発環境 (Eclipse)• 移植性 (Linux Windows iSeries zSeries pSeries )移植性 (Linux, Windows, iSeries zSeries pSeries, )

– データの意味の普遍性の重要性、XMLとの親和性

最終的な性能 の期待値3

Seasar ConferenceSeasar Conference2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

– 最終的な性能への期待値

Page 4: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

AgendaAgenda

ProjectZeroに見る軽量言語の傾向

エンタ プライズ軽量言語の可能性エンタープライズ軽量言語の可能性

Groovy概略y– Optional Typing

JavaVM言語– JavaVM言語

– Web界とEnterprise界の比較

エンタープライズで軽量言語を適応する場合の評価ポイント評価ポイント

4Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

Page 5: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

PC98 PC98 DOS/V DOS/V の時のおさらいの時のおさらい

⾔葉の壁

PC98 PC/ATDOS/V

⽇本 ⽶国他、多数

⾔葉の壁Ruby JavaGroovy

Ruby on Rails Struts, Hibernate, ..

5Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

Page 6: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

技術は文化技術は文化

高い忠誠度、高い移行コスト

Editor : Emacs vi– Editor : Emacs vi– OS : Linux Windows– 開発環境 : IDE Editor– 言語 : Java 軽量言語言語 軽量言語

言語 (日本語の例)日本人のd f lt実装– 日本人のdefault実装

– 千年以上蓄積された本(豊富なLibrary)– 1億人以上のuser– 豊富なコンテンツ (マンガ アニメ ゲーム )

6Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

豊富なコンテンツ (マンガ アニメ ゲ ム …)

Page 7: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

JavaJavaからからRubyRubyへへ ??

Rubyへのロイヤリティー

言語仕様が好き (嗜好)–言語仕様が好き (嗜好)– Matzが好き (感情)– Ruby on Railsを使いたい (アジャイル開発)

JavaへのロイヤリティーJavaへのロイヤリティ

–過去の蓄積したライブラリ (宿命)部門方針 (業)–部門方針 (業)

–仕事だから (宿命)–信頼性を保証するため (仕事)

7Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

Page 8: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

経済は人気でなく、ビジネスインパクトで動く経済は人気でなく、ビジネスインパクトで動く

ヒルズ族では経済は動かない見かけの派手さ ≠ 経済インパクト見かけの派手さ ≠ 経済インパクト

トヨタ、銀行、製造、で社会が動く人気で株価は動かない

– 「渋井真帆の日経新聞読みこなし隊」

8Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

Page 9: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

ProjectZero : ProjectZero : 手のひらサイズ手のひらサイズWebWebサーバーサーバー

JavaSEで動く Webサーバー

小型軽量小型軽量

www.projectzero.orgp j gRESTfulCDCDCDCD (Community driven Commercial Development)

WebとSOAの架け橋能力ebとSO の架け橋能力

アプリケーション記述言語はGroo および PHP ダブル軽量言語Groovy および PHP ダブル軽量言語

9Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

Page 10: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

疑問の出発点疑問の出発点

Groovy + PHP =ダブル軽量言語?は流行 るから–PHPは流行っているから

–Groovyは何故? Rubyじゃないの?Groovyは何故? Rubyじゃないの?

10Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

Page 11: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

言語別注目度言語別注目度 (Google Trends)(Google Trends)

Java 100, PHP 49, Ruby 10PHP x 2 = JavaPHP x 2 = Java

11Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

Page 12: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

CDCDCDCD

C it D i C i l D l tCommunity Driven Commercial Development– ソースを見ることはオープン

– コードの登録は制限あり

• GPL対策?GPL対策?

12Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

Page 13: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

JavaJava+軽量言語+軽量言語

JavaからRuby : 必要前提

過去のJavaコ ド資産の継承がないこと– 過去のJavaコード資産の継承がないこと

– 内製であり、SI契約が伴わないこと

Java+軽量言語 : 可能軽 言語

– Java : 高速処理、ライブラリーの継承、Javaプログラマーの登用ラマ の登用

– 軽量言語 : 作り捨てのユーティリティー、遅くて良いもの 使用期間が短いものもの、使用期間が短いもの、Programming Firstなプロトタイプ開発用

13Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

Page 14: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

言語別分布図言語別分布図

SOAComplex

Java補助言語としてのGroovy

ComplexJava

GroovyGroovyXML

WS-*

JSONJSON,REST

W b E t i

Simple Ruby等の軽量⾔語スタート

14Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

Web Enterpriseタ

アップ企業

Page 15: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

軽量言語軽量言語FrameworkFramework分布予想図分布予想図Spring Hibernateが

SOAComplex

Spring, Hibernateがカバーするエリアに近い

ComplexJava

GroovyGroovy

GR il

Python

GRails

Rubyなど Light weightSOA

PythonPHPPerlRuby on RailsCakePHP

ProjectZero

W b E t iSimple

Ruby… ProjectZero

15Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

Web Enterprise

Page 16: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

GroovyGroovyの特徴の特徴

JVMで動く

J と親和性が高い 普通のメソ ド呼び出しJavaと親和性が高い、普通のメソッド呼び出しで結合可能

Rubyの簡潔さをJava風味で表現

Meta Object Protocol で 全てのアクセスがMeta Object Protocol で、全てのアクセスがラップされ、動的変更可能

Javaにとっての大がかりな糖衣構文(Syntax sugar)糖衣構文(Syntax sugar)

16Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

Page 17: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

GBean GBean によるによる Optional TypingOptional Typing

class TypeSafeTest {static void main(args) {

Foo = 型宣言なし Bar = 型宣言あり

static void main(args) {Foo f = new Foo()

f.age = "taro"Bar b = new Bar()

def宣⾔は、何とでもマッチするBar b = new Bar()

b.age = "hanako"}

}

Int宣⾔したのでcastエラーX}

class Foo {def name def 型だと制約なしdef namedef age

}class Bar{

制約単なるObject型となる

{String nameint age

}

堅く型宣言することもできる

17Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

}

Page 18: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

Groovy : JavaGroovy : Java弁で弁でRubyRuby風味を醸す風味を醸す

「1,2,3,4,5」という数字の配列から、偶数を抜き出して印刷せよ偶数を抜き出して印刷せよ

Unixっぽい

p [1,2,3,4,5].select {|i| i%2==0 }Ruby

Groovyprintln ([1,2,3,4,5].findAll {it%2==0 } )

y

“動詞(find)+目的語(All)” でJavaっぽい

18Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

Page 19: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

Groovy Groovy とと JavaJavaは地続きは地続き

class Hello {Groovy側

実行結果:static void main(args) {World wd = new World()wd greet(“ world! ")

Hello world Groovy!

wd.greet( world! ")}

}}相互呼び出し

Ja a側

WorldはJavaクラス

public class World {public void greet(String arg) {

Java側

WorldはJavaクラスpublic void greet(String arg) {System.out.println(“Hello “ + arg);}

19Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

}}

Page 20: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

JavaJavaからからGroovyGroovyは地続きは地続き

HelloWorld.javagroovy

public class HelloWorld {p blic static oid main(String[]public static void main(String[] args) {

i tl ("H llS t ti tl "H ll W ld"println("Hello World");

System.out.println "Hello World"

}}}

※ のペ ジはア メ シ ンを含みます20

Seasar ConferenceSeasar Conference2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

※このページはアニメーションを含みます

Page 21: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

GroovyGroovyの仕組みの仕組み((簡易説明版簡易説明版))

JJ 糖衣構文糖衣構文 GGJava + Java + 糖衣構文糖衣構文 = Groovy= GroovySyntax Sugar

Javaコード Groovyコード (1)簡潔な言語仕様

Groovy.jar(2)コンパイラ

Javacでコンパイル

groovycでコンパイル

bytecode

y j

(3)ライブラリー

ン イル ン イル

bytecode

実行環境は共通

21Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

Page 22: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

つまりつまりGroovyGroovyはは

Javaのプリコンパイラ

J 風味軽量言語Java風味軽量言語

Optional Typingp yp g

22Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

Page 23: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

Ruby on RailsRuby on Railsの情報格納場所の情報格納場所 : Migrate: Migrate

Migrate String: name

employee

Mi

MigrateInt: id

class MyDatabase < ActiveRecord::Migrationdef self up

Migrate

def self.upcreate_table(:employee) do |t|

t.column(:name, :string, :limit => 100, :null => false )t.column(:name, :string, :limit 100, :null false )t.column(:id, :integer, :null -> false)

enddef self.down

drop_table :employeeend

23Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

end

Page 24: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

データの意味情報格納空間データの意味情報格納空間

厳格かつ煩雑厳格かつ煩雑XML ネームスペース付き

Migrate とし のスキ 情報

スキーマ情報

Migrate DBとしてのスキーマ情報

簡潔かつ不正確 RubyGroovy

Duck Typing

Optional Typing

Ruby on Rails ProjectZero

簡潔かつ不正確 yDuck Typing

24Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

y j

Page 25: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

型定義の段階型定義の段階

方式 記述 表現

XML <?xml version="1 0"?> 完全にユニークXMLSchema

<?xml version= 1.0 ?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

完全にユ ク

エンタープライス間に使用可能

<xsd:element name="greeting" type="xsd:string"/></xsd:schema>

Migrate t column(:name :string :null => false ) 同一開発Migrate t.column(:name, :string, :null => false ) 同 開発チーム内

Groovy String greet = “Hello”または

同一Serialized Object間--- または ---

def greet=“Hello”Object間

Ruby greet = “Hello” Duck Typing式推

g型推測

25Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

Page 26: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

普及度普及度

SeasarConの会場でRubyの普及度を測ってはいけないいけない

– × 渋谷の街頭調査(既に母集団が偏っている)( )

– ○ 無作為な番号に電話を掛けての聞き取り○ 無作為な番号に電話を掛けての聞き取り

26Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

Page 27: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

本当の普及度本当の普及度 : Silent Majority: Silent Majority

JavaからRubyなんて簡単と思っている人簡単と思っている人

Silent majority

SeasarCon

RubyKaigiRubyKaigi

27Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

Page 28: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

言語仕様策定プロセス言語仕様策定プロセス

Java : JCPJava Community ProcessJava Community Process

Groovy : JSR241 “The Groovy Programming Language”

個人ではなく、みんなで決めていること

言語はみんなのものであるべき言語はみんなのものである き

28Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

Page 29: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

信頼性信頼性

信頼性 ≠ 99.99%信頼性 「挙動が定義通り」信頼性 = 「挙動が定義通り」

例 : 嘘つき村の住人は高信頼性

assert(!言っていること == true)

定義(スペック)重要定義(ス ック)重要「バグではなく仕様です」動きが定義されているから言える動きが定義されているから言える。

Groovy = JSR241

29Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

Page 30: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

最終的な性能への期待値最終的な性能への期待値

不採用 : 軽量だから速い

採用 重いがフルスペ ク採用 : 重いがフルスペック全機能が実現可能

– ○ : 重くて遅い

– × : ~ができない× : ができない

– Eclipse = あらゆる開発のPlatformEclipse あらゆる開発のPlatform– Dojo Toolkit = 万能AJAXフレームワーク

30Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

Page 31: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

最終的な性能への期待値最終的な性能への期待値 : Groovy: Groovyの場合の場合

JavaVMで動く

全OSで動作可能– 全OSで動作可能

– Javaの環境が使用可能

• 64bit、マルチコア、・・・

二段階動作

gooovy で直接スクリプト起動– gooovy で直接スクリプト起動

• サクサク開発

バイト ド生成– groovyc でバイトコード生成

• classやjarにして、しっかり動作

31Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

Page 32: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

開発スタイル開発スタイル

軽量言語

ジャズ セッション– ジャズ・セッション

– 高い個人の自由度

– Ad-hocな開発に向く

Javaオ ケストラ– オーケストラ

– 大規模開発の為の強い制約

– 長期的保守を最初から想定

32Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

Page 33: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

ITIT予算の行き先予算の行き先

実は・・・開発生産性 < 保守容易性開発生産性 < 保守容易性

型制約があるコード (Java)–手がかりが多く、読みやすい手がかりが多く、読みやすい

–コードに意外性がない

制約に基づく開発が可能–制約に基づく開発が可能

Duck typing –手がかりが少ない

33Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

Page 34: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

ビジネス基盤としてビジネス基盤として

Eclipseみんなのビジネス基盤– みんなのビジネス基盤

– イケてるPlug-in を作ってビジネス可能

RubyRuby – GPL

R b ドに触れるもの全てGPLになる– Rubyコードに触れるもの全てGPLになる

Ruby != Eclipse

34Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.

Page 35: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて

まとめまとめ : : エンタープライズ軽量言語としての評価点エンタープライズ軽量言語としての評価点

普及度

言語仕様策定プロセス言語仕様策定プロセス

信頼性

最終的な性能への期待値

ライセンス形態ライセンス形態

真の開発生産性真の開発生産性

学習コスト

35Seasar ConferenceSeasar Conference

2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.