ScalaでCI関連の情報を探していたら、株式会社 アドヴァンスト・ソフト・エンジニアリング様のASELabというサイトに記事がありました。

Scala開発でのJenkinsによる継続的インテグレーション

今度、この記事を参考に、環境を作ることにします。


Mavenを利用したMuleアプリケーションの開発手順を紹介します。

事前に次の環境が構築されていることを前提とします。

  • Java SE 1.5以上
  • Apache Maven 2以上
  • インターネットに接続できる環境

Mavenの設定

MavenでMuleアプリケーションを作成するには、Mavenのarchetype (project wizard)を利用します。Mavenのarchetypeを利用するには、Mavenのsettings.xml(通常はホームディレクトリの.m2/に作成する)に次の設定を追加します。

~/.m2/settings.xml
<settings>
  ...
  <pluginGroups>
    <pluginGroup>org.mule.tools</pluginGroup>
  </pluginGroups>
  ...
</settings>

プロジェクトの作成

次のコマンドを実行すると、MuleアプリケーションのMavenプロジェクトが作成されます。

$ mvn mule-project-archetype:create -DartifactId=HelloApp -DmuleVersion=3.1.2

このプロジェクトの作成は対話形式で行われ、次のポイントで入力を求められますが、ひとまずデフォルト値でよいでしょう。

  • [INFO] description:
  • [INFO] muleVersion:
  • [INFO] package:
  • [INFO] transports:
  • [INFO] modules:

正常にプロジェクトが作成されると「[INFO] BUILD SUCCESS」を含むテキストが画面に表示されます。

プロジェクト作成の際に実行したコマンドに含まれる -D〜 は、プロジェクトを作成する際のパラメータを定義しています。次に代表的なパラメータについて補足します。

  • artifactId
    必須です。MavenプロジェクトのArtifact IDを定義します。
  • muleVersion
    必須です。Mule ESBのバージョンを定義します。
  • description [Dedault: ]
    Mavenプロジェクトの概要説明を定義します。
  • package [Dedault: ]
    ベースになるパッケージを定義します。MavenプロジェクトのGroup IDになるのでちゃんと定義した方が良いでしょう。
    e.g. com/company/mule/apps
  • transports [Dedault: file,http,jdbc,jms,vm]
    Muleで利用するトランスポートを次から選択して指定します。分からなければ、デフォルトでOKです。
    ajax, ejb, file, ftp, http, https, imap, imaps, jbpm, jdbc, jetty, jetty-ssl, jms, jnp, multicast, pop3, pop3s, quartz, rmi, servlet, smtp, smtps, ssl, tls, stdio, tcp, udp, vm, xmpp
  • modules [default: client,cxf,management,scripting,sxc,xml]
    Muleで利用するモジュールを次から選択して指定します。分からなければ、デフォルトでOKです。
    acegi, annotations, atom, boot, builders, client, cxf, guice, ibeans, jaas, jbossts, jersey, json, management, ognl, pgp, rss, scripting, spring-extras, spring-security, sxc, ws, xml
  • interactive [default: true]
    MuleアプリケーションのMavenプロジェクトの作成時に、対話形式で作成するかどうかを定義します。対話形式での定義の変更が必要でなければ、falseで定義すると良いでしょう。

プロジェクトのビルド

Mavenプロジェクトをビルドするには、プロジェクトディレクトリに移動し、次のコマンドを実行します。

$ mvn package

ビルドの際、テストの実行を意図的にスキップしたい場合は、次のように実行します。

$ mvn -DskipTests package
ビルド時にテストで失敗する場合は、プロジェクト内の次のファイル中の<vm:outbound-endpoint>をコメントアウトして再実行して下さい。
src/test/resources/helloapp-functional-test-config.xml
<mule>
  ...
  <!--
    TODO: You can define a test configuration here then from the HelloTestCase you can fire events into
    Mule (using the MuleClient) and then assert the results.
    -->
  <flow name="main">
    <vm:inbound-endpoint path="in" exchange-pattern="request-response"/>
    <!-- TODO add your service component here. This can also be a Spring bean using <spring-object bean="name"/> -->
    <test:component appendString=" Received"/>
    
    <vm:outbound-endpoint path="out"/><!-- ここをコメントアウトする -->
  </flow>
</mule>
ツールのbugっぽいが、実際にはこのファイルをそのまま使うことはまずないと思われるので問題は無いハズ・・・。雰囲気だけ味わって下さい ^^;

Muleアプリケーションのデプロイ

プロジェクトのビルドを行うことで、targetディレクトリにZIPファイルが作成されます。Muleを開始している状態で、このZIPファイルを$MULE_HOME/appsディレクトリにコピーすることで、Muleアプリケーションをデプロイすることが出来ます。または、次のコマンドでもデプロイすることが出来ます。

$ mvn install
mvn installでデプロイするには、Mule ESBのインストール先のディレクトリを環境変数(MULE_HOME)としてあらかじめ定義しておく必要があります。


今回はSweetcronの設定に関する内容です。Sweetcronを利用するには、管理画面にログインして次のような手順で設定を行います。

  1. オプションの設定
  2. フィードの登録
  3. 登録フィードからアイテムを取得する

オプションの設定

Optionsタブを選択し、次の設定を行います。
  • Lifestream Title
    Sweetcronで表示するサイトのタイトルを設定します。
  • Admin Email
    管理者のメールアドレスを設定します。
  • Items Per Page
    Sweetcronで表示するサイトの1ページあたりに表示するアイテムの件数を設定します。ここでは9を設定します。
  • Cron Type
    Sweetcronが登録フィードからアイテムを取得するモードを設定します。Pseudo CronとTrue Cronが選択出来ますが、今回は Pseudo Cronを選択します。 Pseudo Cronは30分ごとに登録フィードからアイテムを取得します。
    ※True Cronを選択した場合は、cronjob等で定期的にアイテムの取得を行う必要があります。
  • Theme
     Sweetcronで表示するサイトのテーマを選択します。標準では、Boxy, Sandbox, Plain Simple,Muxcronから選択出来ますが、ここではクールなBoxyを選択します。好みに合わせて選択して下さい。

フィードの登録

Feedsタブを選択し、フィードを登録します。

  • BLOG, wikiなど
    • RSSのURL
  • Twitter
    • http://twitter.com/statuses/user_timeline/アカウントID.rss
  • You Tube
    • uploadの情報の場合、
      http://www.youtube.com/user/アカウントID まはた
      http://gdata.youtube.com/feeds/api/users/アカウントID/uploads
    • Favoritesの情報の場合、
      http://gdata.youtube.com/feed/api/users/アカウントID/ favorites

登録フィードからアイテムを取得する

Itemsタブを選択し、登録フィードからアイテムを取得します。これはオプションで設定したCron Typeが正しく設定されていれば特に行う必要はありませんが、テーマの確認のため初回の場合は実行することをお勧めします。

次回は、テーマのカスタマイズについて書く予定です。

参考サイト

ロリポップ! - Sweetcron簡単インストール
すぐに忘れる脳みそのためのメモ -Youtube でユーザの「お気に入り」「再生リスト」のフィードを取得
memorandum - TwitterでRSSフィードを取得したい場合


発売されたばかりのOS X Lionですが、現在利用しているアプリケーションに不都合が出るかもしれないので、しばらく様子をみてから導入しようと考えていたのですが、、、待てずに買ってしまった^^;

当初、想定していたようにLionにアップグレードしたことで現在利用しているアプリケーションにいくつか問題が発生しています。その中で一番困っているのが、Parallels Desktopという仮想化ソフトウェア。Parallels Desktopでは、ゲストOSとしてWindows XPやLinuxを主に利用していますが、問題が出たのはやはりLinuxでした。

一応、Lionへ正式対応されたParallelsのアップデート(ビルド:12094)をインストールしてみたのですが、Parallels Toolsを各ゲストOSにインストールした後も次の問題は解決していません。

  • Ubuntu 11.04(x86_64のみ確認)
    • Unity UIが旧UI(Snow leopardの時は、Unity UIで起動していた)
    • ネットワークは共有ネットワークのみ有効(ブリッジでは接続できない)
  • Fedora 15(x86_64, i386)
    • GNOME3のUIが旧UI(Snow leopardの時もGNOME Shellは利用できなかった)
    • ネットワークは共有ネットワークのみ有効(ブリッジでは接続できない)
    • ソフトウェアアップデート後、再起動出来なくなることがある(emergency modeで毎回起動するようになる)
Linux系ディストリビューションでは大体同じ問題が発生しています。Windows XPでは特に気になる問題は今のところ発生していませんが、Linuxも含めて全体的に遅くなった様な気がします(Lionの問題かもしれませんが・・・)。
Lionも既にアップデートを控えているという噂もあるので、次回のParallelsのアップデートと併せて気長に待つことにします(Parallels Desktop 7になったりして^^;)。


ロリポップ!のレンタルサーバーでsweetcronが簡単にインストール出来るようになっていたので、とりあえずインストールしていたのですが、使い方が今ひとつ分からなかったので放置!^^;

最近になって、自由な時間が出来たので改めて利用することにしました。

正直、sweetcronやFriendFeedのような代表的なライフストリーミングツールの使い道ってしっくりこなかったのですが、現状の自分を取り巻く環境を見直してみるとblogやwikiの他にもTwitterやYouTube等への情報発信も行っていて、最近それらのフィードを1つにまとめられたら便利だなーと思ってグーグル先生に聞いてみたところ、ライフストリーミングツールの話題に戻って来てしまった・・・(情けない orz...)

sweetcronは、次の特徴があります。

  • 自動的に情報を回収する
  • カスタマイズが簡単
  • 自身のホストで情報管理ができる
  • 100%フリーなオープンソースソフトウェア

sweetcronを使えば、自分のフィードは勿論のこと、取得できるフィードであれば、自動的に更新されたフィードを回収し、1カ所にまとめることが出来ます。

あまりフィードを欲張って色々と情報を回収してしまうとよく何の情報なのか分からなくなってしまうし、データ量も大きくなるので、まずは自分から発信している次の情報をsweetcronでまとめることにしました。

  • blog
  • wiki
  • Twitter
  • You Tube
出来たライフストリーミングサイトがこれです。
OPENSQUARE.jp - Lifestream
sweetcronで作成したライフストリーミングサイト
次回は、設定やテーマのカスタマイズについて書く予定です。