Hatena::ブログ(Diary)

星のダンスを見においで

2011-12-18

1人アドベントカレンダー18日目「アジャイルサムライ読書会 新宿道場#1」


アジャイルサムライ読書会 新宿道場#1 2011/12/18 日曜日 14:00 to 17:00

https://connpass.com/event/125/

株式会社タイムインターメディア様の会議室をお貸し頂きました。

諸注意 〜 アイスブレイク 〜 第1章

2つのテーブルで2グループに分かれて座っていたのですが、Python関連の勉強会で顔見知りな方が多かったです。
知らない人同士2人組を組んで10分近く自己紹介〜おしゃべりをたっぷりしました。アイスブレイクでここまで長時間しゃべったのは初めてです(笑)

アイスブレイク終了後は各自、知りたい事を付箋紙に書き出しチーム的にどういう形で進めるか相談しながら勧めていきます。

付箋紙をまとめた所で私のいたグループは大きく分けて2つ

ここで、そもそもアジャイルとは、それぞれにとってどのような物なのかを発表しないか、という提案がメンバから出ます。
みなさんの意見をお聞きして思ったのが、人によってアジャイルのイメージが違う!という事。
私がイメージしているのは「人と人とがコミュニケーションを重視した考え方」でしたが、これはあくまでも根本の考え方の1つにしかすぎずアジャイルの最終目標ではありませんでした。

最後にこの提案をしたメンバの発表がみんなを納得させる1つの答えとなり、それは、

アジャイルとはお客様に価値を届ける事」

ここまでで一区切り。

ワークショップの形式は「ワールドカフェ」。
ワールドカフェはグループを作り、リーダーを決めてディスカッションを進め、話したい人はトークンオブジェクトと呼ぶ目印(コースターでもなんでもいい)を持つルール。
1ラウンドが終わったら、リーダーだけテーブルに残り他の人は別のテーブルに移るという方式です。
今回は2グループしか作らなかった為、変形バージョンとしてリーダーは立てずにメンバが半々入れ替えに。

ここでも色々な意見が出ます。

  • アジャイルなら計画を立てなくていい、いくら仕様変更をしてもいい、というわけじゃないでしょ?
  • アジャイルは何度でも小さな計画を立て直す事ができる
  • buzzwordじゃないよ!」 #世界のマスターセンセー
  • フィードバックも道を見ながらハンドリングをする必要があるよね?
  • Webで有名なブランコの話
  • ゴールさえしっかりしていれば、なんとかなるんじゃないか
  • 色々な事象フィードバックされるから進める事ができる
  • アジャイルとは共有する事だよね
  • ゴールを共有してフィードバックする事で柔軟性が出てくるのではないか?

2ラウンド目が終わり、おやつタイムへ。

おやつタイム

主催者の方の心づくしで凄く豪勢な感じでした。スイートポテトがとてもおいしかったです!
時間が20分で少々長めでしたが、この時間にも色々お話しました。

  • アジャイルを業務で実践している方〜?」誰もいなかったり〜
  • 「一生ウォータールでやりたくないから学びに来ているんですよね?」

第2章

テーマ決めて、じっくりディスカッションしました。

  • 自己組織的なチームってどんなチーム?
    • 積極的に考える事ができるメンバでないと難しい
    • 考えを持っていても発言しやすくないとダメ
    • 自己組織化って何?上から指示してもメンバが動かない。チーム内で話合っていって動くようになった
    • 自分が良いと思った事は率先してやる。問題があったら後で謝ればいい
    • 自分が言ったことに責任を持つ
    • アジャイルはそこに顧客が入ってくるので謝ればいいという事にならない。コミットメントが必要。
    • チーム内と対顧客で少し違う
    • 失敗があった時に失敗した人だけを非難するのは間違っている。チーム全体の責任であるはず。そのためにはコミュニケーションが必要
    • 達成感があれば目標に進んでいける
    • リーダに守られる安心感があるといい

ここでメンバ交代。

  • 自己組織的なチームを作るコツは?
    • リーダーが指示するだけではなく、自分で動く事
    • リーダーに守られる安心感
    • ゴールを共有する
    • 全員がリーダーになろう http://d.hatena.ne.jp/Chikirin/20110927
    • ゴールの共有という意味合いで、顧客とチームで対立していく
    • 顧客の夢が広がっていくのをどう止めるのか
    • 担当レイヤーが違う。メール配信ツールを作っていたのにFacebookみたいなのができていた、というのはおかしい
    • それはプロダクトオーナーと調整する事で解決。顧客もチームに巻き込む
    • みんなの意見を、よしこれにする!と決めるのがプロダクトオーナー
    • アジャイルのゴールは一体どこにあるんですか?
    • ゴールは始まりの時点では方向性だと思う。それが最終的に点に収束するのでは?
    • そうではないと思う。その機能を作ったら何が起こるのか?個々の機能を作るのではなく、顧客は最終的にどうなりたいのか?を実現する事ではないのか?

だんだんアジャイルサムライ中盤以降の内容になってきた為、自己組織的なチームについての話へ戻ります。

    • みんなで補い合っていこう、というと相対的に能力が低い人をフォローする為に能力が高い人の負荷があがってしまう
    • 結局、日々の仕事に追われて、教育しながらという事ができない。日々できる人が損をする
    • 自己組織化というのは助け合いではない
    • うまくいかないのはマネージメントが足りていないから。周りのフォローアップができていない。
    • まさにマネージメントができていない。マネージャーがいない。
    • 誰が何をやる、タスクの割り当てというのは誰かがやるの?
    • マネージャーはいないとダメ。どこの現場でもマネージメントは絶対必要
    • その人がどれだけできるか、積極性があるか。どうやって成長していくのか
    • アジャイル関係なく、そもそもチームを作るのであれば、おかしい事をおかしいと言えるような環境が必要。
    • プロジェクトが抱えている目的に向かって進んでいくというのもあるけど、細かいイテレータで回していう考え方が必要
    • ネガティブな事を言うのではなく、改善していく行動をする、それを繰り返していく事によって幸せになれると思う
    • イテレーションの区切りで振り返る時に、ネガティブな意見ではなく改善する行動を起こしていく
    • 顧客をいかに巻き込んでいくか。信頼をどうやって高めるか。信頼貯金をためていく
    • アジャイルを導入する時に、不安のある顧客に正直ベースで話していく
    • お隣さんを巻き込む。例えばgeekの顧客に技術的なデモをしていく

懇親会

半分くらいの方が参加されました。本編3時間に対して、懇親会は4〜5時間やってたような気がします(笑)

トピックスとしては「TDDのお話」「英語しゃべれるようにする為には?」

私が、おお!と思ったのは社内で「++」という方法を採用している方がいらっしゃった事。
バグを見つけたりした場合、バグを出した人に「-(マイナス)」を付けるのではなく「+(プラス)」を付けるんだそうで。
こういう事を考え、また採用されるような会社は素晴らしいですね。

2011-12-17

1人アドベントカレンダー17日目「(第14回)Python mini Hack-a-thon」


(第14回)Python mini Hack-a-thon 2011/12/17(土) 11:00?

https://connpass.com/event/141/

これまた感想が前後してしまいますが、前回の#pyhack(Python mini Hack-a-thon)に引き続き私は2回目の参加となります。

場所はアリエル・ネットワーク株式会社様。

午前

電車遅延等で遅れてくる方が多かった為、11:30頃からしょーまさんから事務通知。全員で自己紹介&本日やる事の発表をしてから黙々と各自の作業開始・・・ではなくまずは雑談が多かったかも。

私は午前中一杯かけてどんなツールを作るのかをまとめてました。

自社で大量に個人宛てにメールを送信するような事をしそうなので、メール送信が楽できるツールを作りたい
最低限の要件

  • 個人宛てのメール送信ができる
  • To: ○○さん のような宛先は引数で指定できるようにする。
  • CUIで操作する
  • メールのテンプレートを準備して、宛先ごとに編集がしやすいようにする。※できたら

流れ

  1. メール送信モジュールの確認
  2. 操作方法考案


お昼

お昼は@t2yさんのお勧めカレー店へご一緒にさせて頂きました。

@junjun_mathさんの質問から形態素解析の話になった。@tk0miyaさんと@t2yさんから色々お話聞けた。

午後

皆さん事務関連やら議論やら雑談やらアドベントカレンダーの勧誘やらで色々お話されてましたが、15:30くらいから本格的にモクモクし始めました。
私は成果発表を必ずする!と決めていたので、この間、少しでもマシな発表ができるよう必死に。

そして、17:30から成果発表。

全員分のIDと発表詳細を追い切れなかったのでツイートからコピって箇条書きです。

自分の成果
    • emailモジュールの使い方をググってヒットしたブログからコピーさせてもらいました(汗
    • メール送信まではできましたが、メール本文をテキストから入力という部分がわからず。詰まり中
    • 成果発表の際に、アドバイスを受けて文字化けしながらもメール送信できた!

懇親会

色々楽しいお話を聞けました。ネタ的な物も多かったですが、興味深い話も多かったです。

特に@aodagさんの面接時にする?したい?質問「好きな図形は?」「その理由を30秒で答えて」はスキルについては、それまでに十分わかっているので、この質問でその人のポリシーがわかるという話が面白く感じました。ちなみに@aodagさんは平行四辺形と台形が完璧の一歩手前で好き、との事。奥深い・・・

その他トピックス
  • 高校生が2人参加。自分がこの人たちに追いつける日はいつなのかと考えてしまった
  • @t2yさんから塩昆布を頂いた
  • 今日発売されたばかりのVITAを買ってきてハック始めた方が!
  • まずいと評判のフィンランドのお菓子「SALMIAKKI」を頂きました!外側のチョコレートは普通においしかったです。
  • しょーまさんにsmtplibのSMTPはクラスなのでインスタンス作らないと、と教えて頂いた。

来月の#pyhackも公開されたので、早速登録しました。とにかく少しでもレベルあげないと・・・

2011-12-16

1人アドベントカレンダー16日目「エキスパートPythonプログラミング読書会 第二期 01」


エキスパートPythonプログラミング読書会 第二期 01 2011/11/08 19:00 to 22:00

http://atnd.org/events/21166
場所は目黒のバリストライド株式会社様の会議室。

#pyfesで@tfmagicianさんがエキPy読書会をもう一度やって欲しい!とつぶやかれていたのが開催の発端。
まさか2期があるとは思っていなかったので、@tfmagicianさんを始め講師役を引き受けて頂いている@shimizukawaさん他、大勢の方々に感謝してます!

@shimizukawaさんが1期のまとめを公開されています
http://www.freia.jp/taka/docs/expertpython/reading/index.html

人気が凄くて、参加登録枠が一瞬にして埋まってしまい、だめかと思いましたが補欠繰り上がりで無事参加できました。

当日については下記にまとめて頂いてますので私は所感だけ書きます。

エキスパートPythonプログラミング読書会 第二期 01
https://github.com/tfmagician/expertpython/blob/master/01.rst

所感
  • 初めは空気が重かった
  • @shimizukawaさんご結婚おめでとうございます!
  • Vimmer率が異常。30人中Emacsを使ってる方が4人。それ以外の方はVimを使っているとの事だった。もしかしたらVim以外のエディタを使ってる人はいたのかもしれないけど少数派という事で言い出せなかったのかも。
  • IDEを使ってる人が誰もいない
  • OSは、Windows派5人。Linux派4人。残りMac派。圧倒的すぎ。私はWin派でしたが@shimizukawaさんもWin派だったのでOK
  • 本編終わった後に、そのままビアバッシュに。間あけずに懇親会って凄くいいです
  • という割には、いつものぼっち体質&人見知り気質で顔見知りだった@tk0miyaさんと@hekyouさんとばかり話してた。一応、Python忘年会を挟んでの第2回では改善されましたが。


第1回は環境周りやPython自身についてのお話だったので付いていけないのでは?という心配は取り越し苦労でしたが、既に投稿済みの第2回からレベルが跳ね上がりました。

2011-12-15

1人アドベントカレンダー15日目「Sphinx ハンズオン #1」


Sphinx ハンズオン #1 2011/12/14 19:30 to 21:30

http://atnd.org/events/22421

今回は色々と自業自得な所で身になった所が少ない為、感想少な目です(汗)

知らない方にご説明しますとSphinxとは「reStructuredText(reST)」というマークアップ言語を基本の記法としたドキュメント作成ツールです。
詳しくはこちらへ

http://sphinx-users.jp/

せっかくですので、ソースコードの可読性が高いという話が「たぶん」あがっていたのではないかと思いますので本日はreSTで書きたいと思います。

当日参加できるまでの経緯
====================================

1) 補欠で3番目に登録。間違いなく繰り上がるだろうと予測。

2) 開催日間近になっても繰り上がらない。ちょっとあせる。

3) 直前になって枠が5人分増えたので、繰り上がった!

4) しかし、前日のエキスパートPython読書会の際に、完全に初心者向けで初心者に広めるための勉強会だという事を開催者の方から強調される

5) 当日、実質キャンセルがほとんど無い事に申し訳なく思って、本当に使ったことの無い方の為に自分がキャンセル

6) 未練がましくツイートをしていたら、開催者の方にお情けで来ましょうよ、と誘って頂けた

7) 仕事が終わってダッシュで向かうも、寝過ごして新宿3丁目で降りる。

8) 何を思ったのか、もしかしたらこのまま歩いたほうが早いのかも、と歩き出す

9) 遅刻して到着

10) 遅れてすみません!


Sphinxインストールまで
====================================

1) 普段使い慣れていないubuntuでSphinxを使う!というコンセプトで「インストールから始めます」と申し出た所、インストールから始める初心者グループへ案内して頂いた

2) PCを起動した所、何故か無線LANに繋がらない!

3) インストールから開始グループは、@tk0miyaさんと@shkumagaiさんが講師役でしたが、無線LANに繋がらない程度で邪魔をするわけにも行かず。

4) 時間の空いた時に@tk0miyaさんと見回りにきた@takanoryさんに無線LANパスワードを間違って入力している事を指摘して頂いて、やっとネット接続。この間1時間弱。

5) そこからは、一生懸命課題のプリントアウトされたサンプル議事録を写経。合間に@tk0miyaさんと@shkumagaiさんの説明に耳をそばだてるも、2人とも意外と違う教え方をされていて、どっちも聞きたいとか思ったり。


所感
====================================

* いくつか質問したい事があったのに、なんだかんだで質問する機会を逃した。

* 講師役の方の教え方はやっぱり違うな、という感じ。知識量も違うし、何より説明の仕方が丁寧。見習う必要あり。

* 中途半端に写経とかしないほうがよかった。自分の場合は基本的な事は知っていたので講師役の方の話のみに集中していたほうが有意義だった。

* そのうち、自社でSphinxハンズオンやりたい。人が集まれば・・・

* 次回は、モヒカン部屋で揉まれたい

* 今回の自分はぐだぐだで終わった

* 懇親会と帰りの電車も楽しかった。千葉仲間が増えた!

2011-12-14

1人アドベントカレンダー14日目「エキスパートPythonプログラミング読書会 第二期 02」


エキスパートPythonプログラミング読書会 第二期 02 2011/12/13 19:00〜22:00

https://connpass.com/event/118/

初回の読書会の感想と前後してしまいますが、昨日開催された第2回目について先に書きます。

場所は目黒のバリストライド株式会社様の会議室。

自己紹介

少し遅れて行ったのですが(ビル前で@kashew_nutsさんとご一緒に)何故か講師役の清水川さんの周辺には誰も座っていなかったので、少しでもお声が聞こえるように斜向かいに着席させて頂きました。
始まってすぐに、今日は机ごとに自己紹介。やはり人との出会いは大切ですよね。
私のいた机のメンバはこの方たち。

@shimizukawaさん
@lincolinnyanさん
@inoshiroさん
@takuan_oshoさん
と、遅れてきてお伺いできなかったもう御一方。

本編

自己紹介が終わって本編始まりましたがレベル高いです。
範囲が実際のコーディングについての2章。

@t2yさんの前回の資料も少し参照
http://www.slideshare.net/t2y/py-02-2-5316487

自分のツイートをまとめるとこんな感じでした。

  • 内包表記
    • enumerateにはこんな使い方がある
    • mapよりリスト内包表記のほうが速い
    • コンパクトに書けるならリスト内包表記で。長くなるようならば素直に構文を使って書く。
    • リスト内包表記をネストさせて嫌われた事のある人いますか? [x for x in [y for y in [z for z in range(10)]
  • "import this"と打ち込むと19の詩編が出てくる。The Zen of Python, by Tim Peters ...
  • イテレータ
  • ジェネレータ
    • fibonacci関数(実際はジェネレータ)で説明
    • 配列を作ろうとしてもずっと続くので、メモリを圧迫してしまう。
    • yieldが入ってるとジェネレータになる
    • 巨大なログを読み込む時などにジェネレータが使える
    • openは1行ごとの読み込み等やってくれるので通常は問題ないけど、フィルタをかけたり全部読み込ませたい時に使える
    • ジェネレータは基本的には戻らない
    • sendは外からyieldに返り値を渡す物
  • コルーチン
    • マルチスレッドじゃないけど、yieldで一旦止めて、他の処理をさせて・・・並行処理をしているかのような感じ
      • ジェネレータでぐるぐる回してやって、外から何か変化があった場合にyieldで渡してあげる
    • リスト内包表記の記述をちょっと変えるとメモリ消費が抑えられる。[x for x in range(10)] ⇒ (x for x in range(10)) これがジェネレータ式
    • 3系ではxrangeがrangeになるので、今2系ではあまりメリットが無い。量が大きい時に使うくらい。
  • map,reduce,filter
    • リスト内包表記があるので、reduce、filterは使わなくても、あまり問題はでない
  • Pythonは式と文を明確に区別している
  • PEPは議論する為のもの

それからmap、reduce、filterは高階関数なのかと思って、ずれた勘違いでツイートして@shimizukawaさんにご迷惑おかけしてしまいました。申し訳ありません(汗
他にも、ツイートでいくつか教えて頂いた事もありました。リプライ頂いた方、ありがとうございます。

ビアバッシュ&LT大会

3名の方+αがLTしました。

  1. @tk0miyaさん
  2. みんなLTをやろうよ!という内容でした。実際後の2名の方も名前の通った方でLT常連でもあります。
  3. @takanoryさん
    • ご自身の活動状況をLTされてました。「知ってますよね?」の連発でハードル高かったです(笑)
  4. @shomah4aさん
    • ご自身の活動やイベントの告知をされてました。横浜.pyは私も参加させて頂きます。

また、今回は私が初めて自発的にLTをやってみました!

今までは、ワークショップで何故かリーダー役に指名されて発表とか、人の後押しでハッカソンの発表をやったりしていました。
が、先日、社内での発表があまりにも無残であった為、そして自分はほっとけばいつまでも逃げてしまう性質なので、これからは許される限り勉強会ではLTをやって、人に伝えたい事を伝える、自分を追い込むという事をしたいと考えての事です。

テーマは、

「下には下がいる」

まだ感想を投稿していませんが前回の「Python mini Hack-a-thon」がきっかけで初心者が発表する事で他の初心者のアウェイ感を失くす事ができると教えて頂いた事がきっかけです。

時間もなく、その場で10分少々で作成したショボイ内容でしたが、なんとか発表できました。これが人の為になったかどうかはわかりませんが・・・

自分にとって不意打ちだったのが @takanoryさんからの「ブログは?」という言葉。
まさかこのメンバの中にブログを読んでる人がいらっしゃるとは思わなかったので、恥ずかしいやらなんやらで知らないフリして逃げようかと思ったのですが勇気を出して紹介させて頂きました。
@kashew_nutsさんもご存じだったようで(^-^;

所感
  • とにかくプログラミングスキル不足が感じられてしまってます。毎日数行でもいいからコードを書く事にしました。
  • ぼっち体質が全然改善されてません。いいから知らない人の所にどんどん入って行くようにしたいです。

Windowsユーザの私がSphinxでハマった所


本日はSphinxハンズオンに参加させてもらう予定です。場合によってはキャンセルするかもしれませんが・・・
さて本当は、もっときちんとした形でWindowsユーザ用のインストール手順〜buildする所までを記事にしたかったのですが、どうしても時間が取れず。

Windowsを使っている事で私がハマったポイントをあげておきます。同じWindowsユーザの方の参考になりますように。

Pythonインストール時の注意事項

まずPythonインストールする必要があるのですが、実は既にPythonインストールされていたりしませんか?例えばTraclightningを使っていて、新たにPythonインストールすると色々混乱します。
まずはコマンドプロンプト

echo %path%

と打って、Python関連のパスが無いかどうか確認したほうがいいかもしれません。
既存のPythonがあるなら、それを使うか、新しくインストールするかを詳しい方に聞いてみて下さい。

rstファイル編集時

sphinx-quickstart

を打つと、基本的なファイル、ディレクトリが作成されます。その中に「index.rst」というファイルがあり、これは必ず編集する事になると思うのですが、生成された段階で文字コードsjis(cp932)となっています。
文字コードUTF-8に変更しないと、buildした時に文字化け、あるいはエラーが出てbuildできないという事になります。

----

とりあえず上記2点を抑えておけば大丈夫な気がします。