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のモジュールシステムの考え方をまとめてみた(2022.10.21)
- Javaのモジュールシステムは複雑性をより増している(2022.09.10)
- Javaはなぜ関数型言語になろうとしているのか(2022.09.02)
- Javaのラムダ式の考え方(2022.08.10)
- Javaはオブジェクト指向言語ではなく関数型言語だった~「[増補改訂]関数プログラミング実践入門」はお勧めの本だ(2022.08.06)
「ソフトウェア」カテゴリの記事
- Javaのモジュールシステムの考え方をまとめてみた(2022.10.21)
- Javaのenum型はシングルトンクラスみたいだ(2022.06.20)
- テスラが従来の自動車メーカーと異なるところは工場までソフトウェア化すること(2022.02.09)
- 「RubyやRailsは終わった」という記事のリンク(2022.01.09)
- 実践した後に勉強するのがエンジニアの本来の道(2022.01.09)
「Agile」カテゴリの記事
- 「システムアーキテクチャ構築の原理」の感想part2~非機能要件がシステムのアーキテクチャに影響を与える観点をプロセス化する(2024.05.06)
- 「スクラムの拡張による組織づくり」のScrum@Scaleの感想(2024.03.31)
- ソフトウェア工学の根本問題から最近のソフトウェア設計を考えてみる(2024.03.03)
- 「GitLabに学ぶ 世界最先端のリモート組織のつくりかた」の感想(2023.12.10)
- 概念モデリングや設計原則は進化しているのか(2023.10.21)
コメント