コンピュータやソフトウェアのあれこれ@道民(&元道民)
irasally
This user hasn't shared any biographical information
Homepage: http://twitter.g.hatena.ne.jp/irasally/
Posts by irasally
第12回アジャイルサムライ読書会 @札幌道場 開催
1月 18th
第12回アジャイルサムライ読書会 札幌道場を開催しました。
参加者は9名。2012年サムライ初め!
今回の範囲で「グっときた」ところ
共犯者になろうとしちゃだめだ
個人の生産性を計測すると、プロジェクトで大切に育んでいきたい心構えと振る舞いを台無しにしてしまう
勉強会として
「第8章 アジャイルな計画作り」を読み進めていっています。
お客さんとどのように接していくか、信頼関係をどう築くかという話が一番心に残っています。
共犯者になってはいけない
今回、一番心に響いた言葉。
大前提として、お客さんは「敵」ではない。
意見が合わなかったり、なかなかやり方を認めてもらえないお客さんであっても「敵」ではない。
一緒にものを作っていくチームのメンバーです。
でも、「敵でなくなる」ために共犯者になってはいけないのだよなぁ。
実際、
(´し`)<「お客さんはなにもわからないのだから、気持ちよくいてもらうために、本当の事を伝えずに、(どれだけ現場が火の車でも)うまくごまかしてプロジェクトを収束させる、それがプロ。」
なーんて事を言っている人もいt…るかもしれないんですよね、世の中には。
でもそれって、ただの共犯者になっているだけなんだよな。
できない事をできると言って、本当の事を伝えずにその場しのぎで気持ちよくさせるのは、敵にならない方法じゃなくて共犯者になる方法。
お客さんに対してちっとも誠実ではない。
共犯者にならずにお客さん一緒にものを作っていく、そのためには誠実さ、強い気持ち、信頼貯金、きちんと相手と話をする事ができるコミュニケーション力、総合すると、高い「人間力」が必要になると思う。
技術だけでなく、人間としての力も磨いていかなければいけないなと感じました。
計画を立てるということ
アジャイルな見積りと計画について、実践がとぼしいのもあり、ピンと来ないところもけっこうありました。
- 顧客に取って価値ある成果を届けられる計画
- わかりやすくありのままを伝える、誠実な計画
- 約束した事を守り続けられる計画
- 必要に応じて変更できる計画
特に「必要に応じて変更」した場合、具体的にどうなっていくのか、どうするのかというところがモヤモヤしている。
アジャイルな見積りと計画作りをしっかり読んで、この辺りの知識をもっと深めたいです。
運営の立場で
今日は出張帰りで空港からまっすぐ参加してくださった @sandinistさんからチーズケーキのお土産をいただきました!
ありがとうございましたー!!とっても美味しかったです:)
(そして、コーヒーを皆さんにお出しするのを忘れました)
今年も最後まで本を読み通すことを目標に、焦らずしっかりと続けていきたいです。
雪が溶ける頃までには全部読み終わるかな?
読書会のディスカッションのwikiはこちらになります。
https://github.com/agile-samurai-ja/support/wiki/Readingagilesamuraiinsapporo20120117
最後に。毎回会場を提供していただいた弊社に感謝。
今年もよろしくお願いします。
達人プログラマー読書会@札幌-2012.01.10 に参加しました
1月 13th
新年あけましておめでとうございます。
2012年1回目の勉強会は1月10日(火)に行われた、達人プログラマー読書会@札幌でした。
「チーム」という最近ずっと興味を持っていることについてまったりと語らいました。
第8章 達人のプロジェクト
この章では、達人プログラマがプロジェクトに入ったら、どうなるか、どうすべきか、という事が書いてあります。
達人が集まるプロジェクトチーム、最強だなあと思います。
また、チームとして集まる事で、達人だけではなく達人「なりかけ」の人の力もたくさん引き出していけそうな(引き出させてもらえそうな)。
「成功とは見る人が判断するもの、プロジェクトの場合見る人はスポンサー、だから、スポンサーの大きな期待に応える事が大事」
心に留めて読み進めていきます。
41. 達人チーム
達人の技法が集団としてのチームにどう適用できるのか。
よくも悪くも染まりやすい自分としてはうなずく事がたくさんありました。
- 品質を気にかけないチームに配属されると、どんなに優秀な開発者でも面倒な問題を修正する情熱を維持しづらく感じる
- プロジェクト開発における環境全体の温度に気をつける、ということは難しい
- チームも組織の一員であり、他の世界と情報交換しあわないといけない
- しっかりと準備されたパフォーマンスがチーム全体を心地よくする
この辺りのチームのあり方、気持ちの持ち方、モチベーションについて、ずっと誰かに引っ張ってもらってきた(幸いにも良い形のチームである事が多かった)ところです。
これからは、自分がこのようなチームを作り上げていく力の一つになりたいと思う。
また
- 機能によってチームを分ける事で二重化を減らす
- プロジェクトの諸活動(分析、設計、コーディング、テスト)を別のものとして独立させることは問題を発散させてしまう事につながる
- 実際のユーザーから2〜3階層離れたプログラマーは、自分たちのコードが実際に使用される際のコンテキストについて、あまり注意を払わないようになる
この辺りはまさに「大規模開発をやっている職業プログラマ」時代に思い当たるところがたくさんありました。
コードのコンテキストについての意識は常に持っていたい。
42. どこでも自動化
今、業務で「Maven」を使用している事もあり、自動化の重要性、便利さ(そして使いこなすまでにはちょっと苦労する事)などを感じていたところでした。
「プロジェクトの整合性と再現性を保証」するためには、なるべく手動の手続きは入れない方がよい。
ただ、細かい部分の自動化にどこまで時間を使うか、は判断を迷う時が結構あります。
(最近だと、Excelにコピーしてデータ量順にソートして終わりにするか、ソート用のプログラムを作るか、など)
自分は細かい部分(自分だけの作業)だと、手動でゴリゴリやりがちなので
「コンピューターの方がうまくやってのけるような繰り返しや俗っぽいことはすべてコンピューターに任せてしまう」
ようにしていきたいと思います。
そして、労力をかけずにそうできるようになりたい。
次回で達人プログラマ読書会は終了(予定)です。
約半年間、あっという間だったなぁ。
最終回もきちんと出席したいです。
2012年に向けて、2011年を振り返る
12月 31st
2011年は、「思い描いていたのと全然違う形でやりたいと思っていたことに近づいた。」そんな年でした。
やりたいと思っていたこと
2010年の終わりに、私は今年の目標としてこんなことを言っていた。
- もてなされるだけじゃなくて、もてなす、楽しいことを伝える側にたつ
- 素敵な情報を発見するハードルを下げたい、リーチを楽にしたい
- 「勉強会内容」じゃなく「勉強会雰囲気」の感想を届けたい
- 勉強の内容より勉強会そのものを知りたい
で、そのために、北海道の勉強会情報に特化した情報を流す何かを自宅サーバーから届けたいなと思っていたのです。
実際にやったこと
- ブログをたくさん書いた
- 勉強会のスタッフをした
- 読書会を主催した
あれ、全然、違うじゃないか、と。
自宅サーバーどこいったんだ、と。(←いるにはいます、生きてます
ブログをたくさん書いた
今年の寺子屋未満に投稿した記事数は57本。
(昨年、一昨年は10本程度)
月平均4本以上書いていることになります。
ブログの投稿数がこんなことになるなんて、今年の頭には思ってもみませんでした。
何故こんなに増えたかというと、
6月頃に「参加した勉強会の情報はすべてこのブログに書こう」と決めた
からなのです。
いつ決意したのか、なにが原因でそうしようと思ったのか、全然覚えていません。
ですが、ブログを書くことで、技術的な感想だけじゃなくて、参加した自分がどう感じたか、どこをどのように良いと思ったかをきちんとアウトプットすることができたように思います(実質半年分だけど)。
やってみたら、思ったよりも苦痛ではありませんでした。
それに、その場で何かをきちんと得て、帰ってから言葉にしようという思いが強くなった。
ただ参加して消化するのではなく、より良い形で勉強会に参加できるようになった。
1つ1つを大事に思うようになった。など、勉強会に対する自分の姿勢も変化しました。
技術的な成分は少ない記事だけど、勉強会がどういうものか、イチ参加者として何を感じたか、これからも誰かに伝わるかもしれない記事を書いていきたいと思っています。
勉強会のスタッフをした
昨年の札幌Ruby会議03のスタッフに引き続き、今年はOSC北海道2011を筆頭に、色々なイベントや勉強会のお手伝い側の経験もさせていただくことができました。
「やってみたい」と「実際にやってみる」の間にある大きな違いを実感できた年でした。
何事もやってみなければわからない。
「やりたい」を「やってみる」に変える1歩が大事、と学びました。
また、スタッフというのは参加者と反対の立ち位置にいるのではなく、同じ方向にいるんだなということにも気がつけました。
向かい合っておもてなしをする時間も、もちろん大切なのだけど、同じ方向から少しだけ遠くや深いところが見れるのがスタッフなのかなと。
1つのイベントについての様々な見方、感じ方、楽しみ方なんかをもっと伝えていけたらいいなと思います。
読書会を主催した
8月から、アジャイルサムライ読書会@札幌道場を開催しています。
今年のはじめに、自分が何かを主催するなんて全く考えてもいませんでした。
日本Ruby会議に参加して、開催中にアジャイルサムライに出会い、自分で何かをやってみたいと思った30歳の決意から、気がついたらこうなっていました。
11月には、読書会がご縁でスライド発表もさせていただきました。
読書会を開催できたことは、自分にとって大きな1歩だったんだなあと振り返って改めて思います。
なにせ、初めて伝える側になるきっかけとなったのですから。
2011年総括
最初に思い描いていたのとは全然違うのですが、
- もてなされるだけじゃなくて、もてなす、楽しいことを伝える側にたつ
- 素敵な情報を発見するハードルを下げたい、リーチを楽にしたい
- 「勉強会内容」じゃなく「勉強会雰囲気」の感想を届けたい
- 勉強の内容より勉強会そのものを知りたい
この、思いには着実に近づいていけた、そんな気がするのです。
人生何がどうなるかわからないものだなあと。
なんというか、振り返ってみて一番の感想は「びっくり」なんですよね。
その時々の自分の気持ちや勢いを大事にして良かったな、そんな風に思います。
2012年
今のまま、思うがままに、ぶれない気持ちで進んでいこうと思います。
特に、「リーチを楽にしたい」「楽しいことを知るためのハードルを下げたい」という思いについては割と長期的な目標として取り組んでいきたいなと考えています。
その1つとして「勉強会レポート」はこれからも続けていこうと決めています。
自分が今ここでこうしているのは、楽しいということを知ることができたから。
何かをきっかけにして、「楽しい」と感じて、勉強会などに関わる人が増えていったらよいなー。
うまく言えないのですが。
何らかの良い影響を自分も誰かに届けることができたら良いなと思うのです。
あとは、個人的な技術力の向上。
今年も新しい事に触れ、自分のスキルもちょっとだけアップしたのを感じます。
でもでも、もっと磨きたいことがたくさんあります。
きちんと手元に揃えておきたい道具をそろえること、使いこなしていくことが来年の目標です。
来年もサボらずに、自分のペースで歩んでいきたいと思います。
今後ともよろしくお願いいたします。
職業プログラマに贈るTDDのススメ #TddAdventJp
12月 23rd
このエントリはTDD Advent Calendar jp: 2011のエントリーとなります。
前日の@yuri9976さんのエントリ「TDDと共に(成長記録としてのTDD)」に続く23日目の記事です。
23日目はTDDを初めて2年目のオム子がエントリを担当します。
ラスト3の座をゲットしてしまい、さらに電子書籍化の話…と気が遠くなりそうになっていましたが、がんばります。
職業プログラマ
まずは、タイトルの「職業プログラマ」って何さ、って話からしましょう。
職業プログラマとは(※オム子定義による)
「プログラミングを職業としているので勤務中はコードを書くがプライベートではほとんど書かない」
「詳細設計書通りにプログラムができていればそれでよい」
「与えられた環境と技術以外のことは求めない」
「コードよりもExcelと向き合っている時間が多い」
「割と大規模なプロジェクトで昔からの文化に染まり、それが常識だと思って仕事をしている」
「何かを始めようと思っても何かしら職場の敷居が高い」
「(だから)新しい技術がたくさん出ているけれど、それは自分の職場には関係のないことと割り切る」
「だけど、ちゃんとものを作りたいな、って思っている」
「ちゃんとものができて、職場から早く帰ることができたら最高」
そんなプログラマです。
「コードを書くのは仕事だから。仕事は与えられた通りにやる」
「一応、仕様書で求められていることには答えているはず」
「こんなコード量産していいんだろうかとちょっと不安になる」
「でも今更何か新しいことをやってみようとか言えるような環境じゃないから割り切るしかない」
そう思っているプログラマは結構いると思います。
「これでいいんだろうか、一歩先に進みたい、でもどうしていいかわからない」
「もうすこし、効率的に、品質の良いものを作ることができないだろうか」
そんな人もたくさんいると思います。
まあ、それは、まさに数年前の自分だったりします。
2年前に受けた衝撃
さて、そんな職業プログラマだった自分は一歩先に進みたくて転職をしました。
(転職によって、問題解決しやすくなっているだろというツッコミはご容赦を)
転職直後には本当に色々なカルチャーショックを受けました。
昔の自分にとってのテスト
自分にとっての「単体試験」は「Excelの”単体テスト項目表”に”詳細設計書”の内容を写すこと」でした。
“詳細設計書通りに作ったプログラム”を”テスト項目表に書かれている通りに”動かして、問題なければ日付と名前と○を書いて…。
テスト項目表のフォーマットや誤字脱字のレビューをされて、プログラムと一緒に納品する。
それが当たり前で「正しい方法」でした。
納品後プログラムにバグがあったり仕様が変更したりしても、詳細設計書や単体テスト項目表には触らない…そんなことも、ありました。
テストコードに出会った話
そして、転職先での初めてのプログラミング。
「まず、テストコード書いてみようか」
衝撃でした。
テストコードを最初に書いたことと、テストコードを書くことによっていろんな事が見えてきたことが。
- 使いやすいインターフェースを考えるようになった
- エラーハンドリングや例外系に早めに気がつくようになった
- バーが緑になることで安心してリファクタリングができた
- テストコードでバグを再現してから修正することでバグ修正に自信がついた
「TDDの良さ」と言われる部分を身をもって体験したのでした。
まったく同じようなコードの書き方をしていたので、17日目のmao_instantlifeさんの記事には深くうなずくものがありました。
衝撃の体験を繰り返すことにより、テストコードが当たり前となっていくと、
プログラマがプログラミングをする責任っていうのは
「”仕様書通り”という第三者のチェックを通ったコードを納品すること」
だけじゃなくて
「自分が自信を持ってコードを世に送り出すこと」
なんだなぁと気がついていきました。
数年前に戻れたら、何ができていたかな
その他にも、CI環境の整備であるとか、プロジェクトの進め方であるとか、ドキュメントについての考え方であるとか、コミットのタイミングであるとか、新しく気がついたことはたくさんあるのですが。
「数年前、職業プログラマの自分が一歩前に進むために何ができただろうか」
と考えてみたとき、一番やりやすいのはTDDだっただろうな、と思うのです。
TDDは一人でもできる、最悪ローカル環境だけでも勝手にやれば良い。
一番小さく始められて、仲間を増やしやすい方法がTDDじゃないかな、と。
今の自分なら、できる気がする。
でも、数年前の自分だったら始められなかったと思います。ノウハウがあまりにも乏しかったから。
今すぐはじめられること
もし、今、昔の自分と同じような境遇の人で、何かを変えたい、だけどやり方がわからない、
そんな人がいたなら何をするのがよいか、考えてみました。
TDDBCに参加する
全国各地で開催されているTDDBCに参加する、これが短期間でTDDを学ぶのに一番良い機会だと思います。
何より、自分でコードを書いてみることができる。
普段使っている言語のテスティングフレームワークを知ることができる。
TDDの流れをつかむことができる。
経験者の話を聞くことができる。
今すぐ職場でTDDを導入できる機会がなくても、休日を1日潰して1回参加してみる価値はあると思います。
自分が1回経験しているかどうかで、いざ現場で導入しようとなった時の心の敷居はずっと下がります。
自分でゼロからプロジェクトを構築できるようにする
大規模案件が続くと、自分でゼロからプロジェクトを作ることがなかなかないのですよね。
プロジェクトを作って、動く環境を作って・・・という機会がなかなかない。
ビルドや実行環境はよくわからないけどちゃんと動く仕組みができていて(あるコマンドを打てばそれでOKで)、普段は自分が担当するソースコードだけを触ればよいだけ。
でも、その環境にテスティングフレームワークをどうやって取り込んでいいのかわからない。
プロジェクトを触ることが怖いと感じてしまったりします。
これでは、なかなか自信を持って導入しよう、と周りに勧めることはできません。
だから、ブランクプロジェクトでよいので、いったん自分で環境をそろえてみることお勧めします。
JavaであればEclipse+Mavenなんかを使うと、思っている以上にすぐにプロジェクトを作ることができます。
たとえば、TDDBCに参加して、「自分のチームの開発環境準備を自分がやります!」と宣言してみるのはとても良いと思います。
詰まったら教えてもらえるし、失敗しても損害にならないし、お題の規模そこまで大きくないのでスモールスタートで肝を押さえられると思います。
自分が1回経験しているかどうかで他の人に勧める際の自信がぐっとつきます。
TDDBCのお題の復習をする
上記ができれば、もう大丈夫。自宅でTDDを行い技を磨く準備ができています。
TDDBCのお題であれば、どこかに他の人が実装したコードもあるはず。
自信を持って、仕事以外でも手を動かすプログラマになりましょう。
職業プログラマをDisってるわけじゃない
職業プログラマであっても、「良いものを作りたい」という気持ちがある人はいると思います。
「効率的に仕事をしたい」そう思っている人もたくさんいると思う。
ただ、文化の違いや決定権の有無などで、どうしても新しいものを導入する敷居は高くなる。
簡単にできないことも多いし、守っていかなければいけないものもある。
そんな中、色々諦めざるを得なかったことがたくさんある。
職業プログラマとして割り切っているつもりでも、なんかやるせないな、モヤモヤするな、もっといい方法あるんじゃないかな、と思っている人はたくさんいると思うのです。
- 自分の気持ちを落ち着けるために
- 作っているものに自信を持つために
- 効率的に楽しく仕事ができるようにするために
- 今後周りと一緒に文化を変えいくために
TDDをはじめてみませんか?
自分の経験から自信を持ってお勧めします。
来年もたくさんのTDDBCが開催されると思います。
是非一度、その扉を叩いてみてはいかがでしょうか?
明日は24日、イブですね!ラスト2エントリーとなりました。
aoki1210さんのエントリ「TDDに関する記事のリンク集」です。
第11回アジャイルサムライ読書会 @札幌道場 開催
12月 21st
第11回アジャイルサムライ読書会 札幌道場を開催しました。
参加者は6名。今年最後の開催です。
今回の範囲で「グっときた」ところ
チームで見積りをすることで実のある話し合いにつながっていく
少し手間をかけるだけで見積りはずいぶんと良くなるもの
変化は競争優位を獲得するために活用すべきものになる
勉強会として
今回は、見積り、そして計画作りの話へと進んでいきました。
「アジャイルな見積りと計画作り」と、今回のテーマそのものの本が出ていることからもわかる通り、きちんと学ぶにはこの本では薄すぎる分野なのだと思いました。
実際に他の本を読んでいた人達からの意見を聞くことで、文中の疑問点を補完できたところもたくさんありました。
1人で読んでいたらそうはならないところなので、読書会という場はとてもありがたいです。
同時に、アジャイルサムライは、その分野をさらに深く学んでみたいな、という気持ちにさせる記述がたくさんあるなと感じました。
この本1冊で完璧というのではなくて、とっかかりやすいきっかけとして位置している。
実際、この本から始まったに等しい自分としては今度はこれも学んでみたい、とわくわくする気持ちをたくさん本から得ているような気がしています。
相対的な見積り
「相対的に見積もる」ための前提条件として「プロジェクト全体を俯瞰できる」「客観的にプロジェクトを見ることができる」技術的・現実的な立場が重要だなと思いました。
(まるでベルトコンベアのように)自分の担当する機能の設計書だけが渡されて、全体像もわからないまま、経験値だけで終了予定日数を出す、これは全く相対的ではありませんね。
相対的に見積もることにより、メンバーが全体を把握する、客観的にいろいろな物事を考えることができるようになる、そういうメリットもあるんだろうなと思いました。
プランニングポーカー
実際に現場でやったことはないのだけど「見積りをチームで話し合う」ことはとても重要だと感じています。
自分が気がつかなかった材料を教えてもらえることもあるし、全員の同意を得た上でプロジェクトの規模感を決めていくことはモチベーションという見地からも良いことだと思う。
チーム全体でイテレーション内でやることをコミットメントする
アジャイル的な自己組織化されたチームであればよりやりやすいことではあるのですが、そうでなくても
「チーム全体でゴールを決めて、目標に向かって日々の仕事をする」
ってすごく良いことだなと思います。
上から降ってくる仕事を(全体量も把握できないまま)ただ消化する、そういう形では得られないモチベーションがあると思います。
最初にこの職業についてみたいと思った動機も「皆で何かを作ることができるから」だったんだよなぁ。
ちょっとの方法の違いで、この辺りはチームが生き生きしてくるポイントになるんじゃないかなと思いました。
運営の立場で
今年の終わりまで、オーソドックスに読書会を開催できたこと、何よりもそれにほっとしています。
参加してくれる人がいたからこそ、ここまで来れたのだと思います。
ほんとうにありがとうございます。
約半年、読書会をやってみて、つくづく感じたのは、1冊の本なのに皆全然違う視点で読んでいるんだなあということ。
自分はどちらかというと、疑いの目を持たずに、わくわくしながら読んでいた方なのですが、他の本と照らし合わせてみたり、矛盾点を見つけたり、なにより「これを現実の現場でどう生かすのがよいか」という視点でいろんな話をできたこと、これがとても有意義でした。
本の分量としては半分くらいは進みました。(決して早くはない、むしろのんびり)
読書会としてきちんと最後まで本を読み通すことが来年の目標です。
読書会のディスカッションのwikiはこちらになります。
https://github.com/agile-samurai-ja/support/wiki/Readingagilesamuraiinsapporo20111220
最後に。毎回会場を提供していただいた弊社に感謝。
ありがとうございます。
来年もよろしくお願いします。
達人プログラマー読書会@札幌-2011.12.13 に参加しました
12月 21st
12月13日(火)に行われた、達人プログラマー読書会@札幌に参加しました。
この日は、仕事でかなりやられていて絶不調でした。
しかし、参加してそんな絶不調の原因を知ることができたのでありました。
37. 不可能なパズルを解く
「制約を認識すること」と同時に「自由度を認識すること」。
”それは本当にだめなことなのか?制約なのか?”・・・・ハッとしました。
その日、まさに「もっと簡単な方法があるはずだ」という発想の転換をせずに、ひたすら”この方法しかない”と信じ込んで、そして、疲弊していたのです。
218ページに書いてあった自分への問い
- 簡単な手段は存在するのか?
- 正しい問題を解決しようとしているのか、それとも末端の問題に迷っているだけなのか?
- 何故それが問題なのか?
- 解決を難しくしている真の原因は何なのか?
- この手段でやり遂げなければならないのか?
- 多少なりともこの方法でやり遂げなければならないのか?
この問いは、常に”あれ、なんかおかしい”と思った時に自問すべきだと思いました。
ちなみに、自分の場合どん詰まりになっていた原因は、技術的問題や制約ではなく、元を正すと環境が整備させていないが故に手段が限られてしまうというものでした。
環境の整備を同時に働きかけることで、どん詰まりから抜け出せたのは翌日、翌々日の話です。
38. 準備ができるまでは
なんとなく、思い当たる節があり、うなずきながら読んでいました。
その日、疲弊していた事柄についても(面倒だという気持ちをのぞいて)なんだか進んでよいのか、迷いが生じていたのですよね。
その迷いを、ただの怠慢だと片付けずに、本能に耳を澄ませることの必要性が書いてあり、勇気づけられました。
「本能をあなたの能力に貢献させる」。まずは、本能を研ぎすませたいですね。
また、不安材料を洗いだすためにプロトタイプを利用する方法も書かれていました。
ちょっとした簡単なコードを書いて手を動かしてみることで解決できる、見通しが立つことはびっくりするくらい頻繁にあります。
最初の1歩に迷った時に、小さなプログラムを書いて自分の進むべき道を見つけてあげる、そのくらいのプログラムは呼吸するように書ける、気持ちよく仕事をするために、身につけたい技術です。
39. 仕様の罠
設計を言葉にすることの難しさ、そして何より
「完璧な設計書を作成すれば、1mmも頭を使わずにプログラミングできるというのは間違いである」
という強いメッセージを感じたセンテンスでした。
- プログラミングには必ず人間の解釈が必要
- コーディング担当者に解釈の余地を与えない設計というのは良い設計とは言えない
生産的な仕事をしたい、と思っている自分には力強い言葉でした。
また、設計(仕様を策定すること)と実装は切っても切りはなせないものであり、きちんと境界なしに流れていくべきものである、という部分にも大いに納得しました。
40. 丸と矢印
「形式的方法論の奴隷になってはいけない」
この章はこれがすべてですね。
ちょうど10年前と言えば、UMLがでてきて
「UMLでプログラミングのすべてを表すことができる!」
「UMLとオブジェクト指向でコードを自動生成できる、生産性があがる!」
という話が一部で出てきた頃だったんじゃないかな(そういう本を読んだことがある)と思い返していました。
そういう考えによる弊害、もっと考えなければならないポイントについて、たくさん書かれていました。
特に、形式方法論は専業化を奨励してしまい、コミュニケーションの定価と努力の無駄遣いにつながりやすい、という話はなるほどな、と一番納得しました。
この本で書かれている「VS ○○ と敵をつくらない」「全員がシステム全体を理解しながら進むべき」というのは、今読んでいるアジャイルサムライの中でもチーム像として書かれていることでした。
ただ、形式的開発方法論を学ぶ必要がないというのではなく「とらわれずに道具箱にはいれておく」、知った上で良い使い道を見つける、それが達人プログラマなんだなあ、と。
一通りきちんと学んだ上で、取捨選択できるプログラマでありたいと思いました。
今年の読書会はこの回で終了です。
来年もよろしくお願いします。
TDD Boot Camp 札幌 2.3に参加しました。
12月 12th
12月10日に行われた、TDDBC札幌 2.3に参加しました。
今回はJavaで参加。
お題は「ボーリングのスコア計算」でした。
事前イメージがあった
今回は、お題を聞いて最初におぼろげに実装をイメージしていました。
実装がイメージしやすかった分、当日も取り組みやすかったなと感じました。
int score = new Game("omuko").bowling(1,2)
.bowling(3,4)
.bowling(5,2)
.bowling(6,2)
.bowling(8,0)
.bowling(9,0)
.bowling(6,4)
.bowling(2,3)
.bowling(1,1)
.bowling(5,2)
.score();
assertThat(score, is(68));
※スコアはだいたい普段の成績、残念。
イメージ通りにはいかない
当日のプログラムはこちら https://bitbucket.org/irasally/tddbc2.3
細かい部品から作っていったのですが、どうしても(Javaの言語の性質もあると思いますが)かっちり作ろう、という方向に流れがちでした。
たぶん、一番エラーチェックが多いチームだったと思う。
「クラスに状態を持たせすぎるとテストが大変」というのを身をもって体験した感じ。
でも、部品を作り込んでいた分、部品の組み合わせは思ったよりも楽だった。
この辺りのバランス感覚は、磨いていきたいなと思いました。
「まず、1本簡単な実装を最初から最後まで通す、細かいことは2週目に考える」
途中からその言葉を何回か言いながら開発を進めていきました。
手を動かしたくてたまらなかった
わりと、テストで方向性がつかみやすかったことと、取り組みやすいお題だったことで、
悩んで考える時間よりも、手を動かしてコードを書きたい時間が長かった。
「どうやってテストを書こうか…」と悩む時間が今までで一番少なかったように思いました。
TDDをやりながら開発速度が上がるというのはこういう経験なのかもしれない。
自分が体験して思ったことは
- IN/OUT、得たい結果がはっきりしているお題であること
- お題(取り組むべき相手)が技術的に自分の手に負えること
この二つが揃うと、TDDがとても楽しくなりますね。
特に2は、自分が技術力を上げれば上げるほど広がる幅なので、精進あるのみ!です。
次回も是非参加したいと思います。
主催者の@shuji_w6eさん、今回もありがとうございました!
第10回アジャイルサムライ読書会 @札幌道場 開催
12月 7th
第10回アジャイルサムライ読書会 札幌道場を開催しました。
参加者は7名。今回は初参加の方もいらっしゃいました!嬉しいです。
そして、気がつけば読書会10回目。2桁突入しました。続けられていることに感謝、感謝です。
今回の範囲で「グっときた」ところ
文書化を目的にするな
概算見積もりのままプロジェクトを進めることは果たせない約束になってしまう
正確に見積もれるかのような素振りをやめるべき
勉強会として
ユーザーストーリーワークショップ
ユーザーストーリーワークショップから発展し、大変有意義なディスカッションをすることができました。
ワークショップ
→大規模開発だとどうなるの?
→リリースってどういう形が望ましいの?
といった形。
それぞれに中身が濃くて、アジャイル開発全般に広がった話にもなり(実際に本の前のページを確認したりしました)、アジャイル開発には良い面がたくさんあり、でもどのような点が良いと思っているかは人によって違うんだなあということを知ることができました。
また、私はお客さんと話し合い要求を出すようなことを行ったことがないので、実際にみっちりお客さんと話をした、という例が聞けたのはとてもよかったです。
簡単ではないけれど、ちゃんとものを作っている感じが伝わってきました。
アジャイルVSウォーターフォール
前回と同様、アジャイルとウォーターフォールの話になりました。
アジャイル開発についての読書会をしている以上、比較対象としてウォーターフォールの開発はやっぱりでますね。
今回は「アジャイル “VS” ウォーターフォールなのか、そうでないのか」という話になりました。
自分がまだ正しいウォーターフォールについてきちんと学習できていないので、はっきりとこうだ、という意見は持てなかったのですが、
「アジャイルはウォーターフォールのすべてを否定しているものではない」
から
「ウォーターフォールの良い部分は活かそうと思っている」
と感じています。
「ウォーターフォールを良くしようと言う発想ではなく、全く違う開発手法として定義された」
のかどうかは、まだわからない。
ウォーターフォールについて、きちんと学習する機会の必要性をまた、感じました。
(が、まずはアジャイルについてしっかり理解したいです。)
見積りのこと
今回から「第7章:見積り」に入りました。
普段の見積りって「これ、だいたい何日でできそう?」しかないのですが、「このプロジェクト、どんな感じになりそう?」という形を思い描くことも見積りになるんだなあというのがこの章を読んだ時の発見です。
「どんな感じでうまく行きそう?」っていうのは感覚的にはあるのですが、それをさらに明言して深堀したことはなかったので、次回以降の見積りのディスカッションもとても楽しみです。
運営の立場で
参加者が7名といつもの倍近くいました。
ディスカッションもいろんな意見、いろんな業務の立場からの意見が出て、いつも以上に盛り上がったと感じました。
運営する立場として、時間を気にしてディスカッションを止めることはしないことにしています。
発散?という意味ではそうなのかもしれないけれど、本に書いてあること以上のことを学べる滅多にないよい機会だと思っています。
それぞれに「良い開発をしたい」という思いが伝わってきました、そしてそれを実現するために思い描いている形というのは1つじゃなくてほんとにたくさんあるんだなということに気がつかせてもらいました。
あと、今回初めて同じ会社の@niku_nameさんが参加したことで、(10回も開催していて1回も読書会にきてくれた人にお茶とか出したことなかったよ・・・!)と開催している立場として気がつきました。感謝。
次回からはそういうことも気にしていこうそうしよう。
読書会のディスカッションのwikiはこちらになります。
https://github.com/agile-samurai-ja/support/wiki/Readingagilesamuraiinsapporo20111206
最後に。毎回会場を提供していただいた弊社に感謝。
ありがとうございます。
今年は残すところあと1回。
今後ともよろしくお願いします。
LOCAL DEVELOPER DAY ’11/infraに参加しました
12月 5th
12月3日(土)に行われたLOCAL DEVELOPER DAY ’11/infraに参加しました。
インフラよりのイベントだったので、理解できる話があるのかな…と若干不安だったのですが
すごく、よいセッションを聞くことができました。
ヤマハルータはどのような存在なのだろう? 平野尚志さん
ヤマハ株式会社 サウンドネットワーク事業部で現役でご活躍されている平野さんのお話。
お仕事でルーターを触る機会が全くないので、ヤマハルーターの現物を見たのも初めてだった私。
しかし、平野さんの「ものづくり」に対する姿勢、会社としての「ものづくり」への取り組み方に非常に感銘を受けました。
まさに、自分が「こういう風にものが作れたら素敵だな」と思っている世界そのものだったのです。
ユーザーが困っているということを誰にも言われずに解決するクォリティ
ユーザーの生の声や、問い合わせで「こういうことが困っている」という話をきいて、技術的な面から「こうすれば解決できるんじゃない?」と誰にも言われず提案し、そして製品にする。
「お客さんのためにものをつくる」ってまさにこういうことなんだなあ。
実際にお客さんの声が元で生まれた製品の例、技術者が「面白そうだったから」と作った機能をユーザーのニーズとマッチさせて製品の機能に追加した例など「お客様のお役に立てるものづくり」の実例をたくさんきけたことがとてもよかったです。すごくよい循環で製品が作られていっているなあと感じました。
使い方をどのようにお客様に説明していくか
「作って終わり」ではなく、「どうやったらお客さんによりよい方法で製品を使ってもらえるか」と考える。
「大工さんのかんなやのこぎりのように、料理人の包丁のように扱ってもらえたら嬉しい」という気持ちで製品開発に取り組む姿勢が素晴らしいなと思いました。
そのために、
- 製品ごとに利用者層(習熟度)を想定しそれに合わせた設定方法を用意する
- 利用者のスキルアップの方向性を考える
といった、長いスパンでお客さんのことを考えた製品開発をしていました。
ここまできちんと向き合ってものを作ったことがあったかなぁ…自分を省みたところ「作っておしまい」となる方が多いなあと反省。お客さんの声を聞く、声が聞ける距離にあるって大事だな。
本当は、みんな無責任なことはしたくない
- 作りっぱなしはしたくない
- 売りっぱなしはしたくない
- 使い捨てはしたくない
そう、本当にそう。
でも、なかなかうまくいかない。
だから、こう言い切ってきちんとものづくりに取り組んでいる姿勢は眩しくてうらやましかったです。
おやつ
今回はせきゅぽろと合同のイベントということもあり、いつものせきゅぽろと同じくお菓子がありました。
バババーン

他にもたくさんセッションがありました
今回はスタッフとして運営にも携わらせていただきました。
ですので他のセッションはきっちり聞けていなかった部分もあります。他のブログの感想を待ちたいです。
PacketBlackHoleとPacketKilling de KATANAのご紹介 まっちゃだいふくさん
まっちゃさんによる解析したパケットをゲームにしてしまった製品のお話。
「パケットを取れば丸わかり、何でも復元できちゃうんだよ」というのがほんとにおそろしいわぁ。。。
Rubykaigi2011ネットワークの秘密 小岩秀和さん
1000人規模のネットワーク構築と運用についてのお話。
インフラ系エンジニアの人が多いイベントだけに、実践的なこの話は質問がたくさん飛び交っていました。
LTSPでネットブートクライアントを遊ぶ ささきのぶゆきさん
LTSP(Linuxによるディスクレスクライアント)という言葉を初めて聞きました。
Thinクライアントがここまで進化してきているんだなあ。
教育現場やコールセンターなど確実にニーズのある技術ですね。
「遊ぶ」の主語が発表者のささきさんだった!というのにはやられました。
LT(ライトニングトーク)
今回は、SINさん、小岩さん、nazoさんの3名によるLTがありました。
私もこっそり「ゆるふわLT司会者」としてデビュー。
司会はゆるゆるでしたが、LT慣れした皆さんのそれぞれの個性あふれるとても楽しいLTでした。
このイベントで得た大きなものは、ものを作っている人達は、製品は違えど同じことを考えているのだなということに気がつけたこと。
参加してよかった。
そして1スタッフとして、参加された皆様もそれぞれに何か得るものがあり、楽しんでいただけていたらよいな、と思います。
皆様どうもありがとうございました!
懇親会も楽しかったよぉぉ
(久々に飲み過ぎて昨日ブログの記事を書けなかったことは内緒)
達人プログラマー読書会@札幌-2011.11.28 に参加しました
12月 5th
11月28日(月)に行われた、達人プログラマー読書会@札幌に参加しました。
テストの話やプロジェクトの話など、今も大切だとされていることが10年前に書かれていたことに驚きました。
34. テストしやすいコード
- テストによりコンポーネントの信頼性を高めることができる
- コードの実装を開始する前にテストを作成することでインターフェースのテストをしている
- テストは手近なところになければ使われない
- テストは繰り返し実行されなければいけない
- テストは技術というよりも文化
この短い章の中に、ユニットテスト・テストの自動化・CI・TDDなどの重要性がすべて書かれていました。
これらのことが重要である、とこの頃から言われていることにまず驚きました。すごい本だ。
「場当たり的にデバッグでテストを済ませない」であるとか「プロジェクトにテスト文化を植え付ける」であるとか、今、まだできていないことがたくさんあります。
テストの書き方にもまだまだ悩みます。
「テストは文化」とは、まさにそうだなと思います。
今のプロジェクトにはテスト文化を広めてくれる指導者がいます。おかげでさぼらずにテストを書く、テストから書くという習慣(思考の変化)ができてきました。
これからも精進したいと思います。
35. 邪悪な魔法使い(ウィザード)
新人〜2,3年目の自分に読ませたかった章。
何となくソースコードが書けるようになってきた頃に陥りがちなこと、それは
「フレームワークが何となく使えてればコードが書けている気になる」です。
でも、それだと自分が何を書いているか(どんなバグを埋め込んでいるか)ちっともわかってないのですよね。
- 作り出されたコードの意味が本当に理解できていなければ、自分自身をだましていることになる
- 生成されたコードが理解できないようなウィザードを使うということは、自身のアプリケーションのコントロールを放棄することに等しい
昨今は開発を加速化するため、便利にするために作られた素晴らしいフレームワークやウィザード形式のコード生成ツールなどがたくさんあります。
それらのコードをすべて理解しなければ使うな、ということではなく、
- 何が起こっているか(少なくてもどんなソースがどこにできているか)を理解しておくこと
- いざとなったらきちんとソースを解析できること
- 自分がそのソースコードに手を加える際に適当になんとなくコードを書かないこと
これらを意識しておくだけでも「自動生成コードに振り回されない」プログラマになれると思います。
36. 要求の落とし穴
ここから第7章「プロジェクトを始める前に」に入ります。
お客様の要求を捉える、掘り起こすという、ちょうどアジャイルサムライ読書会でも行っているテーマでした。
どちらも同じことを言っていました。
- 要求が表面上に現れていることはほとんどない
- 最終的な目標はお客様のビジネス上の問題を解決すること
- 要求の掘り起こしは、ユーザーとの親密な関係を築いていく始まりの時
- 要求とは設計ではなくニーズそのもののこと
一つニュアンスがアジャイルサムライ(アジャイル開発)と異なるなと感じたところは
「お客さんは何もわかっていないから開発者がすべてのお客様のニーズをうまいこと引き出す必要がある」
という立場が達人プログラマの方が強めに書かれているなというところでした。
アジャイルサムライでは「お客様がプロジェクトチームの一員となる」ことの重要性が説かれています。
「ユーザーと親密にならなければよいものは作れない」という考え、目指すところは同じですが、アプローチの方法が若干違うなぁと思いました。
名前大事
この章の後半に書かれている「プロジェクト用語集」は本当に大切で、しかし、往々にしてプロジェクト途中で空中分解してしまうもの、です。
プロジェクトの終わりの方には全然更新されてない「(参照してはいけない)用語集」がサーバーに残っていたり・・・。
wikiを使うのも一つの方法かもしれないし、SVN管理することで自分のアクセスしやすい場所においておくこともできるのかな、と思いました。
そして、なにより、開発者間、開発者とユーザー間で「名前大事」という感覚そのものを共有することが大切なのだな、と感じています。
みんなに知らせる
wikiの重要性。2年前だったら言っていなかったと思うこの言葉。「wiki大事。」
使ってみなければわからないとはまさにこのことだよなー、とこの1年ちょっとで実感しております。
だいぶ、本の終わりが見えてきました。
最後まで頑張ります。


