アシアルブログ

アシアルの中の人が技術と想いのたけをつづるブログです

TextMateで全角スペースと半角スペースの区別ができるようにする

こんにちは。先日、我慢しきれずに、MacBookを購入してしまった橋本です。
開発環境がMacになったということで、最近はTextMateを使って開発をしているのですが、
TextMateを使ってコーディングをしていると、ぱっと見問題なさそうなコードなのにバグが出て、調べてみると全角スペースが隠れていたということがよくあります。
TextMateは元々マルチバイト文字に対応していないため、日本語を無理やりまともな形で表示させると、全角スペースと半角スペースが等幅で表示されてしまい、一見半角なのか全角なのか判断がつきません。
そこで、今回はTextMateで全角スペースと半角スペースを見分けるために、全角スペースをハイライト表示するという設定を紹介します。

設定は以下の手順で行います。
(今回はHTMLファイルで表示させるための設定を例にすすめます。)
1.TextMateのメニューから、「Bundles」の中の「Bundle Editor」の中の「Edit Languages」を選択。

2.左のメニューでHTMLを選択。


3.以下の場所に次のコードを挿入


whitespace-multi = {
	patterns = (
		{	name = 'invalid.whitespace-multi';
			match = '( )';
		},
	);
};




4.以下の場所に次のコードを挿入


{ include = '#whitespace-multi'; },



↓ここに挿入することで、PHPタグ内でもハイライト表示がされるようになります。



5.TextMateのメニューから「Preferences」の「Fonts & Colors」を選択。
6.「+」アイコンをクリックしてElementを追加し、以下のとおり設定する。
Element名: whitespace-multi(ここは他の名前でも大丈夫です)
Scope Selecter: invalid.whitespace-multi(ここはこのとおり入力してください)
背景色(BG): 目立つ色(ここも自由です)



設定は以上です。
上記の設定を行うと、全角スペースが以下のように表示されます。


これで、全角スペースが入っている場合にはハイライト表示されるため、全角スペースの消し忘れに悩まされることもなくなります。

TextMate愛好家の皆様、TextMate2.0が出るまでは上記の方法でなんとか乗り切りましょう!

JavaScriptフレームワーク「SproutCore」を触ってみよう

先日待望のiPhone 3Gが発売され、欲しいなぁと思いつつもまだ手に入れていない熊谷です。こんにちは。

ちなみにアップルではこのiPhone 3Gと同時にMobileMeというサービスが始まりました。メールやカレンダー、アドレス帳といったものをiPhone/iPod touchMacWindowsで同期するサービスで、有料なものではあるのですがiPhoneユーザにとっては便利なサービスだそうです。iPhoneは手に入れてませんが、このMobileMeのアカウントはあるので早速使ってみました。ブラウザでサイトにアクセスしログインすると、Macで使用しているMail.appといったアプリケーションと同じような画面が表示され同じような操作で使うこと出来ます。デザイン等々さすがアップルという感じです。

で、そのMobileMeではJavaScriptフレームワークSproutCore」というものを利用し一部機能を作っているそうなんですが、どんなものなのか興味がわいてきたので早速触ってみることにしました。

このフレームワークのインストールは簡単で、



$ sudo gem install sproutcore


というようにgemでインストールすることが出来ます。インストールが出来たら早速プロジェクトを作成します。



$ sproutcore example1


これでexample1というプロジェクトが出来ました。



$ cd example1
$ sc-server


このexample1のディレクトリに移動しsc-serverとコマンドを打つと http://localhost:4020/example1 でアクセスすることが出来るようになります。


基本的に「SproutCore」のサイトにあるチュートリアルが良くできているのでその流れ通り触っていくとわかりやすいかもしれません。

では、早速いじってみましょう。作成したプロジェクトのclientsディレクトリの中をいじっていきます。

english.lproj/body.rhtmlがViewに当たるもので、englishということからわかるようにローカライズに対応しているそうです。今回はさわりということでこの辺はenglishで行います。

そんなことで、このbody.rhtmlに例えば、



<%= label_view :paragraph, :tag => 'p', :inner_html => 'hello!!' %>


と記述すると、

というようにhello!!という文字が表示されます。

では次にコントローラを作成してみます。コントローラは、



$ sc-gen controller example1/app


で作成することが出来ます。するとcontrollersディレクトリが生成されているのでその中にあるapp.jsをいじります。app.jsをみると



// ==========================================================================
// Example1.AppController
// ==========================================================================

require('core');

/** @class

  (Document Your View Here)

  @extends SC.Object
  @author AuthorName
  @version 0.1
  @static
*/
Example1.appController = SC.Object.create(
/** @scope Example1.appController */ {

  // TODO: Add your own code here.

}) ;

というようになっているので、そのTODO部分に以下のコードを追加します。


  // TODO: Add your own code here.
  message: 'Hello!!',
  clickButton: function() {
    var currentMessage = this.get('message');
    var newMessage = (currentMessage === 'Hello!!') ? 'Good Bye!' : 'Hello!!' ;
    this.set('message', newMessage);
  }


また、Viewである先ほどのbody.rhtmlに以下のコードを追加します。



<%= label_view :paragraph, :tag => 'p', :bind => { :value => 'Example1.appController.message' } %>
<%= button_view :toggle_button, :title => 'Change Message', :action => 'Example1.appController.clickButton' %>


以上の変更を加えてサーバを再起動しブラウザで表示すると、今度はボタンが表示されそのボタンをクリックするたびにメッセージが切り替わります。


以上、今回はチュートリアルと同じ内容ですがなかなか面白い感じで作成することが出来ます。ドキュメントを読むともっといろいろ触っていきたいと思える内容なので、ちょっと頑張ろうかなと思います。

Darwineを使ってOSXでWindowsアプリケーションを使う

さて、OSXて作業しているとごくごくたまにWindowsのアプリケーションを使いたくなったときとかありませんか?

私はWindowsから移行してきたということもあり、あの頃使っていたアプリケーションと同じようなものはないのかなと思うことがたまにあったりして、でも出来る限り同じようなものを探してはそれを使うようにしているのですが、どうしても同じようなものが見つけられないということがあります。

例えば、ER図を作成するDBDesigner4です。これと似たようなものはEclipseを使ったりすればClayとかあるわけなんですが、何だかんだいってやはりDBDesigner4のほうがいいなと思ったりします。しかし、DBDesigner4はWindowsLinux版しかないのでOSXではもちろん動作しません。

ということで、OSXWindowsアプリケーションを快適に使うにはどうしたらいいのでしょうか?

直ぐ思いつくのは、VMWare FusionParallels Desktopといった仮想化ソフトを使うという方法。仮想化ソフトは仮想化ソフトで素晴らしくていいのですが、私が使っているMacBook Airではメモリーを増設ということが出来ないのでいろんなアプリケーションを立ち上げながら使っているととてもつらい状況になってきます。そんなこともあり、どうしても必要なときだけ使うというのが私の使い方。

しかし、DBDesigner4のようなもの場合は他のアプリケーションと一緒に使いたいものなので、この方法だと色々我慢しながら使わなければなりません。で、そういうときに目にしたのが、マイコミジャーナルの「6月まで待てない! あの「Wine」を試飲する (1本目)」のコラムです。LinuxであればすぐさまWineがあるじゃん!となったのですが、OSXにもWineがあるとは。。

そんなことで、OSX版のWineであるDarwineをインストールしてみました。今回は手っ取り早く試してみたかったのでこちらからすでにビルドされたバイナリをダウンロードしてインストールしました。Wineを使うにはX11がないと使えないので前もってインストールしてある必要があります。

早速、


$ /Applications/Darwine/Wine.bundle/Contents/bin/wine DBDesigner4.exe

といった感じでコマンドを打つと、



見慣れたDBDesigner4が起動します。メニューをクリックしたときの反応やフォーカス云々が怪しいときがありますが、DBからのリバースエンジニアリングでのER図の生成も問題なく使えるし、素晴らしいですね!

ちなみに、設定した項目といえば、Wine環境でのレジストリである~/.wine/system.regにフォントの設定を記述しただけ、フォントを自分好みのものに変更してます。例えば以下のような感じで。


[Software\\Microsoft\\Windows NT\\CurrentVersion\\FontSubstitutes]
"MS Gothic"="M+2VM+IPAG circle"
"MS Shell Dlg"="M+2VM+IPAG circle"
"MS UI Gothic"="M+2VM+IPAG circle"


さらに、Darwineに付随しているTRiXというアプリケーションを使うとWindowsの各種欧米フォントやライブラリ等々をインストールすることが出来るので、足りないものがあればこれを使うと幸せになれるかもしれません。



日本語入力に関しては、X11上ではことえりATOKは現時点では使えません。Tigerであればkinput2.macimを使うことで可能になるのですがLeopardは対応していません。なので、Anthy+uimといったX11の日本語入力ソフトを使うとWineでも日本語入力できるようになります。

ちなみに、先のコラムの2本目では出来るようなことがかかれていたので試してみたのですが、やはり出来ませんでした。何か方法がある?もし知っている方がいらっしゃったら是非教えていただきたいです。

MacPortsで自前のPortsファイルを作って使ってみよう

前回はMacPortsの基本的なコマンドを紹介しました。このMacPortsを使うとOSX上でより良いUNIX生活を送ることができるわけですが、時折、コンパイルのオプションを変更したいとかパッチを当てたいとか、またまた、使いたいものがあるけどまだ誰もPortsファイルにしていない等々、何かしらの理由で非公式のPortsファイルが必要になったりすることがあります。そんなことで、今回は自前のPortsファイルを作成し使ってみようと思います。

まず、前準備としてそれ用のリポジトリを作成しなければなりません。ということで、早速作成します。場所はどこでもいいのですが、私の場合は /opt/local/var/ 以下に localports という名のディレクトリを作成しました。


$ sudo mkdir /opt/local/var/localports


次にsources.confにこのリポジトリを追加します。


$ sudo vi /opt/local/etc/macports/sources.conf

このファイルのできるかぎり始めの方に、file:///opt/local/var/localportsと記述しています。すると、以下のような感じになります。



# MacPorts system wide sources configuration file
# $Id: sources.conf 26177 2007-06-15 10:11:22Z jmpp@macports.org $
#
# To enable your local ports repository, uncomment and customize the
# following line to point at your local ports directory
# Example: file:///Users/landonf/misc/MacPorts/ports
file:///opt/local/var/localports
#
# To prevent a source from synchronizing when `port sync` is used,
# append [nosync] to the end of the line
# Example: file:///Users/landonf/misc/MacPorts/dports [nosync]
#
# To get the ports tree from the MacPorts rsync.macports.org server use:
# rsync://rsync.macports.org/release/ports/
rsync://rsync.macports.org/release/ports/


で、あとはこのリポジトリ内に指定されたカテゴリ名のディレクトリを作成しそこに自前のPortsファイルを設置して準備完了となります。ちなみカテゴリ名って何?という感じだと思うのですか、この辺はMacPortsで用意されているリポジトリを参考にするとわかりやすいです。/opt/local/var/macports/sources/rsync.macports.org/release/ports以下にrsyncで取得されたPortsファイルらがあります。

例えば、私的に開発する上で欠かすことのできない screen は sysutils というカテゴリにあります。


$ cd /opt/local/var/macports/sources/rsync.macports.org/release/ports
$ cd sysutils/screen
$ ls -la


すると以下のように表示されます。

ここにあるPortfileというものが目的のものです。このファイルを開いてもらうとなにやらいろいろ記述されています。これがPortsファイルです。この内容に従ってサイトからファイルをダウンロードしてconfigureをしてビルドしてインストールするわけです。よってこれを変更したり、参考にして作れば自前のPortsファイルを作ることができるようになります。

では、早速これを参考にCVS版のscreenのPortsファイルを作成してみましょう。


$ sudo mkdir /opt/local/var/localports/sysutils
$ sudo cp -R /opt/local/var/macports/sources/rsync.macports.org/release/ports/sysutils/screen /opt/local/var/localports/sysutils
$ cd /opt/local/var/localports/sysutils/screen

以上のようにしてオリジナルのscreenのPortsファイルを先ほど作成したリポジトリにコピーします。そしてPortfileを編集します。



PortSystem 1.0

name            screen
version         4.0.3.cvs
homepage        http://www.gnu.org/software/screen/
description     Screen manager with VT100/ANSI terminal emulation
long_description    Screen is a full-screen window manager that multiplexes a physical \
            terminal between several processes (typically interactive shells). \
            Each virtual terminal provides the functions of a DEC VT100 terminal \
            and, in addition, several control functions from the ANSI X3.64 (ISO \
            6429) and ISO 2022 standards (e.g. insert/delete line and support for \
            multiple character sets). There is a scrollback history buffer for each \
            virtual terminal and a copy-and-paste mechanism that allows moving text \
            regions between windows.
categories      sysutils
platforms       darwin

patchfiles      patch-maxargs patch-pty.c
depends_lib     port:ncurses

fetch.type  cvs
cvs.root  :pserver:anonymous@cvs.savannah.gnu.org:/sources/screen
cvs.module  ${name}
worksrcdir ${name}/src
configure.args  --mandir=${prefix}/share/man \
                --infodir=${prefix}/share/info \
                --enable-locale \
                --enable-telnet \
                --enable-colors256 \
                --enable-rxct_osc
configure.env   LIBS=-lncurses

post-destroot {
    xinstall -m 644 ${workpath}/${name}/src/etc/etcscreenrc ${destroot}/${prefix}/etc/screenrc
    xinstall -m 644 ${workpath}/${name}/src/terminfo/screencap ${destroot}/${prefix}/etc/termcap
    system "tic ${workpath}/${name}/src/terminfo/screeninfo.src"
}


post-install {
ui_msg "===============================================================================\n"
ui_msg "Any screens running before upgrading, will not be available, post-install.\n"
ui_msg "===============================================================================\n"
}

オレオレ的なPortsファイルですが、こんな感じではないでしょうか。

で、あとはインデックスを更新するために以下のようにリポジトリディレクトリ内でコマンドを実行します。


$ cd /opt/local/var/localports
$ sudo portindex


お疲れ様です、これで自前のPortsファイルを使うことができるようになりました。



$ sudo port -d install screen

インストールはいつものようにこんな感じで、完了すると、縦分割やlayoutといった新たな機能が実装されているCVS版screenがインストールされているハズです!

ということでそれほど難しくはないので、ぜひ試してみてはいかがでしょうか。

MacPortsの基本的な使い方とコマンド

Macに移行して2ヶ月になりそうな今日この頃、ようやくMacになれてきた熊谷です。こんにちは。

MacというかOSX上で開発を行う上で欠かせないものにMacPortsがあります。前回もちょっと触れたのですが、今回はこれについてもうちょっと触れたいたいと思います。

MacPortsとはOSXで利用可能なパッケージ管理システムで、これを使うことによりOSX上でより良いUNIX生活を送ることができるようになります。私自身、まだMacPortsを使い始めたばかりで勉強中なんですが、それを忘れないようにするためにもメモ書きします。

まず、MacPortsをインストールするためにはOSXの開発環境であるXcode Toolsをインストールしておく必要があります。Xcode ToolsはMacに付属しているDVDかDeveloper Connectionからダウンロードしてインストールしておきます。で、MacPortsのサイトからMacPortsをダウンロードしてインストールします。そして環境変数の設定、MacPorts/opt/local以下にインストールされるので、それに関連した環境変数を設定します。


export PATH=/opt/local/bin:/opt/local/sbin:$PATH
export MANPATH=/opt/local/man:$MANPATH

以上で、MacPortsが使えるようになります。簡単ですね!

で、使い方は以下のようになります。

MacPorts自身とそのリストを最新の状態に更新するコマンドは、


$ sudo port selfupdate

debianでいう apt-get update みたいなものですね。

インストールしたいパッケージを探すコマンドは、


$ port search 検索語句

debianでいう apt-cache search 検索語句 みたいなもんですね。

パッケージをインストールするコマンドは、


$ sudo port install パッケージ名

debianでいう apt-get install インストールするパッケージ名 みたいなもんですね。

パッケージをアンインストールするコマンドは、


$ sudo port uninstall パッケージ名

debianでいう apt-get remove アンインストールするパッケージ名 みたいなもんですね。

でもって、MacPortsにはvariantsとよばれるオプションがあります。MacPortsはバイナリファイルを取得してインストールという流れではなく、提供されているPortfileを元にソースを取得しconfigureをしてビルドしてインストールという作業を行っています。で、このvariantsのオプションを指定すると、Portfileで指定されているconfigureオプション等を使ってビルドされたりといったように、そのパッケージの機能を選択することができます。パッケージによって持っているオプションは違うので、もしvariantsを指定したい場合はそれを調べて、インストール時にそのvariantsを指定します。

パッケージのvariantsを表示するコマンドは、


$ port variants パッケージ名

で表示することができます。

そして、上記コマンドで使いたいオプションを確認しインストール時に、


$ sudo port install パッケージ名 +オプション +オプション

といったように +オプション で指定していきます。

例えば、php5のvariantsをみてみると、

こんな風に表示されます。で、この中から使いたいオプションを選び



$ sudo port -d install php5 +apache2 +macosx +mysql5 +pear +postgresql +sockets +sqlite

といった感じでインストールします。

そんなこんなんで、システムにインストールされてあるパッケージは何があるかな?と思ってその一覧を見たいことがあるかもしれません。そんなときは


$ port installed

でその一覧が表示されます。

また、インストールしたけどアンインストールしたくない、でもちょっとの間だけインストールしなかったことにしたいということがあるかもしれません。そんなときは


$ sudo port deactivate パッケージ名

で、一時的に無効になります。有効にするときは


$ sudo port activate パッケージ名

です。

さらに、使っているパッケージのバージョンがあがったときはどうすればいいのでしょうか。最初に紹介したselfupdateを実行して、


$ port outdated

でバージョンがあがっているパッケージが一覧表示されます。

あとは、


$ sudo port upgrade installed

ですべてアップグレードしてもいいですし、


$ sudo port upgrade パッケージ名

で個別にアップグレードという方法もあります。

ということで、以上のコマンドを知っていればそれなりにMacPortsを使えるようになると思います。もちろん、これ以外にもまだまだコマンドはあるわけで、port helpとすればヘルプが出てきます。また、

のサイトがとても参考になりますので、もっと詳しく知りたい方はこちらを参照してみてください。

私的・Macに移行したらすぐインストールする11のアプリケーション

こんにちは、熊谷です。

長い間Windowsマシンをメインに使ってきた私ですが、このたびMacにSwitchしました。去年の6月頃にVAIO type TZを購入したばかりなのですが、先月発表され先頃発売が始まったMacBook Airに惹かれて購入してしまいました。

そんなことで、Windows上であればこんなアプリケーションやあんなアプリケーションをインストールするという決まりみたいなものが私の中には出来上がっているわけなんですが、SwitchしたばかりのMacというかOS Xではまだありません。ということで、これからのためにも、今回は私的OS Xにインストールする11のアプリケーションをあげたいと思います。

1. Xcode Tools
まずはこのXcode Toolsですが、これはMacPortsを使う上で必須なので欠かせません!それにOS Xの開発環境ということなので開発をする上でインストールしておいても損はないかなと。

2. MacPorts
次にこのMacPorts、これはOS Xで利用可能なパッケージ管理システムで、対応しているUNIXのソフトをインストールすることができます。これがあればOS XUNIXとしていい感じに使うことができるので、欠かせません。

ごくごく基本的なコマンドは、

sudo port install パッケージ名
sudo port search 検索する語句
sudo port uninstall パッケージ名

こんな感じです。Leopardの場合はOS標準としてApache 2.2.6やPHP 5.2.4が既にインストールされているわけなんですが、私はパッケージで管理したいとかその他もろもろの関係でMacPortsのものをインストールしています。

3. Quicksilver



Macの場合基本はマウスを使用して操作するものだとばかり思っていたのですが、これを使うとキーボードでアプリケーションの起動やら操作ができるのでとても便利です。

4. Growl



対応しているアプリケーションから通知されるメッセージをポップアップしてくれるソフトです。利用価値が特別あるわけではないのですが、Firefoxにてファイルのダウンロードが完了したときや、Macに機器が接続されたとき、LimeChatで呼ばれたときなどメッセージをポップアップしてくれます。

5. KeyRemap4MacBook



その名の通りキーマップを変更してくれるソフトです。私の場合は「かな」キーを「かな」「英数」のトグルで使えるように変更しています。「かな」キーで日本語入力のオンオフをするためです。

6. iTerm



ターミナルソフトです。LeopardのTerminal.appもそれはそれで機能もしっかりいているし使えるものなんですが、見た目重視の私にとってはターミナル上で256colorが使えないというのが一番いたいです。そんなこともありこのiTermを使用しています。このターミナル上でscreenを使ってvimで開発、やはりこのスタイルが落ち着きます。

7. MacFUSE / MacFusion



OS X用のユーザスペースで動作するファイルシステムです。sshの場合はscpやらでファイルを転送してもいいんですが、GUIというかFinder上で普通にファイルを操作したいときなど、これを使うとsshで接続できるサーバのディレクトリをマウントできるので便利便利!

8. Firefox



Safariもあるわけなんですが、やはり使い慣れたブラウザがいいのでFirefoxをインストールしてます。

9. Mail.appのプラグイン



縦三分割してくれるWideMailと自動折り返しを無効にしてくれるStopFoldを入れています。

10. LimeChat for OSX

Windowsで有名なIRCクライアントのOS X版です。IRCはなくてはならないコミュニケーションツールの一つなのでそのクライアントソフトは必須、やはり使い慣れたソフトがいいですよね!

11. VMware Fusion

最後に、VMware Fusionです。Windowsが使えなくても今のところ不便は感じないのですが、今まで使っていた資産を生かすために一応。しかし、これを使うとAirのディスプレイではOSX、外部ディスプレイではWindowsということができたり、Spacesで別の画面に切り替えるとWindowsということができるので、すごい便利です。

ということで、以上が私的OS Xにインストールする11のアプリケーションです。大雑把に11個書いたわけですが、MacPortsでインストールしているものが結構あるので、次回はこれを紹介できたらいいなと思います。

最近、日常で気になること

こんばんは、笹亀です。

今日は技術ネタではないのですが、
自分が気になっていることを書いてみます。

■薄型MacBook
今年のはじめごろからずっと噂されている超薄型MacBook(13インチだろうとのこと)の信憑性が気になっています。僕自身、脱Windowsを考えているためMacを使っている人から情報を集めたりして、このMacが発売されたら購入して、社内でも待ちきれずに違うノートパソコンを購入した人に自慢しようとおもっています(笑)

■目指せvim使い
Macの発売されるだろうと考え、長年愛用している秀丸エディタも卒業しようと思っています。Macにしたときにテキストエディタを使うのは、個人的にちょっとどうなのかとおもったりします。やっぱり、プログラムを組むたるものはターミナルで「vim」「emacs」を使うことが「この上なくかっちょいい!」と憧れています。
うちの開発陣は、vim使いかemacs使いがほとんどです。私もvimがまったく使えないわけではないのですが、使いこなせずに1人だけ取り残されてます・・
少しずつ使いこなせるようにvimのサイトを教えてもらい、日々訓練しています。

トヨタカップ
12月7日に開幕する「トヨタカップ」。
トヨタカップは、サッカーのクラブチャンピオンの世界一を決める大会です。
今年も日本で開催されます。
我が日本からも、先日アジアチャンピオンになった浦和レッズが参加します。
レッズとACミランが、ぜひとも戦ってほしいとサッカーファンとして望んでしまいますね。サッカーを見るのが大好きなので見に行ってきます。

■メタボリック症候群
通称「メタボ」、この言葉を聞くと運動しなくちゃとおもってしまいます。
何かと体を動かさない日々が続くので、どうにかしないといけないのですが、
いまさらブートキャンプに入隊するというのはどうだろうか・・
やった人に聞くと、ビリーに殺意を覚えるというし・・
やっぱり嫌なことはせずに、好きなことをして解消できるように努力します。


この中で1番気になるのは、私生活の改善が必要なメタボです。
まずは食生活の改善から始めたいとおもいます。
効果が出てきたら報告してみようとおもいます。
出なかったら報告しません^^;

現在、皆さまより、お勧めなメタボ解消方法を募集しております。
コメントよりどうぞ^^

メタボが気になるかた、一緒に気をつけていきましょう!