「ヘルシープログラマ」はプログラマ自身のレガシーコード改善ガイドになるか?
- はじめに
- レガシーボディ改善ガイド!?
- 健康の定義
- 本書が読まれるべき理由
- 本書を実践する上でのポイント
- おまけ
はじめに
存在を知って気になっていた「ヘルシープログラマ ―プログラミングを楽しく続けるための健康Hack」についてFacebookなどで騒いでいたら、@lalakeikoさんから有難いことに献本頂いたので書評を書かせて頂いた。
この本はタイトルからもわかるように、プログラマ向けに書かれた本ではあるが、その内容はプログラマに限らず、デスクワークがメインとなるすべての職種の人々に広くあてはまる書籍だ。
20世紀に、オライリー・ジャパンから「コンピュータユーザのための健康サバイバルガイド」という書籍が出ていた。
この本は、パソコンを使ったデスクワークを行う上で、健康上注意すべき点を細かく解説してある良書で、自分のデスクワーク環境を整えるのに重宝した思い出がある。
最初ヘルシープログラマを知った時には、この本の現代版なのかと勘違いしていた。しかし情報を収集していくうちに違うことに気がついた。
レガシーボディ改善ガイド!?
本書は、プログラマが、プログラマの用語・戦略を使って、自分の身体を斬新的に健康的に変容させていくためのガイドだ。言い換えると、レガシーボディを、ヘルシーボディに改善・リファクタリングしていくためのガイドとも言える。レガシーボディ改善ガイドと別名をつけたほうがわかりやすいかもしれない。
ここで言うレガシーとはプログラマ向けの用語のひとつで、「レガシーコード改善ガイド」という書籍からとっている。意味としては長年メンテナンスされ続けた結果、肥大化し、構造が複雑になりすぎ、依存関係にがんじがらめになり、人が理解・メンテナンスし続けることが困難になった状態を指す。長年、健康を意識せずに生活している現代人が陥りやすい状態と似ているかもしれない。
本書の中には、情熱プログラマ、MY JOB WENT TO INDIAなどの著者で、世界的に有名なRubyist(プログラミング言語Rubyの愛用者)であるChad Fowler氏の事例が所々に出てくる。
あれほどのスタープログラマでも、健康に関して悩み、少しづつ実践重ねた結果、改善されたという事実が記載されているのは、読者にとっても感情移入して読めるのではないだろうか。
健康の定義
本書の「はじめに」に本文にマーク・トウェインの言葉の引用がある。
健康を保つ唯一の方法は、欲しくないものを食べ、好きでないものを飲み、やりたくもないことをやることだ
これは、「健康とは禁欲・節制・強制の賜物である」と同義だ。
筆者は、現在の情報過多の時代では、個人が情報の波に埋もれてしまい、上記のように禁欲・節制・強制という方法を選択せざるを得ないと警鐘をならす。言い方を変えると手段の情報が膨大なため、逆に手段にとらわれてしまっているということだ。
そこで、筆者は必ずしも万能な定義ではないことを認めた上で、この2つを健康の定義としている。
- 健康な人物とは、ライフスタイルから病気を生じさせてしまうリスクが低い人物のこと
- 健康な人物は、比較的痛みを感じることが少なくあるべき
つまり、健康な人物というゴール(=目指すべき状態)を明確にしながらも、そこに至る手段については囚われないという筆者の姿勢を示していると言えるだろう。
本書が読まれるべき理由
(1) 科学的であることを重視
本書の特長のひとつは、殆どの内容について科学的であることを重視している。
- (1)学会誌に発表されている
- (2)大量の既存の科学的裏付けを持っている
という2つの原則おさえている旨が「はじめに」に明記されている。
健康についての書籍には、科学的裏付けのない・あるいは示さないメソッドが盛り込まれることがよくある。対象読者がプログラマということもあり、ロジカルな説明・納得感を重視している筆者の姿勢は、一般の健康に関する類書よりも安心して読むことが出来るだろう。必要があれば巻末の参考文献を読み進めることで更に調べることもできる。
もちろん、現時点では科学的には充分に解明されていないが、効果があるという手法もある。本文でもそういった情報には注釈付きで説明している。
ただし「科学的であることにこだわりすぎる」のも考えものだ。科学的・大規模に実証済な方法だけを信頼するのではなく、まだ科学的裏付けは充分ではないが、誰かが試して実際に効果があったことを、自分でも参考にやってみて効果を測定・検証する、必要であれば改善し、不要ならやめるという実践的なアプローチも同じくらい重要だ。「科学的であるから信用できる」と盲目的な態度もバランスに欠けるので、このあたりは読者のバランス感覚が必要だろう。
(2) 反復改善アプローチによる実践的内容
本書は徹底的にアジャイルアプローチ(ゴール設定、計画、実践、ふりかえりを反復的に繰り返す)の改善を貫いている。本文中にも次のようなChad Fowler氏の言葉が引用されている。
肝心なのは、仕組みを構築することだ
本書はプロセスをアジャイルと同様にタイムボックス(ある期間を一試行単位としてその時間内でやることを決める)の繰り返しと定義し、ゴールを明確にし、定期的にふりかえりながら、改善する方法を提案している。
各章には、「健康のユニットテスト」、「ふりかえり」(本書内では「振り返り」と訳出されているのが残念だが)、「やってみよう(具体的なアクションの提案)」が掲載されている。
本書は「読んで勉強になった」で満足するべき本ではない。実際に読んだ後に、すぐに何かを始め現実世界(読者の身体)に変化をもたらすための本だ。そのための工夫がこらしてある。
(3) 短期的な効果ではなく、長期的な習慣づくりを重視
アジャイルアプローチでは、短期間でのゴール設定・成果も大事にするが、それよりも重視するのは長期的に成果を出し続ける継続可能なペース・仕組みだ。
ダイエット本でよくありがちな「一ヶ月で10kg減った」というようなキャッチーだが短期的視点のみの成果を目指すのではなく、ヘルシープログラマが目指すのは長期視点で健康的な状態を維持できることだ。
急激な変化を求めるのではなく、できるだけ少しづつ・継続できる変化を促すように本書は構成されている。
(4) 広範囲な改善ポイント
本書は広範囲にわたって健康についての改善をガイドしている。(以下目次より)
- 1章 変化を起こそう
- 2章 健康のブートストラップ
- 3章 椅子よさらば?
- 4章 アジャイルなダイエット
- 5章 頭痛と眼精疲労の対策
- 6章 腰痛への対策
- 7章 手首痛への対策
- 8章 実践的なエクササイズ
- 9章 個室の外で考えよう
- 10章 健康のリファクタリング
- 11章 チームを作ろう
- 12章 進め、健康なプログラマ
- 付録A 散歩とイングレス
まずは変化を起こすきっかけづくり(1章)から始まり、歩く(2章)、座る(3章)、食べる(4章)という基本的な部分をおさえて、職業がらよくある痛みへの対応(5-7章)、ポモドーロ+運動サービス(8章)、屋外での活動(9章)、エクササイズ(10章)、仲間づくり(11章)、継続的改善(12章)にまで触れられている。
邦訳版の特典として、原著の出版時期にはなかったであろうイングレスを使った散歩について@hyoshiokさんの記事が追加されている。昔よくあった音楽CDの「日本語版ボーナス特典」みたいでお得感がある。
広範囲に渡るということは、健康とは様々な要因が絡みあっていることを意味する。運動だけでもない、食事だけでもない、仕事環境だけでもない、様々な分野での取り組みの総合的な結果だ。
アジャイルが、単なるソフトウェアエンジニアリングの一分野ではなく、エンジニアリング、プロセス、コミュニケーション、ビジネス設計、組織開発など、様々な分野にまたがり、広がりをみせるのと類似する。
本書を実践する上でのポイント
必ずしも順番に実践する必要はない
本書はガイドとあるように、最初から順番に読んでいき、著者のガイドの通りの順番で実践していってもいいし、ざっと眺めてから、自分で気になるところから着手してもいいと思う。
自分が今どういう状況なのか、どうしたいのかを見極めて、最初の一歩を踏み、途中で立ち止まって、ふりかえってみることで、決して本の通りにいかなくても、一歩進む毎に、新たな世界が見えてきて、もっと先に行きたくなるはずだ。
大事なのは、自分のペースで歩むことだ。今をみつめ、自分の頭で考え続け、試行錯誤することだ。誰かのやり方が、そのまま自分に当てはまるとは限らない。アジャイルなプログラマが、普段から仕事でやっているようにすればよい。
ヘルシーコードはヘルシープログラマから
本書で何度か出てくる表現として、心(精神)と身体は独立した存在ではないというものがある。これはすなわち心身二元論の否定であり、心と身体は不可分であるということだ。
プログラマは、リーダブルで、シンプルに設計され、リファクタリングされ、自動テストスィートが用意され、継続的に不具合の早期検知・改修が行われているコードのことを健康的なコードと表現することがある。
健康的なコードとは、上記のように、プログラマの日々の品質を作り込み維持する様々な活動の上に成り立っている。しかし、ヘルシーコードを生み出すプログラマ自体が健康的でないならば、果たしてそのコードやプロダクトは本当に健康的と言えるのだろうか?
個人(の心・身体の健康状態)と仕事も別々に独立した存在ではなく、健康と仕事は不可分であると考えた方が自然ではないか?Googleなどが社員の健康を重視するのも同様の理由だろう。
もちろん、会社が健康について理解のあることに越したことはないが、最終的には会社に頼ることなく個人の責任で、できることから始めるのがよい。
プログラミングよりも健康づくり? Googleが社員に求める3大必須スキルとは - ログミー
IVS 2015 Springの本セッションの前に行われたインフィニティ・ベンチャーズLLP・小林雅氏とCampus for H・石川善樹氏による特別対談。書籍『最後のダイエット』を出版したCampus for H・石川氏は、オフィスワーカーの健康について、Googleの社員教育で実践されている、寝ること・体を動かすこと・料理することの3つの要素と仕事との関連性を解説。自然に健康になりながら、仕事のパフォーマンスを高める方法を紹介しました。
logmi.jp
こういった書き方をすると「よい仕事をするために、健康になるべき」と聞こえてしまうかもしれない。しかしこれは順番が逆であって、個人が健康的になることで、その人がよい人生を送ることができ、その結果としてよい仕事を継続的にできるということではないか。
楽しくやろうぜ
病気などで「生活習慣を変えないと命に関わるよ」と言われた方は「生きるために」健康に気を使わなければならない。そういう極限状態の方は別として、なんとなく健康を気にしているというくらいの動機の場合には、減量失敗体験から学んだことでも書いたように、楽しさをどう作っていくかが鍵だと思う。
プログラマは、目的のためにコードを書くというよりも、コードを書くのが楽しいからコードを書くという人が多いと思われる。
コードを書いて「俺って凄い」感を得るように、ヘルシーハックを行って「俺って凄い」感を得られようになれば、プログラマはあっという間に健康な人物になれるのではないだろうか。
そのためには「健康のためにはじめる」という動機よりも、「楽しそうだからはじめる(おまけに健康にもなれる)」のほうがプログラマらしいのかもしれない。
楽しいことがきっと一杯あるので(自分もそうだった)、本書を手にとって一歩を踏み出せる人が増えると嬉しい。
8/25に東京で開催されたヘルシープログラマー出版記念イベントも、Twitterのハッシュタグを見ると盛況だったようだ。今後ますます多くの人が注目することになるのではないだろうか。
おまけ
おまけ1
個人的には、こういった本はパタン・ランゲージとしてまとめたいと考えています。まずは個人の経験を元にパタンの種を書いていこうと考えています。興味のある方、「自分の経験もパタンにしたい」という方は連絡を頂けるとうれしいです。
おまけ2
今年中にヘルシープログラマ関連のイベントの愛媛県松山市での開催を実現したいと考えています。詳細は後日アナウンスする予定ですが、出版記念イベントに参加できなかった方、もっと情報共有したい方、愛媛に来てください!