このエントリーでは、sMash V1.1.1.1での開発環境の構築手順をご紹介します。eclipseもv3.5がリリースされましたので、そちらを利用した方法もご紹介します。
●設定手順
eclipseは導入済みという前提で紹介しますので、eclipseが必要な方はeclipseをダウンロードしてください。バージョンは3.2以上のものを使用して下さい。また、PHPの開発環境の構築するにはeclipseのPHP用のプラグインであるPDTが必要です。PDT導入済みのeclipseを手に入れるには、PDT all in one packageをダウンロードする方法が便利です。
V1.0の環境からのマイグレーションの場合は、以前のバージョンのプラグインをアンインストールします。
・Eclipse 3.4の場合 : Help > Software Updates > Installed Software
・Eclipse 3.2の場合 : Help > Software Updates > Manage Configuration
Project Zero公式サイトから、sMash V1.1.1.1をダウンロードします。
zipファイルを解凍し、解凍してできたzeroフォルダを任意の場所に配置します。
zeroフォルダに移動し、zeroコマンドを実行します。例えば、Windowsの場合はコマンドプロンプトを立ち上げ、以下のコマンドを実行します(<zero_root>はzeroディレクトリを配置した先のzeroディレクトリ内を示す)。
cd <zero_root>
./zero
eclipseを起動し、アップデートサイトの追加ダイアログを表示させます。
・Eclipse 3.5の場合 : Help > Software Updates > “Add site”
・Eclipse 3.4の場合 : Help > Software Updates > Installed Software > “Search for new features to install” > Next > [...]
先日の記事では、Apache POIを利用して、Excelのデータを取得する方法を書きました。今回は、WordとPowerPointのテキストを取得してみましょう。この機能を利用すれば、WordやPowerPointファイルの中身までキーワード検索したり、特定の禁止用語などが含まれていないかチェックすることが可能です。
まず、Wordのテキストを取得するコードは、このようになります。
java.io.FileInputStream fs = new java.io.FileInputStream(file_path);
WordExtractor we = new WordExtractor(fs);
String text = we.getText();
file_pathには、ファイルのパスを入力してください。これで、変数textに、Wordに書かれたテキストが全て格納されます。
次に、PowerPointのテキストを取得するコードです。
java.io.FileInputStream fs = new java.io.FileInputStream(file_path);
HSLFSlideShow hsss = new HSLFSlideShow(fs);
SlideShow ss= new SlideShow(hsss);
Slide[] slides = ss.getSlides();
String text = “”;
for (int i = 0; i < slides.length; i++) {
TextRun[] textruns = slides[i].getTextRuns();
for (int j = 0; j < textruns.length; j++) {
text += textruns[j].getRawText();
}
}
これで、全てのテキストを変数textに格納することができます。また、Slideクラスの配列の数字が、ページ番号に対応しますので、何ページにその単語があるのかを調べることも簡単に行えます。
sMashでは、Apache POIをモジュールとして提供しています。Apache POIは、Microsoft Officeのファイルを操作するAPIを提供するJavaのモジュールです。これを利用することで、sMashで容易にApache POIの利用環境を作ることができます。また、Java Bridgeを利用することで、PHPを用いてMicrosoft Officeのファイルを操作することが可能です。
●利用するための準備
Apache POIは、zero.office.integrationという名前で提供されています。このモジュールへの依存性を、ivy.xmlに追加します。これで準備は完了です。
●Excelファイルを作ってみる
まず最初に、Excelファイルを生成してみましょう。せっかくですので、ここではPHPでやってみましょう。generate.phpとして、次のファイルをpublicフォルダに作成してください(コピー&ペーストするとダブルクォーテーションが全角になるので注意して下さい)。
<?php
java_import(”java.io.FileOutputStream”);
java_import(”org.apache.poi.hssf.usermodel.HSSFWorkbook”);
java_import(”org.apache.poi.poifs.filesystem.POIFSFileSystem”);
$filedir = zget(”/config/root”).”\\public\\sMash.xls”;
try{
//新規ワークブックを作成する
$wb = new HSSFWorkbook();
$fileOut = new FileOutputStream($filedir);
//新規ワークシートを作成する
$sheet = $wb->createSheet();
$wb->setSheetName(0, “シート01″, $wb->ENCODING_UTF_16);
//A1に日本語を書き込む
$row = $sheet->createRow(0);
$cell = $row->createCell(0);
$cell->setEncoding($wb->ENCODING_UTF_16);
$cell->setCellValue(”sMashでExcelファイルを作りました!”);
//終了処理
$wb->write($fileOut);
$fileOut->close();
echo(”Excelファイルの作成が完了しました!”);
} catch (Exception $e) {
echo $e;
echo(”処理が失敗しました”);
}
?>
作成したら、sMashアプリケーションを起動し、http://localhost:8080/generate.phpにアクセスしてみてください。publicフォルダ内にsMash.xlsファイルが生成されているはずです。
●Excelファイルを読み込んでみる
では、そのExcelファイルを読み込んで、PHPで文字列として表示してみましょう。read.phpとして、次のファイルをpublicフォルダに作成してください(コピー&ペーストするとダブルクォーテーションが全角になるので注意して下さい)。
<?php
java_import(”java.io.FileInputStream”);
java_import(”org.apache.poi.hssf.usermodel.HSSFWorkbook”);
java_import(”org.apache.poi.poifs.filesystem.POIFSFileSystem”);
$filedir = zget(”/config/root”).”\\public\\sMash.xls”;
try{
//ファイル読み込み
$filein = new POIFSFileSystem(new FileInputStream($filedir));
//1つ目のシートの、A1を示すセルのオブジェクトを取得する
$wb = new HSSFWorkbook($filein);
$sheet = $wb->getSheet($wb->getSheetName(0));
$row = $sheet->getRow(0);
$cell = $row->getCell(0);
//文字列を取得し、出力
echo $cell->getStringCellValue();
} catch (Exception $e) {
echo $e;
echo(”処理が失敗しました”);
}
?>
作成したら、sMashアプリケーションを起動し、http://localhost:8080/read.phpにアクセスしてみてください。”sMashでExcelファイルを作りました!”と表示されていれば成功です。
●参考情報
他にもApache POIでは、計算式を読み込んだり、セルにコメントを追加したり、そのコメントを読み込んだり、様々なAPIが提供されています。詳細については、Apache POIのWebサイトをご参照下さい。http://poi.apache.org/
CodeZineで「はじめて使うProject Zero」という記事が公開されました。
Project Zeroのインストールから、Webベースの開発ツール(Application Builder)でRESTサービスやサーバーサイドマッシュアップを作成するところまで、一通りの流れを説明してあります。これを機会に、ぜひProject Zeroを試してみて下さい。
sMashはJavaで実行されていますので、JRubyを実行することも可能です。以下のdeveloperWorksでは、実際にsMashでJRubyを実行する手順が紹介されています。
IBM developerWorks : Add Ruby scripting to your Project Zero and WebSphere sMash applications
ただ、このテキストでは古いバージョンのsMashを利用しているため、現在のsMashではそのまま実行することができません。このエントリーでは、sMash V1.1やsebringでJRubyを実行する手順を紹介します。
行うべき内容は、以下の通りです。
JRubyのダウンロード
JRubyのjarファイルの配置
zero.configでインタプリタを指定
インタプリタの用意
これらが終わったら、.rbファイルを用意して、サーバを起動してアクセスします。では、始めていきましょう。
この記事の情報は古くなっていますので、最新版の設定方法を、こちらのページからご確認ください。
このエントリでは、PHP on sMash -sMashとPHPで作るRESTful Webアプリケーション-と題して、sMashにおけるPHPでの開発について説明したいと思います。この連載は7回程度を予定しており、最終的にはRESTfulなWebアプリケーションを完成させることを目標としています。今回は導入として、開発環境の構築とHello Worldをしたいと思います。具体的に行うことは以下の通りです。
eclipseとプラグインの導入
firefoxとPOSTERの導入
Hello World
それでは始めていきましょう。
IDG Japan社が発行するITアーキテクト誌のWebサイトで、「WebとSOAを融合したWeb Oriented Architectureの世界
Project Zeroで試すアジャイルなWebアプリケーション開発」と題して連載記事を執筆しました。Project Zero/WebSphere sMashの概要と、簡単なアプリケーション開発手順を、説明しています。連載第三回以降で紹介するアプリケーション開発手順は、チュートリアルとしてご活用いただけるものとなっています。Project Zero/WebSphere sMashに興味のある方は、是非ご参考にしてください。
Project Zero誕生の背景
Project Zeroが実現するWebアプリケーション開発スタイル
コマンドライン開発環境の導入とアプリケーション開発の流れ
RESTful Webアプリケーション開発の流れ――データ・アクセスAPIとZRMによるDBアプリケーション開発
ビジュアルなワークフロー定義によるサーバ・サイド・マッシュアップ――Project Zeroのコネクティビティとアセンブル・フロー機能
WebSphere sMashの特徴の一つとして、スクリプト言語で手軽にアプリケーションが開発できることがあります。
サポートされているスクリプト言語はGroovyとPHPですが、Groovyの文法はほぼJavaと同じですので、Javaの経験者であればGroovyの方がとっつきやすいと思います。とはいえ、Groovy自体はまだ日本語の情報が少なく、具体的なコーディングに取り掛かってみると「xxをするにはどうコーディングしたらいいのだろうか?」と悩むことが多いと思います。そこで、このBlogでは「Groovyでいこう」カテゴリーで、Groovyに関する情報をご紹介しようと思います。
まず手始めとして、Groovyスクリプトを実行できる環境を構築しておきましょう。GroovyのランタイムはWebSphere sMash(ProjectZero)にも含まれていますが、コマンドラインからスクリプトの動作確認を行ったりするためには、単体のGroovyを別途導入しておくと便利です。
Groovyはオープンソースソフトウェアであり、プロジェクトのWebサイトは http://groovy.codehaus.org/です。
インストール手順は以下のようになります:
JDK1.5以上を導入しておく。GroovyはJavaベースで動作しますので、JDKの稼動環境が必要です。
http://groovy.codehaus.org/Download から、 Binary Releaseをダウンロードする。2008/7/30時点での最新の安定版はGroovy-1.5.6です。
ダウンロードしたアーカイブを適当なディレクトリに展開する。私は、c:\groovy\groovy-1.5.6 のように、<Groovy全体のホーム>/<Groovyバージョン別のホーム>というディレクトリ構造にしています。
環境変数 GROOVY_HOME に、Groovyのルートディレクトリを設定する。OSによって設定方法は異なりますが、WindowsXPであれば「マイコンピュータ右クリック」-「プロパティ」-「詳細設定」-「環境変数」から、システム環境変数を新規作成します。先ほどの例では、GROOVY_HOME=c:\groovy\groovy-1.5.6 となります。
環境変数 PATH に、%GROOVY_HOME%\bin を追加する
以上で、インストールは完了です。
では早速、Groovyを実行してみましょう。コマンドプロンプト(シェル)を起動して、”groovy -v”を実行してみて下さい。”Groovy Version: 1.5.6″のようにバージョンが表示されれば、インストールは成功です。うまく動作しない場合は、JAVA_HOMEやPATH、GROOVY_HOMEなどの設定が正しいかどうか確認してみてください。
次に、Groovyスクリプト を試すのに便利な「Groovy Console」をご紹介します。Groovy Consoleは、GroovyのSwingBuilderを利用して作られた対話型シェルです。コマンドプロンプト(シェル)から、”groovyConsole”を実行してみてください。次のようなアプリケーションが起動します。
コード入力ペイン(上半分)にGroovyコードを入力し、メニューから「Script->Run」、ないしはCtrl+Rキーでコードを実行できます。実行結果は結果ペイン(下半分)に出力されます。
この例では、Groovyのリストリテラル利用してStringのリストを定義し、リストのsort()メソッドでソートを実行しています。Groovyスクリプトでは、最後の式の評価結果がスクリプトのリターン値になるため、ここではResultとしてソート済みのリストが得られています。
Groovyスクリプトを実行する方法としては、Groovy Console以外にも、groovyコマンドやgroovyshコマンドなども利用可能です。sMashでのGroovyコーディングに悩んだら、まずGroovyスクリプト単体で期待通りに動作するかどうかをこまめに確認することをお勧めします。
DEのCommand Line Interfaceの導入方法に引き続き、今回はDEのEclipseプラグインの導入方法をご紹介します。WebSphere sMashのアプリケーションは、ブラウザで稼動するWeb IDE (App Builder)という統合開発環境で開発することも出来ますが、やはり使い慣れたEclipseで開発したい、という方も多いと思います。WebSphere sMashのEclipseプラグインを導入すれば、アプリケーションの開発、デバッグ、テスト稼動が可能になります。まず、Eclipse 3.2以上を導入してください。次にWebSphere sMashのEclipseプラグインの導入ですが、以下の通りです。私は日本語化パッチをあてていないので、メニュー・タイトルは英語のまま表記します。
1. Eclipseのメニューを Help > Software Updates > Search for new features to installの順で選択します。
2. Install画面で右側のNew Remote Siteボタンを押します。
3. Edit Remote Site ダイアログ・ボックスが現れます。Nameフィールドに任意の文字列、URLフィールドにと入力し、OKボタンを押します。
4. Install画面で下にあるFinishボタンを押します。
5. Updates画面が現れます。全てにチェックを入れて、下にあるNextボタンを押します。
6. Install画面が現れます。ライセンス情報をよく読み、同意できる場合には、ラジオ・ボタンのI accept the terms in the license agreementsを選びます。下にあるNextボタンを押します。
7. Verification画面が現れます。下にあるInstall Allボタンを押します。
8. Install/Updateボタンが現れて、Eclipseプラグインを有効化するため再起動を促します。Yesボタンを押します。
Eclipseプラグインの導入は以上の通りで、導入後すぐにWebSphere sMashアプリを開発を開始することが出来ます。ただし一つ意識しておくべきことがあります。それは、開発にあたってWebSphere sMashのどのバージョンを使うか?ということです。
本日現在のWebSphere sMash Eclipseプラグインはデフォルトでは、WebSphere sMash最新実装のコミュニティ版であるSilverstoneというビルドを使用します。つまり、導入後そのままだと、EclipseプラグインはDEとは異なるビルドを使ってしまうということになります。
もしSilverstoneではなくDE環境に合わせて開発したいなら、Eclipse プラグインがDEと同じビルドを使うように構成しましょう。手順は次の通りです。
1. Eclipseのメニューを Window > [...]
