情熱プログラマー ソフトウェア開発者の幸せな生き方

読み始めた時はどうなることかと思った。
それ程、自分にとって耳が痛い言葉が並んでいた。
後半はそれ程でもなかったのは、多分読み流すようになったからかな。
自分がこの本に書かれていることをそれ程出来ているとは到底思えないから。

技術者向けなのに技術的な話は皆無というのも、なんだか新鮮だ。
内容的には、自己啓発本なのかな?ビジネス書っぽい。

読んでいる最中に、いろんな人達の顔が浮かんだ。
特に勉強会で知り合った人達の顔が良く浮かんだのは、偶然じゃない気がする。
彼らは意識が高く、僕より早くこの本を読んでいたのか、もともと優秀なエンジニアなんだろうなあ。

特に心に残ったものを挙げてみようと思う。

(04) 一番の下手くそでいよう
上手い人に囲まれていると自然の自分の実力もアップするとかしないとか

(05) 自分の知性に投資しよう
新しい言語を学んだりしよう

(07) 万能選手になろう
いろんなことが出来る人は少ないんだから

(08) スペシャリストになろう
専門家というのは、それ以外のことを知らないということではない

(09) 自分の人生を他人任せにするな
特定のプロダクトとかに依存しないようにするべし

(12) ビジネスの仕組みを学ぶ
プログラム書くにもビジネス知らないとねっていう当たり前な話

(17) 巨人の肩の上で
既存のコードを読むことの大切さ

(21) デイリーヒット
些細な事でも毎日成果を上げるようにする

(25) 自分にどれだけの価値があるか?
文句ばかり言わず、謙虚に謙虚に

(27) 保守作業の真価を知る
リファクタリング!

(28) 8時間燃焼
定時で帰り続けても、仕事が増えなければ良い(慢性的な残業体質の改善を!)

(30) できないことは「できない」とはっきり言う
出来ると言って出来なかった場合が一番ひどいけど、はっきりいっても信頼を勝ち取れないのがもどかしい、相手次第か。

(33) 視点が違えば認識も異なる
これが出来てない人が多すぎる。

(35) オレ、作文的なのは得意っすよ
開発日誌とか付けるといいかもなあ

(39) 業界で名前を売ろう
売りたいです

(40) 自分のブランドを築こう
築きたいです

(47) 自分のロードマップを作る
自分の人生もひとつの壮大なプロジェクトなのだ

(51) ウォーターフォール式のキャリア計画はやめよう
キャリア計画もアジャイル手法を取り入れるべき


結構たくさんあった・・・。
とにかく、自分が自分のことをあまりにも考えてないことにびっくりした。
仕事のプロジェクトのことや、開発手法とか、そういうことはよく考えるんだけど。
自分のことが一番面倒だし、間違えたらいけないし、いろいろ大変だから後回しにしてしまっているのもわかるんだけども。

あと、自分は情熱的なプログラマーじゃないってのもわかった。
けど冷め切っているとも思っていないし、自分の人生をよりよいものにはしたいってのはあるので、なんとか良い方向へ導けるように頑張っていきたい。
なんとかやりようはあるでしょう(あると思いたい!)

この本は定期的に読みなおしたほうが良い本だな。
エンジニアをやっている限りは。
決してテンションが上がる本ではないけども。

非常にユニークな本だし、自分のエンジニアとしての思想を持つ助けになるような本だと思う。
薄い割には内容も濃くてオススメ。
アジャイルサムライ−達人開発者への道−

まず、率直な感想として、凄く感動した!
あまりの面白さに1週間程で読んでしまった(僕にとっては早いのだ)。
上手く言えないけど、後書きを読んで、ちょっと嬉しいというかウルウルきた。

僕にとって「アジャイル」といえば、「短いサイクルで開発する今っぽい手法」って認識でしかなかったんだけど、この本を読んで「アジャイル」な開発の厳しさを痛感した。
正直な話、読んでいて耳が痛くなる話ばかりだった。
全然出来てないもんなー。

これは実際の仕事と照らしあわせたからかもしれないけど、この本に書かれているようなことを実践しようとすると並大抵のことではないってことは直ぐに理解した。
どんだけの人達を巻き込んで、理解してもらい、お互い協力していかなければならないのか。
正直途方に暮れる。
「あの人を説得するのには骨が折れるな」って人が浮かぶ浮かぶ。
そして、開発メンバーの中で、気持よく賛同してくれる人がどれだけいるだろうかと不安になった。
みんなもう疲弊して諦めてしまっている。

毎日毎日
「なんでこんな修正やらなくちゃいけないんだろ?」
「なんで楽しくないんだろ?」
と不満に思ったり、誰かを槍玉に挙げて憂さ晴らししている非生産的な自分とその仲間たち。
嫌気が指しているんだけども、この現状を打破するための正しい基準がわからず、自分のわがままなのか、周りが良くないのか自問自答する日々。
嫌々ながらも仕事だと割り切ってやり過ごしていた自分にとって、この本に書かれていることは、十分自分のものさしになり得るものだった。

いやあ、素晴らしい。

僕は「アジャイル」な開発手法が完璧だとは決して思わない。
そもそも、まともな開発手法の本を読んだのはこれが初めてだし、複数人で開発するプロジェクトを数多くこなしたり、マネジメントしてきた経験もない。
けども、「アジャイル」な開発のマインドは僕は大いに気に入った。
どんなアジャイルプラクティスよりも、まずはこのマインドに共感し、前向きに取り組める方が何倍も大事なんじゃないかなと思った。

なので、まずは僕一人から「アジャイル」なチームの構成員になりえるようなスキルを身につけられるように努力していこうと思う。
スキル以外にも あんまり構えず、ワクワクしながら取り組められるようなマインドも身につけられたらいいな。

この本を読んだら「アジャイル」な開発が出来るようになるとは思えない。
たかだか300ページで説明しきれたら、アジャイルのプロのコーチみたいな職業存在しないだろうし。

けど、入門書としては最適だと思う。
エンジニア向けに書かれた本ではあるけども、エンジニアじゃない人にも結構受けるんじゃないだろうか。
とにかく読みやすく、自分の身にも起きたことがある問題をどんどん例に出してくれるのも、非常に安心できて良かった。

さて、次はどの本を読もうかな?
もっともっと掘り下げて学んでみたいキーワードはたくさんあった。
そんな風にこの本を足がかりにより深く学んでいく・・・こんな風にこの本を活用するのが一番いいんじゃないかな。
まさにそれが入門書の役割でもあるんだけど。

兎に角、僕のアジャイルな開発は始まったばかりだ。
ま、気楽に楽しんでやってみることにしよう。
基本的には、以下のサイトを参考にした
CakePHPのcore部分をgit submodule化してgithubで管理する - JavaScriptとかPerlとかPHPとかさくらVPSとか勉強する

一応流れを書いておく
# cakephp clone
git clone git://github.com/cakephp/cakephp.git project
cd project


# 不要なディレクトリの削除&gitディレクトリの作り直し
rm -r .git
rm -r lib
git init


# cakephpをsubmoduleで追加
git submodule add git://github.com/cakephp/cakephp.git
git submodule update --init


# app/webroot/index.phpを編集
vi app/webroot/index.php

//define('CAKE_CORE_INCLUDE_PATH', ROOT . DS . 'lib');
+ define('CAKE_CORE_INCLUDE_PATH', ROOT . DS . 'cakephp' . DS . 'lib');


# app/webroot/test.phpを編集
vi app/webroot/test.php

//define('CAKE_CORE_INCLUDE_PATH', ROOT . DS . 'lib');
+ define('CAKE_CORE_INCLUDE_PATH', ROOT . DS . 'cakephp' . DS . 'lib');


# app/Console/cake.phpを編集
vi app/Console/cake.php
...

$ds = DIRECTORY_SEPARATOR;
$dispatcher = 'Cake' . $ds . 'Console' . $ds . 'ShellDispatcher.php';

if (function_exists('ini_set')) {
$root = dirname(dirname(dirname(__FILE__)));
+ // for managing cakephp's core-code by git-submodule
- ini_set('include_path', $root . $ds. 'lib' . PATH_SEPARATOR . ini_get('include_path'));
+ ini_set('include_path', $root . $ds . 'cakephp' . $ds . 'lib' . PATH_SEPARATOR . ini_get('include_path'));
}

...

+ // for managing cakephp's core-code by git-submodule
+ $idx = array_search('-app', $argv);
+ if ($idx === false) {
+ $argv[] = '-app';
+ $argv[] = $root . $ds . 'app';
+ }

unset($paths, $path, $dispatcher, $root, $ds);

return ShellDispatcher::run($argv);


# 変更をcommit
git add . git commit -m 'Initial commit'


大まかにはリンク先と異なるところは、app/Console/cake.phpを触っているところかな?
上のように修正すれば、わざわざcakephp/lib/Cake/Console/cake.phpを実行しなくてもいいし、パラメータも設定しなくてもいいので、スッキリします。
例えばbakeする場合はこんな感じ。
php cakephp/lib/Cake/Console/cake.php -app ../app bake
↓ php app/Console/cake.php bake

よりドキュメント通りに動くほうが良いと思うので、こっちの方がいいんじゃないかな?
CakePHP2.x系からはConsole部分もappディレクトリ内に出来たので、こうやって気楽にカスタマイズ出来るのが素敵だわ‐。
github::gistを使えば、簡単にブログにソースコードを貼れるんじゃね?
ということで小ネタでやってみる。

仕事でRSSフィードの各種をパースしなくちゃいけなくなったんだけど、複数の仕様に対応するの面倒だから便利なライブラリ無いかなと思って探してみた。
けど、意外に良いのがない。
以前使っていたSimplePieはPHP5で使うとStrict Standardsエラーがガンガン出るので、これはちょっと使いたくないなと。
他のライブラリもメンテナンスが全然されてない様なものだったりすることが多くて、やりたい事は単にブログタイトルと記事一覧を出したいだけなんで、自分でパースしようかなと思って探していたら、いくつかサンプルコードが・・・。

んで、いろいろネット上に転がっていたソースをちょいとまとめてみた。


綺麗に貼れている模様。
便利だねえ、こりゃ。
今のご時世、静的ページだけのウェブサイトならわざわざレンタルサーバ借りる必要なくなったのね。
まあ、無料のレンタルサーバなんて珍しくないかもだけど。
僕が個人的にGitHub素敵って思えるのは以下の点。

・広告とかでない
・結構なアクセス数を捌けそう(Twitter Bootstrapの公式サイトが利用しているので)
・Gitでデプロイが完結する
・独自ドメインが利用可能(無料)
・Jekyllというテンプレートエンジンが利用可能
・JekyllとOctopressを組み合わせれば、ブログも構築可能

素晴らしい。

っつうことで、longkey1.netもGitHubへ移行しました。
longkey1.net
まあ、1枚のペラページだけど、さくらのレンタルサーバ解約したので、どこにおこうかなーと思っていたところにGitHub Pageの存在を知って捗ったわー。
まあ、エンジニアじゃない人にはGitという高い壁を越えなければいけないのかもしれないけども、今のご時世Gitが使えるといろいろ美味しい思いが出来るのもこれまた事実。
これを機会にGitを覚えるのも良いかもね。

詳細はこちら。
github:pages