Archive for the ‘emacs’ Category

    はてなブックマーク - PHP開発環境 on Emacs
    このエントリーをはてなブックマークに追加

    はじめまして。Fusicでエンジニアをしている小山です。
    普段はPHP(主にCakePHP)とJavaScriptを使って開発を行っています。

    皆さんは開発を行う時エディタは何を使っていますか?

    Fusicではエディタについて特に指定はなく、みんなそれぞれ好きなものを使用しています。
    NetBeansにはじまりEclipseやTextMate、Emacs、Vim。Visual Studioを使うメンバもいます。
    そして自分はEmacsを愛用しています。ちなみに社内のEmacsユーザはマイノリティです。

    個人的にはプログラマにとってエディタは料理人にとっての包丁、大工にとってのノミと同じものと思っています。
    そういう意味でEmacsは、Emacs Lispを利用してかなり自由度をもったカスタマイズができる特徴をもっており、自分にあった環境を作ることができます。

    ただ、逆にいうと初期設定のEmacsは若干使いにくいのは否めません。

    そこで、今回はEmacs上に簡単なPHPの開発環境を作成してみます。
    Emacsのバージョンは22を想定します。

    .emacs、.emacs.d/の作成

    Emacsの設定は.emacsファイルなどに記述することで出来ます。
    この設定ファイルの作り方、書き方にはいろいろな方法があるのですが、
    今回は以下のようにホームディレクトリに.emacsファイルと.emacs.dディレクトリを作成し
    その中にelispディレクトリを作成します。

    ~/
    |-- .emacs
    `-- .emacs.d
        `-- elisp

    load-pathの設定

    .emacsや.emacs.dディレクトリだけでなく、elispディレクトリ内にインストールするEmacs Lispを読み込んでもらうためにload-pathの追加をします。
    .emacsに以下の設定を記述します。

    (setq load-path
          (append
           (list
            (expand-file-name "~/.emacs.d/elisp/"))
           load-path))

    読み込むディレクトリを増やしたい場合(例えば~/.emacs.d/confディレクトリ)は以下のように追加していきます。

    (setq load-path
          (append
           (list
            (expand-file-name "~/.emacs.d/conf/") ;追加
            (expand-file-name "~/.emacs.d/elisp/"))
           load-path))

    これで最低限の設定は完了しました。
    M-x load-fileコマンドで.emacsファイルを再読み込みするかEmacsを再起動すると設定が反映されます。

    本当はここからフォントの設定や文字コードの設定などが必要な場合があるのですが、今回は割愛します。
    ちなみに自分の設定は以下です。

    (set-language-environment "Japanese")
    (set-default-coding-systems 'utf-8)
    (set-terminal-coding-system 'utf-8)
    (set-buffer-file-coding-system 'utf-8)
    (prefer-coding-system 'utf-8-unix)
    (set-keyboard-coding-system 'utf-8)
    (setq default-buffer-file-coding-system 'utf-8)

    auto-install.elのインストール

    auto-install.elはEmacs Lispのインストールを簡単にするためのEmacs Lispです。
    大抵のEmacs Lispはauto-install.elで簡単にインストールすることが可能になります。

    まず、auto-install.elをダウンロードして~/.emacs.d/elisp/ディレクトリに設置します。
    そして、.emacsに以下の設定を記述します。

    ;; auto-install
    (require 'auto-install)
    (setq auto-install-directory "~/.emacs.d/elisp/") ;Emacs Lispをインストールするディレクトリの指定
    (auto-install-update-emacswiki-package-name t)
    (auto-install-compatibility-setup) ;install-elisp.elとコマンド名を同期

    これでauto-install.elの設定は完了です。

    Anythingのインストール

    Anythingは候補選択フレームワークと呼ばれるEmacs Lispです。
    名前のとおり「何でも」選択候補にあげてくれて選択したものに対していろいろな操作をすることができるEmacs Lispです。
    Anything環境の構築にはいくつかのEmacs Lispをインストールする必要があるのですが、
    auto-install-batchを利用して一気にインストールすることができます。

    M-x auto-install-batchでanythingを選択します。
    するとEmacsWikiから各種必要なEmacs Lispを取得しインストールが開始されます。
    途中でインストールを継続するためにC-c C-cと入力していきます。

    インストール後M-x anythingでAnythingを起動できます。
    何も設定していない状況では

    • バッファ
    • カレントディレクトリのファイル
    • コマンドの履歴

    を選択できるようになっています。
    それぞれに対して

    • バッファを選択 → そのバッファを表示
    • カレントディレクトリのファイルを選択 → そのファイルを開く
    • コマンドの履歴を選択 → コマンドを再実行

    ができるようになっています。
    これが「同じインターフェースで何でも選択して、何でも操作する」Anythingの醍醐味です。

    簡単にanythingを実行できるようにキーバインドを(例えば)C-x bに割り当てておきます。
    .emacsに以下の設定を記述します。

    ;; anything
    (global-set-key (kbd "C-x b") 'anything)

    今回は詳しい説明は割愛しますが是非使いこなしてみてください。

    Auto Complete Modeのインストール

    Auto Complete Modeはインライン上での補完フレームワークです。
    よくNetBeansやEclipseなどのIDEでソースコード入力中に補完候補を出して選択できるアレです。
    Auto Complete Modeもauto-install-batchを利用して一気にインストールすることができます。

    M-x auto-install-batchでauto-complete development versionを選択します。

    .emacsに以下の設定を記述します。

    ;; auto-complete
    (require 'auto-complete)
    (require 'auto-complete-config)
    (global-auto-complete-mode t)
    (setq ac-auto-start t)

    設定反映後、.emacsのファイル上で文字列を入力すると補完候補がインライン上に表示されると思います。
    Auto Complete ModeもAnythingと同様フレームワークですので、様々な拡張が可能です。
    (こちらも詳しい説明は割愛します)

    PHP Modeのインストール

    PHP ModeはPHPの開発用のメジャーモードです。
    PHPのソースコードのシンタックスハイライトやインデント等のサポートをしてくれます。
    これもauto-install.elを利用してインストールをします。

    M-x auto-install-from-urlでhttp://php-mode.svn.sourceforge.net/svnroot/php-mode/tags/php-mode-1.5.0/php-mode.elをセットします。
    (ちなみにM-x install-elispでも構いません)

    .emacsに以下の設定を記述します。

    ;; php-mode
    (require 'php-mode)
     
    (setq php-mode-force-pear t) ;PEAR規約のインデント設定にする
    (add-to-list 'auto-mode-alist '("\\.php$" . php-mode)) ;*.phpのファイルのときにphp-modeを自動起動する

    php-completionのインストール

    php-completionはPHP開発用のマイナーモードです。
    AnythingやAuto Complete Modeのインターフェースを利用してさらにPHPの開発をサポートしてくれます。

    これもauto-install.elを利用してインストールをします。

    M-x auto-install-batchでphp-completionを選択します。

    Auto Complete Modeの設定も合わせて.emacsに以下の設定を記述します。

    ;; php-mode-hook
    (add-hook 'php-mode-hook
              (lambda ()
                (require 'php-completion)
                (php-completion-mode t)
                (define-key php-mode-map (kbd "C-o") 'phpcmp-complete) ;php-completionの補完実行キーバインドの設定
                (make-local-variable 'ac-sources)
                (setq ac-sources '(
                                   ac-source-words-in-same-mode-buffers
                                   ac-source-php-completion
                                   ac-source-filename
                                   ))))

    これで今回のPHPの開発環境設定は完了です。

    実際にPHPファイルを開いてみてソースを書いてみたり、
    C-x bC-oといったキーバインドも実行してみてください。
    どのような動きをするか体感できると思います(そして是非体感してみてください)。

    今回紹介した開発環境の設定はほんの一例です。
    是非さらに自分にあったカスタマイズをしてみてください。

    これからも、Emacsを普及させるべくPHPに限らず他にも便利なEmacs Lispや設定例を紹介していきたいと思います。