2008-05-11

ようやくアジャイルプラクティス読了

去年の年末 Amazon で手に入らずにキャンセルしてリアルショップを探して手に入れた割にまったく落ち着いて読む時間が取れずにいたものをようやく読み終えた。

いい。

付箋だらけで逆に付箋貼った意味がない。

いくつか拾うと、

  • 応急処置による泥沼化
  • deploy の自動化
  • プロジェクト用語集
  • コードで伝える
  • Tell, Don't Ask
  • ソリューションログ(なんでもチケット化?)
  • 警告をエラーとみなす
  • アーキテクトもコードを書くべき
  • コードをレビューする

辺りが心に残ったり引っかかったりしているところ。

例えば deploy の自動化は今まさに自分がいちばん問題意識として強く持っていることの一つで、PHP の設定って PHP で書いた方がよくない? なんかは実はこの辺に繋がっている。設定を php.ini の外に出すことでいくつものサイトのコードを同時に扱えるだけでなく、さらにその設定を開発環境、検証環境、本番環境に確実にセットできるようにすることを目指している。さすがに全自動にするのは難しいが、自前の Ruby スクリプトに必要なパラメータをコマンドラインオプションで与えるだけで include_path のセットや symlink の作成などを自動的に行い、できるだけ早くその後の行程に入れるようにということを考え、実践している。

以前 CruiseControl.rb の名前も出したかと思うが、この辺も基本的には同じ。deploy ではなく全体の(ユニットテストではなく)実際の動作チェックを自動化しておくことは非常に大きな安心感、そして自信に繋がる。現在のところこれも自前のスクリプトでゴリゴリチェックを掛けているが、このツールがなければ複数のサイトを一気に PHP 4 から PHP 5 に移行させるには間違いなくもっと多くの時間が必要だったと思う1

もう一つはコードで伝えるという辺り。最近、様々なレベルでインターフェイスということをよく意識している。ユーザーがアプリケーションに触れるインターフェイス、コードと開発者のインターフェイス、コードとコードのインターフェイス、アプリとアプリのインターフェイス。で、言ってみれば「コードで伝える」ということはコードと開発者のインターフェイスという辺りの話かなと。

逆にもやもやしているのはコードレビューの辺り。それもコードレビューの方法とかではなく、コミットされる前のコードをどうやってレビューするの?という初歩的な話。だってコミットされていないコードは基本的に開発者のローカルの環境にあるわけでしょ? ペアプロでもやってない限りコミット前のコードって現実的にレビューできなくないですか?

というわけで今のところ 1 〜 2日で終わらない作業は基本的にブランチ切って、ブランチ内は動いてないコードでもとにかくコミットさせ、そこでレビューすることにしている。なんかこの辺、もうちょっと何か工夫がないのかなぁという気はしている。


自分の話は置いといて本そのものの話をちょっと書いておく。

自分の場合、多くの内容はどこかのサイトや他の本や雑誌などでなんとなく見たことのある内容だったので、時間とやる気がある程度以上確保できた今日はとても軽快に読み進めることができた。まぁ言うなれば復習なので。ただ「書籍としては」アジャイルの本はたぶん初めて読んだと思う。

そのためどの内容もウンウンとうなずくばかりで、その結果が冒頭に書いた付箋だらけで付箋の意味を成していないような状態である。まぁそれだけ内容が「詰まっている」と言える。

ただ「詰まっている」というのは項目の数として内容が多いという意味でもあるが、書籍全体の分量はとてもお手軽な量に収まっているため、一つ一つの内容がそれほど深くないという意味でもある。例えば実際のコードはあまり登場してこないし、個々のツールの説明もかなり少ない。ユニットテストの自動化やデプロイの自動化など魅力的な言葉は並んでいるが、それらを始めるためにどれくらいのコストが掛かるかも、まったくアジャイルの経験も知識もない人には予測がつかないだろう。

そういう意味では実践に移すためにはこの本だけでは不十分で、より多くの情報を集め、自分だけで試せることはとりあえずやってみるなど、それなりに手間ヒマを掛けないとダメな気がする。

とは言えこの「ギュッと詰まった感」はまったく初めての人でも圧倒される心配がなく、入り口として実にいい塩梅に仕上がっていると思う。別なタイトルを考えるとすると、(会社違うけど)

アジャイルHACKS2

みたいなもんだと言えば通りはいいかもしんない。

オススメっす。

  1. 賢いフレームワークを使っていれば話は違っていたかもしれないが。 

  2. えぇ、意味は変わっちゃう気がします。 

About

例によって個人のなんちゃらです

Recent Posts

Categories

Tool 日々 Web Biz Net Apple MS ことば News Unix howto Food PHP Movie Edu Community Book Security Text TV Perl Ruby Music Pdoc 生き方 RDoc ViewCVS CVS Rsync Disk Mail FreeBSD Cygwin PDF Photo Zebedee Debian OSX Comic Cron Sysadmin Font Analog iCal Sunbird DNS Linux Wiki Emacs Thunderbird Sitecopy Terminal Drawing tDiary AppleScript Life Money Omni PukiWiki Xen XREA Zsh Screen CASL Firefox Fink zsh haXe Ecmascript PATH_INFO SQLite PEAR Lighttpd FastCGI Subversion au prototype.js jsUnit Apache Trac Template Java Rhino Mochikit Feed Bloglines CSS del.icio.us SBS qwikWeb gettext Ajax JSDoc Rails HTML CHM EPWING NDTP EB IE CLI ck ThinkPad Toy WSH RFC readline rlwrap ImageMagick epeg Frenzy sysprep Ubuntu MeCab DTP ERD DBMS eclipse Eclipse Awk RD Diigo XAMPP RubyGems PHPDoc iCab DOM YAML Camino Geekmonkey w3m Scheme Gauche Lisp JSAN Google VMware DSL SLAX Safari Markdown Textile IRC Jabber Fastladder MacPorts LLSpirit CPAN Mozilla Twitter OpenFL Rswatch ITS NTP GUI Pragger Yapra XML Mobile Git Study JSON VirtualBox Samba Pear Growl Mercurial Rack Capistrano Rake Win RSS Mechanize Sitemaps Android JavaScript Python RTM OOo iPod Yahoo Unicode Github iTunes God SBM friendfeed Friendfeed HokuUn Sinatra TDD Test Project Evernote iPad Geohash Location Map Search Simplenote Image WebKit RSpec Phone CSV WiMAX USB Chrome RubyKaigi RubyKaigi2011 Space CoffeeScript Nokogiri Hpricot Rubygems jQuery Node GTD CI UX Design VCS Kanazawa.rb Kindle Amazon Agile Vagrant Chef Windows Composer Dotenv PaaS Itamae SaaS Docker Swagger Grape WebAPI Microservices OmniAuth HTTP 分析基盤 CDN Terraform IaaS HCL Webpack Vue.js BigQuery Middleman CMS AWS PNG Laravel Selenium OAuth OpenAPI GitHub UML GCP TypeScript SQL Hanami Document SVG AsciiDoc Pandoc DocBook Develop Jekyll macOS Node.js Vite Heroku Transformer AI Data Cloud Wasm