やっと起きたエンジニアのメモ

ruby, js, 興味の赴くままに

「ユーザエクスペリエンスのためのストーリーテリング」を読んでみた

こんばんは。

新しいことを「誰か」に説明したときに、分かってもらえないことってありますよね。

「誰か」:顧客、上司、同僚、同級生、友達、家族、その他など (オーディエンスとして紹介されている)

説明してもフィードバックがないとか、やってみたものの相手は言われたからやっている(やらされている)、、みたいな状況もあります。経験者です.. orz


で、どうしたらいいかなぁ〜?? って思っているときに、DevLoveのイベントに気になるセッションを発見!!
「マーケットという大空を飛ぶためにユーザーストーリーという地図を携えて」

このセッションで紹介された本が「ユーザエクスペリエンスのためのストーリーテリング」でした。

ユーザエクスペリエンスのためのストーリーテリング -よりよいデザインを生み出すストーリーの作り方と伝え方 -

ユーザエクスペリエンスのためのストーリーテリング -よりよいデザインを生み出すストーリーの作り方と伝え方 -

読んでみて

本書は16章で構成され、それぞれにストーリーが紹介されています。
各章にストーリーが掲載されていて、とても読みやすい本でした。

この本を読んだら簡単に「良いストーリー」を話せる/作れるようになるわけではありませんが、、

私の場合は、FAQに記載されている以下の質問の回答が欲しかった感じです。

  • 私はストーリーをうまく話せないのですが、どうすればいいでしょうか?
  • どうすればストーリーを作ることができるのでしょうか?
  • どのくらいオーディエンスのことを考えるべきでしょうか?

各質問に、詳細は〇章をご覧ください。とあったので、ちぐはぐに読んでしまいましたが、
最終的には、1章から再読しました。

読んでみて思ったのは、ストーリーの構成って何パターンもあるのに対して、自分が話す場合は決まったパターンで話すことが多いと気づきました。
特に仕事で話をするときは、要点や結果を最初に話すってのが癖なのか習慣なのか、、常にその話し方になりがちだなって思います。
(要点や結果から話すように教えられた気もする、、

「言葉」には"含み"があって、だからこそ、発想を刺激したり想像力をかき立てることもできるわけなんですね。
逆に、共通の理解を生み出す場合には、言葉が含んでいる意味(ディテール)をきちんと説明しないと、分かっている気にさせてしまうことも。。
後になって、共通の理解に至っていなかったってこともありますよね。


私にとっては、多くの気づきを得れる事と、これまでの自分のストーリーがオーディエンスにとって
どんなだったのかを振り返るにはとてもよい機会でした。

あなたが話を聞いて経験を理解できるまで、私が何について話しているかわからないでしょう。
そこには、最終的にあなたが頭の中でその人を思い浮かべることができるストーリーがないといけません。
そのときまで、あなたは何も知らないし、誤った方法で与えられた情報に対処しなければならないのです。
                                       ―イラ・グラス「This American Life」の談話より

Q.私はストーリーをうまく話せないのですが、どうすればいいでしょうか?

A.
あなたはストーリーを上手に語っていないと思っているかもしれませんが、そんなことはありません。問題の全体像を説明したり、
出来事を説明するために多くの人がストーリーを話しています。
本書の目的は、新しい方法でストーリーを使えるようになることです。私たちも、本書に登場する様々なストーリがあなたにヒラメキを与えてくれるとこを望んできます。
あなたのストーリーテリングは、プロジェクトの全体的な底上げにつながるでしょう。詳しくは第二章をご覧ください。

ということで第二章から読み始めました。

  • CHAPTER2 - UXストーリーの効果

本書では、話下手の多くの考えを以下のように説明しています。

「ストーリーを話すことをブロードキャストの一種として捉えている人がいます。」
「〜 ある一人の人から別の人々に伝送されてるものと捉えられています。」
「〜 ストーリーを話すことは、一方的に広めることだと捉えています。」

簡単に言えば一方通行ってことですね。一方通行(リアクションがない)ってことはストーリーとして成立していないとも記述がありました。

一方的に広めることなんて捉えてもいないし、ブロードキャストとも思っていません。

ただ、結果的に一方的になってしまうことはあって、、本当はフィードバックが欲しいのに ( ´Д⊂ヽ

そのためには、まず、UXデザインにおけるストーリーの役割を知る。

    • ストーリーは説明します。
    • ストーリーは想像力をかき立てます。
    • ストーリーは新しいアイデア発送を刺激します。
    • ストーリーは共通の理解を生み出します。
    • ストーリーは説得します。


この章を読んでみて考え直す必要があったのは、ストーリーによってオーディエンスの想像力を膨らませる。(オーディエンスに気づきを与える)
そして、オーディエンス自身がギャップを補完して完全なイメージを作り上げることで、ストーリーを完結させる。(オーディエンスがストーリーを作る)
話したことを共有するだけではフィードバックは生まれないんですね。目的は、共通の理解と説得になるけど、そこでフィードバックが得れれば、
もっと楽しい方向に進むと思ってます。



Q.どうすればよいストーリーを作ることができるのでしょうか?

A.
ストーリーを作ることは難しいことではありません。最初はぎこちなくても、次第に慣れてくるものです。
あなたの作るストーリーも、実践を重ねることで良くなっていくでしょう。ストーリーテリングはアートに匹敵する技能です。
オーディエンスを理解することから始めることができれば、キャラクターや全体像、コンテクスト、イメージをある構造に基づいて
組み立てられるようになるはずです。詳しくは11〜15章をご覧ください。
  • CHAPTER11 - ストーリーをクラフトする
  • CHAPTER12 - オーディレンスに配慮する
  • CHAPTER13 - ストーリーの構成要素を組み合わせる
  • CHAPTER14 - 構造とプロットを作る
  • CHAPTER15 - ストーリーの伝え方

ストーリーテリングの基本構成は、「ストーリーテラー」と「ストーリー」と「オーディエンス」になります。

いたってシンプルな構成ですが、ストーリーに関してはオーディエンスの変化に伴って、伝え方も変える必要がありますよね。
また、最終的なゴールは同じであっても、オーディエンスに依存してしまうのがストーリーなんだと思います。
それは、オーディエンスが興味を持って拝聴してくれる場合と、ただ参加している場合とで同じストーリーでも
ストーリーとして成立しない可能性もあるからです。(伝えるだけで終わってしまう場合

この章を読むことで、ストーリーの解析をできるようになります。なので、多くのストーリーを聞いて、解析して、
より良いストーリーを作っていけるようになりたいですね。

「呼ばれたから来た」という方々にも伝わるようなストーリーも作れるはずだと思います。

Q.どのくらいオーディエンスのことを考えるべきでしょうか?

A.オーディエンス(聞き手)のことを理解するのは非常に重要です。いくら事前にきちんと計画を建てようが、
その場でいそいで調整しようが、オーディエンスを巻き込めなければ、良いストーリーも語れません。結局、
ストーリーのゴールは伝えることではなく、オーディエンスに聞いてもらい、彼らに何か新しいことを持ち帰ってもらうことなのです。
この点については、3、10、12章をご覧ください。
  • CHAPTER3 - ストーリーは聞くこと、そして観察することから始まる
  • CHAPTER10 - ストーリーを共有する
  • CHAPTER12 - オーディレンスに配慮する

これが一番、大変なことなのかもしれない、、

話を聴きながら気づいたことがあると、ついつい口に出してしまう性分なのですよ。
リアリーリスニングやアクティブリスニングについては、試す機会も多いので、今後、試していってなんとかするしかありませんね。

自分とオーディエンスの目的とのギャップを埋めるストーリーが見つけることが、相互に気づきを得るチャンスに
つながるのだと思います。

面白そうだと思ったこと

読んでいると、「やってみたら面白そうだな」って感じることも結構あったので、紹介しておきます。

SharePoint 2010 ハマッタメモ - View(ビュー) -

SharePoint 2007(Windows SharePoint Services 3.0)を使用したワークフローをSharePoint 2010で動作させることになった。

その原因は、いい感じに動いているようで動いていないって事がわかったから ヽ(´Д`;)ノアゥ...

で、最初にハマったSchema.xmlについてメモっておくことにする。

Schema.xmlはビュー、フォーム、ツール バー、特殊フィールドの定義をするファイルなんですね。

SharePointのインストールに含まれるFeatureのサブフォルダにあるSchema.xmlを参考にしながら作成していたみたい。

特にハマったのが「ビュー」で、結構な行数(ファイルは約10000行)に凹まされた。そんな状況で初めてのCAMLに悪戦苦闘したんだよね...orz

CAMLや各要素についてMSDNとかで調べることから始まった。

ちなみに、WSS 3.0とShare Point 2010の違いはこんな感じ。。

Windows SharePoint Services 3.0

<Views>
  ...
  <View 
    BaseViewID="2" 
    Type="HTML" 
    WebPartZoneID="Main" 
    DisplayName="$Resources:core,My_Tasks;" 
    MobileView="True" 
    MobileDefaultView="True" 
    SetupPath="pages\viewpage.aspx" 
    ImageUrl="/_layouts/images/issues.png" 
    Url="MyItems.aspx" 
    ReqAuth="TRUE">
    <GroupByHeader>
      ...
    <GroupByFooter>
      ...
    <ViewHeader>
      ...
    <ViewBody>
      ...
    <ViewFooter>
      ...
    <PagedRowset>
      ...
    <PagedClientCallbackRowset>
      ...
    <PagedRecurrenceRowset>
      ...
    <RowLimit
      Paged="TRUE">100</RowLimit>
    <ViewEmpty>
      ...
    <Toolbar Type="Standard" />
    <ViewFields>
      <FieldRef Name="LinkTitle" />
      <FieldRef Name="Status" /> 
      <FieldRef Name="Priority" /> 
      <FieldRef Name="DueDate" /> 
      <FieldRef Name="PercentComplete" /> 
    </ViewFields>
  <Query>
    <Where>
      <Eq>
        <FieldRef Name="AssignedTo" />
        <Value Type="Integer">
          <UserID />
        </Value>
      </Eq>
    </Where>
    <OrderBy>
      <FieldRef Name="Status" /> 
      <FieldRef Name="Priority" /> 
    </OrderBy>
  </Query>
  </View>
  ...
</Views>

SharePoint 2010

<Views>
  ...
  <View 
    BaseViewID="2" 
    Type="HTML" 
    WebPartZoneID="Main" 
    DisplayName="$Resources:core,My_Tasks;" 
    MobileView="True" 
    MobileDefaultView="True" 
    SetupPath="pages\viewpage.aspx" 
    ImageUrl="/_layouts/images/issues.png" 
    Url="MyItems.aspx" 
    ReqAuth="TRUE">
  <XslLink Default="TRUE">main.xsl</XslLink>
  <RowLimit Paged="TRUE">30</RowLimit>
  <Toolbar Type="Standard" />
  <ViewFields>
    <FieldRef Name="LinkTitle"></FieldRef>
    <FieldRef Name="Status"></FieldRef>
    <FieldRef Name="Priority"></FieldRef>
    <FieldRef Name="DueDate"></FieldRef>
    <FieldRef Name="PercentComplete"></FieldRef>
  </ViewFields>
  <ParameterBindings>
    <ParameterBinding 
      Name="NoAnnouncements" 
      Location="Resource(wss,noXinviewofY_LIST)" />
    <ParameterBinding 
        Name="NoAnnouncementsHowTo" 
        Location="Resource(wss,noXinviewofY_DEFAULT)" />
  </ParameterBindings>
  <Query>
    <Where>
      <Eq>
        <FieldRef Name="AssignedTo"></FieldRef>
        <Value Type="Integer">
          <UserID />
        </Value>
      </Eq>
    </Where>
    <OrderBy>
      <FieldRef Name="Status"></FieldRef>
      <FieldRef Name="Priority"></FieldRef>
    </OrderBy>
  </Query>
</View>
  ...
</Views>

ぱっと見で違いはよくわかるね。でもね、、そもそも違いがあるってことを知らなくて、WSS 3.0の時に作成された内容を追ってしまった事が一番悲しかった。(/ω\) ここで丸一日無駄にした...

次にSharePointインストール時にFeatureのサブフォルダにあるSchema.xmlを見たときに気づいたんだな。全然(ぜんっぜん)構成が違うじゃないのって、、゚(゚´Д`゚)゚ で、今度は半日無駄にしたんだわ。。

はい。ここまでが前置き(愚痴)。結局一から作り直したほうが早いって結論ね。

忘れんうちにメモっておく。

やりたいこと

  1. フィールドを追加
  2. 各行にチェックボックスを表示
  3. ヘッダーに全て選択用のチェックボックスを表示
  4. ほかのフィールドの状態によってチェックボックスを表示/非表示する

SharePoint 2010から標準でタスクの全選択できるようになっている。これって、WSS 3.0の時はなかった機能だったと思う。(だから作ったんだと思う)

WSS 3.0の時はやりたいこと(4つ)をSchema.xmlにすべて書いていたのと各ビュー分書いていたため1万行近くなっていた。

SharePoint 2010に合わせて作り直したら700行程度でできたっ(;゚Д゚) 実際に書く内容はそんな多くなかったね。

・フィールドを追加
・XSL でビューをカスタマイズ(CORE.js に定義されているメソッド使えうだけで実現できた)

サンプル

  • フィールドに列を追加
  <Field 
    ID="{53101f38-dd2e-458c-b245-0c236cc13d1a}" 
    Type="Computed" 
    ReadOnly="TRUE"
    Name="CheckBox" 
    DisplayName="$Resources:check;" 
    HeaderImage="check.gif"
    ClassInfo="Icon"
    SourceID="http://schemas.microsoft.com/sharepoint/v3" 
    StaticName="CheckBoxk">
  </Field> 

これは、ヘッダーにアイコンを使用した列を作成している。
TypeにComputedを指定しているのは、内容が別のフィールドに依存するため。

V4なのにV3をSourceIDに指定するところが気持ち悪い。。

  • XSL を使用したビューのカスタマイズ

XSLを使用する上で重要なファイルはvwsytles.xsl と fldtypes.xsl になる。作成したXSLにmain.xslをインポートすることで、使用できるようにある。

TEMPLATE\LAYOUTS\1041は以下にCORE.js存在するので、ここで定義されているファンクションを使用することも可能。

// 定義
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:x="http://www.w3.org/2001/XMLSchema"
  version="1.0"
  exclude-result-prefixes="xsl msxsl ddwrt"
  xmlns:d="http://schemas.microsoft.com/sharepoint/dsp"
  xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime"
  xmlns:asp="http://schemas.microsoft.com/ASPNET/20"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:msxsl="urn:schemas-microsoft-com:xslt"
  xmlns:SharePoint="Microsoft.SharePoint.WebControls">

  <xsl:import href="/_layouts/xsl/main.xsl" />

 ...

  // <xsl:template match>を使用してfldtypes.xslに定義してあるテンプレートを使用してビューをカスタマイズする
  // ヘッダーに対して処理を書きたい場合は mode="header" と記述する。
 <xsl:template match="FieldRef[@Name='CheckBox'] mode="header">
  
    //ここに作成したフィールドに対する処理を書く
  
  </xsl:template>

分かってしまえば大したことないんだろうけど、、SharePoint って情報が少なくて困るよね(´;ω;`)

DevLOVE HangarFlight - Snow Barrage - に行ってきた

同僚に誘われて、「DevLOVE HangarFlight - Snow Barrage -」へ...

参加して良かったと感じた。
そこには「熱さ」があって、、現場にはまだまだ足りないナニカなんだと思う。

MBA率も高いなぁ〜〜っw

セッション内容

参加セッション

  • 第1機 @agilekawabata 川端光義 氏

「普通のプログラマチームによるアジャイル開発と少数精鋭によるアジャイル開発」
XP☓Ruby!! あなたはまだ熱い赤い物語を知らないッ
著書:バグがないプログラムのつくり方

  • 第3機 @haru01 家永英治 氏

時を超えた建設の道、パタンランゲージの源流にふれ再度ソフトウェア開発のコンテキストでパタンランゲージについて物語ろう。
森の賢者が織り成す、Gembaパタンの物語。
https://github.com/haru01/

  • 第10機 @wackiesrock Yoshinori Wakizaka 氏

「マーケットという大空を飛ぶためにユーザーストーリーという地図を携えて」
ユーザーストーリーを用いたUXデザインッ! 今、ユーザエクスペリエンスのためのストーリーテリング -よりよいデザインを生み出すストーリーの作り方と伝え方 - をベースに、UXデザインについて物語ろう。
参考:http://www.slideshare.net/wackiesrock

  • 第2機 @daipresents 藤原大 氏

アジャイルで目指した坂の上の雲
レガシーなシステムや先の見えない運用を抱える現場。そんな現場に飛び込み、半年間、アジャイル開発を推進した経験と、その後の彼らについて語ります。
http://daipresents.com/


出撃の刻 〜オープニング〜 HF趣意説明「Snow Barrage」- @papanda

かつて、飛行機乗りにとって、空が危険だった頃。 
飛行機乗りたちは、自分たちの体験を飛び立つ前の 
格納庫(ハンガー)で語り合うことで、 
未知なる空を知ろうとした。 

ソフトウェア開発もまた、未だ容易ではない。 
かつて、飛行機乗りがそうしたように。 
我々も、我々のことを語ろう。 


◆HangarFlight、しましょうか◆ 
私たちはこれから先どれだけのサービスやシステムを生み出すのでしょうか。 
人一人が経験できることには、限りがあります。 
また、経験とは行動を起こした人への唯一の報酬といえます。 
しかし、人が語る経験を耳にし、それを自分事として捉えなおした時、 
自分にとっての新たな発見があるのではないでしょうか。 
かつて、命を賭して、空を駆けた飛行機乗りたちにあやかり。 
私たちも、私たちの空を飛び続けるために、HangarFlightしましょう。


◆Snow Barrageの世界◆ 
今回のHangarFlightは、SnowBarrage。 
集まった語り手たちは、いずれも開発現場の前線を飛び回る 
Reckless(命知らずの) Pilotです。 
彼、彼女たちから次々と繰り出され紡がれる物語から、まさに弾幕ともいえる 
圧倒的な勢いを感じることでしょう。 
HangarFlightはその帰り道からが私たちにとっての、旅の始まりです。 
来年の春に、再びこのHangarへと帰りついて下さい。 
その時、みなさんのHangarFlightを私たちは待っています。 

2010.12 WinterSortie(冬の出撃) 
2011.05 SpringBomb(春の爆弾)

「人の経験を知り、自分のコンテキストに沿った形でアクションを起こす」
要は、人の経験をそのまま実践しても、自分のGembaで活かせるとは限らない。自分のGembaではどう実践すればよいか? よく考える必要があるということ。
自分で全てを解決しようとしても、時間が有限である以上限られてしまう。

ひとりの一生 = 300人月

普通のプログラマチームによるアジャイル開発と少数精鋭によるアジャイル開発 - 川端さん(TwitterID:@agilekawabata)

セッション資料が公開されないもようなので、内容を記載(覚えてる範囲で、、



川端さんの事はこのセッションで知った。セッションが始まると照明が落ちたので、あまり顔は見えなかった印象。(メガネ忘れた自分が悪いの Orz)

セッション内容
  1. Javaプロジェクトの事例
  2. Rubyプロジェクトの事例
  3. Androidプロジェクトの事例
Javaプロジェクトの事例

COBOLからJavaへ移行するということは、言語が変わるだけではなく、構造や考え方、文化が変わるということだった。(オブジェクト指向
2006年、ここからがアジャイル開発のスタート。共通フレームワークT(Agile)とアプリケーション開発T(WF)に分かれる。

  • 課題:
    • チームメンバーはアジャイル開発を知らない&教育している時間も無い。

このクレドをもとに、上記写真の「アジャイル開発のクレド」の読み合わせを毎日15分実践し続けた。
この結果、自己組織化を促すことが出来たようだ。

これはとても共感する内容だった。トップダウンアジャイル開発を導入したはいいが、教育に関しては実施できていない。(教育が必要だと認識すらできていないと思う)
メンバ間でアジャイルの認識もあっていない状況にある中、日々継続できる認識合わせの方法を知れたのはとても良かった^^

  • 実践(KPT):
    • イテレーション(2週間)毎に実施 → 実施しただけでは忘れてしまう → 毎日メールで確認

そうなんだよね。忘れちゃうんだよね(涙 次のイテレーションの振り返りでも同じ事いってる時もあるよ(ホント)
前のプロジェクトでは、振り返り後にホワイトボードの前で写真撮影して壁紙にしたりもしてたな。
今のプロジェクトは振り返ることが目的(やればいい)になってしまったのだろう。毎日メールで確認って簡単なのだが、「メール受信 → 中身読まない → 既読」ってパターンもある。
自分たちにあったやり方をもっと模索してみよう。

    • 実践(週40時間):
      • 50週間で休日出勤ナシ&残業ナシ!!

これはすごいと思った。
時間が押してて質問できなかったけど、ここのところは詳しく聞きたかった。

  • 実践(Wiki):
    • ドキュメントはほぼWikiにまとめていたらしい。(総ページ数:245)らしいと言うのはその後の話の方が面白くて忘れてしまったwww

抵抗勢力の登場の方が刷り込まれている。

「ある日、Wikiがすべて消えた!!」

頭の硬いベンダーとの激しい死闘があったようだ。
珍しいパターンだが「顧客はアジャイル開発への理解」があったが、変化を嫌うベンダーには理解されなかった。
そのため、他社ベンダーから見積にすらケチを付けられていた。

そんな中起こった事件が、、
「ある日、Wikiがすべて消えた!!」

悪魔の声が聞こえてきた「ゴニョゴニョ・・ヤツらがやったに違いない・・」

1週間前に取得したバックアップとメンバーと力を合わせることで復旧した。
その結果、団結力が高まったようだ。

この経験を踏まえると「団結力を高めたければWikiを壊せばよい」となった


Rubyプロジェクトの事例

Javaによる開発をしていく中で「Ruby」と出会い、そして恋に落ちた。
アジャイル開発とRubyは「ビールと枝豆」と同じくらい相性が佳い。

このプロジェクトでは、キャライズムを発揮できたようだ。
少数精鋭T*1ではXPのプラクティスが合わない場合もある。(別にすべてのプラクティスを実践することが目的ではない)
だけど、テストとリファクタリングについては自由にやってもらってもハイレベルになると。

これは、川端さんのキャラの立て方が上手なんだな〜〜と感心していた。

ここで、Cucumberによる受け入れテストのデモをしてくれると、、、、、、
Cucumberが落ちているw → 青森の方にSkypeでpush依頼 → 会場でpullしてテスト実施!!

スピーディな対応ではあったが、、狙っている感も、、

Androidプロジェクトの事例

Android開発 = Javaではなく、Scalaを使用している。(言語、IDE、DBなどを強制すると「できる人」は居なくなる)

結果としてモノができあがる事が重要。技術者のモチベーションが上がれば生産性も上がるので、自由に選んでもらって構わない。

これは当然といえば当然だと思う。うちでも割とこの辺は自由が効くところだな。
ただ、次の内容はうちでは無理だと思うのよ。

川端さん曰く、プログラマにコミュニケーション能力は不要」
できる人たち=常人の生産性の10倍だとすると、そういった人たちは普段家に篭っている人たちでもある。
コミュニケーションができなくても当然だと思う。

  • 紹介された書籍

XPエクストリーム・プログラミング入門―ソフトウェア開発の究極の手法

XPエクストリーム・プログラミング入門―ソフトウェア開発の究極の手法

パタンランゲージについて物語ろう。 - 家永さん(TwitterID:@haru01)

タイトルは、「パタンランゲージ(再入門)」なっていたが、入門すらしていない私には、、、
Agileコーチを志している。

  • 伝えたいこと:

「感性重要」

  • パタンランゲージ
    • 現場への憧憬を具体化
    • メンバとの会話

引用と書籍紹介が多かった印象。内容としては飲み込みきれませんでした (汗
きっと、詳しく伝えてくれる人がいるはず

  • 紹介された書籍

時を超えた建設の道

時を超えた建設の道

パタン・ランゲージ―環境設計の手引

パタン・ランゲージ―環境設計の手引

せかいいち おいしいスープ (大型絵本)

せかいいち おいしいスープ (大型絵本)

などなど

マーケットという大空を飛ぶためにユーザーストーリーという地図を携えて - 脇阪さん(TwitterID:@wackiesrock)

Devlove1210 wackiesrock

Key Message - ストーリーでより良いUXを設計する

  • ユーザーの利用コンテクストを理解する
  • デザインのアイディアを創造する
  • サービスやソフトウェアのクオリティを改善する


今回のセッションは脇阪さんが翻訳に携わった↓↓本↓↓の内容をもとに、ユーザストーリーについて紹介された。

ユーザエクスペリエンスのためのストーリーテリング -よりよいデザインを生み出すストーリーの作り方と伝え方 -

ユーザエクスペリエンスのためのストーリーテリング -よりよいデザインを生み出すストーリーの作り方と伝え方 -

年末に届く予定なのだが、、届かなかったら年明けから読み始めるかな。

今回のセッションは以前から興味のあったUXについてのお話でした。お話を聞いた印象は、アナリストである必要があることと兼務で担うには荷が重いなぁっと感じた。
より良いUXを設計するためにストーリーの必要性についての説明は興味をソソるものだった。
@WebUX研究会 でワークショップを開催されていたので、次回の開催には是非参加したいところ。

私の印象に残ったスライドは「心的イメージを加える」というスライドだった。端的に説明しがちな私にとっては情緒的コンテクストを加えた
場合の効果を感じ取ることができたので、今後のスピーチやプレゼンテーションに活かしたいところ!!

アジャイルで目指した坂の上の雲 - 藤原さん(TwitterID:@daipresent ), TAKAKING22(TwitterID:@TAKAKING22)

アジャイルで目指した坂の上の雲 #DevLOVE HangarFlight Snow Barrage

アジャイルの導入開発のお話を聞いていて、「親近感と共感」を覚えた事が印象に残っています。新たな取り組みって、三日坊主になりがちなんだよなぁ。
特に、チームで行動するとなるとその速さたるは、、このセッションは気付きがとても多く、週明けの職場で実践できることもあった。(タスクボードの写真を毎日撮影、Doingに担当者名を貼る)...継続中...
誰もが聞いた言葉だと思うけど、「失敗は誰にでもできることじゃない」って気持ちは重要!! この気持ちがなければチャレンジなんてできないと思う。(失敗することを前提にやるわけではないけどね)
あとは、失敗したときに諦める道を選ぶか再チャレンジする道を選ぶかってこと。チームで再チャレンジの道を選ぶためには、自分が先頭になって準備を進める必要がある。
みんなに集まってもらって、「もう一回やってみよう」じゃ全員はついてこないからね...経験済みww
次回、お会いした際は、その後のその後のこともお話できればなと思う。

*1:3日で見積もったタスクを3時間(テスト&リファクタリング付き)で終わらせてしまうような方々

Jenkinsインストールメモ

TL眺めてたらJenkinsは使えるぜーーーと流れてきたのでインストールしてみる。
そもそも、どんな構成で構築したら良いかもわからない。

最終的には、会社で.NetをJenkinsでビルドして、失敗したら通知する仕組みを構築するのが目標!!
その前にCentOSを使ってJavaで書いたコードで試してみる。家なもんで・・


1)JDKのインストール
JDK7をインストールして、環境変数を設定する。

# cd /usr/local/src/
# wget -O jdk-7-linux-i586.rpm http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-i586.rpm
# rpm -ivh jdk-7-linux-i586.rpm
# alternatives --install /usr/bin/java java /usr/java/jdk1.7.0/jre/bin/java 20000
# java -version
# java version "1.7.0"
# Java(TM) SE Runtime Environment (build 1.7.0-b147)
# Java HotSpot(TM) Client VM (build 21.0-b17, mixed mode, sharing)

続いて環境変数を設定する。

# vi /etc/profile.d/jdk.sh
# export JAVA_HOME=/usr/java/default
# export PATH=$PATH:$JAVA_HOME/bin
# export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
# source /etc/profile



2)Jenkinsのインストール
Jenkinsのリポジトリを使いしてインストールする。

# sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
# sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
# sudo yum install jenkins

インストール完了!!

試しに起動してみる。

# sudo /etc/init.d/jenkins start 
# sudo /etc/init.d/httpd restart



デフォルトは8080ポートらしいので、http://hostname:8080で早速アクセスしてみることに・・・

キターーーーーーーっ

ポートを変えたい場合は??

# vi /etc/sysconfig/jenkins
39 ## Type:        integer(0:65535)
40 ## Default:     8080
41 ## ServiceRestart: jenkins
42 #
43 # Port Jenkins is listening on.
44 # Set to -1 to disable
45 #
46 JENKINS_PORT="8080" ←ポートを変更する

変更したら再起動する。

# sudo /etc/init.d/jenkins restart 
# sudo /etc/init.d/httpd restart

ここまでは、楽勝!!
今度は、サンプルプロジェクト作ってSubversionと連携させてみよう。
あと、Jenkinsの設定方法学ばねば、、

Gradle+Groovyプラグインインストール

Eclipse Indigoのインストールが終わったので、GradleとGroovyプラグインをインストールすることにした。

ロケーションなんて覚えてられないのでメモを残す。

1)Groovyプラグインインストール
[ヘルプ]-[新規ソフトウェアのインストール]を選択して、作業対象の[追加]ボタンをクリック。

名前 Groovy Plugin
ロケーション http://dist.codehaus.org/groovy/distributions/greclipse/snapshot/e3.7/

[OK]ボタンをポチっと

こんな感じでインストール。
※M2E Integrationは外しています。

2)Gradleプラグインインストール
[ヘルプ]-[新規ソフトウェアのインストール]を選択して、作業対象の[追加]ボタンをクリック。

名前 Gradle Plugin
ロケーション http://www.breskeby.com/downloads/gradle/eclipse/update/

[OK]ボタンをボッチり。

全部チェックして[次へ]ボタンをクリック。

Eclipse再起動して完了 :)

Tracインストールメモ

Redmineしか使ったことなかったので、Tracをインストールしてみることに・・


1)CentOSを5.7へバージョンアップ
もともとCentOS5.4だったので、ついでにバージョンアップしておく。

# yum upgrade

終わったらバージョンを確認する。

# rpm -qa | grep centos-release
centos-release-notes-5.7-0
centos-release-5-7.el5.centos


ApacheMySQLは以下を参考に
ウェブ開発者のための、1時間でできるLAMP環境構築術(CentOS編) - さくらインターネット創業日記


2)Phythonをインストール
現状 Python 2.4.3 がインストールされている。が、古いので2.6*へバージョンアップ。


・インストール方法は以下を参考に
http://www.abetake.com/index.php?Python%202.6.2

終わったらバージョン確認

# python -V
Python 2.6.2

Tracのサイトでは、"Python, version >= 2.4 and < 3.0"と記載されている。

備考 ------------
最初はこっちでバージョンアップを試した。

# yum --enablerepo=epel install python26</del>

終わったらバージョン確認

# python -V</del>
Python 2.4.3

って、変わってないじゃないか ヽ(`Д´)ノ

                                    • -



3)subversionをインストール
ホントはTracMercurialを入れる予定だったけど、subversionが中途半端に入っていたのでこれを使う。
サードパティのTracMercurialは今度ね。

1. subversion のインストール

# yum -y install subversion mod_dav_svn

testリポジトリ作成

# mkdir -p /var/www/svn
# svnadmin create /var/www/svn/test

パーミッション変更

# chown -R apache:apache /var/www/svn/test

2. subversion の設定

# vi /etc/httpd/conf.d/subversion.conf
<Location /repos>
   DAV svn
   SVNParentPath /var/www/svn
   ☆追記
   --- ここから ---
   Order deny,allow
   Deny from all
   Allow from 127.0.0.1
   Allow from 192.168.124.0/24 ←環境に合わせて設定
   --- ここまで ---
   # Limit write permission to list of valid users.
   <LimitExcept GET PROPFIND OPTIONS REPORT>
      # Require SSL connection for password protection.
      #SSLRequireSSL

      AuthType Basic
      AuthName "Authorization Realm"
      AuthUserFile /etc/httpd/conf/.htpasswd
      Require valid-user
   </LimitExcept>
</Location>

3. BASIC認証設定(htpasswd)
以下を参考に
http://linuxserver.jp/%E3%82%B5%E3%83%BC%E3%83%90%E6%A7%8B%E7%AF%89/httpd/htpasswd.php

ここまで出来たらTortoisesvnをインストールして、チェックアウトとコミットを試してみる。
TortoiseSVN download | SourceForge.net



4)Tracをインストール


1. Tracが依存しているライブラリをインストール

# yum --enablerepo=rpmforge -y install python-clearsilver
# yum install -y mod_python

2. Trac日本語化

# wget http://www.i-act.co.jp/project/products/downloads/Trac-0.12.2.ja1.zip
# unzip Trac-0.12.2.ja1.zip
# cd Trac-0.12.2.ja1
# python setup.py install

3. ディレクトリ作成

# mkdir /var/www/trac/test
# trac-admin /var/www/trac/test initenv

プロジェクト名やDB接続詞、リポジトリなどを指定する。

# tracd --port 8000 /var/www/trac/test/

http://サーバー名:8000/testにアクセスしてみる。
こんな画面がでればいい感じですね。

あと一息。。

4.パーミッションapacheの設定

# chown -R apache:apache /var/www/trac/test
# vi /etc/httpd/conf.d/trac.conf ←新規作成
☆追記
<Location /trac>
   SetHandler mod_python
   PythonDebug On
   PythonHandler trac.web.modpython_frontend
   PythonOption TracEnvParentDir /var/www/trac
   PythonOption TracUriRoot /trac
</Location>
 
<LocationMatch "/trac/.*/login">
   AuthType Basic
   AuthName "trac"
   AuthUserFile "/etc/httpd/conf/.htpasswd"
   Require valid-user
</LocationMatch>

最後にWebサーバーを再起動

# service httpd restart

再度、アクセスしてみて一応完了。v(=^0^=)v

今後は連携とかもしていきたいな〜〜














Androidアプリケーション開発環境をEclipseで構築

Eclipseを使用する場合の開発環境構築方法をメモっ

下記をダウンロード

1)Android SDK - Download Android Studio and SDK tools
[SDK]タブを選択して、AndroidSDKをダウンロードする。
今回はWindows版ZIPファイルをダウンロードした。あとは、適当なディレクトリへ展開する。


2)JDK - Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle
JDKをダウンロードして、インストールする。
今回は、Java SE Development Kit 6u23を使用。


3)Eclipse - Eclipse Downloads | The Eclipse Foundation
Eclipse IDE for Java Developersをダウンロードして、適当なディレクトリへ展開する。


4)Pleiades - Eclipse 日本語化 | MergeDoc Project
Pleiades 本体ダウンロードから安定板(今回は1.3.2)をダウンロードして、展開する。
展開したファイルをEclipseを展開したディレクトリに上書きする。

その後、Eclipse.iniを開いて、最終行に以下を追記する。

-javaagent:plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

続いて、「eclipse.exe -clean」を実行する。


5)Android Plugin
最後にAndroid Pluginをeclipseからインストールする。

・[ヘルプ]-[新規ソフトウェアのインストール]を選択する。


・「インストール」が表示されるので、[追加]ボタンを押下する。


・「リポジトリーの追加」が表示されるので、[名前]と[リポジトリー]を設定する。

名前 Android Plugin
リポジトリ https://dl-ssl.google.com/android/eclipse/


・インストールする[開発ツール]にチェックを付けて[次へ]ボタンを押下し、インストールを行う。


6)eclipeにAndroid SDKを設定

・[ウィンドウ]-[設定]を選択する。


・[Android]を選択して、[SDK ロケーション]を設定する。


7)Android SDK および AVD マネージャーの設定


・[ウィンドウ]-[Android SDK および AVD マネージャー]を選択する。


・[Installed Packages]を選択し[Update All...]を押下する。

その後、必要なパッケージ選択し、インストールする。


・[Virtual Device]を選択し、新規にAVDを作成する。

[名前]と[ターゲット]を設定して、[Create AVD]を押下する。


後は、Androidプロジェクトを起動して、好きなもん作る