DevLOVE2012 Day2 Vol.6:愛せないコードを書くには人生はあまりにも短い / 和田 卓人氏 #devlove2012 #devlove2012a
- DevLOVE 2012
- #devlove2012a 2012/12/16 DevLOVE2012 Day2 17:00 愛せないコードを書くには人生はあまりにも短い - Togetter
- DevLOVE2012 に参加してきた #devlove2012 - Shinya’s Daily Report
(写真:コードが動くだけで楽しかった、あの頃。実はこのコード…)
2012/12/16(日) 17:10 - 18:00
愛せないコードを書くには人生はあまりにも短い
- 和田 卓人氏(TwitterID:@t_wada)
- O'Reilly Japan - プログラマが知るべき97のこと
- tako3: http://twitter.com/t_wada
- t-wadaの日記
開発のプラクティスとしてのテスト駆動開発 (TDD) には、 これまで各所で喧伝されてきたような様々な効果があります。 では、あなた自身に対しては、 TDDがどういう意味を持つのか、考えてみましょう。
- 市谷さんより:
- DevLOVEと和田さんとは、非常に縁が深い。
- DevLOVE第3回『世界の全てをテストせよ』で社外の人初招聘が和田さんだったらしい。
- その時の動画を公開。mixi動画より。流れる音楽が時代を感じさせておりました…w
- 和田さん
- この順番で、という事は他の方々の講演を安心して観られない、という事でもありますので何でこの順番なんだろう、と思いました(笑)
- でも、それが嬉しくもあります。
- 大事なことを最初に。
- 感謝。
- 声を掛けてくださったpapandaさん
- DevLOVEスタッフの皆様
- 会場に来て下さった皆様
- きのこ本
- もう、2年前なんですね。ちょうど(発売が)この時期だったのでよく覚えています。
- 作者: 和田卓人,Kevlin Henney,夏目大
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/12/18
- メディア: 単行本(ソフトカバー)
- 購入: 58人 クリック: 2,107回
- この商品を含むブログ (350件) を見る
- よろしくお願いします。
- TDDの事、話す人多くないですか?(DevLOVE2012では、TDDに関して話をされている人が何人か居られました)
- ひねり出した概要;:
- あなた自身については、TDDがどういう意味を持つのか?考えてみよう。
- プログラミングは好きですか?
- プログラミングは
- 好きですか?
- 楽しいですか?
- 日々のプログラミングは
- 好きですか?
- 楽しいですか?
- ※仕事と仕事以外で『好き/楽しい』の票に開きが。
- この差は何なのか。
- プログラミングは
誇りを失う仕組み
- 上記で挙がった『違い』は何なのか。
- 量産されるレガシーコード
- コピペ駆動開発
- うんこ形式のコメント
- 『動くコードに触れるな』
- ドキュメント
- 量が多すぎる
- 不正確でメンテナンスされていない
- もしくは全くない!
- ※ドキュメント、この辺りはセンシティブな問題ではある。
- ※しかし疲れさす原因でもある。
- Sierを馬鹿にするな
- 自分以外に理由を求めているだけ
- 生産性が高くとも、誇りと愛着を失う事もある
- 武勇伝
- アドレナリンジャンキー
- 伝家の宝刀をを抜くしかないようだな...
- 興奮から覚めて手元に残るのはアドレナリンが高くないと読めないコード
- 技術的負債
- スケジュール場、ビジネス上、必要な賭け
- 問題は返すチャンスが少ないこと(動くコードに触れるな、と同じジレンマ)
- 実は心理的負債でもある
- 教育的過ぎる世界
- 〜せねばならない
- 〜なんて当たり前
- 未だに知らないなんてありえない病
- それらと目の前に居る自分達との差分は…?
- 心をすり減らす原因の一つ
- 本当は知っている自分の事
- 自分の記憶力の限界に達した
- 自分の頭とうでが、複雑さについていけなくなった。それを認めたくない(和田さん自身も、認めたくないと感じている)
- 自分を失う仕組み
- サクッと終わらない自分にがっかりする
- サクッと行かない自分と、行くミサワ的理想とのギャップ。
- 自分が書いている仕事に対して自信がすり減っていく。
- 人間の弱さ、自分の弱さ
- 忘れっぽい
- 移り気
- 不安にさいなまれる
- 我慢が効かない
- 同時に複数の事が出来ない
- ※これらは、実は人間のスペック。だからこそ、これに正面から向き合って行く事も必要
- 誇りと愛着を殺すもの
- 本当は自分にも問題がある事を知っている
- 人間の弱さ、自分の弱さ...
- こういう状態だと、良いシステムには、成らない。
和田さん『(静まる室内のムードに)あれ、何で…さっきまでバンバン笑ってたのに…w』
誇りを取り戻す一歩
- 教育的過ぎる世界に抗う
- 問題は自分がどうあるか。
- 過去の自分との相対評価。
- 他者と比べれば比べる程苦しくなる。
- 愚直であれ。
- やったこと:写経(自分が知りたいと思ったことのコードを書き写し、動かして読み取る。)
- 分からなければ写すまで。
- 技術書の写経の方法
- やったこと:写経(自分が知りたいと思ったことのコードを書き写し、動かして読み取る。)
- バージョン管理:
- 自動テスト
- 自然言語で書くには複雑過ぎる
- 百聞は一見にしかず
- ドキュメントとしてのテスト
- 使用例としてのテスト
- メンテナンス対象としてのテスト
- 自動化
- 飽きやすさ/疲れやすさ…人間行動に理にかなってる
- 『エビデンス』欲求
- そういう場合は、Jenkinsで(繰り返し自動で)送りつけてやればいいんですよ
- 『あのとき動いた』んで、今は?
- 人力でやるのは意味が無い
- 変更の阻害要因は、現在ではただのリスクである
- 高速で貯めるのがCI
- 人間が努力しないで、機会に任せられるか。
- 動作する、きれいなコードへ
- まず動かないことには、勝負の土俵に上がれない。
- この回転を一歩一歩進める手立てが必要
- 三本柱と黄金の回転の力
- 恐怖を克服する
- 未練を断つ
- 勇気を得る
- 自分の限界を認め、自分の学習速度で限界を引き上げる。その道具たちを知る。
予期せぬ変化を予期する
(↑このフレーズはあのGoos本に出て来たものだそうです)
- えっ?
- 呼吸が上がる瞬間
- でも変更なんてみんな予想外だ
- 必ず、変更というものは常に予想外である。予想可能なのは変更ではない?
- 変更はあるだろうな〜とは思ってても斜め上を行くものだ。
- 予想出来ないことだけは予想出来る
- 一度書いたコードが変更されなかった事があるか?
- 変更は自分の予想を超える。予想外に備える事は、身軽であることが重要。どれだけコードが身軽であるか。
- 不安はなくならない
- FIXがFIXだったことがあるか?
- シンプルさを保つには
REST
- 多様なURL
- 少ない振る舞い
- 状態を持たない
- ※ものすごく『出来る事』が少ない。でも多様。この事が、"つなぎやすさ"を生み出している
SQL
- 全てが『集合』。
- SELECT/INSERT/UPDATE/DELETE
- 閉包性
- これら3点には、何か共通しているものがあるはず。
- 【共通するもの】
- インタフェースが少ない
- 実装に依存していない
- 再利用が時間を跨いでいる
- (例)catコマンド:1970年代に出来たもの。catコマンドで取得した結果を今の時代(2012年)に作った自らのシェルに渡し、更にその結果を別の(昔に実装された)コマンドに…という風に、数十年の時を経る事が出来ているというのは凄い事。
- 穏当なコードを書きたい
- シンプルであること、直交していること
- クリーンで、リーダブルで、穏当なコード
- 力技では無く、必要な抽象度で
- 綺麗で読みやすくて、アクロバティックでないものを。
- 現在は何もしなくてもスピードが上がるような時代になっている。
- コードが使われるか否か‥いかにも動きそうかどうか。
TDDとは何か
- 和田さん『One More Thingがやりたかったんです...』
- プログラミングを支えるものは何か。
- 楽しさ
- 情熱の量
- モチベーション
- ※これらの多寡によって状態が変わる。
- あの頃のワクワク感(エントリTOPに載せたコード、実は和田さんの奥さんが書いたPHPのコードでした。)
- TDDは弱い私達のためのもの
- 恐怖の克服
- 強者に身を委ねるのではなく、自らの足で歩く技術
- 自らの力で誇りと愛着を取り戻す
- プログラミングの楽しさを取り戻す
- ※TDDで、プログラミングをやっていた頃の楽しさが蘇ってくる。
- ※原風景を再現する必要がある。
- TDDは結局のところなんなのだ?
- TDDとは呼吸の整え方、心の構え方。
- 呼吸が整う、って書くとジョジョっぽくなるがw
- Redbullでコードを書くのは蛮勇だ。(とツェペリさんも言っている)
蛮勇は勇気にあらず。 怖いと思う事と恐怖に負ける事は別の事。 勇気とは、その恐怖を乗り越える力。 何者にも負けない、中から搾り出す力。 (※第1部 ジョナサンジョースターと共にゾンビに立ち向かいながらジョースターに向かって言った言葉)
- TDDはスキルです
- 才能ではなく技術です
- ちなみに、スタンドは才能です!
- 後天的に矢が刺さることでスタンドが発動する事がありますが…w
- 和田さん『1部や2部、またはSBR(スティールボールラン:第7部)が好きなのは、技術で才能を上回る事が出来るからだ。
- ファントムブラッド - Wikipedia(第1部)
- 戦闘潮流 - Wikipedia(第2部)
- スティール・ボール・ラン - Wikipedia(第7部)
- 大事なのは才能ではない、技術。
- 習得可能です
- 量は質に添加します
- 写経しましょう!
- 才能ではなく技術です
終盤期せずして『ジョジョ勉強会』の様相を呈してきておりましたが(笑)、話の時々に差し込まれてくるフレーズ、問い掛けには心に刺さるものがありました。
誇りを失う過程の内容もそうですし、何より『誇りを取り戻す一歩:教育的過ぎる世界に抗う』の辺りは分かっていてもそういう思考に陥ってしまう事は多々あるので『あぁ〜…』としみじみ考えさせられてしまいました。
TDD・コードを書く事という側面から、改めて和田さんから今回の講演で強いメッセージを頂く事が出来ました。ありがとうございました!
また、改めてジョジョの奇妙な冒険は早く全巻読破しなければならないな、と強く思った次第ですw(あと第5部が残っている)