購読中です 読者をやめる 読者になる 読者になる

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

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

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 初日のランチ。なんで、緑茶がシトラスと砂糖味なんでしょうね。

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/

DockerでコンテナにJavaを入れるまで

年末にDockerを入れて、サンプルを実行してみました。

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

冬休み中に試験環境をDockerで準備することが目標です。

dotinstallを見ながら色々遊んでいましたが、実際の試験環境の構築を始めようと思います。今日はCentOS上にJava環境を構築します。

docker pullでCentOSのイメージを取得

rsogo$ docker pull centos
centos:latest: The image you are pulling has been verified
5b12ef8fd570: Pull complete 
34943839435d: Pull complete 
511136ea3c5a: Already exists 
Status: Downloaded newer image for centos:latest

イメージの確認

rsogo$ docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
rsogo/sshd           latest              296067ca835f        6 minutes ago       625.8 MB
centos               6                   510cf09a7986        5 days ago          202.6 MB
centos               latest              8efe422e6104        5 days ago          210 MB
rsogo/jboss          latest              67acbf60269a        8 days ago          855.2 MB

この記事では、centosのlatestを使用しているけれど、現時点で最新はCentOS 7で、テスト環境としては6が欲しかったので、実際のテスト環境はcentos:6でやっている。

Dockerfileの作成

何度でも同じイメージが作成できるように環境の準備はDockerfileで行います。

FROM centos
MAINTAINER Ryohei Sogo

# ビルド時に実行
RUN yum install -y java-1.7.0-openjdk
RUN yum install -y java-1.7.0-openjdk-devel

# 起動時に実行
CMD ["java", "-version"]

このDockerfileは次の内容を書いています。

  • centosイメージを基に作成する
  • ビルド時にjava-1.7.0-openjdkと、 java-1.7.0-openjdk-develをyumコマンドでインストールするよう
  • 実行時にはjava -versionでインストールされたjavaのバージョンを出力する

ビルドの実行

docker buildコマンドでビルドを行います。 ここではrsogo/javaというタグ名を付けています。

rsogo$ docker build -t rsogo/java .
Sending build context to Docker daemon 3.072 kB
Sending build context to Docker daemon 
Step 0 : FROM centos
 ---> 34943839435d
Step 1 : MAINTAINER Ryohei Sogo
 ---> Using cache
 ---> fa1f439f448f
Step 2 : RUN yum install -y java-1.7.0-openjdk
 ---> Using cache
 ---> 3841ca600101
Step 3 : RUN yum install -y java-1.7.0-openjdk-devel
 ---> Using cache
 ---> bd0a1d4c9937
Step 4 : CMD java -version
 ---> Using cache
 ---> 3adf3b598444
Successfully built 3adf3b598444

このログを取る前に何度かビルドを行っているので、Using cacheと出力されているとおり、Docker内のキャッシュを使ってビルドを行っているようです。 初回は関連パッケージの取得とインストールが行われていました。

実行

docker runコマンドで実行します。

rsogo$ docker run rsogo/java
java version "1.7.0_71"
OpenJDK Runtime Environment (rhel-2.5.3.1.el7_0-x86_64 u71-b14)
OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)

DockerfileのCMDで記載したとおり、java -versionが実行され、インストールが成功していることが確認できます。

ps -lで確認すると、実行が終わったプロセスは終了状態になっています。

rsogo$ docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
980ab9c8b558        rsogo/java:latest   "java -version"     18 minutes ago      Exited (0) 18 minutes ago                       naughty_elion       

次はJBossをインストールします。 WebLogicyumでインストールできればいいのに。。。