2011年Groovyのまとめ & これを読んで年末年始に、Groovyを始めよう
2011年Groovyのまとめです。(一部、2011年の記事ではないものも含んでますが)
2012年から何か新しい言語で遊びたいなという人と思ってる人
12/30、12/31に、実家に帰って来て、そろそろ時間を持て余して人。
実家のパソコンだとソフトをインストールすることもできないし、
なにもできないよって人も、Groovy Web Consoleを使えばブラウザ1つ遊べる。
始めてはみたけど、次にどうしたらいいのか分からない人、
周りに聞ける人がいなくて困ってる人。
そんな、あなたがこれからGroovyを使うにあたって「みちしるべ」となるような
情報をまとめてみた。
必要な書籍を買う
無料マガジンを手に入れる
- 検証! Grails2.0の世界 Part.2
- JGGUG合宿2011企画アプリ GDK48投票アプリの作り方(前編)
- GroovyFXで遊ぼう(導入編)
- Betamaxことはじめ
- Grails Plugin探訪 〜第5回 RabbitMQプラグイン〜
- JGGUG4コマ漫画「ぐるーびーたん」第4話
- リリース情報
- Grails をコントロールせよ ! Part2
- Griffon 不定期便 〜第4回 スレッド編その2〜
- CodeNarc を利用してGROOVY のコード品質を上げる 〜第3回 ルールのカスタマイズ〜
- Geb で始める Web テスト 〜第2回 Geb0.6 編〜
- もし新人女子 Java プログラマが『Groovy イン・アクション』を読んだら 〜第2章 もかは『プログラミングGroovy』と出会った〜
- GBench in a Nutshell
- Grails Plugin 探訪 〜第4回 Cloud Foundry プラグイン〜
- JGGUG 4コマ漫画「ぐるーびーたん」第3話
- リリース情報
- 検証! Grails 1.4.0 の世界
- Griffon 不定期便 〜第3 回 バインディング編〜
- CodeNarc を利用してGROOVY のコード品質を上げる〜第2 回 開発ツールと連携〜
- もし新人女子Java プログラマが『Groovy イン・アクション』を読んだら 〜第1章 もかは『Groovy イン・アクション』と出会った〜
- Grails Plugin 探訪〜第3 回 MongoDB GORM プラグイン〜
- JGGUG 4コマ漫画「ぐるーびーたん」第2 話…
- リリース情報
- Grails をコントロールせよ! Part1
- Griffon 不定期便〜第2 回 バインディング編〜
- CodeNarc を利用してGROOVY のコード品質を上げる〜第1 回 CodeNarc とは〜
- Geb ではじめるWeb テスト〜第1 回 導入編〜
- Grails Plugin 探訪〜第2 回 Spock プラグイン〜
- JGGUG 4コマ漫画「ぐるーびーたん」
- リリース情報
- Grails をコントロールせよ! Part1
- Griffon 不定期便〜第2 回 バインディング編〜
- CodeNarc を利用してGROOVY のコード品質を上げる〜第1 回 CodeNarc とは〜
- Geb ではじめるWeb テスト〜第1 回 導入編〜
- Grails Plugin 探訪〜第2 回 Spock プラグイン〜
- JGGUG 4コマ漫画「ぐるーびーたん」
- リリース情報
必要な道具を準備する
Groovyを始めるには、最低限、JavaとGroovyが必要だ。
最新版なら、Java SE7 と Groovy 1.8.5 になる。
ダウンロード先
Java SE 7
Groovy 1.8.5
Japanese Tutorial 1 - Getting started
書いたときに参照できなかったので、ようやく追加。
書くのは、好きなIDEやエディタでどうぞ。
追加
IntelliJ IDEA
とりあえず書いてみる
日本の公式サイト
ghelloを写経する
- 動かして楽しむ
- どうしてかを考えて悩む
- 解説を見て納得する
- もう一度動かして楽しむ
初っ端からブラウザが立ち上がるHello Worldなんてありえないつーの。
途中からもうなにがなんだか・・・
140文字でよくもまぁこれだけHello Worldがでてきたものだ。
解説は以下を参考に。
他人のソースを読む
Groovyスクリプト100本斬り
- HelloWorld(Java完全互換版)
- リスト操作(基礎編:CRUD系操作とイテレーション)
- マップ操作(基礎編:CRUD系操作とイテレーション)
- 範囲(Range)操作(基礎編:CRUD系操作とイテレーション)
- Groovy Ustream API
- Jakarta POI のGroovyサンプル1
- Jakarta POI のGroovyサンプル2
- Twitter: OAuthの認証サンプル
- gmailからメールを受信する
- twitterにつぶやく
- Markdownの実装
- 単位変換
- 為替情報の取得
- topコマンドの実装
- 正規表現:ファイルの拡張子を置換する
- 正規表現:FQCNからクラス名を抜出す
- ディレクトリを走査して特定のファイルを抽出
- grep
- tail --f
- 文字列を分割してListに変換
- ファイル名の一括置換
- ファイル内の特定の文字列を一括置換
- growlみたいなの(あんのか?)
- ファイルのコピー
- 文字コード判定
- 掲示板
- ファイルをドラッグ&ドロップできるウィンドウ
- GDKのコマンドラインビューア
- JSONの読み書き。Grails無しで
- XMLの読み書きを色んな方法で
- スクリプトを実行するスクリプト
- お手軽JMXビューア
- zip圧縮・解凍
- DBとテーブル名を引数に実行すると、標準入力から読み取ったCSV/TSVデータを指定したテーブルにinsertするスクリプト
- 日時の演算処理。例えば「現在時刻の3日と4時間後を求める」「特定の時刻間の時間数を求める」
- wc コマンド
- クイックソート
- 閏年
- 回帰分析
- KVSの操作(保存、取得)
- XMLDB(existが一番簡単かな?)の操作
- いろいろな型変換(toメソッド、キャスト、as)
- duck typing
- マルチメソッド(動的ディスパッチ)
- 数値型(Javaとの相違点など)
- GStringが遅延評価ぽくなるケース
- StringクラスのGDKメソッド
- 正規表現(基本編)
- fizzbuzz
- GroovyTestCaseと各種拡張assertメソッド
- Groovy Truthのカスタマイズ
- 演算子オーバーロード
- クロージャとdelegate
- 何でも使えるぜGroovyなswitch--case
- Expando使用例
- 実行中のクラス/メソッド名を取得
- curry/rcurry/ncurry
- 動的なメソッド追加
- 存在しないメソッド/プロパティアクセスをフック
- ConfigSlurper
- テキストファイルの中身を行番号付きで表示
- AntBuilder
- 日付の解析とフォーマット
- 外部コマンドの起動と出力の取得等
- 環境変数取得
- CliBuilder
- HTTPファイルアップロード
- HTTP GET/POST
- webサーバ(Jetty)
- Base64 エンコード/デコード
- webスクレイピング(nekohtml)
- HTML生成
- ブラウザで任意のURLを表示(OS非依存)
- YAML
- SwingBuilderと@Bindableでモデル・ビュー連携
- grocessing (groovy+processing.org)
- JFreeChartでグラフ生成
- MongoDB
- TimeCategory
- トランプのシャッフル
- 超シンプルRSS/Atomリーダー
- クラスパスの動的な変更
- jlineで行編集/補完/ヒストリ付きコマンドライン
- 形態素解析
- DerbyでGroovySQL
- JavaとしてもGroovyとしても正当だが結果が異なるコード
GDK48 総選挙
- IRCボットテンプレ。(半手動IRCボット: 別チャンネルにて、say:hello。で、発言投げ。)
- Closureをいじってみた https://gist.github.com/1342315 written by @mike_neck #gdk48 #jggugcamp
- gexcelapiを使って、Excelからastah*のドメイン定義を作成するサンプル。(要astah* professionalライセンス)
- 指定したURLの内容からジャンルをベイズ推定: groovy bayes.groovy url
- CodeNarcでGroovyコードをチェック(カレントディレクトリの**/*.groovyを検証し、結果をCodeNarcReport.htmlに出力)
- Wikipedia scraping: groovy wikipedia.groovy keyword キャッシュ機能付き
- Web上にあるjarを、GROOV_HOME/lib にダウンロードする
- groovy.json.JsonSlurperのサンプル
- ファイルのコピーをいくつか
- 6 - 14 桁のパスワードを発行するスクリプト (少し @fumokmm さんのコードを拝借している) written by @mike_neck https://gist.github.com/1341399 #gdk48 #jggugcamp
- The main motief of Lightening Talk (build.gradle to avoid slow test problem) written by @mike_neck
- calコマンド: groovy cal.groovy year month
- GroovyでGitコマンド。今のところinit/clone/statusがそれとなく使える。使用例: groovy git clone git@github.com:jenkinsci/mongodb-plugin.git
- 合宿の自己紹介・改
- きのくにやPiano
- 抽象クラスの概念を教えるとき用のサンプル.
- 指定したディレクトリ配下の全ファイルをトラバースしてファイル情報をSqliteDBに突っこんで、クエリをかけて抽出(by uehaj)
- groovy.json.StreamingJsonBuilderのサンプル
- MapからMapを作る。
- 形態素解析
- JsonBuilderを使う際に間違いやすい部分のサンプル(2011/6JGGUG総会のLTで発表した内容を元に解説付き)
- Groovyのリスト操作
- コードで自己紹介
- groovy.json.JsonOutputのサンプル
- 「コードで自己紹介」用に作ったプログラム
- GroovyでProcesssing風にプログラムを書くサンプル
- 手抜きお絵描きプログラム
- Fundamental Web Project build script written by @mike_neck
- ありがちなボールを跳ね返すゲーム風のプログラム
- コードで自己紹介 by toby55kij
- jggugcamp2011の自己紹介
- 自己紹介スクリプト(tyama)
- コードで自己紹介 @JGGUG Camp 2011
- クソゲーによる自己紹介(by uehaj)
- Self introduction by Google+ API and GroovyFX
- @mike_neck 自己紹介
- Twitter4J+GroovyでストリーミングAPI
- 漢数字->数字
追記
2011/11/05 TDDBC横浜 @nobeansによる美しいSpockのコード
ブログを読んでみる
2011年にG*のエントリが複数あるブログ
誰かを忘れてるような・・・
うさぎ組
nobusueの日記
blog4j 2.0
Literal Ice
@ikikko のはてなダイアリー
groovyあれこれ
なんとなくな Developer のメモ
Grな日々(uehajの日記)
Nagai Masato no Blog
Groovyラボ
No Programming, No Life
豆無日記
倭マン日記
bluepapa32’s Java Blog
mike、mikeなるままに…
marsのメモ
唯の楽しいお勉強生活
丸いタイヤを四角く作る日記
きしだのはてな
集中力なら売り切れたよ
pocketberserkerの爆走
fujishinko 雑記帳
ITとともに生きよう
leftovers...
日々常々
みちしるべ
初級エンジニアの技術メモ
Bo
Naoki_Rinの学習 - 補助記憶領域
お だ のスペース
達人プログラマーを目指して
bikisuke IN ACTION
Shinya’s Daily Report
ゲンゾウ用ポストイット-new
Jungle Java
裏紙
ふぞろいのGENGOたち
Matsumoto.JS
G* Adevent Calendar 2011
- 【Day 01】プログラミングGROOVYに書いてないけど、便利なGroovyプロダクト
- 【Day 02】G*と言えば猫、ということで子猫Tube作りました
- 【Day 03】LupinFX
- 【Day 04】Groovyを野良ビルドしてみよう
- 【Day 05】Spockでデータドリブンなテスト
- 【Day 06】GrailsのプラグインリポジトリとしてGithubを使う
- 【Day 07】Handy Gradle startup script
- 【Day 08】Groovy Eclipse Pluginのあれこれ
- 【Day 09】Gradleビルドランゲージリファレンス
- 【Day 10】GroovyでVert.x
- 【Day 11】resolveStrategy の基礎
- 【Day 12】私がGroovyを好きな9つの理由 2011年版
- 【Day 13】G5、それはGroovy使いの為のスライドショーツール
- 【Day 14】grailsでwebアプリをつくってみる(つくってみた(手直しした))。
- 【Day 15】Grailsをインタラクティブに使う!
- 【Day 16】GroovyとQuartzとTwitter APIとTwitter4Jの甘い関係
- 【Day 17】自分のPCにある写真をPicasa webに丸ごとアップ
- 【Day 18】G*アドベンドカレンダー JGRの文法比較
- 【Day 19】ドメインを取得しました
- 【Day 20】groovyコマンドオプション一巡り
- 【Day 21】恥ずかしくて今さら聞けない、GMongo講座 2
- 【Day 22】Groovyの疑似デバッガgdb
- 【Day 23】Grettyで割り勘計算機
- 【Day 24】MerryChristmas!!
- 【Day 25】groovyでTestNGのテストコードを書いてみよう
個別の記事
- インターネットが使えない劣悪環境でGroovyと戯れる
- quickrun.elで開発効率アップ
- Groovy で Storm を使う
- Groovy で Apache ZooKeeper を使う - Webコンテンツの分散ダウンロード
- Apache Mahout でレコメンドを実践 - GitHub リポジトリをレコメンド
- Apache Mahout で単純なレコメンドを実施 - Groovy
- 非同期処理でWebコンテンツをダウンロードする方法2
- jclouds の BlobStore API - 単純な Blob の put/get
- Ratpack + JHaml + Morphia で MongoDB を使った Web アプリ開発
- LINQやコレクションAPIを使ってCSVファイルからデータ抽出 - C#, F#, Scala, Groovy, Ruby の場合
- SQLを使ってCSVファイルからデータを抽出する方法 - Groovy + H2 データベース
- Embed Jetty - Groovy と Scala で Jetty を組み込み実行
- FC2ブログのユーザー情報を取得(Groovyでxml-rpc)
- FC2ブログへの投稿を行う
- SQLiteを使ってみる
- アプリケーションの二重起動を禁止する
- textArea(JTextArea)で、タブによるフォーカス移動を実現したいとき
- windows用の実行ファイル(exe)を簡単に作成
- ルパンっぽいもの
- JsonSlurperを使ってfacebook内のいいね!してないフィードを一覧表示
- JsonSlurperを使ってfacebook apiを呼び出す
- Groovyでfacebookへ近況書き込み
- XmlSlurperで取得したノードをxmlとして出力する
- サイトのhtmlをXmlSlurperで処理する
- cygwinでカレントディレクトリにスペースを含む場合にshellbang付きgroovyが動かせない件のパッチ
- Gebを試してみる(再再々)
- JavaプロジェクトでGroovyを導入すべき5つの理由
- Gradleで簡単にFindBugsを使えるようにしてみた
- BL的にGroovyのmetaClassを使うとこうなる。
- Groovyのassertがすごく見やすい件について
- Gradle でメールを送ってみる
- Spockでもテストスイートしてみる
- 任意の条件でテストをスキップする
- 任意のフィーチャーメソッドだけを実行する
- Spock のメソッド名は識別子でなくてもよい
- Eclipse の JUnit ビューを等幅フォントでいい感じに表示する
- Java プロジェクトに Spock を導入するための3ステップ
- 2011-12-01 それでも Spock を使い続ける理由
- Gradle で Spock してみる
- Gradle の Code Quality プラグインでエラーを無視する
- Gradle で Amazon EC2 を操作してみる
- Gradle で環境ごとにあれもこれも変更する
- Gradle で環境ごとに構成を変更する その2
- Gradle で環境ごとに構成を変更する
- Gradle は Make・Ant・Maven の良いとこ取り
- タスク定義の << には注意しよう
- Gradle のカスタムプラグインを JAR ファイルで公開する方法
- プロパティファイルを native2ascii するためのプラグインを作ってみた
- groovyとoracleでバッファキャッシュヒット率を取得する
- groovyとoracleでデータファイルごとのI/O回数・ブロック数を取得する
- groovyとgeotoolsで指定した地点に三角マークを描画する
- groovyとredmineでプロジェクトの一覧を取得する
- groovyとgeotoolsで指定した地点にラベルを描画する
- groovyとgeotoolsで特定の国の色を変更する
- groovyとjsoupでworldbank.orgから日本の総人口に対する15歳〜64歳の割合を取得する
- groovyとrabbitmqでパターンを指定して複数のキューにメッセージの送信を行う(topic exchange)
- groovyとApache Commons Mathで相関係数を求める
- gmongoでMapReduceを使用して配列フィールドの値をカウントする
- groovyとjavamailで画像付きHTMLメールを送信する
- groovyとjsoupでworldbank.orgから各国の首都名を取得する
- groovyとJackrabbitでWebDAVサーバ上のリソースをダウンロードする
- groovyとsardineでbox.net上のファイル・フォルダを列挙する
- groovyでjarに含まれるディレクトリを一覧表示する
- groovyとjsoupで天気情報を取得する
- groovyとjavamailで添付ファイル付のメールを送信する
- groovyとeXistでXQueryを実行する
- groovyとMongoDBのまとめ
- groovyとVI Java APIのまとめ
- groovyとJavaMailでimapプロトコルを使用してgmailのラベルをリネームする
- groovyとjava-memcached-clientのまとめ
- groovyとJRedisで複数のkey-valueの操作を行う
- groovyとgooglechartwrapperでレーダーチャートを描画する
- ラベル: JRedis groovyとApache Derbyでテーブルのカラムを列挙する
- groovyとSpiderDBでテーブルのカラムの位置を取得する
- groovyとgooglechartwrapperでメーターを描画する
- groovyとgooglechartwrapperで円グラフを描画する
- groovyとApache ClickでTreeを使用する
- Griffon で Hello World !
勉強会、イベントの録画を見る
第18回 G*ワークショップ
第17回 G*ワークショップ
- 1.4.0.M1 !? 2.0.0.M1 -更新メモ- 1
- 1.4.0.M1 !? 2.0.0.M1 -更新メモ- 2
- 1.4.0.M1 !? 2.0.0.M1 -更新メモ- 3
- 1.4.0.M1 !? 2.0.0.M1 -更新メモ- 4
- 1.4.0.M1 !? 2.0.0.M1 -更新メモ- 5
- 1.4.0.M1 !? 2.0.0.M1 -更新メモ- 6
- 1.4.0.M1 !? 2.0.0.M1 -更新メモ- 7
- 1.4.0.M1 !? 2.0.0.M1 -更新メモ- 8
*途切れ途切れになってる。
- うさみみとJenkinsとG*な開発環境 01
- うさみみとJenkinsとG*な開発環境 02
- うさみみとJenkinsとG*な開発環境 03
- うさみみとJenkinsとG*な開発環境 04
- うさみみとJenkinsとG*な開発環境 05
- うさみみとJenkinsとG*な開発環境 06
- うさみみとJenkinsとG*な開発環境 07
- うさみみとJenkinsとG*な開発環境 08
- うさみみとJenkinsとG*な開発環境 09
- うさみみとJenkinsとG*な開発環境 10
- うさみみとJenkinsとG*な開発環境 11
- うさみみとJenkinsとG*な開発環境 12
- うさみみとJenkinsとG*な開発環境 13
- うさみみとJenkinsとG*な開発環境 14
*途切れ途切れになってる。
まとめを読む
- 第19回 G*ワークショップ レポート
- 第19回 G*ワークショップに参加してきた -Shinya’s Daily Report-
- 2011/11/22_第19回 G*ワークショップ( #jggug )
- 第18回 G*ワークショップ G*なGUI祭り
- 20110916_第18回G*ワークショップ( #jggug )
- 第17回 G*ワークショップに参加してきた -Shinya’s Daily Report-
- 20110729_第17回 G*ワークショップ(#jggug ) togetter
- Groovyist夏の思い出 2011 第17回 G*ワークショップのまとめ
- 第16回 G*ワークショップ+JGGUG総会に参加してきた -Shinya’s Daily Report-
- 第15回 G*ワークショップに参加してきた -Shinya’s Daily Report-
- 第15回 G*ワークショップに参加してきた
追記
レポート職人の記事追加
Twitterを活用して仲間を見つけよう
追記
@jggug
@hatena_groovy
@hatebu_groovy
@groovybook
上記のTwitterIDをフォローする。
また、そのフォロー、フォロワーもGroovyistかGroovyに興味を
持っている人のはずなので、活発にGroovy関連のことをTweetしてる人を
フォローするか、リストに追加してみよう。