groovyの可能性
JVM上のスクリプト言語groovyに興味を持ったので、アイデアをラフなメモ書き。
アイデアを書きかけ。
【参考】
書評:プログラミングGroovy - Digital Romanticism
【1】普通のUnixサーバーならば、Javaは当たり前のようにインストール済み。
JVMの最大の利点は、OSに依存せず、一つのプログラムでどこでも動かせること。
Windowsサーバーならbat、Unixサーバならシェルのように使い分けることはあまりしたくないから。
ちょっとしたプログラムをすぐに書いて、どこでも動かせるようにしたい。
本来ならPerlが最強なのだが、Javaが業務系Webシステムで開発言語の筆頭となったからには、JVM上で簡単にスクリプト言語が動かしたい欲求は多い。
JRubyもそうだし、Groovyもそう。
Groovyの使い道をいくつかあげてみる。
【2】ビルドスクリプトで使う。
使い道は、Antの代用。
Antはとても枯れた技術だが、XMLで書くのは面倒だし読みにくい。
Groovyなら、XMLの読み込みも、XML生成も簡単。
実用的な Groovy: XML を作成し、構文解析し、容易に扱う
Groovyで書かれたビルドライブラリGradleを使う方法もある。
また、Jenkins上でGroovyが使えるので、Jenkinsからビルド結果を取得したり、Jenkinsを操作して一連のビルド手順をGroovyで自動化する方法もある。
【3】内部DSLとして使う。
進化するアーキテクチャーと新方式の設計: Groovy で DSL を作成する
実用的な Groovy: Java プログラマーのための DSL としての Groovy
多い使い道としては、既存言語から他の言語へコンバートして自動生成すること。
例えば、Cobolプログラムから、カーソルを取り出して、Javaとのインターフェイスにマッピングすること。
あるいは、細々とした自動化スクリプト。
例えば、ApacheログやTomcatログ、メールサーバーのログから、エラー処理を検知して集計したり、月末にSLAを顧客報告するために、インシデント管理の情報を集計するなど。
あるいは、既存プログラムから、DBスキーマや状態遷移図を生成するなど。
GroovyやRubyのような言語の方が正規表現やファイル操作が強いので、便利なはず。
【4】テスト駆動開発への応用。
TDDはもはや当たり前の概念になったが、振る舞い駆動開発(BDD)へ発展させるアイデアもある。
その時、GroovyのSpockを使えば、RubyのRSpecのように、受入テストケースがそのままプログラムになるように書ける。
気になってたSpockを試してみた - No Programming, No Life
ビルド・リリース自動化への足掛かりとしてのGroovy・Gradle・Spock|サイバーエージェント 公式エンジニアブログ
平鍋さんは、アジャイル開発の観点からソフトウェアの品質特性として、テスト容易性という概念を提唱した。
そのアイデアには、そもそもテストはスクリプト言語のような柔らかい言語の方が向いている、と指摘されていたように思う。
だから、CやJava、あるいはCobolのような硬い言語は、RubyやGroovyなどで自動テストした方が簡単かもしれない。
【5】他のフレームワークへの応用もある。
RailsのGroovy版であるGRails。
Groovyのデスクトップアプリ作成ライブラリであるGriffon。
第31回 Grailsライクにデスクトップアプリケーションを構築する「Griffon」:本格派エンジニアの工具箱|gihyo.jp … 技術評論社
「プログラミングGROOVY」には、他にも面白そうな使い道が書かれているので、色々試してみる。
| 固定リンク
「プログラミング」カテゴリの記事
- Javaのenum型はシングルトンクラスみたいだ(2022.06.20)
- 「コーディングを支える技術」は良い本だ(2022.05.26)
- 「RubyやRailsは終わった」という記事のリンク(2022.01.09)
- プログラミングしてる時はでっかいピタゴラ装置を作ってるみたいな感じ(2022.01.09)
- 値オブジェクトの設計がオブジェクト指向モデリングの最初の登山口(2021.07.23)
「ソフトウェア」カテゴリの記事
- Javaのenum型はシングルトンクラスみたいだ(2022.06.20)
- テスラが従来の自動車メーカーと異なるところは工場までソフトウェア化すること(2022.02.09)
- 「RubyやRailsは終わった」という記事のリンク(2022.01.09)
- 実践した後に勉強するのがエンジニアの本来の道(2022.01.09)
- DB Browser for SQLiteを使う(2021.12.21)
「Agile」カテゴリの記事
- プロセス設計はどの範囲を指すのか?~プロマネの仕事はテーラリングにある(2022.06.19)
- 小説活動にプルリクエスト駆動が必要になってきた(2022.05.08)
- 超高速開発でアジャイル開発を実現する話に違和感がある(2022.05.06)
- 知識は経験よりも大切か、経験は知識よりも勝るのか、SECIモデルは相互作用を語る(2022.04.26)
- プロジェクト管理の基本はテーラリング、Redmineはプロセスをテーラリングするツール(2022.04.21)
コメント