2011年1月12日水曜日

黒い画面をご存知か?

KUROIGAMEN

というblogをご存知か?Lokkaの作者である@komagataさんと同じ会社に務める(経営してる?)@machidaさんが主な筆者のblogです。

Lokkaに興味をもって調べているうちに、必然的にLokkaのテーマを手がけたデザイナーさんである@machidaさんを知るに至った、と。

で、KUROIGAMENは最近githubにリポジトリを作るところまで進んでいて、私もblogの内容通りの作業を進めておりました。とりあえずgithubにloginして、あちこちのプロジェクトをウオッチしたりして。redcarとかKodとかrailsとか。

KURIOGAMEN、本日の更新で「forkしてpull request」せよ、ということだったので、私も初めてforkしてみました。いやー、この2,3日、githubに行くたびに「リポジトリが0です!」と脅かされていたので、ちょうどいい機会となりました。

forkしてちょっと更新して、pull requestする、という経験ができました。これはおもしろい。ありがとう@machidaさん、こんな田舎のblogだと宣伝にもならないけれど、読んでますよーKUROIGAMEN。

Mac用スクリーンショット SimpleCap

Mac用スクリーンショット SimpleCap

というわけでスクリーンキャプチャはこのアプリのお世話になることにした。


いわゆる常駐もの、なので若干使うのにためらいがあるところ。winの場合だと動作が遅くなる原因になってたからなあ。OSXはどーなんでしょ。topでしばらく眺めていたところ、常駐もののアプリがCPUを食いつぶす、みたいなことはないようだけど。(なんせfirefoxはすごいですね、リソース喰い)

SimpleCapのいいところは、キャプチャした画像のすぐさまサイズ縮小できること。この機能が欲しかったので大満足。

こうやって少しずつOSX環境を整備していくのも楽しい。

XcodeでMacRuby・2日目

いや3日目はないかもしれないけど。なんせcocoaフレームワークを調べないといけないから初心者には大変。

本日は昨日のプロジェクトに以下のコードを追加した。

class Controller < NSWindowController
attr_accessor :textView
  def file_open(sender)
    dialog = NSOpenPanel.openPanel
    dialog.allowsMultipleSelection = false
    dialog.canChooseFiles = true
    if dialog.runModal == NSOKButton
      open_file_string = dialog.filename
    end
    textView.insertText open_file_string 
  end
end
file_openで「ファイルを開く」ダイアログを表示して、取得したファイルの名前をViewに挿入する、というだけなんだけど、時間がかかりましたよ。 しかも元ネタもちゃんとあって、MacRubyの本家サイトの「recipe」のひとつがまさにこのネタ。
Browse for folder or file dialog
ただこれは「フォルダ」を指定するタイプで、それをファイル指定に書き換えるのに時間がかかった。 dialog.runModalForTypesってのが元からあったらしいんだけど、ドキュメント読むと10.6では使うな、と書かれていて、runModalにたどり着いた、と。しかしこのままだとどんなファイルでも開いてしまうので、setAllowedfileTypesで
setAllowedfileTypes=["txt","rb"]
と書けばこの拡張子のファイルだけ開けるようになるはず・・・なんだけど全然働いていない。

setAllowedfileTypesでググってみたら、OpenPanelを直接呼び出す場合はsetAllowedfileTypesは無効らしい、とわかった。

この手のドタバタ迷走劇は新しい言語とかフレームワークを勉強している時によくあることで、それを楽しむくらいの気持ちがないととてもじゃないけどど素人はプログラミングの勉強なんてできません。理由がわかってすっきりできただけでもありがたや、でございます。

さて、XcodeでMacRuby、けっこう厳しいですね(^^;)。
  1. ブレークポイントは設置できない。Objective-Cのプロジェクトを作ってまで確認しましたよ。
  2. ソースの補完が意外とじゃま。Objective-Cの書式に補完してくれますからね。初心者には引数とかで参考になるからいいけど、慣れてきたらうるさいでしょう。って補完しないように設定できるか普通。
  3. 何か間違いがあっても何も言わずに(警告も出ずに)ビルドが無事終了する。期待通りの動きをしないことで、自分のミスがわかる。これはきつい。OpenPanelをOepnPanelとtypoしてもスルーですからねー。

とまあ、ちょっとクサしてはみたものの、もんのすごく楽しい経験であるのは確かです、MacRuby。1.0目指して開発中のプロジェクトだから、この先の完成度が高まることを期待して、私のようなエンドユーザは遊ばせてもらえばいいわけでしょう。

GUI付きの「アプリケーション」を作るだけでなく、AppleScriptの替りにあれこれおもしろいことができそうだ、という辺りも研究したい。

明日はダイアログから指定されたファイルを開いて、Viewに表示する、というところまで進みたいもんだ。どんなファイルでもテキストとして開いてしまう最強のツールができあがるぞ。わっはっは。

rubycocoa テンプレートの削除

OSXで、.pkgでインストールしたものは削除が難しい、という話。

実はrubycocoaもインストールしてあって、Xcodeの「新規プロジェクト」を選択すると、MacRubyのテンプレートと同時にrubycocoaのテンプレートも表示される。

同様に、プロジェクトにファイルを追加しようとすると、ruby関係のテンプレートが表示されるけどこれは全部rubycocoa関係。

それをわかってなくてControllerをつくるのにRuby Window Controller Templateとかを選択して、ビルドしたファイルが「ステータス1で終了」し続けてハマった。
ターミナルから直接実行ファイル(Win風にいえば.exeファイル)を実行してみて、そこで出たエラーからクラスの定義で「OSX::NSWindowController....」と「OSX::」が入っているのが原因と判明。

というわけでrubycocoaのテンプレート使わないようにすればいいんだけど、なんとなく使わない、使ってはいけないものが表示されるのも癪なのでアンインストールする方法を探す。

rubycocoaは.dmgからpkgでインストールする方法と、Portsからインストールする方法があるんだけど自分は初めからHomeBrewなのでdmgでインストールしたと思われる。で、「OSX pkg アンインストール」とかでググルといつものこのページに行き着いた。

OS X ハッキング! 123 パッケージの削除について考える

うーん、なんか面倒なことになるのか。DesInstaller 2.0.1というtoolも見つけたけど、「こいつはデンジャラス!!」って作者自ら言っているし。(^^;)(ちなみにインストールしてみたけど、何度起動しても固まるので10.6には対応してないとみた)

rubycocoaそのものは残っていてもいいから、ファイルとプロジェクトのテンプレートだけ削除できればいいや、ということであれこれ探して、結局

RubyによるMac OS Xデスクトップアプリケーション開発入門 ~Ruby×RubyCocoa/MacRuby×HotCocoa~
高尾 宏治
毎日コミュニケーションズ
売り上げランキング: 234700

この本の著者のblogに行き当たった、と。

Snow LeopardのXcodeにRubyCocoaのテンプレートをインストール

さっぱり覚えてないんだけど、きっとこのページを読んで自分でテンプレートをインストールしたと思われ・・・。なんだかな。

削除するファイルは
/Library/Application Support/Developer/Shared/Xcode/File Templates
/Library/Application Support/Developer/Shared/Xcode/Project Templates/Application
にありました。これを sudo してからFDcloneで削除、無事テンプレートが表示されなくなった、と。

全くマッチポンプな毎日だな。お、blogのタイトルはこっちのほうがいいかも。「マッチポンプな毎日」、かなりおやぢ感あふれているし。

2011年1月11日火曜日

スクリーンキャプチャ

blogにスクリーンキャプチャの画像を貼ると、たしかに見映えがするような気がするので、最近はできるだけ貼るようにしています。

キャプチャするtoolは、OSXデフォルトの「Shift+commond+4(+space)」か、dashboardの

screenshot plus

のどちらか。もっと使いやすくて素敵なtoolがたくさんあるらしいことは知っているんだけど、なかなか試せないでいます。

こういったtool群をさがそうとすると、Windows文化とMac文化の違いを感じることがよくあります。Windowsはユーザ数が多いだけに開発者もたくさんいて、その分フリーのアプリも多い。長年Windows使ってきて、シェアウェアで送金したのは「秀丸」くらいかなあ。市販のアプリも買いましたが。

その点Macはシェアウェア多いですね。マウスのホィールをデスクトップで回せばSpacesが切り替わる、なんて動作も、20ドルくらいのアプリを買えばおそらく実現できるみたいです。必要なtoolを探して、なければ自分で作る、作れなければ諦める、というスタンスでずっとパソコン生活を送ってきた(つもり)なので、なかなか送金する気になりません。(うーん、単にケチなだけ、という気もする)

Mac App Storeが順調に滑りだしていますが、このアプリのおかげで「ソフトのインストールの壁が低くなった」という論調があるのにいささか驚きました。そうなのか・・・。

WinでもUbuntuでも、アプリのインストールってやっぱりけっこう「大変」とか「難しい」とか「わかんない(理解拒否)」とか、あるかもなあ。

Winの場合は「CD(DVD)入れるだけ→あとは次へをクリックし続ける」だけ、ということが多い。Ubuntuは最近は「ソフトウェアセンター」でワンクリックか。

なるほどOSXだと.dmgをマウントして、という動作が入る分複雑になるのかしらん。マウントしたディスクイメージはアンマウントしないといけないしな。

Why? amazon Why?

XcodeでMacRubyをいぢってみる

本当にちょっといじってみただけです。

Developing Cocoa Applications Using MacRuby

このチュートリアルよりさらに手軽っぽいチュートリアルを見つけたのでそっちを試したみた。

Creating our very first Mac application with Ruby, how exciting!

アムステルダムのPhusion.ちゅー会社のblogらしい。本当にこのページにあったとおり、ウィンドウにLabelとButtonはりつけただけのプロジェクトを作って実際に動かしてみました。感動して雷に打たれたのが次の2点。

1,Xcode側で書いたControllerのクラスを、InterfaceBuilder側で「NSObject」として視覚的に挿入してインスタンス化すること

これにはびっくりこきました。(びっくりこく、は北海道弁でしょうか)挿入する、といってもNSObjectのアイコンをInterfaceBuilderのウィンドウにD&Dして、クラスの名前をXcode側のControllerのクラス名にするだけ、なのですが。「え?これでいいの?」という感じ。

2,InterfaceBuilder側の部品(・・・というのかな、LibraryからD&Dするパーツ群)に名前をつけず、Controller側で「attr_accessor」とかで準備した名前と「結びつける」だけでいい。

これも強烈にびっくりでした。右ボタンドラッグで結びつけるだけ部品の名前が勝手に「:my_label」とかになっちゃう。

さらに部品がわから右ボタンドラッグしたら、こんどはController側のイベントとその部品が結びつく、というあたり。

とりあえずこういうインターフェイスは初めてでした。あんまりびっくりして、かつ天啓のように理解できたので、自分でも簡単なプロジェクトを作ってみました。

1,InterfaceBuilder側で、ウィンドウにNSTextViewを貼り付ける。
2,Controllerはこれだけ。

class Controller < NSWindowController
attr_accessor :textView
  def file_open(sender)
    textView.insertText "MacRuby"
  end
end
本当にこれだけ(^^;)。 3,InterfaceBuilderでControllerをD&Dして、Class名をそろえて、TextViewにむけて右ドラッグ。これでTextViewが「textView」という名前と結びついて、Controller側から操作できるようになる。 4,で、今度はメインメニューの「File→Open」からControllerに右ドラッグ。
そうすると「def file_opne(sender)」と対応するようになる、と。 これで実行すると、「file→Open」を実行するたびに、TextViewに「MacRuby」と文字列が挿入されていく。

ふむふむ、無茶苦茶おもしろいじゃないのよ。明日ももう少し遊ぼう。今度はファイルを開くダイアログでファイルを開いて表示、というあたりかな。

こうな感じで遊んでいるので、なかなかrspecの勉強が進まないorz。

2011年1月10日月曜日

KeyRemap4mac

わかった、今日もうひとつ書こうと思っていたのはこのツールだ。

KeyRemap4mac

サイコー!!Winだとキーバインドを変更するツールが、ちょいとググれば2,3個すぐに探せるわけですが、OSXだとキーワードが悪いのかなかなか自分が必要とするツールまでまだ行き着けないことが多いみたいです。

本日、KeyRemap4macと出会えて狂喜乱舞。こんな強烈なツールがあることをどうして誰も私に教えてくれなかったんだ・・・・・。

やりたかったことは2つ。

1,日本語IMのON/OFFをワンキーでトグル入力したかった。
2,Spacesの切替を、マウスのホイールをデスクトップ上で回すことでできるようにしたい。

1はKeyRemap4macで完璧にできるようになりました。すごいなこのツール。右⌘を「かな/英数」のトグル入力にできるようになるなんて・・・。今ままでの「入力しづらさ」はなんだったんだ。

うーん、探せばまだまだ便利なツールがごろごろありそうだなOSX。

TLで

私のTLでも、一時的に次のようなつぶやきがあふれました。


コピペはできるんだけど、自分では入力できない・・・。誰が考えるんだろうなあ、こういうの。

InterfaceBuilderから考えたこと

Xcodeを触るということはInterfaceBuilderも触ります。(InterfaceBuilder使わないで作る、というお作法がけっこうあるみたいなんですが、そこまで調べていない。)
微妙につかいづらいよな、と思いながら眺めている、が正直なところかな。なぜわざわざctrl押しながらドラッグ?とか。

この辺はやっぱりDelphi最高、と今でも思う。初心者向けRADツールとしてDelphiほど理解しやすいツールはちょっとなかったのでは。

などと考えながら、でもオレはいまもしかしたら本当にInterfaceBuilder使ってるんだ、と非常に驚きました。だって、NextStepの時からの伝統的な開発ツールですもんね。ものすごく憧れたんですよねー。今から20年近く前、と書いてからあわててウィキペディアで調べたら22年前か。ともかくjobsが作ったワークステーションにはデフォルトで開発環境がついていて(ついでに百科事典もついていて)、買ったその日からばりばりプログラミングができる、とスーパーアスキーの創刊号に書かれてあった。(遠い目)

機能面に増して立方体の黒い筐体がかっこよかったなあ。とても個人で手を出せるような値段ではなかったので、本当に憧れた。手の届かないものへの憧れなので、強く胸の奥深くに残っているんでしょうな。OSXのMac miniを買ったときは喜び勇んですぐインストールしたけど、「これは歯が立たん!」で終了。今でも歯が立つとは思ってないけれど、それでも「あの憧れの」InterfaceBuilderを使っているのか、という感慨がある。

復活したjobsがappleにもたらしたもの、それがOSXであり、Xcodeであり、InterfaceBuilderなんですね。iPhoneアプリもiPadアプリも、多くのOSX用アプリも、全てNextStepが源流か。

ということは、jobsをappleから追いやったJ・スカリーも世の中に大功績を残したのかもしれません。

ここでそういえばMacで開発といえばCodeWarriorだったよな、と思い出してググッてみる。ア・ハー、やっぱり身売りしているか。Macだけでなく、Palmでもなかなか勢いのあるIDEだったんですが。おお、シマンテックもThink Cっていうのを出してたな。このまま回想モードが続くと、マイクロソフトのMicrosoft Multiplanの話に突入しそうだからそろそろやめよう。(^^;)

で、何か作れるようになればいいなー、Xcodeで。

Xcodeもいぢる

kodとかSkimとかをXcodeでビルドしているうちにXcodeに興味が出てきたのでちょっといじってしまった。とはいえ今さらObjective Cを覚えようという気はさらさらなくて、MacRubyで行ってみようかな、と。

でもCocoaフレームワークを使うってことでやはりそっちを勉強しないといけないわけで、これはきっと手に負えないだろうな、と弱気な姿勢で触っている。

MacRubyはさすがに日本語の資料が少ないから
Watsonのメモさん
とかを参照しながら、あとはあきらめて英文をよむようにしている。

そんなんでこの3連休はあちこちのサイトをあれこれ見て回って終わった感じ。

お休みだと「時間があるぞ!」と思ってしまって、なんか余計なことばっかりしてしまうなあ。集中力ないからな。

これから
Developing Cocoa Applications Using MacRuby
をぽちぽち試していこうか、というところ。このチュートリアル、Xcodeの環境設定から、Xcodeのヘルプに取り込めることを知って驚愕。

macirbを起動して入力してみたりしてますが、チュートリアル中、

こう書いてあるんだけど、手元のMacRuby0.8だとこうなる。

うーん、MacRubyの内部でなにかが変わったのか・・・。ちゃんとドキュメント読め、ですな。

2011年1月9日日曜日

オンラインソフト大賞

下のアーティクルで触れた「フリーソフトウェア大賞」は97年以降は「オンラインソフト大賞」に名称がかわったようで、あまりの懐かしさに毎年の受賞一覧を眺めていたところ、97年にはRubyが「入賞」してました。

Matzさんのコメントは
Rubyのような開発ツール,しかもWindows等でも動くとはいえUNIX由来のものがOSP'97入選を受賞させていただけたことは大変光栄なことだと考えています。これもRubyを支えて下さったみなさんのおかげです。今後は世界的に通用するツールとなり,日本からの世界への貢献の一環になれるように精進したいと思います。

そういえばこのころ、書店てのパソコン書籍の棚に「256倍〜」シリーズがずいぶん並んでいたような気がするなあ。同記事中の「Rubyホームページ」をクリックしたら、しっかり本家サイトにジャンプしたのには感動した。

同じ年に受賞したソフトの中で、今だにサバイブしているのは「Tera Term Pro 〜寺西 高氏〜」だけでしょうか。これもすごいことですね。

黒画面のファイラ・mc

FDcloneの他に、ターミナル上でよく「使っていた」(過去形ね)ファイラに「mc」があります。

GNU Midnight Commander


いやなんというか、こっちのほうがずっとメジャーなんでしょうけど、fdcloneより。

現行のバージョン4.7.5。最近も更新されているのか調べてみたら、次のマイルストーン4.8.0に向かって粛々と開発が進んでいるようですね。すごいなあ。息が長いですよねー。


典型的な実行中の画面です。HomeBrewでインストールできました。
OSXだとファンクションキーの入力が「fn+ファンクションキー」でないと効かないようなので若干不自由。

削除したファイルを復活するには

上の記事によればファイル復活なんて技もできるようです。私の不確かな記憶によれば、当時DOS上ではノートン博士(もちろんあのノートン博士、アンチウイルスの)がリリースした「ノートンコマンダー」というファイラがあり、そのGNU版だったような。いやちがったかな。

98DOS上も2画面のファイラがずいぶんあって、私は「FS」を使っていました。作者はNamazuだんでしたかね。同様のソフトに「Mirin'sファイラ」とか、FDっぽいファイラなら「HF」とか「FILMTN」があって、人気のあるジャンルでしたなあ。中でも「HF」は「40歳過ぎてからアセンブラによるプログラミングに挑戦した成果」ということで雑誌記事にもなってました。すげえな、40過ぎてからかい、とその当時は思ったわけですが、そんな自分もまもなく50。ゆく河の流れは絶えずして、であります。

これらのファイラには専用のテキストビューワやアーカイブユーティリティを開発する人たちがいて、本体とplugin、という図式は現在とそんなに変わりませんな。

思えばこのころ、「ファイル名が短いと起動時間が速い」という都市伝説があって、どのソフトもだいたい2文字ですね。いまやBecky! Internet Mailの開発者さんとして有名な乗松知博氏が、当時開発していたエディタのファイル名は「f」一文字でした。これが「fey」になり「Dana」になっていくわけですが・・・ってこの話前にもどっかに書いたな。

最後にこんなページへのリンクを。

第1回フリーソフトウェア大賞 受賞作品

1992年ですか。このリストをみて「なつかしー」と思った人は私ときっと同年代。ishか・・・あったなあ。

最後の画像はgoogleで「mc」だけで検索した結果の一部。

Skim日本語化

SkimのUIを日本語化するファイルを作者さんに送って、微修正をして、という作業を何度か行って一応終了。きっともうすぐ日本語リソースを入れてSkimの新しいバージョンがリリースされるでしょう。

あんまり喜べないのは、

1,subversionで作業したことないので、ファイルのupなどを作者さんにやってもらっている。なんか自分としては力量不足で欲求不満。svnの使い方も勉強したけど、「こんなやり方でいいの?」と英文メールを書くのが面倒。で、作者さんに丸投げ状態が続いている。(いちおうsf.netのアカウントもとってあるんですけどね。作業もAppleGlotでやるようにしたし)

2,訳に自信がない。Macのお作法、文化にまだよく馴染んでないだけに、これは当然この用語だろ、ということがきっとあるはず。あと、英語文化(フォントの表現とかね)とかPDF用語とか。

でも最近はアクティブ思考することにしているので、2つとも努力すれば絶対解決できる、と思っております。svnは間違った作業をしても日本語リソース以外は汚さないだろうと思います。だからそのうちコミットさせて、とお願いしてみようと思ってます。

訳も、変なところは直せばいいだけ。

少しだけオープンソースのプロジェクトに貢献できたことを喜ぼう。

2011年1月8日土曜日

黒い画面の味方・FDclone

正式なソフト名はFDcloneなんですが、ファイル名はfdcloneなので主にそっちで表記します。

PC98DOS上で一世を風靡したファイラFDの*nixクローン、ということになっています。作者は白井隆氏、どこの大学の先生でしたっけ。

作者によるアプリの紹介は

FDclone は、 1989年に A.Idei 氏の手によって MS-DOS 用に作成された『FD』を模した、 UNIX ベースの OS (以下便宜上単に "UNIX" と呼ぶ) 汎用のファイル & ディレクトリ管理ツールです。仕様部分に関しては、できるだけオリジナルの『FD』に近付けるようにしましたが、インプリメントに関しては全くのオリジナル作品です。

となっています。
基本的に←→↑↓キー、リターンキー、スペースキー、それといくつかのコマンドをワンキー入力でできるのでとっても楽です。


デフォルトではファイル表示のソートや、色付け表示はしてくれないので、「Shift+e」を入力してカスタマイズ画面に入ります。


これも画面表示を日本語にしたいときは、下矢印でどんどんスクロールさせて「Language」を見つけてUTF-8にすれば日本語になります。私の場合は「ソート→名前順」、「ANSICOLOR→背景を黒」、「EDITOR→joe」、「VIEWER→lv」くらいですかね、オプションいじるの。長年使っている割にカスタマイズ足りないな。明日あたりの課題ということで。

カスタマイズが終わったら、それを.fd2rcに保存しておかないと次回起動時にまた元に戻ってしまいます。


この画面でSAVEまたはOVERWRITEすれば設定が保存されてハッピーです。

ワンキーコマンドは、
  • c・・・ファイルのコピー
  • m・・・ファイルの移動
  • a・・・属性変更
  • リターンキー・・・選択ファイルを渡してviewer起動。デフォルトではmoreかな。
  • x・・・実行ファイルを実行
  • u・・・アンパック。アーカイブを展開。
  • p・・・パック。ファイルをアーカイブに。
  • e・・・ファイルをeditorで編集
  • l・・・ディレクトリの変更
  • k・・・mkdir。デフォルトを作る。
  • shift+d・・・ディレクトリを削除
  • d・・・ファイルを削除
  • r・・・リネーム
fdのすごいところは、ワンキーコマンドを入力したあとに開く、最下行の模擬シェルがbash互換、というところ。とうぜんTABで入力補完が効くし、↑で履歴をたどれます。

この辺の軽快さをスクリーンキャストで、と思ったんですが、せっかく録画したものがアップロードに失敗して消えてしまったので今日はここまで。

せっかくなのでformulaを作る

どーしてオレのやることはこう、間が悪くてカッコ悪いんだろう、と落ち込んでばかりもいられない。一生懸命コマンドのまとめを作る過程で、かなりHomeBrewの知識がついた(と思う)。HomeBrewはまだオプションやコマンドが少ないほうなので、なんとかど素人でもman見ながらコマンドを調べることができる。

自分はいつも中途半端な知識ばかりで手早くなんでもやろうとし過ぎるので、今回のようにひとつのtoolについて長い時間かけてまとめたりするのはとてもいい経験だった。また挑戦してみようっと。

それはともかく、せっかくなのでformulaをひとつ作ってHomeBrewの勉強の終りとしたい。
ちょうどいいお題をみつけた。それはFDclone

PC98DOS上で、お世話にならなかった人がいない、というくらいメジャーなファイラです。私は今だにコンソール上のファイル操作はほとんどfdclone使ってます。特にOSXはデフォルトで隠しファイル(先頭に.がつくファイルやフォルダ)を表示できないし、デフォルトいじって表示させるとデスクトップにもなんだか余計なファイルが表示されて気持ちが悪い。その点fdcloneなら・・・っていうのは次のアーティクルで触れることにして、とりあえずformula。

fdcloneのファイル置き場はここ。
http://hp.vector.co.jp/authors/VA012337/soft/fd/FD-3.00j.tar.gz
そこでターミナル上で次のコマンドを入力すると・・・
brew create http://hp.vector.co.jp/authors/VA012337/soft/fd/FD-3.00j.tar.gz

formula name [FD-3.00j]: fdclone
Warning: Version cannot be determined from URL.
You'll need to add an explicit 'version' to the formula.
とターミナルで警告が出て、一方エディタが起動されて次のような画面になります。

うわー、うちの$EDITORはTextWranglerだったのか・・。知らなかった(^^;)。
ここで入力しないければいけないのは「homepage」が必須、md5はソースのtarボールを落とすときに取得するので後でOK、versionは自動で取得できなかったようなので自分で書き入れる、と。def installは./configureがいらないのでその辺を削除。

入力したformulaはこうなる。
require 'formula'

class Fdclone <Formula
  url 'http://hp.vector.co.jp/authors/VA012337/soft/fd/FD-3.00j.tar.gz'
  homepage 'http://hp.vector.co.jp/authors/VA012337/soft/fd/'
  md5 ''
  version '3.00j'
  # depends_on 'cmake'

  def install
    system "make install"
  end
end
すみません、class Fdclone <Formulaの「<」は全角にしてます。そうしないとbloggerが怒るので。
そしてソースを落としてmd5を取得。
brew fetch fdclone
==> Downloading http://hp.vector.co.jp/authors/VA012337/soft/fd/FD-3.00j.tar.gz
######################################################################## 100.0%
MD5: 9e12c8a1480cc5f535bf6df852a0defc
SHA1: 4cf6ce007ee62fba7166cb405122b2da7277dca3

Warning: Formula reports different MD5:
へいへい、formulaとmd5がちがう、と怒っているので、ここで表示されたmd5をさっきのformulaに入力してformula完成。
require 'formula'

class Fdclone <Formula
  url 'http://hp.vector.co.jp/authors/VA012337/soft/fd/FD-3.00j.tar.gz'
  homepage 'http://hp.vector.co.jp/authors/VA012337/soft/fd/'
  md5 '9e12c8a1480cc5f535bf6df852a0defc'
  version '3.00j'
  # depends_on 'cmake'

  def install
    system "make install"
  end
end
これで
brew install fdclone

と入力すれば、あっという間にインストールされます。もともとfdcloneは野良ビルドするときもmake一発でできる、ということをしっていたので(む、ncursesは必要です。osxはデフォルトで入ってます)ほとんどずるしているようなもんですが、素人でもformulaが作成できる。これ重要。

というわけでHomeBrewの勉強はいったん終了して、インストールできるformulaを眺めていろいろやってみよう。Qtとかも出来るんだなあ。

FFTT : Homebrew のご紹介

FFTT : Homebrew のご紹介

こんな素敵なページがあるなら、わざわざ自分で作るんじゃなかったorz。

大いにへこむ。

Homebrew コマンドのまとめ

kodをビルドしようとして、
brew install source-highlight
ができなかったため、急遽brewについて調べてわかったことのまとめです。

インストールできなかった理由は単にbrewが古い状態のままだったから、です。こういうときは

brew update
とすればbrew本体とインストールできるformulaをアップデートできます。
以下、
man brew
の簡単な抜粋自分用。

[option]


-v --verbose

brew -v command [formula]
様々な情報を全部出力する。例えば
brew -v install gnu-time
とすると
Homebrew 0.7.1
==> Build Environment
CC: /usr/bin/cc => /usr/bin/gcc-4.2
CXX: /usr/bin/c++ => /usr/bin/c++-4.2
LD: /usr/bin/cc => /usr/bin/gcc-4.2
CFLAGS: -O3 -march=core2 -msse4 -w -pipe
CXXFLAGS: -O3 -march=core2 -msse4 -w -pipe
MAKEFLAGS: -j4
==> Downloading http://ftp.gnu.org/gnu/time/time-1.7.tar.gz
File already downloaded and cached to /Users/ishizakitetsu/Library/Caches/Homebrew
/usr/bin/tar xf /Users/ishizakitetsu/Library/Caches/Homebrew/gnu-time-1.7.tar.gz
==> ./configure --program-prefix=g --prefix=/usr/local/Cellar/gnu-time/1.7 --mandir=/usr/local/Cellar/gnu-time/1.7/share/man
./configure --program-prefix=g --prefix=/usr/local/Cellar/gnu-time/1.7 --mandir=/usr/local/Cellar/gnu-time/1.7/share/man
creating cache ./config.cache
checking for gcc... /usr/bin/cc
checking whether we are using GNU C... yes
checking how to run the C preprocessor... /usr/bin/cc -E
checking for a BSD compatible install... /usr/bin/install -c
checking whether cross-compiling... no
checking for ANSI C header files... yes
checking for sys/wait.h that is POSIX.1 compatible... yes
checking for unistd.h... yes
てな感じでビルド中の出力が全部表示される。普通は
==> Downloading http://ftp.gnu.org/gnu/sed/sed-4.2.1.tar.bz2
######################################################################## 100.0%
==> ./configure --prefix=/usr/local/Cellar/gnu-sed/4.2.1 --disable-dependency-tracking --progr
==> make install
/usr/local/Cellar/gnu-sed/4.2.1: 8 files, 452K, built in 15 seconds
これだけです。
ただし
brew -v
だけならbrewのバージョンが表示されるだけ。

[command]

install

  • --force   上書きでインストール。
  • --debug  ビルドに失敗したらコンパイル中のフォルダをターミナルで開く。
  • --use-llvm  LLVMを適用してビルド。LLVMについてはこちらで。
  • --ignore-dependencies 全ての依存関係を無視してビルド。依存関係のあるformulaがインストールされていないときは必然的に失敗します。
  • --HEAD master, trunk, unstable, dev、いずれかのブランチを使ってHEAD版をビルド。便利ですな。もちろんftpとかでソースを落としてくるformulaでは無効です。

install --interactive [--git] formula
普通のinstallと違って、ソースをダウンロードし終わったところでターミナルが開く。主に
./configure --help
用とmanには書いてありますな。--gitをつけるとパッチを作るためのgitリポジトリを作ってくれるそうな。

-S, search text|/text/
検索。textで与えられた文字列でformulaを探す。スラッシュ「/」で囲めば正規表現で検索できる。文字列が何もなかったら現在インストールできるformulaを全部出力。

-S --macports|--fink text
-Sに--macportsか--finkつけると、MacPortsかFinkのパッケージ検索ページで文字列を検索。
brew -S --fink gedit
と入力したところ、ブラウザが開いてこのページが表示されました。「ちくしょー、Finkならあるのか?」というとき用ですかね。

update
GitHubからHOmeBrewの新しいバーッジョンを取得します。ソースの「homebrew / Library / Formula」内に現在インストールできるformulaファイルがあるので、当然新しいformulaもインストールできるようになる、と。

list
インストール済みのformula一覧を表示。
list formula
formulaのインストール済みファイルの一覧。
brew list joe
/usr/local/Cellar/joe/3.7/bin/termidx
/usr/local/Cellar/joe/3.7/bin/rjoe
/usr/local/Cellar/joe/3.7/bin/jstar
/usr/local/Cellar/joe/3.7/bin/jpico
/usr/local/Cellar/joe/3.7/bin/joe
/usr/local/Cellar/joe/3.7/bin/jmacs
/usr/local/Cellar/joe/3.7/etc/joe/ (7 files)
/usr/local/Cellar/joe/3.7/share/doc/ (6 files)
/usr/local/Cellar/joe/3.7/share/joe/ (48 files)
/usr/local/Cellar/joe/3.7/share/man/ (2 files)

info formula
brew info joe
joe 3.7
http://joe-editor.sourceforge.net/index.html
/usr/local/Cellar/joe/3.7 (68 files, 1.6M)
http://github.com/mxcl/homebrew/commits/master/Library/Formula/joe.rb

ちなみにjoeはDOSライクなコマンドラインエディタでありまして、zau使ってるときからのお気に入り。

info --github formula
formulaのgithubのHistoryページをブラウザで表示させる。formulaとしてのヒストリなんで、例えばjoeならこのページにとぶ。これをローカルで表示させるのが
brew log -p [formula]

joeだとこうなる。
brew log -p joe
commit c2dd245ee04ca662a6ba2752e2bf4b0c39c1068c
Author: Mike Arthur 
Date:   Thu Nov 12 14:09:19 2009 +0100

    Be nicer to Sourceforge by using their gateway server
    
    Thus we download from the best mirror always.

diff --git a/Library/Formula/joe.rb b/Library/Formula/joe.rb
index 9513d02..36cc102 100644
--- a/Library/Formula/joe.rb
+++ b/Library/Formula/joe.rb
@@ -1,7 +1,7 @@
 require 'formula'
 
 class Joe Formula
-  url 'http://dfn.dl.sourceforge.net/project/joe-editor/JOE%20sources/joe-3.7/joe-3.7.tar.gz'
+  url 'http://downloads.sourceforge.net/project/joe-editor/JOE%20sources/joe-3.7/joe-3.7.tar.gz'
   homepage 'http://joe-editor.sourceforge.net/index.html'
   md5 '66de1b073e869ba12abbfcde3885c577'
 

commit 085802a59b2804390cd6047fcec7e43572fe0198
Author: Julian Stahnke 
Date:   Thu Oct 29 18:54:34 2009 +0100

    JOE formula
    
    JOE (Joe's Own Editor) is a very basic text editor

diff --git a/Library/Formula/joe.rb b/Library/Formula/joe.rb
new file mode 100644
index 0000000..9513d02
--- /dev/null
+++ b/Library/Formula/joe.rb
@@ -0,0 +1,12 @@
+require 'formula'
+
+class Joe Formula
+  url 'http://dfn.dl.sourceforge.net/project/joe-editor/JOE%20sources/joe-3.7/joe-3.7.tar.gz'
+  homepage 'http://joe-editor.sourceforge.net/index.html'
+  md5 '66de1b073e869ba12abbfcde3885c577'
+
+  def install
+    system "./configure", "--prefix=#{prefix}"
+    system "make install"

info URL
URL先のページの名前を返す。何のためにあるんだろ。(^^;)

home
HomeBrewのホームページを表示する。

home formula
formulaのホームページを表示する。

rm, remove, uninstall [--force] formula
formulaのアンインストール。
--forceオプションで、インストールされている全部のバージョンを削除する。便利だな。

create [--cache] URL
URLでダウンロード可能なファイルを落としてきて、自動でformulaの名前とバージョンを決めて、formulaを$EDITORで開く。これは試してないんで実際にどうなるかはわかりません。--cacheをつけるとURLのファイルを落としてきてMD5を作ってくれる、と。URL上にダウンロード可能なファイルをごろん、と置いてあるプロジェクト、ということかな。

edit formula
formulaファイルを$EDITORで開く。

edit
TextMateで全部のformulaを開く、のかな?TextMateをアンインストールしているうちの環境では
Error: No such file or directory - mate
で終了(^^;)。

ln, link formula
全部のインストール済みformulaに、HomeBrewのprefixでSymLinkを貼る。brew install [formula]とやると自動で作られるので、自分でインストールした(野良ビルドとか?)もの用、だそうですがよくわかんない。

unlink formula
linkの反対。一時的にformulaのアプリを使えなくするために使え、ということで。

prune
すでに存在していないSymLinkを取り除く。基本的に使わないでいいそうです。

deps [--1] formula
依存関係を表示する。--1つけると依存関係を1レベルだけ表示する。formulaをビルドするのに必要なformula、そのformulaをビルドするのに必要な・・・という意味でのレベルですね。

uses [--installed] formula
そのformulaに依存しているformulaをリストして表示する。--installedをつけると自分の環境にインストールしてあるformulaだけ表示。

doctor
君のシステムに問題がないか調べよう。ちなみにうちの環境だと
/usr/bin is in your PATH before Homebrew's bin. This means that system-
provided programs will be used before Homebrew-provided ones. This is an
issue if you install, for instance, Python.

Consider editing your .bashrc to put:
  /usr/local/bin
ahead of /usr/bin in your $PATH.

Some brews install binaries to sbin instead of bin, but Homebrew's
sbin was not found in your path.

Consider editing your .bashrc to add:
  /usr/local/sbin
to $PATH.
へいへい、すぐに修正しますだ。

cat formula
formulaファイルの内容を表示します。

log [git-log-options] formula ...
formulaのgit-logを表示します。logに対するオプションはgit-logを参照せよ、と。

fetch [--force] [-v] [--HEAD] formula
formulaのソースをtarボールで取得。--HEADでHEADバージョンを可能なら取得。-vつけるとチェックアウトの出力を見られる。--forceつけるとすでに取得済みのファイルを削除して新しくダウンロードしてくる。

audit [--warn]
formulaがHomeBrewのcodingスタイルに適合しているかチェック。主に新しいformula用。--warnつけると厳しいチェックをさらにする。

options formula
formulaのインストールオプションを表示。

missing
インストールされているformulaの依存関係をチェックしてくれる。

server
sinatraがインストールされていたらgem serverのように振舞い、利用可能なformulaをブラウズできる、とあるんですが私の環境ではrvmのrubyがちゃんと起動されてないようで、確認できませんでした。doctorの言うとおりなのかな。

test formula
formulaによってはtestコードをもっているのでそれを実行出来る。

man
manページの再構築。詳しくはman brew-manを参照する。

--config
HomeBrew関係の環境を表示。bugレポートするならいっしょに送れということです。

--prefix
インストールされているpathを表示。

--prefix formula
formulaのインストールpathを表示。

--cellar
Cellarのpathを表示。内部の実インストールディレクトリと言っていいでしょうか。

--cellar formula
formulaの実インストールpathを表示。

--cache
ダウンロードファイルの保存pathを表示。

--cache formula
formulaのダウンロードファイル、またはフォルダを表示。

--repository
brewの.gitリポジトリのpathを表示。

こんなところでしょうか。けっこう長いもんですね。休日だから気分的に余裕があったのでなんとなく書き始めたけど、なんかすごく時間がかかってしまった。(^^;)

2011年1月7日金曜日

生まれて初めて(^^;)スクリーンキャストちゅーものをやってみた

kodネタの最後はスクリーンキャストですね。

Ubuntu上でやってみようと試みたことはあるんですが、結果として「マシンパワーが足りないからできない」ということであきらめました。おそらくビデオカードの関係でうまくいかなかったと記憶する。

しかし世の中はどんどん進むもので、最近ではWebサービスでスクリーンキャストができるんですね。

ウェブサービスレビュー]デスクトップ上の特定領域を録画できる「Screencast-O-Matic」

この記事をブックマークしておいてよかった。kodのスクリーンキャストはScreencast-O-Maticでやってみました。レジストして、「Start Recoding」リンクをクリックするだけでした。youtubeにupするのにyoutubeのIDが必要で、自分のログイン名思い出せるか不安ででしたが(^^;)ブラウザが覚えてくれていたみたい。

マウスカーソルの動きってちゃんとあらかじめ決めておかないと、うろうろしてカッコ悪いものですな。いい勉強になった。

kodその2

kodのソースはgithubにあるということなので覗いてみる。
けっこう盛んに更新されていて、最近ではcucumberのハイライティングにも対応したみたい。安定版のバージョンが0.2.0、現在は0.3.0が進行中。Xcodeのプロジェクトということで、さっそくソースをcoじゃなくてcloneする。
git clone --recursive https://github.com/rsms/kod.git
ソースが無事cloneされたら、ビルドの前にいくつか作業があります。
deps/node-build.sh
deps/libcss/build.sh
この二つのスクリプトを実行せよ、と。nodeのほうは7分ほどかかりました。iMacは速いハードなのでけっこう重たい処理だったようです。それから
brew install source-highlight
これでGNU source-highlightというライブラリがインストールされます。それをkodのプロジェクトから使えるようにするため以下を実行。
deps/srchilight/import-from-homebrew.sh
これでやっとXcode上のビルドができるようになりました。

最新版のkodができたところで、最近勉強したローカライズもやってみる。これについてはあちこちのサイトを参照した、と書くにとどめましょう。kodは「ローカライズできるようにコードは書かれているけれど、まだローカライズの作業には手をつけていない」状態の、私のような初学者にはおいしいプロジェクトです。あちこちのサイトに書かれてあるとおりにリソースを日本語化する実験にちょうどいい学習材料でした。

Interface Builderからローカライズをする、という経験を初めてしました。自動的にJapanese.lprojが出来上がる様子にいたく感動いたしました。(^^;)

ちょっといたずらした成果がこれ。

こんなんで自由時間は終了。こんなことばっかりふらふらやっているから、なかなかプログラミングの勉強が進まないんだけど、こういうふらふら作業が楽しいんだよな、と開き直るおやぢでございました。