文字コードがSHIFT-JISなHTMLファイルが200個くらいあって、これをUTF-8に変換したいと思っている。iconvとかいうのを使ってTerminalからやる方法を見つけたんだけど、これシェルスクリプトが分かんないとうまくいかないっぽい。というわけであきらめた。

Mac OS Xにはシェルスクリプトが分からない人のためにAutomatorという決まり決まったワンパターンな操作を自動化するソフトがあるのでこれを使おうとした。Photoshopにもこういう機能ありますよね。画像をまとめてリサイズするとかそれ系。

AutomatorはTigerのときとかに少し使ったことあったんだけど、Snow Leopardになってからなんか結構変わってる。ググってみると「Snow Leopardになってさらに便利になった」とか書いてある。しかし全然使い方が分からない。ヘルプファイルの内容からして分からないし、アップルのサポート記事でもリンク切れ起こしてたりしてもう発狂寸前。

単純にHTMLファイルを開いて文字コードをSHIFT-JISからUTF-8に変換して同じ名前で保存して欲しいんだけど、なんか簡単な方法ないですかね?

と、思ってたんだけどすごいのを発見した!!!

MultiTextConverter @ アールケー開発

これはやばい。HTMLを解析して <head></head> 内にメタタグまで入れてくれちゃう!! もうちびりそう!!!

まじ助かったわ〜。さっさとルーティンワーク終わらせて帰ってサッカーに備えよう。

やっぱりタスクをiPhoneから参照したい

いまでもThe Hit ListがMacでは一番好きなタスク管理ソフトだけど、iPhoneアプリがないのがさすがに不満になってきた。朝礼で予定を報告するときとかにタスクリストが見られないのが不便。iPhoneアプリがあればこういうことが可能になる。

The Hit ListのタスクはiCalのTo Doと同期できる。しかしiPhoneのカレンダーはiCalのTo Doの同期に対応してないし、そもそもiPhoneのカレンダーはできがあまりよくない。

2Do

iPhoneのタスク管理ソフトで2Doっていうのがある。これはUIがThe Hit Listに似ててなかなかよさげ。しかもMacのiCalと同期する機能がある(iCalのTo Doと同期できる)従ってiCalを介してThe Hit Listと2Doを同期できるわけだ。

しかしこのやり方には致命的な欠陥がある。The Hit ListはタスクをiCalのTo Doと同期するときに、入れ子になっているタスクの処理がへんてこりんになる。例えば、

タスクA -> タスクB -> タスクC

みたいな構造のタスクがあったとする。この階層構造を保持したまま同期されることを期待するけど、このアイテムがiCalのTo Doになったときは

タスクA:タスクC

みたいな表記になる。これは不便きわまりない。

というわけでせっかく買ったものの2Doには30分くらいで見切りを付けて(Lite版は無料だけどSync機能が使えない)、そして一年以上愛用してきたThe Hit Listも見限って、今後はTaskPaperを使ってみようかと思っている。

iPhone版のTaskPaperについては筆を改めます。

プログラミングっぽいネタだけどMacの話なのでこっちに書きます。

僕はちゃんとしたプログラミングの勉強をしたことがないので、いつも行き当たりばったりでサイト作り始めます。でもさすがにこういうのの非効率性が分かってきたので、最初に必要なデータベースのテーブル数くらいを大まかに決めることにしました。そんでそのイメージ図みたいのを描くのにMindNodeというアプリケーションを使ってみた。

MindNodeはマインドマップを描くためのソフトです。マインドマップの描き方とか知らないし、キャンペーンかなんかで安かったのでとりあえず買っておいたソフトですが、思いの外良い感じに描けました。

そんでこれをThe Hit Listでアウトライン風に書き下してみた。

開発の初期段階でやることが視覚化できてとっても良いと思いました。

それにしてもThe Hit ListはiPhoneアプリ出なさそうですね。Google Groups のユーザーフォーラムでは「出す出す詐欺」の作者にみんなあきれ果ててThingsに戻ったり別のソフトを物色してるみたい。

The Hit List自体はとてもUIも機能もとても良くできているだけに大変残念ですね。

Pocket WiFi

せっかくMacBook Pro持ってるのに外で使わないのもったいない、しかし外で使うためにはやっぱり回線が必要だ! というわけでSoftBank版のPocket WiFi、C01HWを買いました。

家にいるとついついいろんな誘惑に負けてしまってプログラミングの勉強がはかどらないので、一念発起してPocket WiFiを買い、自分にハッパをかけることで屋外で勉強できたらいいかなと思いました。

昨日早速スターバックスでMacBookおっぴろげてみました。勉強はあまりはかどらなかったですが、家にいたらきっとむふふな動画見たり酒飲んだりしてだらだらしていたであろう時間に、少しでもテキストが進んだので買った甲斐はあったかなと思います。

最近は土日どっちかは外で映画見てるので、映画の上映待ってる細切れの時間とかに少しでもプログラミング出来たらとても良いかなと思ってます。週末少しもコード書かないと忘れること多いし。

ところで、買って半年以上経つのに本格的にMacBook Proを持ち出して使うのは昨日が初めてだったのですが、MacBook黒に比べて

  • バッテリーのもちが良い
  • 15インチディスプレー(1440 × 900)だとやっぱ快適
  • 薄いのでバッグへの出し入れがスムース

でした。先週出た最新のMBPはもっとバッテリー駆動時間伸びてるらしいし、しかも値段下がってるし、いい時代になったもんですね。LED Cinemaがもうちょいレート反映した値段になってくれたら良いのにな。

なんか一個前の記事でTextMateマンセーみたいな記事を書いてますけど、Coda悪くはないです。というか素晴らしいです。

特に良いと思うのが、FTPクライアント機能を内蔵してるところ。普通のFTPクライアントでちまちまファイルを上げる作業は結構面倒くさいです。特にサーバーのタイムゾーンの設定がローカルのタイムゾーンと異なってたりすると、FTPクライアント上で表示される最終更新時刻が全然あてにならなくてどのファイルをアップロードすればよいのか分からなくなります。こういうとき、Codaでファイルを編集していると非常に幸せになれます。

Codaには「サイト」という機能があって、ここにFTPの情報を登録しておくとグラフィカルな感じで一覧表示してくれて、非常にシャレオツです。

1120_Coda_1.png

例えばいまサイトからportal shit!を開いたとします。するとこんな感じになる。

1120_Coda_2.png

www.portalshit.net にFTP接続しています。サイドバーに「ローカル」と「リモート」とあるのが分かるかと思います。「ローカル」を選ぶとローカルのファイルを編集でき、「リモート」を選ぶとリモートのファイルを直接編集できます。

1120_Coda_3.png

ローカルの index.php を適当に編集してみましょう。

1120_Coda_4.png

するとこんな感じで編集中のファイルには印がつく。でもまぁこんなのはよくある機能です。Codaが便利なのはここからで、ここでローカルのファイルを保存するとファイル名の横に矢印がつきます。

1120_Coda_5.png

index.php の横に矢印がついています。この矢印をクリックするとローカルで編集したファイルをリモートにアップロードしてくれるのです。これが便利。どのファイルがローカルで更新済みでどのファイルをリモートにアップロードすべきかが一目瞭然です。

加えて、「削除」「すべてを公開」なんてのが index.php の下部にありますが、こいつもすこぶる便利なんです。例えば index.php の他に複数のファイルをローカルで更新したとする。全部アップロードしなければならないのですが、ディレクトリを複数またいでいると面倒くさかったりする。しかしCodaの「すべてを公開」という機能は、矢印付きのファイルをアップロードしてくれるのです(「削除」を押すとすべての「矢印」を削除します)。非常に賢いですね。

こんなに便利なのになぜRails書くときはTextMateを使うのか。Bundles機能が便利だとかいろいろ理由はあるんですけど、このFTPクライアント機能はRails向きじゃないんですよね。Ruby on RailsはWEBrickという開発サーバーをローカルで起動してそこを見ながら開発していくので、HTMLなどの静的ファイルをぽんぽんサーバーにアップロードしていくのとは事情が異なる。CakePHPはPHPが動くなら素のApacheでテストできるので(Passengerとかいらない)、Codaで作業しながらぽんぽんアップロードしていっても問題ないわけです。だからCodaがベストマッチだった。BakeするときくらいしかTerminal.appは使わないし。

まとめると、Codaは非常に素晴らしいテキストエディターだとは思いますが、HTMLのマークアップやJavaScript、PHPなどのプログラミングには向いているものの、ハードにごりごりプログラムを書く用途には現状あんまり向いていないと感じます。もうちょいプログラマー向けに進化したら(Terminal機能を内蔵するのではなく、Terminal.appとの連携やフレームワーク特有のコマンドのサポートなど)、とても良いのではないかと思います。

しかしHTMLやCSS書くのがメインで、ときどきPHPも触るみたいな方には打って付けのエディターだと思います。$99の価値はあると個人的には感じます。

CakePHPとかRailsでサイトを作るときはModel View Controllerを頻繁に行ったり来たりします。Vimは確かに素晴らしいのですが、複数のファイルを一括で開いてあちこち編集するのはさすがに苦行に近いものがあります。CodaとかTextMateはサイドにDrawerがあってファイルをブラウズしながらタブでじゃんじゃんファイルを開いていけるのでかなり便利です。Codaの例ですが、こんな感じ。

1119_coda_1.png

CakePHPでなんか作ってるときはCoda一辺倒でした。とにかく使いやすい。タブ機能だけじゃなく、ファイルを「分割ウィンドウで開く」という機能があって、例えばModelを左に、Controllerを真ん中に、Viewを右に開いて各々を突き合わせながらコードを書くことができます。

1119_coda_3.png

この機能は重宝しました。こんな感じ。

1119_coda_2.png

RailsもCodaで書こうかと思ったんだけど、弱点がある。それはRuby on Railsのシンタックスに弱いことです。まったく対応してない訳じゃないけど、.html.erb形式のファイルの色分けがいけてない。メソッドの補完とかは結構やってくれるんだけど、それよか他にやることあるんじゃね? って感じですね。

結局、RailsはTextMateで書くことにしました。

TextMateのなんとも素晴らしいところはBundles機能。これすごいですね。いま開いてるファイルのViewやModelにBundlesメニューから一発で飛んでけたり。

あとTermina.appとの連携とかKey Bindingsとか。これでマルチバイト文字にネイティブで対応してくれてたら言うことなしなんだけど。

MacはUnixとして使うと便利

IMG_0287

Macはシャレオツパソコンとして使うだけじゃもったいない。一応UnixなのでUnixとしても使える。

Unixコマンドが気持ちいい

  • 「○×は使用中のため削除できません」とか警告が出るファイルも sudo rm -f &lt;ファイル名&gt; と打てば消せる。ストレスフリー。

  • 10分後にシャットダウンさせるとかも楽ちん

    出かけなきゃいけないけどまだDropboxの同期が終わってなくて電源落とせない、みたいなときは、 sudo shutdown -h +n とか打つとn分後にシャットダウンする。nのところに10を入れて実行すれば10分後にシャットダウンする。便利。

きっかけ

GitやVim、サーバー環境構築などでTerminal.appを多用するようになった。

  • Git

    • とにかく便利。プログラミングしてなくても、htmlやcssのバージョン管理もできる。『入門git』という本を読んでるけど、著者はこの本自体をGitを使ってバージョン管理しながら書いたらしい。ちょっとUnixの操作に慣れれば劇的に快適な文書のバージョン管理環境がゲットできる。共同作業で使うんじゃなく一人でやるんでも便利。
  • Vim

    • 最初はとっつきにくかったけど、慣れたらとても使いやすい。さすがにhtml書くときはグラフィカルなエディターを使うけど(Espressoで全裸コーディングとか)、プログラムを書くときはvimの割合が増えた。Terminalとの行ったり来たりが楽だし、そもそもGitを使ってたら git commit -a のときにVimが自動で開くし必然的に使う機会が増える。

MacPortsは神

MacPortsのリポジトリは結構頻繁に更新されてる。新しいバージョンをインストールするために自分でリポジトリ追加したりしなくていいし、とにかくパッケージ管理が楽。個人的に自宅サーバーやるんだったら古いMacにMacPortsで環境つくる。

というわけで

iTunesとSafari専用マシンとしてだけMacを使うのはもったいないです。良かったらUnixとしても使ってあげてください。

Snow LeopardになってもUnixとしてのOS Xには大きな変化がないので以下の本がオススメです。僕も毎日拾い読みしてます。