2014年8月30日土曜日

「UX、デザイン思考、リーンスタートアップのためのワークショップ ファシリテーション入門」に参加しました


一番、印象に残ったのは、懇親会で言われた「今持ってる知識で中途半端に理解したり、持っているスキルの範囲でやったりせずに、バカになって教わったことを愚直にやって失敗した方が学びが多いのに。」ということ。

ワークショップってそもそも何?


ワックショップは、
主体的に参加したメンバーが恊働体験を通じて創造と学習を生みだす場

ワークショップは、
言葉、頭中心に行うのではなく、身体の動きも含めて、全身で感じたものを個人個人が出しあいながら、集団で作り上げる手法

ワークショップの特徴


身体性、創造性、恊働性、共有性、過程の重視

会議とワーショップは何が違う?


会議とワークショップって、ある意味言い方の違い。
要は、ワークショップは、上記の特徴をもったもの。
だから、ワークショップ型会議っていうのもある。

普通の会議、ちょっと変わった会議、変わった会議


普通の会議、ちょっと変わった会議、変わった会議の順にやってみて、どう変わるかを体験するワークショップをしました。

普通の会議


議長と議事録係を決めます。
発言は1人ずつ。
割り込む場合は、挙手。

ちょっと変わった会議


ふせん紙を使って、見える化しながらやります。

変わった会議


途中、途中で指令書がでます。
こんなの。



グラフィックファシリテーションとリアルタイムドキュメンテーション




懇親会でグラフィックファシリテーションとリアルタイムドキュメンテーションの紹介がありました。
グラフィックファシリテーションは高いスキルが必要そうなので、練習が必要そう。
リアルタイムドキュメンテーションはやればなんとかなりそうだから、どこかでチャレンジしたい。

リアルタイムドキュメンテーションでググったらこんなのあった!
visual recordingでググったら色々みれる!

2014年8月23日土曜日

PI Study #3 「jQuery入門(ハンズオン)」


@東京都豊島区東池袋3丁目4番3号池袋イースト10F テラインターナショナル株式会社
http://pistudy.doorkeeper.jp/events/13570

仲間とはじめた勉強会の3回目。
とてもよい勉強会でしたが、私個人としては深く反省しなければならない回になりました。

今回は私のプロジェクトの若手に講師をしてもらいました。
もともと、凄腕エンジニアをよんで講師をしてもらうのではなく、エンジニア同士で学び合う場にしたいと思っていたので、それが形になってきたことは本当に嬉しい限りです。
しかも、今回は、私の仲間がきてくれて、本当に楽しい時間を過ごせました。

勉強会の後の懇親会にも、新人のとてもかわいらしい女子とフリーランスの凄腕エンジニアがきてくれて、しかも、今度は講師をしてくれると言ってくれて、自分の目指していたものが思っていたよりもいい形で実現して、感動でした。
でも、懇親会でフリーランスの凄腕エンジニアに言われた一言に大いに反省させられました。

-----
勉強会は内容もよく、楽しかったけど、1つだけ気になったのは、固有名詞が飛び交い、内輪の雰囲気が強すぎでした。
-----

これは、完全に私のせいです。
前述のとおり、自分の仲間がたくさん協力してくれて、嬉しくて、はしゃいでしまいました。
そのせいで、本来は楽しめたはずの人たちに、不快な思いをさせてしまいました。

今日、不快な思いをさせてしまった皆様、本当に申し訳ありません。

これまでは、正直、私と友人の2人の勉強会でしたが、今回を機によりよい勉強会にしていきたいと思います。
初心をもう一度、自分自身に言い聞かせます。

http://prezi.com/lxfns481sybw/?utm_campaign=share&utm_medium=copy&rc=ex0share

2014年8月2日土曜日

DevNomi(easy mode)in BOOKSHELF CAFE


アジャイル開発のプロジェクトで暫定版リリース後のスプリント1発目!
ということで、DevNomi(easy mode)をやりました。

DevNomiについて

  • 説明:http://xpfriend.com/DevNomi/#/start
  • ソース:今回はeasy modeとして、説明スライドからリンクされているネタとは違うネタでやりました。

メンバー構成 

  • 開発者:3名
  • インフラエンジニア:1名
  • 新人営業:1名
  • DevNomiディレクター(笑):1名


結果

2時間半やって、そこそこ書けました。
ちょっとだけプログラムを教えた新人営業がそこそこ書けてびっくり!
最後の方でエラーがでてたので、帰ってからコードをのぞいてみたら、変数を初期化していないため、値が代入されないパターンのときに値がNaNになってました。
まだまだですな。


会場(Bookshelf Cafe)について



iPadが使いたい放題で、プロジェクターも使えるとてもすてきな場所です。
飲み物もこだわり系で、おいしい!
IT系の勉強会を開く予定で、初回の9/8はインフラ初心者向けのDocker入門だそう。
こちらも、要チェックです。

2014年6月26日木曜日

MeCabで形態素分析してTwitter Cloudをつくってみる

PHP、JavaScriptでやってみます。
環境はMac。

使ったもの

  • XAMPP
    PHPのall in one開発環境
  • MeCab
    形態素分析ライブラリ
  • php-mecab
    PHPでMeCabを使うためのライブラリ
  • jqcloud
    タグクラウドをjavascriptでつくるためのライブラリ
  • twitteroauth
    twitterの認証ライブラリ

準備

参考にしたURL:
http://www.aoharu-b.com/cgi/sk/2013/09/vpsmecabphpcentos64php533542.html
※準備はこっちを見たほうが丁寧です。。。

XAMPPをインストール

インストールは省略。
macの場合、デフォルトでPHPが入ってて、XAMPPのPHPと混ざってちょっと困る。
なんで、XAMPPのPHPを使うように、以下の設定をしておく。

1. 自分のホームディレクトリの .bash_profile ファイルに以下を追記(ファイルがなければつくる)。

export PATH="/Applications/XAMPP/bin/:$PATH"

2. macのデフォルトのphpを退避

sudo mv /usr/bin/php /usr/bin/php_org

3. ターミナルを再起動

which php

=> /Applications/XAMPP/bin//php

4. apacheを再起動

mecabのインストール

cd
wget https://mecab.googlecode.com/files/mecab-0.996.tar.gz
tar zxfv mecab-0.996.tar.gz cd mecab-0.996
./configure --enable-utf8-only
make
make install

辞書のインストール

wget http://sourceforge.net/projects/mecab/files/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz
tar zxvf mecab-ipadic-2.7.0-20070801.tar.gz
cd mecab-ipadic-2.7.0-20070801
./configure --with-mecab-config=/usr/local/bin/mecab-config --prefix=/usr/local/ --with-charset=utf8
make
make install

autoconfのインストール(php-mecabのインストールに必要)

cd
wget http://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz
tar xfvz autoconf-latest.tar.gz
cd autoconf-2.69
./configure
make
make install

php-mecabのインストール

cd
wget https://github.com/downloads/rsky/php-mecab/php-mecab-0.5.0.tgz
tar xzvf php-mecab-0.5.0.tgz
cd php-mecab-0.5.0
phpize
./configure --with-php-config=
/Applications/XAMPP/bin/php-config --with-mecab=/usr/local/bin/mecab-config
make
sudo make install

設定ファイルの修正

vim /Applications/XAMPP/etc/php.ini

以下を追記
extension=mecab.so

twitter apiのアカウント作成

以下にアクセスしてログインする。

[Create New App]する。
API KEYSタブで次の作業をする。
  • [Cange App Permissions]
  • [Create my access token]

で、以下をメモ。
  • API key
  • API secret
  • Access token
  • Access token secret

プログラム

以下をXAMPPのhtdocs配下に置く。
https://github.com/itagakishintaro/twitter-cloud

TwitterAPIHandler.phpを開いて、apps.twitter.comでメモした部分をコピペ。
XAMPPマネージャからApacheを起動。
ブラウザから以下を開く。
http://localhost/twitter-cloud/index.html

おしまい。

2014年5月27日火曜日

クロスプラットフォーム、クロスブラウザのテストを仮想環境で簡単に

仕事でIE8のテストをしなければならなくて、そんな端末ねーよ!って思ってたら、仮想環境で簡単にテストできたのでメモ。
いやー、時代が変わったなぁ。。。

以下の手順の6と8は日本語対応のため。
XPのCDがあれば、以下の手順でOSレベルで日本語対応できるみたい。
コントロールパネル
->Regional and Language Options
->Languageタブ
->Install files for East Asian languagesにチェック
->Apply

あと、XP以外であれば、他にも方法があるらしい。

1.VirtualBoxのインストール

https://www.virtualbox.org/wiki/Downloads

2.仮想イメージのダウンロード

以下から、Windows, Virtual Box(Windows上)を選択し、IE8-XPのファイルを全てダウンロード
http://modern.ie/ja-jp/virtualization-tools#downloads


3.ダウンロードしたexeファイルを実行する



4.作成されたovaファイルをダブルクリックする



5.VirtualBoxマネージャーの設定から以下を実施

共有フォルダー
->画面右上の追加アイコンをクリック
->任意のフォルダを追加(読み込み専用、自動マウントの両方にチェック)


6.フォントをコピー

C:¥Windows¥Fonts 配下のMSゴシック、MS明朝を共有したフォルダーにコピー


7.仮想環境を起動



8.仮想環境でフォントをコピー

共有したフォルダーのフォントをC:¥Windows¥Fonts配下にコピー


9.Lets's TEST!!!

OSは英語でもブラウザでは日本語がみれる!

2014年5月25日日曜日

PI Study #2 「ペアワイズ法を使ったテスティングワークショップ」

@東京都豊島区東池袋3丁目4番3号池袋イースト10F テラインターナショナル株式会社
http://pistudy.doorkeeper.jp/events/11043

仲間とはじめた勉強会の2回目。
1回目はSTARの良質なコンテンツを使ったので、余裕だったけど、今回は1からつくったので、なかなか大変でした。
で、一人KPT。

KEEP


  • 講義を聞くだけではなく、実際に手を動かす
  • モクモクとやるのではなく、チームで話しながらやる
  • 講師は気負わず、知ってる範囲で知ってることを伝え、共に学び合う
  • みなさん熱中してくれた(休憩もとらずにやってた)
  • 「他の勉強会も色々でてるけど、平均より良い勉強会ですよ」と言ってくれた
  • 永井くんが「Gebを勉強して今度は僕がやります!」と言ってくれた

PROBLEM


  • ペアワイズ法と銘打ったにも関わらず、ペアワイズ法を深堀りしなかった
  • 2因子網羅の部分の説明が足りず、理解してもらえなかった人がいた
  • DevNomiテスト編で、計算が複雑すぎてそこで無駄な時間を食ってしまった
  • チームに発表してもらったときに、気の利いたコメントが言えなかったし、チーム間でディスカッションするファシリテーションができなかった
  • 若手向けを意識したけど、若手は勉強会にはあまり来ない

TRY


  • 絶対に持ち帰って欲しいものを1つ決めて、そこはきちんと深堀りして準備する
  • ディスカッションの時間をきちんととり、準備したうえでファシリテーションする

2014年5月17日土曜日

DevLOVE「オブジェクト設計とリーン開発、その実践」に参加しました


@名古屋市中区錦1-15-8 アミティエ錦第一ビル 4F Coworking Space A+LIVE セミナールーム

正しいものを正しくつくる
ギルドワークス創業おめでとうございます!
増田さんのプロジェクトで増田さんに叱られながら仕事してみたいなぁ。

第一部 オブジェクト設計エクササイズ [13:10〜14:00] 増田亨氏



設計とは、変更コストを下げるためにコードを整理整頓する実践的な工夫

プロセスやツールよりも設計

コードを整理、整頓する。
それは、変更コストを下げたいから。
(作って終わりならいらないけどね。)

実践的ってなんだろう?

いくつかの観点で、対岸を行ったり動きながらバランスを取る。
(全体<->部分、長期<->短期・・・)

具体的にどうやるの?

変更コストの原因を知る。
変更コストの最大の敵は「重複したコード」。

重複したコードのいやな臭い(Martin Fowler "Refactoring")


  • 長いメソッド
  • 大きなクラス
  • たくさんの引数


マスダ流重複の臭い判定基準


  • クラス:50行(100行)
  • メソッド:3行(5行)
  • 引数:0(1)

これを超えたら警戒警報!
(カッコの中はチーム用に緩めた数字)

コード整理の基本パターン


  • Value Object
  • 振る舞いを持った区分
  • ファーストクラスコレクション


Value Object

immutableがポイント。
例)Stringクラス
内部の値を変えずに、新しいObjectを返している。

getメソッドをつくらない。
getをつくるとロジックが散らばる。
データのある場所にロジックを寄せる。
setメソッドもつくらない。
setをつくると状態管理のコードが散らばる。
=> immutable(不変オブジェクト)

プリミティブなクラスは使わず、業務(ドメイン)固有のクラスを作る。
例)
String, StringBuilder, List<String> => ProductName, Remarks
BigDecimal, Integer => Money, Quantity, Unit
Calendar, Date => InitialDate, DueDate, ValidTerm

振る舞いを持った区分

enumにメソッドを持たせる。
定数も、関連するロジックはそこに閉じ込める。

ファーストクラスコレクション

privateなコレクション、publicな振る舞い。
コレクションをgetして操作するとあちこちにコードが登場する。
例)
Customers, OrderLines, UsageHistory, ToDoList・・・

コードの整理 アンチパターン


  • Smart UI(画面単位で設計)
  • トランザクションスクリプト(機能単位で設計)
  • Active Record(テーブル単位で設計)

=> 必ずコードが重複する。

Smart UI => 画面間で重複が発生する。トランザクションスクリプト => 機能間で重複が発生する。
Active Record => テーブル間で重複が発生する。

コードの整理 グッドパターン


  • 3層+ドメインモデル
  • 業務の関心事(業務知識)に基づき設計する

=> 変更が簡単

  • 仕様変更は業務から発生する
  • 業務の関心事の依存関係がクラスの依存関係になっている
  • 変更の対象箇所以外でわけのわからない副作用がおきない


第二部 リーン開発の現場 [14:10〜15:00] 市谷聡啓氏


理想とはたとりつくべき場所のことではなく、ありたい姿に向かい続けることなんだ!

誰かが正解を持っている訳ではない


開発の命運を握る2つのレバー


  • 期待
  • リスク


期待

関係者が互いに持っているプロダクト/プロジェクト/チームへの暗黙的な望み

期待マネジメント

期待を明らかにして適切に調整しつづける。役割と時間を超えて。

チーム => プロジェクト => プロダクト => ビジネス => 組織

レイヤーごとに目的と期待がある。
レイヤーを超え、役割を超えた理解が必要。

Moving Management Target

期待とリスクのバランスは時間とともに変わっていく。
時間を超えた理解が必要。

インセプションデッキ

期待マネジメントのツールの1つ。
大事なのは、アウトプットではなく、その過程でお互いに理解しあうこと。

仮説検証型と最短距離型

目的実現のための選択肢がいろいろある。
=> 何を選ぶか決めるために試行し検証する。
=> 検証から何をどう作るか徐々に決められる
=> 手段と対象がわかれば、最短距離でつくる

スコープが決まってないのに期限だけ決まってる
=> 超危険
=> 仮説検証時は期間契約、スコープが決まれば請負契約

大事なのは、フェーズによって戦い方が変わるということ。

仮説検証型のPlan

リーンキャンバス(仮説)
=> エクスペリエンスマップ(検証)
=> ユーザーストーリーマッピング(仮説)
=> インセプションデッキ(検証)

参考)
「開発戦略は「意思決定」を遅らせろ!」(稲垣 公夫)

最短距離型のPlan

CCPM
パーキンソンの法則:バッファを使いきってしまう。
=> バッファをプロジェクト全体で管理する。

荒ぶる計画を飼い慣らす

  • 要求レベルをMust, Want, Tryで可視化する
  • プロジェクトの8-9割でMustを実現できる見込みを立てる
  • 残った工数でWantを開発する


仮説検証型のDo

なんのための反復?
何を検証するのか?

カンバン(仮説検証型、最短距離型)

仮説検証型:タスク、課題解決の可視化 => タスクボード
最短距離型:全体フローの見える化 => カンバンボード

仮説検証型と最短距離型の見極め

=> インセプションデッキ

ソフトウェアを創り上げるもの

誰が、誰と、誰のために
どういうルールで、何を作るか

リーン開発の現場 P.109

理想とはたとりつくべき場所のことではなく、ありたい姿に向かい続けることなんだ!

第三部 Q&A [15:10〜16:00]


  • DDDをどれくらいかけて覚えれば?
    => 2008年からはじめてわかりはじめたのが2012年。現場で続けるのが一番。
  • フレームワークを使っている場合(コード自動生成)の折り合いは?
    => 大嫌いだから使ってない。折り合いの付け方もノウハウ。
  • クラスが多くなったときのまとめ方は?
    => 業務にあわせてパッケージを構成している。
  • お客様に丸投げされたときにどうすれば?
  • バッファと見積の合意方法は?
    => QCDSのトレードオフスライダーを使ったりする。
  • そもそもドメインって何?
    => まあ、気にしないほうがいい(^^)。カタカナは日本語にするとよい。
  • インフラからプログラマになるとき何を学べば?
    => 今はインフラもコードで自動化する時代。そこからはじめては。
  • 設計の価値をどう伝えれば?
    => 相手が開発者であれば、変更が大変だったネタを思い出して盛り上がる。そこからスタートすると伝わりやすい。設計とは何かとか良い設計とはとかのアプローチは必ず失敗する。ただ、人がつくったコードで痛い目あってる体験共有からだとうまくいかない。
  • 期待をどうマネジメント?どうまとめる?
    => インセプションデッキを使う。困ったらぜひギルドワークスへ(^^)。インセプションデッキの期待が高くなり過ぎないようにしれっとね。
  • 設計の考え方をどう共有するか?
    => 経験がないのでわからない。若い頃は意地になって相手を潰すぐらい勉強した。
  • カンバンをどう広めるか?
    => いきなり実プロジェクトでやるのはリスクが高い。カンバンだったら、まずは、自分でやれる範囲でやるとか。失敗できるところでやってから。
  • どんなドキュメント管理してる?
    => クラス図やドキュメントを全部作ってない。ドメイン知識が増えれば、ドキュメントがなくてもわかる。新しいメンバーにはドキュメントではなく、業務を覚えてもらう。業務がわかれば、ソースが読める構造になっている。
    => IDEが優秀だから。IntelliJ IDEAがオススメ。すぐ乗り換えよう。
  • どんな工程?
    => 全部網羅的に設計せずに、重要な部分だけ抜き出して設計してる。
  • 開発スピードが落ちない?
  • マスダ流は厳しすぎない?
    => 実践でいきなりやるのは難しいかもしれないが、実際にやって、まずは体験してみて。
  • なんのロジックも持たなくて、単純な置き換えでもクラス化する?
    => する。名前がほしいから。