Enterprise UX 2015 2日目
Lean Engineering: Principles for Enabling Build/Measure/Learn in the Enterprise
Bill Scott
Paypalの人。 Lean Engineeringという開発チームが学習していくプロセスを紹介してました。
Lean gives a brain to agile. Is this dual track agile @jeffpatton? So excited to hear @billwscott speak at #eux15 pic.twitter.com/KE0zHvDTyk
— Audrey Crane (@audcrane) 2015, 5月 14
"Agile is a machine fed by the backlog. Lean UX gives it a brain.” And a heart! @billwscott #eux15 pic.twitter.com/PvgwcBDQBk
— Amy Jiménez Marquez (@amymarquez) 2015, 5月 14
これは自社でも活かせそう。
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がまだましかな、と。
Anatomy of an innovation studio #eux15 pic.twitter.com/miN6tocfRo
— Leanna Gingras (@leegoesplaces) 2015, 5月 14
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。強そう。
Another good candidate for best slide of the day. @nathanshedroff #eux15 pic.twitter.com/grjK9xW7L3
— Audrey Crane (@audcrane) 2015, 5月 14
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のブログの方に、感想などまとめますが、こちらにはログ的に生情報をばんばん上げていきます。
スケジュール
とにかく、海外のカンファレンスは朝が早い。朝食もランチも付いてる。 この日も7時にホテルのロビーに集合して、出発しました。
The Enterprise UX Journey: Lessons learned and the journey ahead
Catherine Courage
キーノート。 CitrixのCXのExecutive。
Customer Experienceの向上を、CEOの旗振りのもとやってますよーという話し。 UIやデザインの話しは1枚くらいしかなくて、会社全体での顧客体験についてでした。 製品も、マーケティングも、出荷も全部対象にしている。 すごく良かった。
終わった後に、参加者からUXとCXの違いはなにか?という質問があって、「会社全体のCXがあって、その中に購入者のUX、エンドユーザーのUXのようにペルソナごとのUXがあるんだよ。」という回答でした。
Insight Types That Influence Enterprise Decision Makers
Christian Rohrer
Intel Securityで、ソフトウェアのUXを担当している。 マカフィーってIntelに買収されたんですね。
SecurityとすばらしいUser Experienceは接点少ないよ、と自虐ネタ。
"Almost the null set" #eux15 pic.twitter.com/IVpjQsjDGf
— Richard Dalton (@mauvyrusset) 2015, 5月 13
企業向けのソフトウェアの場合、UXの対象はエンドユーザーだけではなくて、ソフトウェアの購入のキーマンや、システム管理者も考えないと行けない。
UX Researchは沢山あって、対象に合わせてどのメソッドを使うかは選択すること。 www.nngroup.com
Data Science and Design: A Tale of Two
Chris Chapo
データサイエンスと、デザインの関係について。
#eux15 Fantastic overview of data & design thru three simple points :-) via @chapo pic.twitter.com/0DIrarrWJl
— Uday Gajendar (@udanium) 2015, 5月 13
Emotion Economy: Ethnography as Corporate Strategy
Kelly Goto
The Architecture of Understanding
Peter Morville
オライリーのIAの本を書いている人。
- 資料
Slides: The Architecture of Understanding #eux15 https://t.co/RMRoXU0iIN
— Peter Morville (@morville) 2015, 5月 13
Next Generation Design Systems
David Cronin
GEの取り組み。 Design Systemということで、GEで使用するデザインのマテリアルや、部品をリポジトリを作っている。検索したけど、公開してないのかなー。
部品にはPSDもあれば、CSSもある。
個人的に参考になった初日No1の内容。
Next gen design system guidelines at GE @davcron #eux15 pic.twitter.com/E6opNkXs17
— Stephen James (@tweetllama) 2015, 5月 13
X11 ForwardingとOSX、Windowsからのリモート接続の話し
普段、X11はあまり使いませんが、今回、Oracle Databaseをサーバーにセットアップする必要があったので、OUIのために環境を用意しました。
環境は、社外のデータセンターのサーバーで、自宅から接続するため、SSHでトンネリングして、X11を使う必要がありました。
やりかたは複数
- CygwinX(Windows)やXQuartz(OSX)でSSHの-Xオプションを使う
- 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でインタラクティブに設定させてもらえると楽だなぁ。
参考させていただいたサイト
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の内容としては、次のような感じです。
- 事前にダウンロードしておいたjboss-as-7.1.1をADDでイメージに追加する
- 設定ファイルを変更する必要があるので、standalone.xmlもADDでイメージに追加する
- JBoss実行用のjbossユーザーを作成し、jboss-as-7.1.1の所有者をjbossユーザーに変える
- 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
です。
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用のインストールのマニュアルに記載されていた。ブログ等を見るのも良いけど、トラブった時は一次情報を参照せよという良い例。
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