読書感想文:XP再入門 (WEB+DB PRESS Vol.72) 第一章

感想書く気持ち

XP再入門、最近おともだちと読書会をしています。
読書会を始める前に[価値/原則/プラクティス]のあたりの読みあわせを行ったのですが、タイトルの抜粋だと内容がわからないものが多く(特に第2版)、実際に読み比べながら進めたほうが楽しそうだということでXP初版と第2版をAmazonで購入しました! まだほとんど読んでいないのですが。
読書会は今のところ2回開催して、私は1回だけ参加しました。ゆるーく思うところを語れて良い感じがしています。
ですが、私は参加していて、自分の体験とリンクさせて考え込んでいることが多く、気付きとか意見交換よりもふりかえりの気持ちの方が大きくなっていました。人が話している時に考え込んでいて会話が抜け落ちてることが多いし、読書会するより1人で読んだ方が良いのかも…?
…と思ったので一度、1人で考えながら通して読んでみることにしました。

感想とか

XPが初版と第2版で全然違うときいて

XPは初版と第2版で対象者層に変化があるように思えました。開発チームからプロジェクトへ という印象で、内容も追加があってだいぶ変わっているように見えたので、なぜ「XP」という名前で改版したのかを疑問に思っていました。初版のXPを内包するものであってもそれは別物なのではないかと思ったのです。
ざっと第1章を読み終えたあとにXPの初版と第2版の序文を読んだのですが、紹介されている第2版の序文 "XP自体にXPのパラダイムをあてはめた" というのに第2版で出会った時に、わぁっと思うものがありました。XP再入門で読んだ時はなんだか気になるくらいだったのが、前後の序文を読むとわぁっとなります。ココすきー! 初版のXPを自分たちの開発で用いてみて、フィードバックを得て、初版のものを変化させる必要があると思ったから第2版としたのだと解釈しました。
それと、第2版の価値に「尊重」が増えている所から、初版で大きく足りなかったことがそれなのかなと推測しました。「意識高い開発チームとレベル低い周りの奴ら」とか「1人一所懸命に頑張る管理者の俺とお喋りばかりする開発の奴ら」とかそういう感じになったのかな、とか。ありそう。想像が後ろ向き!

到達したいところ

足りなかった記憶

最近、思うところあってまとめていたことがあります。XPの話ではなく、今までアジャイル札幌の勉強会とか研修とか本を読んだりとかしたのと、自分が関わったプロジェクトをあわせて感じたことです。
背景:受託開発で上下関係や担当分野の違いによりチーム内でも距離がある感じ

開発者(作業者)だけで変えられる範囲で行うアジャイル開発は見通しの良さとか楽しさが得られても顧客に届く価値は変えられない。たとえばこまかくフィードバックを得るためにリリースやミーティングの回数を増やすとか、計画を必要なところから立てていくとか、そういう顧客とチームの両方の責任の持ち方や作業時間が変化するようなことは、お金が絡むのでお金の話をする権利がある人の理解が必要。

開発チームだけで変えられないってことは無いと思う(チームの形によっても違うと思う)けど、「変えられない」と断定調で書いたのは、私自身がなるべく広範囲の人と同調しないと目標に到達できなさそうだと感じたからです。
開発チームだけで同じ認識を持つのと、開発に関わるすべての人で同じ認識を持つのでは、実現できるものと実現可能性が違ってくるのかなと思っています。

顧客の価値というもの

勉強会や研修に参加して「最初は自分たちの出来る範囲で変えていく」というのを学びました。
色々とやり方も知って、自分ができることをやっていこうと思っていたのと同時に、私は「出来る範囲で変えられることだけが目的でも良いや」と思っていたのですね。
多分、いままではお客さんとの距離が遠かったし、成果品に対する責任もあまり感じていなかったから。開発(作業/成果)の質を上げることしか考えていなかったし、届ける価値=開発の質 だと思っていました。

最近はお客さんと直接話す機会があったり、自分で考えられる幅が広いお仕事との出会いが多くて、「自分たちのできる範囲で変えられればいいや」だけではお客さんに届かないように感じています。それは直接見えづらいところが多いから届く価値にはなりにくい、というか、開発の質って高くてあたりまえなのかも…プロに頼んでいるわけだし…。
お客さんにとって必要なのはソフトウェアじゃなくて、その先の世界で何かが変わることなんですよね。なんか書いてて思ったけど、届けるっていうの違う気がする。一緒に到達するという感じかなぁ。あっ ここのタイトルに書いてる!(私すごい)

ここから考えると、今までは初版で満足していたけど今は第2版が必要 みたいな感じ(てきとう)。初版と第2版は到達点が違うんじゃないだろうかと思っています。開発品質と顧客の価値、みたいなもの。まだ読んでないので推測なんですけど!

XP自体にXPのパラダイムをあてはめたのにわぁっとなったこと

「XP自体にXPのパラダイムをあてはめた」 というので わぁっ となったのは、それが改善であることを示しているからかと思いました。到達できていないものをみつけて悶々としていた私には、ルールを自分自身に当てはめるのがとても良いものに思えたのです! たぶん!

Kaizen mind~

著者の規世さんのチームの「プラクティスを常に評価する機構」(といった感じの問い) が自然な雰囲気で出るところ、素敵だと思いました! ネガティブな要素をネガティブなままに伝えられる雰囲気が良い。めんどくさいとか意味がないとか、そういうこと。

ネガティブなままに伝えられないところの記憶

時に、過剰(≒不要)な努力でも美徳とするような環境に身をおくこともあります。そういう場所でめんどくさかったり手間に感じる気持ちを伝えると、怠慢だと一蹴されてしまうことが多いです。だからなんでこの作業やるんだっけみたいなのを1人で考えて、これこれこういう理由でこれはやめるべき みたいなのを無理矢理つくるんだけど、違うの、めんどくさいの。それで曲がった理由と目的は曲がった解決案を呼んでしまってめんどくささは解消できない、みたいなの、ありました。

ネガティブなままに伝えられるところの記憶

あるチームでは、毎週KPTでふりかえりを行なっていました。わたしはふりかえりが初めてだし、先ほど記載したような環境をいくつか経験したために、Problemを出すことを警戒して躊躇していました。
でもそのチームのふりかえりがおもしろくて、呑んだ時に終電を逃さないとか、早く帰るだとか、どんな内容でも出して良いという雰囲気を上手く作ってくれていて、すぐに馴染んだ覚えがあります。(馴染みすぎてたまに叱られた)
振り返りの時に「何がやりづらい」だとか「つらい」だとか気持ちに関わる部分を話せると、それをやめるのか、良くするのか、我慢してやらなきゃいけないのかということを話せます。本当のことを話しているので、曲がった解決案になることはありません。(解決しないことはあったけど) とても健全で、無駄がないように感じました。

私の好きなチーム

私は前述のチームに入って、チームや仕事への意識ががらっと変わりました。楽しまなくても楽しく働けることがあるんだなと思ったし、朝仕事へ行くのが辛くない働き方もあるんだなぁ、とも思いました。それまで、ものすごく辛かった、というわけでもないんですけどね。
規世さんのチームと、あの時のチームになんとなく似ている所があるように思っていて、それはフィードバックが大事にされているところかなと思いました。最初は「尊重」かと思ったけど、今XP第2版を見て、正しさとか改善とかは「フィードバック」に属す気がしましたし、尊重よりもしっくりきました!
(第2版と初版のフィードバックはちょっと違う? 初版のは頭に入ってこない…)

おわりに

単語

  • 顧客って単語がどうしても好きになれない(使ったけど)
  • お客さんっていうのもなんか違う気がする(使ったけど)
  • 最近、オーナーっていうのがしっくりきてる(使ってないけど)

書いた

満足した!
私のふりかえりを兼ねた読書感想文は私のふりかえりになってしまいます。満足しました。
2章以降はうまくあふれだしたら書くかもしんない

Global Game Jam Sapporo 2013 に参加しました #ggjsap

初めてのGGJ!

http://atnd.org/event/ggjsap13
チーム4にプロが来たと思った? 残念、あんにゅいちゃんでした!

私の役割

今回はグラフィッカとして参加しました。
ゲーム制作経験が全く無いので、参加時点でプログラマは志望せず。
チーム4は Rails+CoffeeScript だったので、Rails部分なら力になれるかなぁ…とか思ったけど、実際に走り出したらまったく追えなくなったので静かにしていました。

私の関わり方

コミュニケーションチャンネルはSkypeが主で、私はほとんどSkypeに引きこもっていました。事前ミーティングは不参加。期間中、初日は顔出して企画のお話とかしたりしたけど、あと2日は体調崩しておうち参戦でした。

ゲーム制作をふりかえる

企画の時間

チーム4のゲーム制作は、企画にたくさんの時間を使いました。

以前、参加した春祭りの時は、チームで集まったその日にゲームの構想がかたまったのでそれくらいの時間を想像して挑んだのですが、今回はテーマ発表〜2日目の昼過ぎくらいまで、作るものが揺らいでいました。
何が違うのかなーと考えてみて気づいたのは、春祭りの時は最初に「シューティング」というのが決まっていたということです。あれは大きかった気がします。

今回はメンバーのスキルを考慮して、事前にブラウザゲー(ソシャゲ)にしようということは決めていたけれど、これだと媒体しか決まっていないんですねぇ。その上になんでも作れちゃう。jsで画面遷移なしのゲームを作ったので、もうアクションでもなんでも乗り放題です。ブラウザゲーというと 脱出ゲー or ブラウザ三国志 くらいしか思い浮かばない私には目から鱗でありました。各々、ブラウザゲーのイメージも違ったのかなぁと想像します。

もしもう一度やるとすれば、もっとジャンルまで絞ってから挑むかなぁ。そうしたら大分構想を練るのが楽かもしれません。実際、クリックゲーにしよう って決まってからは初日分の時間しか使っていない気がします!(あんまり会場にいなかったので詳しい時間はわかりません><)

リーダーのすごみー!

miioたんがリーダーだったんですが、まじすごい。
ゲーム基盤の事前作成とかgitに慣れていない人のためのサポートツール作成とか、Skypeの窓分けとかゲームの方針決めだとか、チームのインフラ設計みたいなところを一手に担っていました。
githubを回したり滞りがちだったりするところへ気を回したりもしていて、企画/プログラム/絵 とどのSkype窓で困っていても降臨して一言くれるし、あなたが神か…。
なんか…事前込みでものすごく負担が偏っていた感じがあるので、微力でも力になれるとするとどこかなぁと考えました。役割分担難しそう。そのあたり何かあれば今度聞かせてください!
その前に顔出せって話ですね!すみません!

グラフィッカとして

mabちゃんありがとう!

今回一緒にグラフィッカとして動いていたmabちゃん!
めちゃんこお世話になりました…!
私はゲーム向きの画像というのがイマイチよくわかっていないので、mabちゃんの描くドット絵がすごく参考になりました。テイストとか作るものとかの方針ぎめがすごく助かった! 私はほとんどmabちゃんの操作で動いていました(^o^)

グラフィッカは事前情報がほしい

絵師は作る物が具体的にあがるまではすごく動きづらいのだなぁ というのを感じました。
今回は流れがあんまりわからず、2日目午後に自分駆動でつくりはじめちゃったけど、画像サイズとか必要な画像の種類とかをもらってから作った方が良かったのかなー。でも自分の発想が1日で間に合う気がしなかったので、64×64でアイコン作りはじめちゃったし、結局合わせてもらっちゃいました!エヘヘ
指示貰う前に描いたものは全捨てしたのですが、どんどん描きやすくなっていったので、数描くのアリな感じします。ただ、サイズだけは決めてもらったほうが良かったのかも…?
もし遠隔参戦じゃなければ、企画段階から画面のイメージラフを描いてみつつパーツとか決めるのが良さそうですね。自然と必要なものに辿り着けそうな感じ!

githubとグラフィッカ

今回は画像もgithubで管理しました。画像diff超べんり!
github駆動だとモヤッとしたものがコミットしづらいので、序盤はdropboxを使って良かったです。でももっと早く pull request 送ればよかったかな。
もう一度挑戦するとすれば、今度は必要な画像一覧とその大きさ、ファイル名だけ決めてから作り始めたいです。ダミー画像から順番にプルリクしていけそうな感じ!
この情報が必要っていうのは、グラフィッカで参加しないとわからなかったかも。
今までのプログラマ人生ではまったく想像できなかった。勉強になりました。

(思い返してみると、春祭りの時はそうやって情報を用意してもらってたのに一個も画像提出しなかったのでした…シャセン…シャセンッ……)

すごく印象に残ったツイート

最初見た時「ん?」ってなったけど、何度か読んで、もう、なんか、すごく印象に残りました。
自力以外出せないっていうのは、今まで積み上げてきた知識とか経験とかそういうものからしか、力は出せないということ…!

必要になった時に調べてみても、自分の中に似た経験やベースがないと、すぐに力として使うことなんてできないですよね。私は何度か似たようなことを感じたことがあって、わかっていたはずなんだけれど、実際に参加した人からこのツイートが出たことで思い出したようにハッとしました。きっと忘れていたんですね。
多分、そんな気持ちを強く感じないように、わからないことを避けてすごしているんだと思います。だってつらいし。

GGJに参加するということ

ずっと思っていたこと

もうね、私は恥ずかしかったんですよ。恥ずかしくて今までハッカソン系イベントは避けまくっていたんです。
何もできない気持ちが強いし、多分実際何もできない。プログラマを名乗っていても、急に何かを作れって言われた時に何も作れない。
仕事では、ハッカソンのようにストイックな作業はしたことがないし、職業プログラマとして、ハッカソンで何か作れることが重要かと問われれば、NOと答えます。
でもハッカソン会場ではそれを求められるし、それができるプログラマが集っているわけですよ。その中に居ることが恥ずかしい。
できないこと自体は悪いことでも恥ずかしいことでもないと思うし、できるようにならなければいけないとも思っていないけれど、できないことが恥ずかしいと思うようなところに、楽しく参加できる人達に憧れているわけです。だいぶ強く。

参加を決めた時の気持ち

そんな私なので、GGJ参加にもだいぶ躊躇していました。
12月22日にgiginetからお誘いリプライをうけても、まったく登録する気になれず。だってこわいし。それでずっと躊躇してそっとしておいたのだけれど、1月13日にもう一回お誘いリプライをもらったんですよ。

最初は「よかったらぜひ!」だったのが「ゲーム作りませんか?」になっていたんですよ。なんかその時に「これ断ったらずっと負けな気がする…」と思ったんですよ。普段勝ち負けって表現は大嫌いなんですが、この時は強くそう思ったんですよ!
で、この瞬間に決めなきゃ多分参加できないと思ったんですよ!
これ以上躊躇してはいけないと!

なんかだいぶ躊躇感漂っていますがすごくがんばりました。プログラマは志望できなかったのだけどね。

参加してみて

力になれたかって言うとほとんどなれてない感じするけど、タイトルが画面に出た時はわわわって思えたの、よかった…! Ust越しだけどちょっとどきどきしました。ふしぎ!

あとは何より、近くでプログラマ勢の死屍累々感を感じられたのがよかった!(えっ)
これは冗談じゃなくてですね〜
普段一緒にコード書いているわけではないメンバーと、事前のSkypeとその場の会話でもってプログラムの方針を決めたり、満身創痍な感じになりながらコードを書いていけるというの、すごいなと思ったんですよ。ほんとすごい。それを近くで感じられたのはほんとによかったと思ったんですよ!

多分いくつかよかったと言えるための条件もあって

  • 仕事と遠い
    • 本職カテゴリで参加していない
    • 職歴よりゲーム制作歴が重要
  • 日常と遠い
    • まわりは普段接することのない人ばかり
    • 参加者はプロだけじゃないしプログラマだけでもない

みたいなとこ。これらのおかげで、自分がどうかとかは置いといて、周りをフラットに見られる状態だったの。そういう場所に居させてもらったのは結構大きいとおもいます。
自分が中に入っちゃうと、できない申し訳なさとか後悔とか色々出てくるだろうけど、睡眠時間削りながらその時々全力で参加している人達を外側から見てるとそんなの全然関係なかった。負の念というのは自分の内側だけの問題だよなと思いました。ほんとプログラマかっこよかった。変態ばかりですよ。あの中に混ざりたいと本当に思いました。駆動する力になりたい。

それでね、次のGGJに参加するとしたらどこに入るかなって考えたんだけどね、プログラマ枠は目指し辛い感ありますね!
だって絶対肌に悪いもん……

そうかつ!

私くらいの参加度で振り返ってみてこれだけ感じるものがあるのだから、3日間フルに頑張ってた人はまだ全然抜けてないだろうなぁ と思って#ggjsapタグ周辺みたらそんな感じでワロタ
参加したおかげで、手元のコードをさわるのが楽しくなりました。ふしぎ。
参加してみてよかったよおおっ チーム4のみなさんありがとうございました!
ぎぎたん誘ってくれてありがとう! Organizerおつかれさまでした!


まじかわいい

おまけ

一人アセンブラチームの変態っぽい人がハイテンションで超楽しそうだったの、すごく良かった! あんな感じで参加したい! 絶対つらい!(ジレンマ)

capybaraについて勉強した

capybaraはユーザが行うブラウザ操作をプログラムしてテストを行うためのインターフェースです。実際にブラウザからボタンを押して遷移できるか とか〜 タイトルがちゃんと表示されているか とか〜 目視することなくコードを書いて確認ができます。とっても便利!
capybaraはドライバを変更して使うことができます。

f:id:EnnuimaZ:20130106175251p:plain

調べてみたけど壮大過ぎて把握できない!
以下簡単なまとめです。


drivers

RackTest Driver

Class: Capybara::RackTest::Driver

  • JavaScriptを使う必要がない時はこれがうごく
  • capybaraデフォルト!

selenium

  • JavaScriptを使う必要があるときのデフォルト
  • ブラウザを起動するもの

capybara-webkit

"A Capybara driver for headless WebKit so you can test Javascript web apps"

"A capybara driver that uses WebKit via QtWebKit."

poltergeist

"You need at least PhantomJS 1.7.0. There are no other external dependencies (you don't need Qt, or a running X server, etc.)"


engines

Selenium

"Selenium automates browsers."

  • selenium はブラウザを自動操作するもの!
    • selenium-webdriver っていうのがあって、これでブラウザを起動することができる。この中のドライバを変更すると立ち上げるブラウザを変更できて、capybaraからもこの機能を使うことができる。(いくつかのCI環境を用意して、こっちはIE こっちはSafari ってテストができて便利だね!)

QtWebKit

  • QtWebKit
    • QtとWebKitをあわせたもの? QtがどうやってWebKitとつながるんだろう。UIの部分?

Qt

"Qt is a full development framework with tools designed to streamline the creation of applications and user interfaces for desktop, embedded and mobile platforms."

  • [qt.digia.com/Product/:title=Product - Qt]
WebKit

"WebKit is an open source web browser engine."

PhantomJS

"Full web stack
No browser required"

  • PhantomJS
  • ブラウザを使わずにすべてのweb機能を!(かっこいい)
  • webkit をラップしたコマンドラインアプリケーション


以上!

画像以上のことはわかっていない感じありますねえ。

rbenv + ruby-build 環境で新し目のRubyを使いたい時

Ruby 1.9.3-p327 をインストールしたい

定義されていません

$ CONFIGURE_OPTS="--with-readline-dir=/usr/local --with-openssl-dir=/usr/local" rbenv install 1.9.3-p327
ruby-build: definition not found: 1.9.3-p327
  • 1.9.3-p327 なんてありませんねぇ と言われている
    • `$ brew update ruby-build` しても変わらない

ruby-build の定義情報はどうやって更新されるのかなと思ったのだが、
ruby-build 自体に ビルド方法の定義を更新するオプションやサブコマンドはない
ruby-build 自体を Homebrew などで入れ直す必要がある

  • `ruby-build` コマンドで確認
    • 使っているものは20121104
    • ruby-build の Version History を見ると、p327を取り込んだのは20121110
      • インストールしなおしましょう

ruby-build をインストールし直す

以下実行ログ


*追記*

unlink で unlink できないとき

$ brew unlink ruby-build
Unlinking /usr/local/Cellar/ruby-build/HEAD... 4 links removed
$ brew install --HEAD ruby-build
Warning: Your Xcode (4.5.2) is outdated
Please install Xcode 4.6.3.
Warning: ruby-build-HEAD already installed, it's just not linked
$ brew remove --force ruby-build

そっからruby-buildをインストールしなおす

切り替え

$ rbenv global 1.9.3-p327
$ rbenv local 1.9.3-p327
  • 本当はglobalはp194のままです
    • 急に切り替えるのこわい

rvm から rbenv+ruby-build へ移行した

移行手順

rvm を使わないようにする

$ mkdir rvm_backup
$ mv ~/.rvm rvm_backup
$ vi ~/.bashrc           #rvmの記載を消す
$ vi ~/.bash_profile     #rvmの記載を消す

rbenv, ruby-build をインストールする

$ brew install rbenv
$ brew install ruby-build

Ruby をインストールする

$ brew install readline
$ brew link readline
$ brew install openssl
$ brew link openssl
$ ls /usr/local/Cellar/readline/
6.2.1 6.2.2 6.2.4
$ ls /usr/local/Cellar/openssl/
0.9.8r 1.0.1a 1.0.1c
$ CONFIGURE_OPTS="--with-readline-dir=/usr/local/Celler/readline/6.2.4 --with-openssl-dir=/usr/local/Celler/openssl/1.0.1c" rbenv install 1.9.3-p194

bashrc の一番最後に以下の設定を入れる

PATH=$HOME/.rbenv/bin:$PATH
PATH=/usr/local/bin:$PATH  #既存のPATH設定を移動
eval "$(rbenv init -)"

※PATHの設定順間違えてすごくハマった

使用する Ruby のバージョン変更方法

$ rbenv global 1.9.3-p194
$ rbenv local 1.9.3-p194

OS X Snow Leopard から OS X Mountain Lion へのアップデート

流しのプログラマをしている女子高生(27)は無職で暇なので
雪豹にお別れを告げて山獅子を飼うことにしました。

Mountain Lion のインストールから開発環境を整えるまで

  1. Apple Store で OS X Mountain Lion を購入して DL and Install
  2. https://developer.apple.com/downloads/index.action DL and Install
  3. $ sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer/

上の手順に至った背景 → https://gist.github.com/e8d7f7672d55ae02b2d3

FreeMindをインストール

PowerPC アプリケーションはサポートされなくなったため、アプリケーション”FreeMind.app”を開けません。」

検索すると ”FreeMind活用クラブから配布されているFreeMindは古いバージョンです” とある。 FreeMindをダウンロード してインストールして /Applications/ 配下に追加。

起動しようとするとエラーが表示されるが、調べたところセキュリティが厳しくて使えていないだけなので、以下の手順で許可する。

  1. システム環境設定 > セキュリティとプライバシー
  2. 「すべてのアプリケーションを許可」
  3. FreeMindを実行

これで立ち上げることができる。
セキュリティの設定は戻しておいた。

gimpが使えない

なんと Mountain Lion は自分でX11入れなきゃいけないらしい。

リンク先からダウンロードしてインストール

  • http://xquartz.macosforge.org/landing/

    • XQuartz-2.7.4.dmg
      • そしてgimpを開く!
      • X11指定しろって言われた…どこに入ったの…?
  • そもそもgimpを Mountain Lion 用にしなきゃいけないらしい。

  • 起動する。起動中画面がきれいな感じ。 -- 起動後も画面が黒背景になっていてかっこいいし気が散らない。

  • タスクにX11じゃなくgimpと表示されるのが良い。
  • ⌘Qすると固まるのでメニューから落としている。バグかな。