ぐるぐるぐる~び~。

ぐるぐるぐる~び~(挨拶) というわけで、プログラム言語 Groovy。

最近、このブログをみてくれている会社の人から仕事でぐる~び~という言葉を聞いたり、帳票作成 Jasper Reports の標準スクリプトが Groovy に設定されていたり、あなたの生活にそっと忍び寄る Groovy。 ぼくも内部的なツールをつくるときや、エクセルからソースを起こすときなんかに大変便利に使っております。 🙂

さて、Groovy の楽なところの一つにランタイムがポータブルであるというところがあげられると思います。 JVM と Groovy の jar がひとつだけあれば動作。 インストールいらないし、埋め込んで executeble jar にしてしまえばもう Groovy であったことすらわかりません。

$ java -jar groovy-all-1.8.0.jar hoge.groovy

 

カレントに jar 置いておけば、スクリプトファイルもこんなんでコンパイルかかってプログラムが動作してしまいますしとても便利です。

もうひとつ面白いなぁと思うのが、Groovy は Java と同じコメント形式をもちますが、先頭行のシェバングを読み飛ばせること。 というわけで、UNIX 上であれば以下のようにシェルスクリプトっぽい使い方ができるようになっています。

#!/opt/groovy-1.8.0/bin/groovy
 
println "*Groovy"
new File(".").eachFile {
    println it.name
}

 

これもなかなか便利ですね~。 ちなみに String が拡張されていて外部コマンドもすぐ呼び出せますので UNIX コマンドと合わせ技で、

#!/opt/groovy-1.8.0/bin/groovy
 
println "*Unix Command"
def command = "ls -l".execute() | "grep ^-".execute() 
command.text.eachLine {
    println it.split()[7]
}

 

こんなんもできます。 awk 使えというつっこみはなしで(笑)

Process クラスにオーバーロードかかっていて、パイプが | でかけたりして奥が深い。。

というわけで Ubuntu 生活も java-gnome あたりを使って Groovy ということで。 🙂

loader.groovy。

#!/opt/groovy-1.8.0/bin/groovy
 
// java-gnome クラスロード
this.getClass().classLoader.rootLoader.addURL(
    new File("/usr/share/java/gtk.jar").toURL())
 
// 本体スクリプト評価
evaluate(new File('notify.groovy'))

 

notify.groovy。

import org.gnome.gtk.Gtk
import org.gnome.gdk.Pixbuf
import org.gnome.notify.Notify
import org.gnome.notify.Notification
 
// GTK & NotifyOSD 初期化
Gtk.init([] as String[])
Notify.init("notify.groovy")
 
// アイコン取得
def pixbuf = new Pixbuf("./torimaki.png", 40, 40, true)
 
// NotifyOSD 表示設定
def notify = new Notification(
    "γ(@ω@)γ "
    , "私は不変であることすら破壊する。"神の領域を侵犯し私は私であり続ける。ぐるぐる。"
    , null)
notify.setIcon(pixbuf)
 
// 通知!
notify.show()

 

loader.groovy で java-gnome の jar を動的クラスロードして実行してみました。 gtk.jar は apt-get install java-gnome あたりで入ります。(パッケージ名ちがったかも)

groovy02 

まぁこのサンプルは "notify-send".execute() でいけたりするのですが、ちょっとしたプログラムの中から gnome を簡単に呼べるのはいろいろ遊べそうですね。 🙂

というわけでそんな Groovy さんですが、日本初(発)の Groovy 本がでるそうです!

Amazon.co.jp: プログラミングGroovy: 関谷 和愛, 上原 潤二, 須江 信洋, 中野 靖治: 本

GroovyはJavaと抜群の親和性を持つハイブリッド言語です。簡潔で強力な記述力と高い柔軟性を持っており、Javaを補完・強化する究極のパートナーになります。 本書はGroovyの基本的な文法を丁寧に説明するほか、Groovy API、Groovy JDK、Grape、メタプログラミング、ASP変換などの応用的な話題もカバーします。また、GrailsをはじめとするGroovyの関連プロダクトについても解説します。

さっそく予約しました~。

あなたのシステムにも Groovy ひとつ、そっといかがでしょうか。 ぐるぐる。

ノート PC に USB オーディオ

ノート PC にも内蔵のサウンドチップが乗っていて、ヘッドフォンとかラインとかついています。 ただその構造上やはりノイズがのりやすく、まぁなんとなく鳴ればいいくらいのイメージ。

ぼくは ThinkPad でプログラムかきながら音楽とか、枕元で IdeaPad とかおいてお休み音楽するときもありますので、ここで環境改善ということでポータブルの USB オーディオを買ってみました。 。

songbird03

なんだか暗くて分かりにくいですが、Creative さんの USB です。 1980円くらい。

ThinkPad、IdeaPad ともに Ubuntu 11.04 で動作させていますがうまく鳴ってくれています。 音は初代 iPod touch のヘッドフォンアンプくらいの音質?。 内蔵からみると相当良くなりますので二千円の価値は十分にあると思うです。 アンプも少し大きなヘッドフォンでも鳴らせるくらいはできるようです。

てなわけでソフトのほうもいじってみようということで、おなじみ(?) Songbird さん。

songbird01 

本家での Linux 公式サポートは終わってしまっているのですが、実はひそかにバイナリ配布は行われています。 その他 getdeb とかにもありますね。

Contributed Builds – Songbird Wiki

Linux Provided by Songbird.

これでうまく動作するのですが、せっかく Ubuntu で動かすので曲名を notifyOSD 通知してみます。 アドインがあるのですが、古くなってしまって現在そのままだと動きませんのでパッチしますぞ。

ubuntu-notifyOSD – Songbird Add-ons

Displays playing artist info using ubuntu notifyOSD library.

Songbird のアドインは Firefox のそれとほぼいっしょの構成です。 基本は XUL + JavaScript です。

てなわけで、まずは対応バージョンをあげてしまいます。

install.rdf

<?xml version="1.0" encoding="UTF-8"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#"
     xmlns:songbird="http://www.songbirdnest.com/2007/addon-metadata-rdf#">
 
  <Description about="urn:mozilla:install-manifest">
    <em:id>ubuntu-notifyOSD@songbirdnest.com</em:id>
    <em:name>ubuntu-notifyOSD</em:name>
    <em:version>0.2.0.2</em:version>
    <em:creator>Tuna Celik</em:creator>
    <em:description>Displays playing artist info using ubuntu notifyOSD library.</em:description>
    <em:iconURL>chrome://ubuntu-notifyOSD/skin/icon.png</em:iconURL>
    <em:optionsURL>chrome://ubuntu-notifyOSD/content/options.xul</em:optionsURL>
    <em:homepageURL>http://www.tunacelik.info/</em:homepageURL>
    <em:targetPlatform>Linux</em:targetPlatform>
    <em:targetApplication>
      <Description>
        <em:id>songbird@songbirdnest.com</em:id>
        <em:minVersion>1.2.0</em:minVersion>
        <em:maxVersion>2.0.0</em:maxVersion>
      </Description>
    </em:targetApplication>
  </Description>
</RDF>

maxVersion を適当に 2.0.0 とかに。

chrome.manifest

overlay chrome://songbird/content/xul/layoutWithBrowserOverlay.xul         chrome://ubuntu-notifyOSD/content/overlay.xul
content ubuntu-notifyOSD                      chrome/content/
locale  ubuntu-notifyOSD  en-US                  chrome/locale/en-US/
skin    ubuntu-notifyOSD  classic                chrome/skin/

アドインのせる overlay を変更。

あとはインストール後に、~/.songbird/ の下に donotify.py ってありますのでそれに実行権限をつけてあげれば動くと思います。 🙂

songbird04

うむ。 まんぞくまんぞく。 😀

OSC 北海道 2011 WordPress 出展

昨日、6/11(土) に札幌市産業振興センターで開催されました、オープンソースカンファレンス北海道 2011 に WordBench 札幌として WordPress ブースとセミナーの出展を yuriko さんとしてきました。 今年はなんと来場者数 600 人とのこと、東京を除く1番の数字とのことでなんだか頼もしい感じでした。 🙂

セミナー資料とかは後日記載しますので少々お時間をください。

今回はスクリーンキャスト動画でプレゼン行っていたのですが、実は動画総時間が 41分あることが事前に分かっておりまして、45分のセミナーで時間足りないのは自明。 かなり飛ばしたのもありまして分からない感じですいません。 動画は編集しまして分かりやすい感じで公開したいと思いますので、お待ちいただければと思います。

319000280

何人かの方にご質問をいただいておりましたが、持ち込んでいたのは Linux(Ubuntu 11.04)で、gtkRecordMyDesktop で録画したスクリーンキャストを動画再生して合わせてしゃべっていた感じです。 初の試みでしたがかなり難しいかったです。。すんません。。

さて、ブースの様子です。 🙂

おきゃやまの WordPress ユーザの雄、Masayan さんよりいただいたぼくの愛用キャラ、木製 Pidgin ハトを絡めまして構成です。 みなさんにこれは何ですかときかれるたびに、WordPress 写真部と工作部? のご説明を差し上げました(笑)

DVC00288

yuriko さんが着てくれましたので当然モバイル系も充実。

IMG_0111

こうして、いろいろなものが絡むことができるのも WordPress の魅力の一つではないでしょうか。

さて、実はこんなコラボ企画で OSC 持ち込みが残念ながら間に合わなかったものがありますので、ここで紹介いたします。

おきゃやま WordPress 工作部 Masayan さんより、愛と勇気のバイクチーム Manukeno Masayan Racing Team 、M.M.R.T ロゴステッカーとなんと Pidgin ステッカーが届いておりました。

正直者が徳をする世界に・・・ – MMRT daily life

MMRTステッカー、インテル風ステッカー、ちょっぱー風ステッカーの3枚をセットで1名に・・

本日になってしまいましたが早速張ってみました。

やっべー、かっちょよすぎ。

IMG_0116

[tegaki]…ピットに置きたい(笑)[/tegaki]

というわけで、いろいろな方がいろいろな形で参加できるオープンソースは楽しいですね!!

最後になりましたが、OSC 北海道運営スタッフの方々本当にお疲れ様でした。 おかげさまで楽しい一日でした。 🙂