そごうソフトウェア研究所

SOA、開発プロセス、ITアーキテクチャなどについて書いています。Twitterやってます@rsogo

Mule ESB 3.6起動

Mule 3.7での同エントリを書きました。

Mule ESB 3.7起動 - そごうソフトウェア研究所


Mule ESB 3.6をしばらく触ってみようと思います。 環境はOSX 10.10.4です。

Mule ESB 3.6ダウンロード

今回はMule Community Editionでできることを調査しようと思います。 でもマニュアルにあるMule CEのダウンロードのリンクから移動しても、このEnterprise版のダウンロードページに飛ばされてしまいます。要確認だけど、取りあえず、こちらに含まれるStandaloneだけを使います。

Try Mule | MuleSoft

Muleの起動

mmc-distribution-mule-console-bundle-3.6.1.zipを解凍します。

MMCなども入っていますが、Runtimeモジュールのbinフォルダに移動します。

$ cd mmc-distribution-mule-console-bundle-3.6.1/mule-enterprise-3.6.1/bin

起動コマンドを実行します。 $ ./mule

起動ログ

いろんなソフトウェアをやっているとログは読み物だなと、思います。 ログを根気よく読むとソフトウェアが何をやっているのかが分かる。

$ ./mule 
MULE_HOME is set to /Users/rsogo/work/mmc-distribution-mule-console-bundle-3.6.1/mule-enterprise-3.6.1
Running in console (foreground) mode by default, use Ctrl-C to exit...
MULE_HOME is set to /Users/rsogo/work/mmc-distribution-mule-console-bundle-3.6.1/mule-enterprise-3.6.1
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
Running Mule Enterprise Edition...
--> Wrapper Started as Console
Java Service Wrapper Standard Edition 32-bit 3.5.19
  Copyright (C) 1999-2013 Tanuki Software, Ltd. All Rights Reserved.
    http://wrapper.tanukisoftware.com
  Licensed to mulesoft.com for Mule ESB Enterprise Edition

Launching a JVM...
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8

Valid license key --> Evaluation = true, Expiration Date = Mon Aug 03 00:00:00 JST 2015, Contact Name = MuleSource Support, Contact Email Address = support@mulesource.com, Contact Telephone = support@mulesource.com, Contact Company = MuleSource, Contact Country = US, Entitlements = 

Starting the Mule Container...
WrapperManager: Initializing...
INFO  2015-07-04 06:56:00,050 [WrapperListener_start_runner] org.mule.module.launcher.MuleContainer: 
**********************************************************************
* Mule ESB and Integration Platform                                  *
* Version: 3.6.1 Build: 0758df2b                                     *
* MuleSoft, Inc.                                                     *
* For more information go to                                         *
* http://www.mulesoft.com/mule-esb-enterprise                        *
*                                                                    *
* Server started: 15/07/04 6:56                                      *
* JDK: 1.7.0_71 (mixed mode)                                         *
* OS: Mac OS X (10.10.4, x86_64)                                     *
* Host: Ryohei-no-MacBook-Pro.local (192.168.11.5)                   *
**********************************************************************
INFO  2015-07-04 06:56:00,089 [WrapperListener_start_runner] org.mule.module.launcher.coreextension.DefaultMuleCoreExtensionManager: Initializing core extensions
INFO  2015-07-04 06:56:00,125 [WrapperListener_start_runner] com.mulesoft.mule.cluster.hazelcast.config.ClusterTicketFileLoader: /Users/rsogo/work/mmc-distribution-mule-console-bundle-3.6.1/mule-enterprise-3.6.1/.mule/mule-cluster.properties (No such file or directory)
WARN  2015-07-04 06:56:00,131 [WrapperListener_start_runner] com.mulesoft.mule.cluster.boot.ClusterCoreExtension: No cluster ID was specified -- High Availability will be disabled:
INFO  2015-07-04 06:56:00,250 [WrapperListener_start_runner] com.mulesoft.mule.plugin.manager.MulePluginManager: Registering plugin: mule-plugin-debugger-3.6.0-RC1
INFO  2015-07-04 06:56:00,274 [WrapperListener_start_runner] org.mule.lifecycle.AbstractLifecycleManager: Initialising: 'Mule Agent Core Extension'. Object is: AgentCoreExtension
INFO  2015-07-04 06:56:00,453 [WrapperListener_start_runner] org.mule.lifecycle.AbstractLifecycleManager: Initialising RegistryBroker
WARN  2015-07-04 06:56:00,721 [WrapperListener_start_runner] org.mule.module.ognl.expression.OgnlExpressionEvaluator: OGNL module is deprecated and will be removed in Mule 4.0. Use MEL expressions instead.
INFO  2015-07-04 06:56:01,261 [WrapperListener_start_runner] org.mule.config.processors.DecoratingAnnotatedServiceProcessor: org.mule.config.AnnotationsParserFactory implementation not found in registry, annotations not enabled
INFO  2015-07-04 06:56:01,863 [WrapperListener_start_runner] org.mule.util.journal.TransactionJournal: Using files for tx logs /Users/rsogo/work/mmc-distribution-mule-console-bundle-3.6.1/mule-enterprise-3.6.1/./.mule/.agent/queue-tx-log/tx1.log and /Users/rsogo/work/mmc-distribution-mule-console-bundle-3.6.1/mule-enterprise-3.6.1/./.mule/.agent/queue-tx-log/tx2.log
INFO  2015-07-04 06:56:01,883 [WrapperListener_start_runner] org.mule.util.journal.TransactionJournal: Using files for tx logs /Users/rsogo/work/mmc-distribution-mule-console-bundle-3.6.1/mule-enterprise-3.6.1/./.mule/.agent/queue-xa-tx-log/tx1.log and /Users/rsogo/work/mmc-distribution-mule-console-bundle-3.6.1/mule-enterprise-3.6.1/./.mule/.agent/queue-xa-tx-log/tx2.log
INFO  2015-07-04 06:56:01,885 [WrapperListener_start_runner] org.mule.util.journal.TransactionJournal: Using files for tx logs /Users/rsogo/work/mmc-distribution-mule-console-bundle-3.6.1/mule-enterprise-3.6.1/./.mule/.agent/queue-tx-log/tx1.log and /Users/rsogo/work/mmc-distribution-mule-console-bundle-3.6.1/mule-enterprise-3.6.1/./.mule/.agent/queue-tx-log/tx2.log
INFO  2015-07-04 06:56:01,886 [WrapperListener_start_runner] org.mule.util.journal.TransactionJournal: Using files for tx logs /Users/rsogo/work/mmc-distribution-mule-console-bundle-3.6.1/mule-enterprise-3.6.1/./.mule/.agent/queue-xa-tx-log/tx1.log and /Users/rsogo/work/mmc-distribution-mule-console-bundle-3.6.1/mule-enterprise-3.6.1/./.mule/.agent/queue-xa-tx-log/tx2.log
INFO  2015-07-04 06:56:01,945 [WrapperListener_start_runner] org.mule.lifecycle.AbstractLifecycleManager: Initialising model: _muleSystemModel
INFO  2015-07-04 06:56:02,113 [WrapperListener_start_runner] org.mule.module.launcher.coreextension.DefaultMuleCoreExtensionManager: Starting core extensions
INFO  2015-07-04 06:56:02,113 [WrapperListener_start_runner] org.mule.lifecycle.AbstractLifecycleManager: Starting: 'Mule Agent Core Extension'. Object is: AgentCoreExtension
INFO  2015-07-04 06:56:02,114 [WrapperListener_start_runner] org.mule.util.queue.QueueXaResourceManager: Starting ResourceManager
INFO  2015-07-04 06:56:02,114 [WrapperListener_start_runner] org.mule.util.queue.QueueXaResourceManager: Started ResourceManager
INFO  2015-07-04 06:56:02,128 [WrapperListener_start_runner] org.mule.modules.oauth2.provider.agents.DefaultSplashScreenAgent: 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ DevKit Extensions (0) used in this application 
                             +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
INFO  2015-07-04 06:56:02,129 [WrapperListener_start_runner] org.mule.lifecycle.AbstractLifecycleManager: Starting model: _muleSystemModel
INFO  2015-07-04 06:56:02,137 [WrapperListener_start_runner] org.mule.module.management.agent.WrapperManagerAgent: Mule is embedded in a container already launched by a wrapper.Duplicates will not be registered. Use the org.tanukisoftware.wrapper:type=WrapperManager MBean instead for control.
INFO  2015-07-04 06:56:02,153 [WrapperListener_start_runner] org.mule.DefaultMuleContext: 
**********************************************************************
* Application: .agent                                                *
* OS encoding: /, Mule encoding: UTF-8                               *
*                                                                    *
* Agents Running:                                                    *
*   DevKit Extension Information                                     *
*   Batch module default engine                                      *
*   Clustering Agent                                                 *
*   JMX Agent                                                        *
**********************************************************************
INFO  2015-07-04 06:56:02,158 [WrapperListener_start_runner] org.eclipse.jetty.server.Server: jetty-9.0.7.v20131107
INFO  2015-07-04 06:56:02,371 [WrapperListener_start_runner] /mmc-support: Initializing Spring root WebApplicationContext
INFO  2015-07-04 06:56:02,371 [WrapperListener_start_runner] org.springframework.web.context.ContextLoader: Root WebApplicationContext: initialization started
INFO  2015-07-04 06:56:02,515 [WrapperListener_start_runner] org.springframework.web.context.support.XmlWebApplicationContext: Refreshing Root WebApplicationContext: startup date [Sat Jul 04 06:56:02 JST 2015]; root of context hierarchy
INFO  2015-07-04 06:56:03,163 [WrapperListener_start_runner] org.springframework.web.context.support.ServletContextAttributeExporter: Exported ServletContext attribute with name 'discoveryEngine'
INFO  2015-07-04 06:56:03,472 [WrapperListener_start_runner] org.quartz.core.SchedulerSignalerImpl: Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
INFO  2015-07-04 06:56:03,473 [WrapperListener_start_runner] org.quartz.core.QuartzScheduler: Quartz Scheduler v.1.8.5 created.
INFO  2015-07-04 06:56:03,475 [WrapperListener_start_runner] org.quartz.simpl.RAMJobStore: RAMJobStore initialized.
INFO  2015-07-04 06:56:03,476 [WrapperListener_start_runner] org.quartz.core.QuartzScheduler: Scheduler meta-data: Quartz Scheduler (v1.8.5) 'scheduler' with instanceId 'NON_CLUSTERED'
  Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
  NOT STARTED.
  Currently in standby mode.
  Number of jobs executed: 0
  Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
  Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.

INFO  2015-07-04 06:56:03,477 [WrapperListener_start_runner] org.quartz.impl.StdSchedulerFactory: Quartz scheduler 'scheduler' initialized from an externally provided properties instance.
INFO  2015-07-04 06:56:03,477 [WrapperListener_start_runner] org.quartz.impl.StdSchedulerFactory: Quartz scheduler version: 1.8.5
INFO  2015-07-04 06:56:03,479 [WrapperListener_start_runner] org.quartz.core.QuartzScheduler: JobFactory set to: org.springframework.scheduling.quartz.AdaptableJobFactory@5e8db999
INFO  2015-07-04 06:56:03,555 [WrapperListener_start_runner] org.springframework.context.support.DefaultLifecycleProcessor: Starting beans in phase 2147483647
INFO  2015-07-04 06:56:03,555 [WrapperListener_start_runner] org.springframework.scheduling.quartz.SchedulerFactoryBean: Starting Quartz Scheduler now
INFO  2015-07-04 06:56:03,556 [WrapperListener_start_runner] org.quartz.core.QuartzScheduler: Scheduler scheduler_$_NON_CLUSTERED started.
INFO  2015-07-04 06:56:03,569 [WrapperListener_start_runner] org.springframework.web.context.ContextLoader: Root WebApplicationContext: initialization completed in 1197 ms
INFO  2015-07-04 06:56:03,651 [WrapperListener_start_runner] /mmc-support: Initializing Spring FrameworkServlet 'api'
INFO  2015-07-04 06:56:03,651 [WrapperListener_start_runner] org.springframework.web.servlet.DispatcherServlet: FrameworkServlet 'api': initialization started
INFO  2015-07-04 06:56:03,657 [WrapperListener_start_runner] org.springframework.web.context.support.XmlWebApplicationContext: Refreshing WebApplicationContext for namespace 'api-servlet': startup date [Sat Jul 04 06:56:03 JST 2015]; parent: Root WebApplicationContext
INFO  2015-07-04 06:56:03,900 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v3/muleContextService] onto handler '/v3/muleContextService'
INFO  2015-07-04 06:56:03,901 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v3/muleConfigurationService] onto handler '/v3/muleConfigurationService'
INFO  2015-07-04 06:56:03,901 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v3/wrapperManagerService] onto handler '/v3/wrapperManagerService'
INFO  2015-07-04 06:56:03,901 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v3/auditService] onto handler '/v3/auditService'
INFO  2015-07-04 06:56:03,901 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v3/flowService] onto handler '/v3/flowService'
INFO  2015-07-04 06:56:03,902 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v3_1/clusterNodeService] onto handler '/v3_1/clusterNodeService'
INFO  2015-07-04 06:56:03,902 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v3/trackingService] onto handler '/v3/trackingService'
INFO  2015-07-04 06:56:03,902 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v1/systemFileService] onto handler '/v1/systemFileService'
INFO  2015-07-04 06:56:03,902 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v1/muleFileService] onto handler '/v1/muleFileService'
INFO  2015-07-04 06:56:03,902 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v1/threadsService] onto handler '/v1/threadsService'
INFO  2015-07-04 06:56:03,903 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v1/memoryService] onto handler '/v1/memoryService'
INFO  2015-07-04 06:56:03,903 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v3/statusService] onto handler '/v3/statusService'
INFO  2015-07-04 06:56:03,903 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v1/jmxService] onto handler '/v1/jmxService'
INFO  2015-07-04 06:56:03,903 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v3/poolService] onto handler '/v3/poolService'
INFO  2015-07-04 06:56:03,903 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v1/statisticsService] onto handler '/v1/statisticsService'
INFO  2015-07-04 06:56:03,903 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v3/statisticsService] onto handler '/v3/statisticsService'
INFO  2015-07-04 06:56:03,904 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v3/systemService] onto handler '/v3/systemService'
INFO  2015-07-04 06:56:03,904 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v1/alertService] onto handler '/v1/alertService'
INFO  2015-07-04 06:56:03,904 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v1/slaService] onto handler '/v1/slaService'
INFO  2015-07-04 06:56:03,904 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v3/applicationService] onto handler '/v3/applicationService'
INFO  2015-07-04 06:56:03,904 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v3/applicationLogService] onto handler '/v3/applicationLogService'
INFO  2015-07-04 06:56:04,122 [WrapperListener_start_runner] org.springframework.web.servlet.DispatcherServlet: FrameworkServlet 'api': initialization completed in 471 ms
INFO  2015-07-04 06:56:04,127 [WrapperListener_start_runner] /mmc-support: AgentServlet: Starting MMC Agent.
INFO  2015-07-04 06:56:04,129 [WrapperListener_start_runner] /mmc-support: AgentServlet: Initialized com.mulesoft.mmc.agent.web.AgentServlet@f51d94d with ID c71a8cd9-dc7e-4750-bc51-d1faf204ceea


INFO  2015-07-04 06:56:10,825 [WrapperListener_start_runner] org.eclipse.jetty.server.handler.ContextHandler: Started o.e.j.w.WebAppContext@2046bc37{/mmc-support,jar:file:/Users/rsogo/work/mmc-distribution-mule-console-bundle-3.6.1/mule-enterprise-3.6.1/lib/mule/mmc-agent-impl-3.6.1.jar!/mmc-support-app,AVAILABLE}
INFO  2015-07-04 06:56:10,839 [WrapperListener_start_runner] org.eclipse.jetty.server.ServerConnector: Started ServerConnector@b094e09{HTTP/1.1}{0.0.0.0:7777}
INFO  2015-07-04 06:56:10,862 [WrapperListener_start_runner] org.eclipse.jetty.server.ServerConnector: Stopped ServerConnector@b094e09{HTTP/1.1}{0.0.0.0:7777}
INFO  2015-07-04 06:56:10,966 [WrapperListener_start_runner] org.eclipse.jetty.server.ServerConnector: Started ServerConnector@44e995bf{SSL-HTTP/1.1}{0.0.0.0:7777}
INFO  2015-07-04 06:56:10,967 [WrapperListener_start_runner] com.mulesoft.mmc.agent.AgentCoreExtension: Mule Agent Core Extension listening on (0.0.0.0:7777)
INFO  2015-07-04 06:56:10,972 [WrapperListener_start_runner] org.mule.module.launcher.DefaultArchiveDeployer: ================== New Exploded Artifact: default
INFO  2015-07-04 06:56:10,980 [WrapperListener_start_runner] org.mule.module.launcher.MuleSharedDomainClassLoader: Using domain dir /Users/rsogo/work/mmc-distribution-mule-console-bundle-3.6.1/mule-enterprise-3.6.1/domains/default for domain default
INFO  2015-07-04 06:56:11,077 [WrapperListener_start_runner] org.mule.module.launcher.MuleDeploymentService: 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Started domain 'default'                                 +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
INFO  2015-07-04 06:56:11,079 [WrapperListener_start_runner] org.mule.module.launcher.DefaultArchiveDeployer: ================== New Exploded Artifact: default
INFO  2015-07-04 06:56:11,101 [WrapperListener_start_runner] org.mule.module.launcher.application.DefaultMuleApplication: 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ New app 'default'                                        +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
INFO  2015-07-04 06:56:12,140 [WrapperListener_start_runner] org.mule.module.launcher.MuleDeploymentService: 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Started app 'default'                                    +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
INFO  2015-07-04 06:56:12,192 [WrapperListener_start_runner] org.mule.module.launcher.DeploymentDirectoryWatcher: 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Mule is up and kicking (every 5000ms)                    +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
INFO  2015-07-04 06:56:12,207 [WrapperListener_start_runner] org.mule.module.launcher.StartupSummaryDeploymentListener: 
**********************************************************************
*              - - + DOMAIN + - -               * - - + STATUS + - - *
**********************************************************************
* default                                       * DEPLOYED           *
**********************************************************************

*******************************************************************************************************
*            - - + APPLICATION + - -            *       - - + DOMAIN + - -       * - - + STATUS + - - *
*******************************************************************************************************
* default                                       * default                        * DEPLOYED           *
*******************************************************************************************************

Enterprise UX 2015 その他

Enterprise UXは今年が初回だったのですが、Texas州のSan Antonioという町で開催されました。 東京からはHouston経由で行きました。US中部時間で日本との時差はー14時間。

テキサスが独立国だったころ、メキシコからの攻撃を守り切ったアラモ砦というのが有名で、アメリカの中ではメジャーな観光地のようです。 f:id:begirama:20150513175657j:plain f:id:begirama:20150513181033j:plain f:id:begirama:20150513181933j:plain

f:id:begirama:20150513122828j:plain 初日のランチ。なんで、緑茶がシトラスと砂糖味なんでしょうね。

セッションの動画が公開されました。 vimeo.com

Enterprise UX 2015 2日目

Lean Engineering: Principles for Enabling Build/Measure/Learn in the Enterprise

Bill Scott

Paypalの人。 Lean Engineeringという開発チームが学習していくプロセスを紹介してました。

これは自社でも活かせそう。

How to Coach Enterprise Experimentation

Alissa Briggs

Lean Experienceというのは知らなかったです。いろいろ方法論が紹介されましたが、下記がさくっとまとまっていました。 Top 5 Lean Startup Experiment Examples

Innovation Studios: the Engines of Enterprise

Jeff Gothelf

LEAN UXの著者。 企業の中でイノベーションを起こすときにどうするか、という話し。

ハッカソンは楽しいけど、一時的なものでしかないよ。

会社横断の取り組みとして、Adobe Kickboxが引用されていました。

どれも難しいけど、Innovation Studioがまだましかな、と。

A Consistent Culture of Design

Phil Gilbert

IBM Design: design in motionの偉い人。

IBM Design Languageというのを作っていて、Design Thinkingのフレームワークや、フォントサイズやカラーパレットなどのリソース、サンプルが公開されています。 www.ibm.com

Case Study: Citrix and Corporate Change

Julie Baher

Citrixの会社の変革の話し。初日のキーノートの細かいストーリー。

Qualitative Approaches and Enterprise Outcomes

Nathan Shedroff

そして、このHR。強そう。

Liminal Thinking: Sense-making for systems in large organizations

Dave Gray

Enterprise UX 2015 1日目

5月13日から15日までEnterprise UX 2015がSan Antonioであって、参加してきました。 アメリカ中のいろんなところから参加者が集まってましたが、日本からはNCDCからの3名だけでした。

講師は有名な人が多くて、参考になることも多かったです。 ITmediaのブログの方に、感想などまとめますが、こちらにはログ的に生情報をばんばん上げていきます。

スケジュール

Schedule | Enterprise UX 2015

とにかく、海外のカンファレンスは朝が早い。朝食もランチも付いてる。 この日も7時にホテルのロビーに集合して、出発しました。

The Enterprise UX Journey: Lessons learned and the journey ahead

Catherine Courage

キーノート。 CitrixのCXのExecutive。

Customer Experienceの向上を、CEOの旗振りのもとやってますよーという話し。 UIやデザインの話しは1枚くらいしかなくて、会社全体での顧客体験についてでした。 製品も、マーケティングも、出荷も全部対象にしている。 すごく良かった。

f:id:begirama:20150513091636j:plain

終わった後に、参加者からUXとCXの違いはなにか?という質問があって、「会社全体のCXがあって、その中に購入者のUX、エンドユーザーのUXのようにペルソナごとのUXがあるんだよ。」という回答でした。

Insight Types That Influence Enterprise Decision Makers

Christian Rohrer

f:id:begirama:20150513102204j:plain

Intel Securityで、ソフトウェアのUXを担当している。 マカフィーってIntelに買収されたんですね。

SecurityとすばらしいUser Experienceは接点少ないよ、と自虐ネタ。

企業向けのソフトウェアの場合、UXの対象はエンドユーザーだけではなくて、ソフトウェアの購入のキーマンや、システム管理者も考えないと行けない。

UX Researchは沢山あって、対象に合わせてどのメソッドを使うかは選択すること。 www.nngroup.com

Data Science and Design: A Tale of Two

Chris Chapo

データサイエンスと、デザインの関係について。

f:id:begirama:20150513105132j:plain

Emotion Economy: Ethnography as Corporate Strategy

Kelly Goto

f:id:begirama:20150513111653j:plain

The Architecture of Understanding

Peter Morville

オライリーのIAの本を書いている人。

f:id:begirama:20150513135226j:plain

  • 資料

Next Generation Design Systems

David Cronin

GEの取り組み。 Design Systemということで、GEで使用するデザインのマテリアルや、部品をリポジトリを作っている。検索したけど、公開してないのかなー。

部品にはPSDもあれば、CSSもある。

個人的に参考になった初日No1の内容。

X11 ForwardingとOSX、Windowsからのリモート接続の話し

普段、X11はあまり使いませんが、今回、Oracle Databaseをサーバーにセットアップする必要があったので、OUIのために環境を用意しました。

環境は、社外のデータセンターのサーバーで、自宅から接続するため、SSHでトンネリングして、X11を使う必要がありました。

f:id:begirama:20150301225021p:plain

やりかたは複数

  1. CygwinX(Windows)やXQuartz(OSX)でSSHの-Xオプションを使う
  2. CygwinXやXmingのようなX ServerとPuttyや、TeraTermのようなX11フォーワーディングの設定ができるSSHクライアントを組み合わせる

サーバー側の設定

X11 Forwardingの設定が有効になっているか確認。

netstatで確認すると、リモートサーバー側で6000+オフセットの値のポートがリッスンされています。下の例だと、オフセットが10で設定されている。

$ netstat -tan
Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address               Foreign Address             State    
tcp        0      0 0.0.0.0:6010                0.0.0.0:*                   LISTEN  

DISPLAY変数は設定しなくても、自動で設定されます。

$ env | grep DISPLAY
DISPLAY={Remote Server}:10.0

仕組みとしては、リモートサーバー側のDISPLAYで受けて、SSH経由でローカルPCのDIPLAYに転送してくれるようです。

次、クライアント側の設定です

1. CygwinX(Windows)やXQuartz(OSX)でSSHの-Xオプションを指定する

ssh -X -v {User}@{Remote Server}

-Xを付けるとForwardingが有効となります。 -vを付けることで、詳細なメッセージがでるため、上手く利用できない場合は、-vを付けてエラーの内容を見ていきます。

この状態で、Xが必要なプログラムを実行すると、ウィンドウが立ち上がります。

もともとこのやり方で、OSX環境でやろうとしていました。 が、問題がありました。この方法でOracle DBのOUIを実行した場合、ボタンなどのUIコンポーネントを操作することができませんでした。xeyeなんかは普通に実行できたので、アプリケーションの作りによって相性がありそうです。

2. CygwinXやXmingのようなX ServerとPuttyや、TeraTermのようなX11フォーワーディングの設定ができるSSHクライアントを組み合わせる

さて、実際にはこのやり方でやりました。

Puttyや、TeraTermにはX11転送のための設定があります。それを有効にすればOKです。 Puttyや、TeraTerm上でXが必要なプログラムを実行するとローカルPC側のDIPLAYにそれぞれのターミナルソフトが転送してくれます。

それにしても、Oracle DBをセットアップする上で、インストーラーがGUIである必要はまったくないですよね。 ファイルを使ったサイレント・インストールも用意されているけど、GUIとできることが違うし。システム要件の事前チェックのスキップとか。

Linuxや、Redhatをセットアップするときのように、CUIインタラクティブに設定させてもらえると楽だなぁ。

参考させていただいたサイト

X11 Forwarding - なんなんなん行く?

Docker上でのJBossの構築 on OSX

これまでOSX(Yosemite 10.10.1)で下記の実験を行いました。

Mac OSXでDocker(インストール編) - そごうソフトウェア研究所

DockerでコンテナにJavaを入れるまで - そごうソフトウェア研究所

今回はJBossを入れて動かすところまでやっていきたいと思います。

Dockerfile

# Dockerfile
FROM centos:6

MAINTAINER Ryohei Sogo

# install package
RUN yum update -y

RUN yum install -y java-1.7.0-openjdk
RUN yum install -y java-1.7.0-openjdk-devel
RUN yum install -y wget
RUN yum install -y tar

# JBoss
ADD ./files/jboss-as-7.1.1.Final.tar.gz /opt
# なぜかADDしただけで解凍されている
# RUN tar -zxf /var/tmp/jboss-as-7.1.1.Final.tar.gz -C /opt
ADD ./files/standalone.xml /opt/jboss-as-7.1.1.Final/standalone/configuration/

# Create user
RUN useradd jboss
RUN chown -R jboss /opt/jboss-as-7.1.1.Final

# JBoss
EXPOSE 9080

Dockerfileの内容としては、次のような感じです。

  1. 事前にダウンロードしておいたjboss-as-7.1.1をADDでイメージに追加する
  2. 設定ファイルを変更する必要があるので、standalone.xmlもADDでイメージに追加する
  3. JBoss実行用のjbossユーザーを作成し、jboss-as-7.1.1の所有者をjbossユーザーに変える
  4. 9080ポートをEXPOSEで公開(standalone.xmlの中で9080ポートを使用するように指定している)

standalone.xmlも晒しておきます。 standalone.xml

なんでか、ADDしただけでtar.gzファイルが解凍されてて、確認しないといけないです。 ADD ./files/jboss-as-7.1.1.Final.tar.gz /opt

コンテナの起動

コンテナを起動します

あとでデーモンモードで起動させるようにするけど、取りあえず今は'-t -i'オプションを指定して、インタラクティブモードでコンテナを起動します。

$ docker run -t -i -P rsogo/apppot_runtime /bin/bash
[root@fbf427c7d0a4 /]# 

コンテナにはいれましたので、jbossユーザーになって、JBossを起動させます。

[root@fbf427c7d0a4 /]# su jboss
[jboss@fbf427c7d0a4 /]$ /opt/jboss-as-7.1.1.Final/bin/standalone.sh 
=========================================================================

  JBoss Bootstrap Environment

  JBOSS_HOME: /opt/jboss-as-7.1.1.Final

  JAVA: java

  JAVA_OPTS:  -server -XX:+UseCompressedOops -XX:+TieredCompilation -Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Djboss.server.default.config=standalone.xml

=========================================================================

ホスト側でコンテナの状況を確認します。

起動していますね。コンテナでEXPOSEした9080ポートがホスト側の49158ポートに割り当てられていることも確認できます。

$ docker  ps
CONTAINER ID        IMAGE                         COMMAND             CREATED             STATUS              PORTS                                                                     NAMES
fbf427c7d0a4        rsogo/apppot_runtime:latest   "/bin/bash"         42 seconds ago      Up 40 seconds       0.0.0.0:49155->9080/tcp   pensive_lovelace  

確認

アドレスの確認

$ boot2docker ip
192.168.59.103

実際にアクセスします。 URLはboot2docker ipで確認したIPアドレスと、docker psで確認した際に9080がマッピングされているポートです。 今回の例だとhttp://192.168.59.103:49155です。

f:id:begirama:20150128100335p:plain

OKですね。

OSXのboot2dockerでのIPアドレス確認ではまった

AnsibleからからDocker上のコンテナにsshでアクセスしたいだけなのにえらい時間がかかった。 結論から言うと'boot2docker ip'でOK。

  • 使用例

      $ boot2docker ip
      192.168.59.103
    

はまった経緯は、いろんなDockerのネットワーク周りのブログを見るとdocker0というネットワークインターフェイスができるよ、と書いてあるがifconfigしてもでてこない。

docker inspectでコンテナの情報が表示され、その中のIPアドレスでアクセスできるんだろうと思っていたけど、できない。

 docker inspect --format ' {{ .NetworkSettings.IPAddress }} ' test01
172.17.0.71

$ telnet 172.17.0.71 22
Trying 172.17.0.71...
telnet: connect to address 172.17.0.71: Operation timed out
telnet: Unable to connect to remote host

'boot2docker ip'を使ってみる。

$ boot2docker ip
192.168.59.103

$ telnet 192.168.59.103 22
Trying 192.168.59.103...
Connected to 192.168.59.103.
Escape character is '^]'.
SSH-2.0-OpenSSH_6.0
^C

OK。ちなみにこのIPアドレスの特定の仕方は下記のOSX用のインストールのマニュアルに記載されていた。ブログ等を見るのも良いけど、トラブった時は一次情報を参照せよという良い例。

https://docs.docker.com/installation/mac/