2012年8月18日土曜日

WordPress を動かすまで 〜 ライオンと山登り(1)


新しいMac(MBP Retina) にWeb開発の環境を整備しています。
最初気づいたのは、Mountain Lionには「Web共有」が無い。今となっては、いらない機能なので困りませんが。でもApacheはどこに?と思いましたが、ちゃんと入ってます。PHPも入ってます。




私はXAMPPもMacPortsも使わないのですが、それでもあとMySQLさえ入れればWordPressが動くはずです。
でもMySQLを入れてWordPressを動かすまでちょっとした「険しい道のり」に感じました。「頂はすぐそこ」なんですが、、

2012年8月13日月曜日

私が今、本当にやりたい仕事


私は現在の仕事で、過去から引き継がれているソースコードというものに大いに悩んでいるのですが、、
ふと最近買ったMacPVを見ていて、Appleの人達の言葉にヒントをもらっていたのだと気づいた。

MacBook Pro

「真に新しいものを生み出すには、最初からやり直さなければなりません。断固として、過去を断ち切るのです。」
ジョナサン・アイブ

「やり方を変えなければ、今あるものに何か足されるだけです。しかし、変えようと決意したら、設計に全く新しい世界が広がります。」
ボブ・マンズフィールド

そう!そうしたいんだ。

MacBook Pro with Retina display というのはやはり、MacBook Proの後継で、一見大して変わらないんだけど、実際に使ってみると何かが違う。
やはり「過去を断ち切る」タイプのプロジェクトで開発されたのだと思う。

ソフトウェア開発において「過去を断ち切る」タイプのプロジェクトというのは、私の経験で思うに成功率が五分五分ってところで、リスクはやはり高い。
Appleはあえて「過去を断ち切る」ことに挑んでいるのだから、私もそちらの路線で行こうと思う。
実際のとこ自分は「壊し屋」だしね。 壊した後、ちゃんと作れるエンジニアにならなければ。

Macの衝動買いも、自分でもなぜそうしたか疑問だったが、この2人の言葉が決め手だったんだな。

2012年8月11日土曜日

忘却型プログラミング


  • 自分の書いたコードは忘れてしまって良い。
いくら自分の書いたコードであっても、3ヶ月を超えて内容を記憶するのは難しい。
むしろ忘れてしまって良い。ソフトウェアの生産性の上からも、特定のプログラマーにナレッジが集中してしまいがちになることを避けることができ、個々のプログラマーの平均的生産性、プロジェクト全体の生産性を向上することが出来る。

  • コードレビューをして複数のプログラマーがコードの内容を共有したところで、やはり忘れがちである。

コードレビューがダメだとは言わない。コードの俯瞰もかなり改善できる。
でもコードの内容はいずれ忘れ去られる運命にある。しかもプログラムの「寿命」は年々短くなっている。コードレビューして共有なんてやってる余裕も現場に無さそうだ。

  • 品質への担保はドキュメント、テストコード。

この2つがあればプログラマーが失踪しても、急にバカンスに出かけても安心。もちろん書いた本人がコードの内容を忘れて大丈夫だ。
ドキュメント、テストコードの重要性はアジャイル開発などの開発手法で指摘されているのも関わらず、今日でも「無い」プロジェクトがどんなに多いことか。正直、現場ではアジャイル開発もやっている余裕が無い。しかし、書いたコードは忘れてしまうのが前提であれば、ドキュメント、テストコードを残さざるを得ない。

  • プログラマーが円滑に次のタスクに移るためには、過去のコードを忘れることが必要だ。

プログラマーの人生設計の上でも過去のコードを忘れ去って、キャリア変更するのも大事だ。

  • 着想は「エラー忘却型コンピューティング」から。

機械ですらエラーを忘れてないとやってられないのだから、プログラマーがコードの内容を忘れるもありでもなかろうか。

後日また、また内容をまとめて書きます。

2012年8月10日金曜日

Groovyで禁煙

毎日1箱吸ってるから、チャンピックス飲んで1日3本ずつ減らすと8日目には禁煙状態になる。
結果をメモにコピペして本数を記録。
暗算も面倒なオレでも禁煙できればね。


println "禁煙スケジュール"
println "日:本数 実績"
(1..7).each {
    def honsu = 20-(it-1)*3
    assert honsu > 0
    println it + ": " + sprintf("%2d", honsu)
}

2012年8月9日木曜日

開封の儀 MacBook Pro Retina

5年ぶりに買ったMac

ヤマトから「アップルさんからです。」と届いた。
アップルも配達のお兄さんから「さん」付けで呼ばれるメジャーな存在になった。
段ボールの中には薄っぺらい箱が入っていた。


箱の裏にはシリアル番号と型番が書いてある。シリアル番号はマシンのセットアップ時にも必要だった気がする。
"Designed by Apple in California"だが組み立ては中国。
実際、ヤマトの国際便で届いた。
ふたを開けたら、いきなり本体。
なんかiPadのデカイのみたい。
本体に下に付属品。
あのシールも入ってました。
クリーニング用のクロスも入ってました。
プロジェクターへの接続のためThunderboltのVGAアダプタも買いましたが、肝心なときにちゃんと動くか心配です。
 引っぺがす。
キーボードが浅いので、昔のように保護シートを持ち歩かなくてもいいかな。
セットアップ開始。
キーボード入力は「ことえり」で進めばいいです。
私は「US」で進んでしまいました。
iPhoneアプリの開発をするなら「US」で進んだほうが、Apple IDのプロフィールに日本語が混じらなくていいかもしれない。


Wi-Fiにもセットアップ時につなげる。
Apple IDも入力。
Officeと今回新たに買った、ATOKとVMware Fusion 4を入れる。
Officeは以前から持ってたファミリーパックだったのでDVDからインストールするのが面倒だったが、ATOKとVMwareはUSBメモリのインストーラになっていた。VMwareのはかっこいいね。こっちの方が安いんだけど。

マウスもきれいなパッケージに入って届いたが、トラックパッドが便利すぎてホント使わない。
Lionが入っていた頃は、忙しいのもあって、入れたアプリの動作確認しかできなかった。
TimeMachineのバックアップ方法も思案中。
Macが届いて1週間ぐらいしてMountain Lionがリリース。
新しいマシンなので、速攻アップグレード。

App StoreからXcodeもインストールして、
メニュー Xcode > Preference...  > Downloads で Command Line Tools をインストールして、gcc や make を使えるようした。
これでようやく開発に使えるようになる。
後日、なぜか香港からのエアメールでAppleCareの契約書が届く。













MacBook Pro は今のような筐体になって10年ぐらい経ち、このマシンも古いモデルと見た目はそれほど変わらない。

しかし、このMacを使ってイノベーションを感じずにはいられない。

開封の儀 TimeCapsule

MBP Retinaを買ったついでに、TimeCapsuleも買った。
久々のApple製品だったので「開封の儀」をしてみた。

2TB
この前までタイの洪水でHDの値段が高騰してたから、2万円台の無線LANルーター+NASは良心的な気がする。
内箱には"Designed by Apple in California"と印字してある。
日本人としてはくやしいが、
かっこいい!



思ったよりデカイ。
MacMiniより大きい気がしたが、ほぼ同じ大きさらしい。
A Cアダプターも内蔵だから本体デカイんだろう。











Apple製品には珍しく紙のマニュアルが付いていた。












AirMacユーティリティーで最初のセットアップはあっという間に終わった。
でもこの後、結構悩むことになる。

2012年8月2日木曜日

銀の銃弾


ソフトウェア工学の例え話として「銀の銃弾」があるが、そもそも銀の銃弾など実用性が無いそうだ。

「銀の銃弾」は今も世界中のプログラマー、プロジェクト マネージャーの頭を悩ませている。
おとぎ話の「金の斧」以上に深刻な問題だ。


「銀の銃弾」は入手困難だが高性能な銃弾。対して鉛の銃弾があるが、安易に大量に撃てるけど効果が低いことを指している。
銃規制の厳しい日本では銃弾の素材は馴染みが無く、プログラマーとして銃弾の素材って実際のところ何なんだ気になって仕方ないので、銃弾の素材を調べてみた。


銃弾(弾丸)の素材として現在も鉛を素材の一つにしている。
軍用の銃弾でも素材の一つに鉛が使われているが、実際には「フルメタルジャケット」という鉛を真鍮で覆った銃弾を使っている。
鉛だけの弾丸は人体に命中した後、体内に残存しやすく、戦場での治療が困難で鉛中毒の後遺症の問題もあり、国際条約で禁止されているそうである。

狩猟用の散弾にも鉛が使われてきたが、鉛中毒の問題から鉄や銅の素材の散弾も使われるようになっている。

実際の弾丸も鉛単体で使われるのは拳銃の銃弾ぐらいで、より実用性を問われる用途に関しては構造や素材を工夫して鉛の銃弾以上のものを使っているのが現実のようだ。

ソフトウェア工学の例え話に戻るが、銀の銃弾が無いのは仕方ないのだが、鉛の銃弾より効果的な銃弾をいくつか用意しおくのが最も効果的なようだ。