GlassFish v2.1の監視用カスタムMBean一式を作ってみた
GlassFishサブスクリプションのPerformance Advisorには以下の項目がある。
物理メモリーに関する警告 メモリリークに関する警告 CPU使用量の傾向に関する警告 スループットに関する警告 GC停止時間に関する警告 ログエントリに関する警告
それぞれの項目がやっていることがよくわからないけど、結局、「java.lang.management」パッケージでとれる値をとっていると推測できるので、推測になるが自前で作ってみた。
概要
version 0.2.0(2009/03/15 release)の情報。最新はGoogleCodeのソースを読んで・・・。
以下の監視用カスタムMBeanを作った。
物理メモリー、スワップメモリー空き領域、CPU時間を監視できるOSMonitor スレッド数を監視できるThreadMonitor ヒープ、非ヒープメモリを監視できるMemoryMonitor GC実行後のメモリ量を監視できるGCMonitor
対するアクションは以下。
なにもしないDummyAction ログを出すLoggingAction メールを送信するEmailAction
Loggerはlog4j 1.2.15を使っている。GF_ROOT/libとかにlog4jのjarをおいてもいいんだけど、全体に影響が出るのが嫌だったので、log4jのソースを一緒にコンパイルしてgfmon.jarに含めている。log4jの設定はgfmon.jarをアンパックして、log4j.xmlを修正して、パックしてください。
課題点は以下。
GCの監視をもうちょっといい方法とかないかな GC停止時間ってどうやってとってんだろ? スループットの定義は何だ? メモリリークの定義は何だ? コメントを書いていない
ダウンロード
ダウンロードはこちらから。 名前はgfmonです。
ソースはGoogleCodeにおいてます。
MBean
MBeanごとに監視できる属性がことなるので、自分が監視したい属性を見つけて、管理ルールに登録する。参考は
管理ルールの登録方法。
イベントタイプはmonitorになります。
監視対象の属性がLoggingの場合
定期的に監視している属性の値をとりたかったので、全部のMBeanでLoggingという属性を監視できるようにしている。
この属性を監視対象の属性に設定すると、内部でそのMBeanで監視できる項目すべての値を、ログに出力する。
この属性の戻り値は「success」という文字列なので、監視タイプをString、トリガーをEquals、値をsuccessにすれば、粒度周期で設定した周期でログを出力してくれるようになる。(小細工ですね)
監視する属性にLoggerを選択したときはActionが必要ないと思いますので、何もしないDummyActionを設定すればいい。
ログはこんな感じになる。
2009-03-15 22:59:39,308,INFO,HeapMemoryUsage:17,NonHeapMemoryUsage:30 2009-03-15 22:59:39,323,INFO,CurrentThreadUserTime:0,CurrentThreadCpuTime:0,DaemonThreadCount:53,PeakThreadCount:74,ThreadCount:67 2009-03-15 22:59:40,836,INFO,CopyDuration:19,MarkSweepCompactDuration:768,CopyGCMemoryCutDown:-4,MarkSweepCompactCutDownInPercent:-3 2009-03-15 22:59:43,067,INFO,ProcessCpuTime:165969463900,FreePhysicalMemoryInPercent:35,FreeSwapSpaceSizeInPercent:17,SystemLoadAverage:-1.0 MBeanの登録方法
登録方法はGlassFish v2.1のOS監視用カスタムMBeanを作るを参考に。
登録時に入力する値を以下にまとめておく。
OSMonitor
実装クラス名
com.daipresents.gfmon.OSMonitor
名前
OSMonitor
監視対象のMBean
user:impl-class-name=com.daipresents.gfmon.OSMonitor,name=OSMonitor,server=server
監視対象の属性
Logging
ProcessCpuTime
FreePhysicalMemoryInPercent
FreeSwapSpaceSizeInPercent
SystemLoadAverage
ThreadMonitor
実装クラス名
com.daipresents.gfmon.ThreadMonitor
名前
ThreadMonitor
監視対象のMBean
user:impl-class-name=com.daipresents.gfmon.ThreadMonitor,name=ThreadMonitor,server=server
監視対象の属性
Logging
CurrentThreadUserTime
CurrentThreadCpuTime
DaemonThreadCount
PeakThreadCount
ThreadCount
MemoryMonitor
実装クラス名
com.daipresents.gfmon.MemoryMonitor
名前
MemoryMonitor
監視対象のMBean
user:impl-class-name=com.daipresents.gfmon.MemoryMonitor,name=MemoryMonitor,server=server
監視対象の属性
Logging
HeapMemoryUsageInPercent
GlassFish v2.1 管理ルールの監視タイプメモ
管理ルールで設定できる監視タイプは3つ。
監視する値の種類によって使い分けることができそう。
カウンタ
監視する値が徐々に増える値の場合に使えそう。初期値からモジュラスで設定したXだけ増、さらにXだけ増となったら・・・のような設定ができる。
ゲージ
文字列
GlassFish v2.1で閾値をこえたらログを出す管理ルールを作る
GlassFish Performance Advisor 的なもの、自作しよう、その 2を参考に。
会社でやったときはうんともすんとも動かなかったので、おぎのさんの例を参考に進める。
GlassFish v2.1のOS監視用カスタムMBeanを作るで作ったOSMonitorを監視して、閾値を超えたらログを出力させてみる。
MBeanインタフェース作成
とりあえずこれはいるみたい。IF名の最後をMBeanにすること。
package com.daipresents.gfmon.action; public interface LoggingActionMBean { } Action作成
上で作ったMBeanインタフェースと、NotificationListenerという通知を受信するためのIFを実装する。
handleNotificationというメソッドがあれば、監視されるMBeanではなく、Actionを実行するMBeanと認識しているみたい。
今回はログを出すだけにしているが、閾値を上回ったり下回ったりしたときにActionを変えることもできる。
package com.daipresents.gfmon.action; import javax.management.Notification; import javax.management.NotificationListener; import javax.management.monitor.MonitorNotification; import org.apache.log4j.Logger; public class LoggingAction implements NotificationListener, LoggingActionMBean { private Logger logger = Logger.getLogger(LoggingAction.class); public LoggingAction(){ } public void handleNotification(Notification notification, Object handback) { String observedAttribute = ((MonitorNotification) notification).getObservedAttribute(); String notificationMessage; if (notification.getType().equals(MonitorNotification.THRESHOLD_HIGH_VALUE_EXCEEDED)) { notificationMessage = observedAttribute + ” exceeded high threshold.”; } else { notificationMessage = observedAttribute + ” exceeded low threshold.”; } logger.info(“NOTIFICATION:” + notificationMessage); } } GlassFishへ登録
カスタムMBeanを配備。
実装したActionであるLoggingActionを入力する。
GlassFish v2.1の起動時にCannot bind to URL
GlassFishを起動しなおすと以下のエラーが出た。
[#|2009-03-15T13:59:00.559+0900|SEVERE|sun-appserver2.1|javax.enterprise.system.core|_ThreadID=10;_ThreadName=main;[email protected];com.sun.appserv.server.ServerLifecycleException: Cannot bind to URL [rmi://192.168.0.2:8686/management/rmi-jmx-connector]: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: 192.168.0.2; nested exception is: java.net.ConnectException: Connection refused: connect];_RequestID=281d7895-15b0-44de-b300-552afc58918b;|Service [email protected] cannot be started! : com.sun.appserv.server.ServerLifecycleException: Cannot bind to URL [rmi://192.168.0.2:8686/management/rmi-jmx-connector]: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: 192.168.0.2; nested exception is: java.net.ConnectException: Connection refused: connect]|#] [#|2009-03-15T13:59:00.559+0900|SEVERE|sun-appserver2.1|javax.enterprise.system.core|_ThreadID=10;_ThreadName=main;_RequestID=281d7895-15b0-44de-b300-552afc58918b;|CORE5071: 初期化中にエラーが発生しました com.sun.appserv.server.ServerLifecycleException: Cannot bind to URL [rmi://192.168.0.2:8686/management/rmi-jmx-connector]: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: 192.168.0.2; nested exception is: java.net.ConnectException: Connection refused: connect] at com.sun.enterprise.admin.server.core.JmxConnectorLifecycle.onStartup(JmxConnectorLifecycle.java:153) at com.sun.enterprise.server.ApplicationServer.onStartup(ApplicationServer.java:446) at com.sun.enterprise.server.ondemand.OnDemandServer.onStartup(OnDemandServer.java:134) at com.sun.enterprise.server.PEMain.run(PEMain.java:409) at com.sun.enterprise.server.PEMain.main(PEMain.java:336) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.sun.enterprise.server.PELaunch.main(PELaunch.java:415) Caused by: java.io.IOException: Cannot bind to URL [rmi://192.168.0.2:8686/management/rmi-jmx-connector]: javax.naming.ServiceUnavailableException [Root exception is [...]
GlassFish v2.1のOS監視用カスタムMBeanを作る
楽天でのGlassFishの運用 by
寺田 佳央 (Yoshio Terada)てので、楽天のエンジニアのインタビューが。
そこでも監視のことをが書かれている。
それがまさにわたしたちの欲しいものです。 ・・・中略・・・ アプリケーションサーバの何を監視すべきかなどの提案。
運用監視について、サブスクリプションを購入しない場合は、自分で考えなければならない。なければ作ればいいじゃない!か。
ちょうど、GlassFish Performance Advisor 的なもの、自作しようが昨日書かれていた!
これを参考に作ってみましょう。
その他参考になったサイト GlassFish Project – Self Management – Example rule and related code Using Custom MBeans to Extend the GlassFish Administration System
MBeanインタフェースの実装
インタフェースは必ず最後がMBeanにならないとだめ。?MXBeanでも登録はできたのでOKかも。
package com.daipresents.gfmon; public interface OSMonitorMBean { public double getSystemLoadAverage(); public int getFreePhysicalMemoryInPercent(); public int getFreeSwapSpaceSizeInPercent(); }
おぎのさんのサンプルに合わせてcom.sun.management.OperatingSystemMXBeanでとれる値を定義。
カスタムMBeanの実装
作ったIFを実装する。注意しないといけないのがクラスの名前。OSMonitorMBeanというIFだからOSMonitorMBeanImplとかにしたら、以下のように怒られる。
MBean class com.daipresents.gfmon.OSMBeanImpl does not implement DynamicMBean, neither follows the Standard MBean conventions (javax.management.NotCompliantMBeanException: Class com.daipresents.gfmon.OSMBeanImpl is not a JMX compliant Standard MBean) nor the MXBean conventions (javax.management.NotCompliantMBeanException: com.daipresents.gfmon.OSMBeanImpl: Class com.daipresents.gfmon.OSMBeanImpl is not a JMX compliant MXBean)
クラス名にMBeanが入るとだめなのか?これでかなりの時間はまることに。
下のように、実装したクラスでは、メモリの利用量を計算している。IFを作らずにいきなり「OperatingSystemMXBean」をimplementsしても動いた。
package com.daipresents.gfmon; import java.lang.management.ManagementFactory; [...]
GlassFish v2.1でVista上にクラスタ環境が作れない
GlassFish v2.1をWindows Vistaにインストールでは単一インスタンスでインストールしたんだけど、実はクラスタ構成を試すつもりだった。
しかし、うまくいかなかった。。。
以下はその時のログ。
ノードエージェントとクラスタの作成
setup-cluster.xmlを使ってビルドする。
cd c:\fujihara c:\fujihara>java -Xmx256m -jar glassfish-installer-v2.1-b60e-windows-ml.jar c:\fujihara>ren glassfish glassfish-v21 c:\fujihara>cd glassfish-v21 c:\fujihara\glassfish-v21>lib\ant\bin\ant -f setup-cluster.xml
参考:今日のひとこと クラスタ関連のまとめ
ノードエージェント作成。
c:\fujihara\glassfish-v21>asadmin create-node-agent –host localhost –port 4848 –user admin local-agent コマンド create-node-agent は正常に実行されました。 c:\fujihara\glassfish-v21>asadmin start-node-agent local-agent マスターパスワードを入力してください [デフォルトを使用する場合は Enter キー]:> 出力を C:/fujihara/glassfish-v21/nodeagents/local-agent/agent/logs/server.log にリダイレクトしています アプリケーション出力を C:/fujihara/glassfish-v21/nodeagents/local-agent/agent/logs/server.log にリダイレクトします コマンド start-node-agent は正常に実行されました。
ホスト名が文字化けしたのでノードエージェント>local-agent>JMXでホスト名に「localhost」を入れた。
一旦、ノードエージェントを止める。
asadmin stop-node-agent local-agent
クラスタ作成。
c:\fujihara\glassfish-v21>asadmin create-cluster –host localhost –port 4848 local-cluster コマンド create-cluster は正常に実行されました。
インスタンス作成。
c:\fujihara\glassfish-v21>asadmin create-instance –host localhost –port 4848 –nodeagent local-agent –cluster local-cluster instance1 コマンド create-instance は正常に実行されました。 c:\fujihara\glassfish-v21>asadmin create-instance –host localhost –port 4848 –nodeagent local-agent –cluster local-cluster instance instance2 HTTP_LISTENER_PORT の代わりに 38,081 を使用します。 HTTP_SSL_LISTENER_PORT の代わりに 38,182 を使用します。 IIOP_SSL_LISTENER_PORT [...]
GlassFish v2.1をWindows Vistaにインストール
Windows Vista環境にGlassFish v2.1ファイナルビルドをインストールしてみる。インストールした場所は「c:\fujihara」。
インストールから起動まで
GlassFish のアンバンドルと設定方法を見ながら以下のコマンドを実行。
cd c:\fujihara c:\fujihara>java -Xmx256m -jar glassfish-installer-v2.1-b60e-windows-ml.jar c:\fujihara>ren glassfish glassfish-v21 c:\fujihara>cd glassfish-v21 c:\fujihara\glassfish-v21>lib\ant\bin\ant -f setup.xml
ビルドはこれで完了。次にGlassFish クイックスタートガイドを見ながら単一インスタンスモードで起動。
まず「install-dir/bin」 ディレクトリを PATH 環境変数に追加。そして起動。
c:\fujihara\glassfish-v21>asadmin start-domain domain1
「http://localhost:8080/」にアクセスして起動を確認。
GlassFishの運用監視ってみんなどうやってんの?
GlassFish V2 UR2のSystem Application Server Admin Consoleでもちらりと書いたんだけど、GlassFishの管理画面はすげーいい。
でも、監視とかそういうものはちょっと足りない感がある。
そろそろ使われるようになってきたのかと、ちょっと調べてみたら、「GlassFish Enterprise Manager」たるものがキーワードといてひっかかる。
Sunが打ち出す主要OSSポートフォリオ”GlassFish”の新戦略 by マイコミジャーナルでは以下のように説明されている。
GlassFsih Enterprise Server v2.1(以下、GlassFish ES)は、GlassFish v2系列の最新のリリースをベースにSunによるサポートを追加したアプリケーションサーバ。
OSSのGlassFishのSun製品(有償)のSun Java System Application Serverの後継らしい。
このGlassFish ESには「付加機能としてサブスクライバのみに提供される」以下のパッケージがあるらしい。(リンク先はすべてogino’s blogさん)
Performance Advisor Performance Monitor SNMP Monitor Performance Advisor
Performance Advisorは管理コンソールへのプラグイン。
Performance Advisor サーバチューニング支援では、サーバのCPU数、メモリ量を入れると、最適な設定を教えてくれるツール。
WebLogicとかはドキュメント見ながら最適な値を探したりしたけど、こういうのってサービスの種類によって似通っているので、こういうのがあればいいガイドラインになりそう。
Performance Advisor サーバ監視では、「なんかあったらなんかする」もの。以下のようなことができるらしい。
物理メモリーに関する警告 メモリリークに関する警告 CPU使用量の傾向に関する警告 スループットに関する警告 GC停止時間に関する警告 ログエントリに関する警告
「なんかあったら」がこれになる。「なんかする」はログ出力やメール送信になるらしい。
このサーバ監視はまさに欲しい機能(でも有償・・・)。
Performance Monitor
Performance MonitorはVisualVM ベースのスタンダロンアプリケーション。JDKのVisualVMより高機能というのが売り。これだと簡単にグラフィカルに監視できる。
多分、これは、過去どこまでもさかのぼれるものではなく、このツールを開いてからの状況になるのかなー。また、ここでも監視の設定を「High」とかにできるなら、Performance Advisorと一緒にできるのでは・・・。
SNMP Monitoring
SNMP Monitoringはwarファイルでデプロイして使うらしい。
これでは、
GlassFish インスタンスの様々な情報を SNMP で取得することができるようになります。
らしい。
その他
「Java SE 6完全攻略」第3回 jconsoleの機能向上 by ITProのように、JMXやjconsoleでも確認できる。
まとめ
有償でいいなら結構なものがある。
しかし、それ以外は自分で実装するか、jconsoleやVisualVMとかを使うしかないようだ。
GlassFish V2 UR2とNetBeans IDE6.1の連携
GlassFishとNetBeansを、それぞれ単体でインストールした場合の設定。NetBeansからGlassFishを操作できるように設定する。
NetBeansにGlassFishサーバを追加する
ツール>サーバ
サーバを追加>GlassFish V2>次へ
以下を入力して次へ
プラットフォームの場所:C:\glassfish ローカルのデフォルトドメインを登録:自動で選択される
パスワードを聞かれるので、デフォルトのユーザ「admin」、パスワード「adminadmin」を入力して完了。
サーバの一覧にGlassFish V2が表示される。
JSFを表示してみる
Webアプリケーションのプロジェクトを作ると、自動で「welcomeJSF.jsp」というページを作ってくれる。これを右クリックして、「ファイルを実行」とすると、GlassFishが起動してファイルが実行される。
GlassFish V2 UR2のSystem Application Server Admin Console
GlassFishの管理画面は「http://localhost:4848/」。ユーザ名「admin」、パスワード「adminadmin」でログインできる。
フリーとは思えないぐらい充実していた。
抜粋して以下の内容が設定できる。
データソース サーバーログの出力設定 アクセスログの設定 アプリのデプロイ、起動、停止 JVM設定 スレッドプールの上限設定 キープアライブ、接続プール設定
WebLogicで触ったことがあるところは大体さわれる。商用レベルで使えそうなら、WLよりぜんぜんよさそうだなー。
GlassFish V2 UR2を単品でインストールしてみる
インストール環境はWindowsXPで「C:\」にいれるとする。
インストール
ダウンロードしたJarファイルを「C:\」に置いて、コマンドプロンプトを起動。
cd c:\ java -Xmx256m -jar glassfish-installer-v2ur2-b04-windows-ml.jar
ライセンスの画面が出るので同意して進むと「c:\glassfish」というフォルダにインストールされる。ライセンスの画面はDOS窓とは別にでるはずなので、ウィンドウを全部小さくすればみつかるはず。
展開したフォルダに移動して以下を実行。
cd glassfish lib\ant\bin\ant -f setup.xml
クラスタ構成にする場合は「setup-cluster.xml」が入力となる。
以下のエラーが出た場合は、環境変数「JAVA_HOME」、値「C:\Program Files\Java\jdk1.6.0_06」を追加(値は各環境に合わせてね)。
BUILD FAILED C:\glassfish\setup.xml:156: The following error occurred while executin C:\glassfish\setup.xml:136: The following error occurred while executin C:\glassfish\setup.xml:132: Please set java.home to a JDK installation
antに成功すると以下のメッセージがでる。
BUILD SUCCESSFUL Total time: 1 minute 20 seconds
これでインストールは完了なので、サーバを起動してみる。
asadmin start-domain domain1
起動後に、以下のURLにアクセスして、画面が表示されれば成功。
http://localhost:8080/
動作確認
http://glassfish.dev.java.net/downloads/quickstart/hello.warからサンプルのwarファイルをダウンロードして、「C:\glassfish\domains\domain1\autodeploy」に配置する。
そして「http://localhost:8080/hello」にアクセスすると、サンプルアプリが見れるはず。autodeployフォルダに置くだけでWarファイルが展開、配備される。デプロイは「hello.war_deployed」ファイルで管理しているみたいに見えた。ちなみにWarファイルを削除すると「hello.war_undeployed」となった。
GlassFish V2 UR2のことはじめ
GlassFish v2 ur2は「Sun Java System Application Server 9.1」のことらしい。
・glassfish: GlassFish – Open Source Application Server
Javaを入れたら勝手にAPサーバが入るのは気が付いていたが、Tomcatが楽だもーんと思っていたので使う機会がなかった。しかし、JavaEE5の勉強を兼ねて、NetBeansとGlassFishとちょこっとTomcatを使ってみようと思う。
インストール
NetBeans IDE6.1インストールでまとめていれた。
プロジェクト作成
NetBeansでプロジェクトを作成する。NetBeansはv6.1。
ファイル>新規プロジェクトを選び、カテゴリからWebを選択。プロジェクトはWebアプリケーション。次へをクリックして、プロジェクト名(ここではgftest)を入れる。プロジェクトの場所は適当。
サーバと設定でGlassFishV2、JavaEE5を選択。次へをクリック。
フレームワークはとりあえずJavaEE5の機能を勉強するので、「Visual Web JavaServer Faces」と、「JavaServer Faces」を選択。
完了をクリック。
ページを書いてみる
VBのようにつくれるみたいなので、作成されたPage1.jspに静的テキストを配置。「こんにちは世界」とか書いてみる。
実行>主プロジェクトを実行とすると、NetBeans下の出力に以下のようにでた。
配備エラー: サーバー GlassFish V2 の起動はサポートされていません。 手動でサーバーを起動してください。 詳細は、サーバーのログファイルを参照してください。
手動で起動なのか。。。と思いながら「GlassFish クイックスタートガイド」を見てみる。するとGlassFish Project – NetBeans IDE integrationというのを見ろとあるがNetBeans5の情報だったのであきらめ。
クイックスタートガイドの起動方法で起動してみる。コマンドプロンプトを開いて以下のコマンドを打つ。
cd C:\Program Files\glassfish-v2ur2\bin asadmin.bat start-domain domain1
すると起動が始まり、以下のログで終わった。
Domain listens on at least following ports for connections: [8080 8181 4848 3700 3820 3920 8686 ]. Domain does not support application server clusters and other standalone instances.
ログに出ている管理コンソールのURL(http://localhost:4848)とユーザアプリケーションのURL(http://localhost:8080)を叩いてみると、画面が表示されるので成功。逆に止める場合は、「asadmin.bat stop-domain domain1」と打つべし。しっかし、管理画面はめっちゃかっこいい。
これで主プロジェクトを実行しても「配備エラー」となった。
GlassFishを別に入れて、サーバ設定してやるとうまくいった。
参考
・GlassFishではじめるアプリケーションサーバのかんたん構築 by Sun
・オープンソースの高機能アプリケーションサーバ、いよいよ日本語版が登場 by [...]
僕について
Dai Fujihara
A hero can be anyone.
藤原大はマネージャでありアジャイル実践者だ。そして、プロジェクトリーダー、チェンジ・エージェント、アジャイルコーチ、トレーナーでもある。彼はまたRedmine、Jenkinsといった開発を支援するツール環境の整備や、アジャイル開発を活用した創造的なソフトウェア開発の支援を行っている。さらに、趣味は沖縄離島巡りらしい。
ここ最近の人気
開発ツールを使うと「思いやり」が減る(前半) #swat… 968 view(s)
3年使ったRedmineの使い方について共有したい10の… 454 view(s)
開発ツールを使うと「思いやり」が減る(後半) #swat… 411 view(s)
社会人10年目をなんとか乗り越えたからエールを贈る… 384 view(s)
チームとタワーを創造せよ!マシュマロチャレンジでチームビ… 274 view(s)
Javaで入力チェックに使える正規表現まとめ… 192 view(s)
Redmineプラグイン開発 – 史上最高のチームプラグ… 148 view(s)
LinkStationのようなNASを買ってもバックアッ… 116 view(s)
Redmineプラグイン開発 – パーキングロットチャー… 97 view(s)
BOOKSCANで本を電子化した結果レビューと注意してお… 96 view(s)
永久保存の本
Jonathan Rasmusson (著), 西村 直人 (翻訳), 角谷 信太郎 (翻訳)
アジャイルサムライ―それはソフトウェアを顧客に届ける猛々しきプロフェッショナルだ。本書では、圧倒的なアジャイルプロジェクトの姿を見せる。2011年爆発的にヒットしたアジャイル開発に情熱を持つエンジニアに届けたい本。
Mike Cohn (著), マイク コーン (著), 安井 力 (翻訳), 角谷 信太郎 (翻訳)
採用した現在のタイトルは、見積りや計画づくりといったプロセスを、アジャイルに進めなければならないと謳っているのだ。見積りと計画づくりがアジャイルでないのに、プロジェクトがアジャイルであるということはありえない。(イントロダクションより)
Venkat Subramaniam (著), Andy Hunt (著), 木下 史彦 (監訳), 角谷 信太郎 (監訳)
アジャイルな習慣とは一体何なのか?本書ではプラクティスを交えながら、その姿勢を読者に問いかけている。世代や役割をこえて色褪せない「アジャイル」に対する良書。Amazonレビュー
メアリー・ポッペンディーク (著), トム・ポッペンディーク (著), 高嶋 優子 (翻訳), 天野 勝 (翻訳), 平鍋 健児 (翻訳)
「トヨタ生産方式」を源流にする「リーン開発」をソフトウエア開発に取り入れるための具体的方法を紹介した本です。本書は、リーンの7大原則を「価値」「ムダ」「スピード」「人」「知識」「品質」「パートナー」に整理し、ソフト開発現場にどうしたら効果的に適用できるかを、多くの実例を交えながら具体的に説明します。
タグ
Agile ant Apache bash Eclipse GlassFish install Java Javascript kobo Linux log4j Management Maven Open Source PHP Pukiwiki Python Redmine Ruby Ruby on Rails Scrum Spring Struts Struts2 Subversion Test Tomcat Trac VBA Web WebDriver WebLogic Windows WordPress 働く 勉強会 嫁(ベータ) 思い出し笑う 我思う 旅する 映画/ドラマ 英語を話す 読むと聞く 過去を語るアーカイブ









