著名開発者もすなるgithubといふものを、私もしてみむとてするなり

タイトルはもうちょっとひねりたかったのだが…(笑)。
Git? Subversion? git-svn? - Archit!!でも書いたが、私はSubversion(SVN)ユーザーであるし、実際の開発ではSVNで全く問題ない。むしろ、Gitの空ディレクトリを管理してくれないところなどは非常に気に入らないし、さらに気に入らないところがある。ひとつのプロジェクトがあって、そのプロジェクトのドキュメントやソースなどをひとつのリポジトリ内に入れておき、しかも、それぞれをバージョン管理したいということがある。その場合、SVNでは以下のようなディレクトリ構成をとれば、問題ない。チェックアウトの時も、例えば、hogesrcディレクトリだけ、というのも可能だ。

HogeProject
  |----Document
  |      |----branches
  |      |----tags
  |      |----trunk
  |             |----hogedoc
  |
  |----src
  |      |----branches
  |      |----tags
  |      |----trunk
  |             |----hogesrc

ところが、これがGitでは原則できないらしい(サブシステム機能を使えば何とかできるのだろうが、本来の趣旨からずれると思う)。上記の例でいえば、hogedocだけでひとつのリポジトリにしないといけないらしい。
そういった意味で、Bazaarだな - Archit!!でも書いたとおり、Bazaarの方が今までのやり方を引き継げる。
しかし、こういった私の意向とは裏腹に世情というのはGitへの流れが出来上がりつつある。これは、GitHubの貢献が大きい。実際、VPSなどのサーバを借りてその中にSVN+Redmine環境を構築してもいいのだが、実はこの料金表に載っているように、GitHubのプライベートリポジトリを借りたほうが、サーバのレンタル料金より安かったりする。しかも、バックアップやセキュリティのことを考えなくてもいい。環境構築の手間もいらない。
結局のところ、これが一番大きな理由で、今までのSVN+Redmineのワークフローを捨ててでもGitHubに移行する価値がある。まあ、ワークフローなどというのは、キーボードのキータッチと同じで、そのうち慣れるものだから。CVSからSVNへの移行時のことを考えてもそうだった。
ということで、早速Microプランを申し込んで、自サーバSVN内のいくつかのプロジェクトを移管してみた。あとは使っていこう。

Windows版Sublime Text 2でインライン入力

恋してしまうほど素晴らしいテキストエディタSublime Text 2
Windowsには秀丸エディタサクラエディタMacにはmiTextWranglerのような開発向けの使いやすいエディタがある。もちろん、本気の開発ではIDEを使うのだが、ちょっとしたときにはこうしたエディタの方が便利だ。ただ、私のようにWindowsMacも使い、場合によってはLinuxも使う人間にはクロスプラットフォームというのは結構大切なのだ。その点、Sublime Text 2クロスプラットフォームで使いやすい。まさに恋に落ちそうなエディタなのだ。
だが、大きな問題がひとつ。64bit版Windows*1で日本語インライン入力ができない!これは、不具合として報告が挙がっているのだが、いつ対応してくれるかわからない。それをパッケージとして対応してくれたひとがいる!そのGitHubリポジトリここ。実際にインストールしてみたけど、ちゃんと動いた!

*1:パッケージ作成者であるid:chikatoikeさんご本人からコメントをいただいた。感謝。

CakePHPのupdateAll()でDATE型の注意点

CakePHP1.3でupdateAllメソッドを使っていて、少しはまったのでメモ。
通常は

$updateAllFields= array('field1'=>1, 'field2'=>3, 'last_updated'=>date('Y-m-d'));
$updateAllCondition= array('field4'=>5);

$this->Hoge->updateAll($updateAllFields, $updateAllCondition);

のようにかけるのだが、ここに、DATE型のカラムがあったら注意が必要。上でいえばlast_updatedがそうなのだが、出来上がったUPDATE文が

UPDATE hoges SET field1 = 1, field2 = 3,  last_updated = 2009-07-15 WHERE field4 = 5

となって、自動的にシングルクオートをつけてくれないのだ。なので、手動でするしかない。

$updateAllFields= array('field1'=>1, 'field2'=>3, 'last_updated'=>"'".date("Y-m-d")."'");

とすればOK。

SubversiveからSubclipseへ

Subversion(SVN)のバージョンがいつのまにか1.7になっていた。どうも、リポジトリ構成が変わったらしい。それにともなって、TortoiseSVNもアップデートされていた。それはいいのだが、古いリポジトリ構成で動作しなくなってしまった。古いリポジトリ構成のものをTortoiseSVNで更新などしようと右クリックしても「更新」のメニューは表示されず、「SVN 作業コピーをアップグレード」と表示される。
ということで、諦めて、作業コピーをアップグレードした。
ところが…
アップグレードしたとたん、Eclipse上でバージョン管理できなくなってしまった…orz。これは、EclipseSVNプラグインであるSubversiveが1.7に対応していないのだ。より正確に言うと、JavaSVNクライアントであるSVNKitの1.7対応バージョンをSubversiveが認識しないのだ。
ということで、諦めて、Subclipseプラグインを使うことにした。Eclipse上からSubversive、および、SVNKitプラグインをすべていったん削除。その上で、ここ記載の更新サイトからSubclipseとSVNKitをインストール。なんとか、TortoiseSVNと併用可能となった。

CからかJavaからか

iOSアプリを本気で開発しようとすると、Objective-Cは必須。
全くの言語初学者にiOSアプリ開発を教えようとするとき、いきなりObjective-Cから教えるのもひとつの方法だが、結構ハードルが高い。さらに、Objective-C単独の求人需要がそれほどあるわけではないので、他の言語で言語導入をしてからObjective-Cにスライドした方がいい。
その際、導入としてJavaにするかCにするかという議論することがある。これは、目玉焼きに塩をかけるかソースをかけるか、はたまた醤油をかけるかの議論に近いので、あまり白熱する意味を感じない。
ただ、私は、同じ「オブジェクト指向言語」というくくりからJavaから導入して、オブジェクト指向の考え方を教えた上でObjective-Cに入っていった方が、わりあいすんなり理解してもらえやすいのではないかと思っている。

IE6の功罪再考

まにまにフェスティバルに行ってきた。クリエイターズセッションの「ブラウザセッション」の最後、質疑応答で @ ことマイクロソフトエバンジェリストの春日井さんへ「IE6は当時はいいブラウザだった」という発言をした参加者がおられた。
これは、確かにそうだ。
WEBデザイナではIE6をdisり始めるととりあえず場が盛り上がる、という話があるぐらいIE6はひどい扱いを受けている。でも、事実、厄介な存在だ。
そこで考えてみた。
IE6が犯した最大の功罪は、その存在そのものではなく、アップデートしなかったこと、なのではないかと。あるいは、もっと早くアップデートできるような仕組みを作らなかった、といってもいいと思う。今、強制アップデートが始まっているし、マイクロソフト自身がIE6を葬り去ろうと躍起になっている。それでも、IE6が減らないのは、IE6でのみ動作する業務システムがあり、それをリプレースできていない、するお金がない企業が多すぎるからであろう。
IEFireFoxChromeと違って企業内業務というのをものすごく意識して作られている。これはIEに限らずマイクロソフトの全製品がそうであり、それゆえギークからするとツマラナイのだけど、適材適所である。だから、IEが大幅なアップデートに対して慎重なのも理解できる。
ただ、IE6に関しては大幅なアップデートをしなさすぎた。あるいは、できなかったのだろう。ならば、IE6をレガシー業務システムを動作させる環境としてのみ生き残らせ、それと切り離した「ブラウザ」をIE6とは別に用意し(名前はどちらをIEにしても全く問題ない)、もっと早くアップデートしておけば、このような問題は起きなかったのではないか、とふと思った。歴史にIFを持ち込むことなのであまり意味はないが…。

Eclipse更新サイトのリロード

とある生徒さんから質問を受けた際に発見したTipsをメモ。
その生徒さんは、自身のMacMacでPleiades All in One Eclipse - Archit!! の方法でJavaの開発環境を構築して、色々学習しておられた。そして、受けた質問は、PHP環境も構築したいというものだった。Eclipseに関しては、PDTプラグインをインストールすれば終わりだし、これは更新サイトからできる。
ところが、その生徒さんはできなかった。で、見せてもらうと、なんと、以下のようなメッセージが。

更新サイトのURLは生きているから、Eclipseが更新サイトのデータをよみこむときに一時的にネットワークが不安定だったのかもしれない。なので、このサイトのデータをリロードさせればいいのだけど、それがこの画面からできないのだ。この画面の「使用可能なソフトウェア・サイト」のリンクをクリックするか、Eclipseの設定から
インストール/更新 > 使用可能なソフトウェア・サイト
で以下の画面を表示させる。

問題のサイトを選択して「再ロード」ボタンをクリック!
これで解決!