Home > 開発環境

開発環境 Archive

CentOS 5, 6 / Amazon Linux で PHP をパッケージインストールする方法まとめ

この記事の所要時間: 1251

Shin x blog Advent Calendar 2013 の 15 日目です。

php-logo

Cent OS 5, 6 / Amazon Linux にて、PHP の各バージョンを yum でインストールする方法をまとめてみました。

CentOS 6

PHP 5.3

CentOS 6 では、公式パッケージが PHP 5.3.3 なので、公式のリポジトリからインストールできます。

$ sudo yum -y install php
(snip)

$ php -v
PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57)

パッケージバージョンは 5.3.3–27 となっています。これは主にセキュリティ上の問題が発生した場合にパッチが提供されているためで、最新のビルドは、2013/12/10 になっています。

$ sudo rpm -qi php
Name        : php                          Relocations: (not relocatable)
  Version     : 5.3.3                             Vendor: CentOS
  Release     : 27.el6_5                      Build Date: Tue Dec 10 22:38:18 2013
  Install Date: Sat Dec 14 22:01:49 2013         Build Host: c6b10.bsys.dev.centos.org
  Group       : Development/Languages         Source RPM: php-5.3.3-27.el6_5.src.rpm
  Size        : 3702221                          License: PHP
  Signature   : RSA/SHA1, Wed Dec 11 04:24:11 2013, Key ID 0946fca2c105b9de
  Packager    : CentOS BuildSystem 
  URL         : http://www.php.net/
  Summary     : PHP scripting language for creating dynamic web sites

PHP 5.4

CentOS のリポジトリでは PHP 5.4 は提供されていないので、外部のリポジトリからインストールします。

ここでは、PHP 5.4 を提供しているリポジトリのうち、remi / IUS を利用します。

remi

remi リポジトリは、Fedora プロジェクトのコントリビュータでもある Remi Collet 氏が運営しているリポジトリです。

PHP の新バージョンがリリースされるごとに該当バージョンの RPM を作成し、配布しています。旧 php.net サイトから、外部リポジトリとしてリンクされていたので、PHP ユーザにはお馴染みですね。

まず、remi リポジトリを有効にするために RPM をインストールします。remi リポジトリには epel リポジトリが必要なので、こちらもインストールしておきます。

$ sudo rpm -Uvh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/i386/epel-release-6-8.noarch.rpm
$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

PHP 5.4 を remi リポジトリからインストールします。パッケージ名は php です。remi リポジトリはデフォルトでは有効にならないので、–enablerepo オプションで指定します。

リリースされたばかりの PHP 5.4.23 がインストールされました。ビルド日時は、2013/12/11 となっています。

$ sudo yum -y install php --enablerepo=remi
(snip)

$ php -v
PHP 5.4.23 (cli) (built: Dec 11 2013 06:48:07)

IUS

IUS は、Rackspace が運営しているリポジトリです。

「Rackspace RPM の Fedora」と書かれているとおり、新しいパッケージは、まず IUS で公開し、プロダクション環境での利用が検証できた後に、Rackspace 顧客用のエンタープライズパッケージとして提供しているようです。

IUS リポジトリを利用するために ius-releaseepel-release パッケージをインストールします。

$ sudo rpm -Uvh http://dl.iuscommunity.org/pub/ius/stable/CentOS/6/x86_64/epel-release-6-5.noarch.rpm
$ sudo rpm -Uvh http://dl.iuscommunity.org/pub/ius/stable/CentOS/6/x86_64/ius-release-1.0-11.ius.centos6.noarch.rpm

PHP 5.4 を IUS リポジトリからインストールします。パッケージ名は php54 です。IUS リポジトリはデフォルトでは有効にならないので、–enablerepo オプションで指定します。

最新版の 5.4.23 ではなく、5.4.22 がインストールされました。ビルド日時は、2013/11/15 となっています。

$ yum -y install php54 --enablerepo=ius
(snip)

$ php -v
PHP 5.4.22 (cli) (built: Nov 15 2013 10:13:25)

IUS では、新しいパッケージは、まず ius-testing リポジトリで検証を行い、その後 ius リポジトリへ展開される流れになっているので、isu-testing リポジトリを見てみると、最新の 5.4.23 が公開されていました。検証環境などで、すぐに新しいバージョンを使いたい場合は、ius-testing を利用すると良いでしょう。

$ sudo yum info php54 --enablerepo=ius-testing
(snip)
Available Packages
Name        : php54
Arch        : x86_64
Version     : 5.4.23
Release     : 3.ius.centos6
Size        : 2.7 M
Repo        : ius-testing
(snip)

PHP 5.5

PHP 5.5 も公式リポジトリでは提供されていないので、remi / IUS からインストールします。

remi

remi の PHP 5.5 は、remi-php55 というリポジトリにて提供されていますので、–enablerepo では、remi-php55 を指定します。パッケージ名は php になります。

最新版の 5.5.7 がインストールされました。ビルド日時は、2013/12/11 です。

$ sudo yum -y install php --enablerepo=remi-php55
(snip)

$ php -v
PHP 5.5.7 (cli) (built: Dec 11 2013 07:13:20)

IUS

IUS では、ius リポジトリにて PHP 5.5 が提供されているので、パッケージ名を php55u に変更します。

最新版から一つ前の 5.5.6 がインストールされました。ビルド日時は、2013/12/04 です。

$ sudo yum -y isntall php55u --enablerepo=ius
(snip)

$ php -v
PHP 5.5.6 (cli) (built: Dec  4 2013 17:19:08)

なお、5.4 と同じく ius-testing リポジトリを見ると、最新版の 5.5.7 が提供されていました。

$ sudo yum info php55u --enablerepo=ius-testing
(snip)
Name        : php55u
Arch        : x86_64
Version     : 5.5.7
Release     : 1.ius.centos6
Size        : 2.6 M
Repo        : ius-testing
(snip)

CentOS 5

PHP 5.1

CentOS 5 では、ベンダー提供の標準 RPM が、PHP 5.1.6 なので、公式 yum リポジトリから yum install でインストールできます。

5.1.6 はかなり古いバージョンですが、現在もパッチの提供が続けられています。最新ビルドは、2013/12/10 となっていました。

$ sudo yum -y install php
(snip)

$ php -v
PHP 5.1.6 (cli) (built: Dec 10 2013 22:08:48)

PHP 5.3

公式リポジトリにて PHP 5.3 パッケージも配布されています。パッケージ名は php53 となっています。

CentOS 6 と同じく、PHP 5.3.3 がインストールされます。ビルド日時は、2013/12/10 です。

$ sudo yum -y install php53
(snip)

$ php -v
PHP 5.3.3 (cli) (built: Dec 10 2013 22:12:52)

PHP 5.4, 5.5

CentOS 6 と同じく、外部リポジトリを利用してインストールします。

remi / IUS 共に、CentOS 5 用の release パッケージが提供されていますので、こちらをインストールします。各 PHP のインストールは、CentOS 6 と同じです。

remi

epel-releaseremi-release パッケージをインストールします。

$ sudo rpm -Uvh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/i386/epel-release-6-8.noarch.rpm
$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm

IUS

epel-releaseius-release パッケージをインストールします。なお IUS では、PHP 5.4 は提供されていますが、PHP 5.5 は提供されていませんでした。

$ sudo rpm -Uvh http://dl.iuscommunity.org/pub/ius/stable/CentOS/5/x86_64/epel-release-5-4.noarch.rpm
$ sudo rpm -Uvh http://dl.iuscommunity.org/pub/ius/stable/CentOS/5/x86_64/ius-release-1.0-11.ius.centos5.noarch.rpm

Amazon Linux

Amazon Linux では、公式リポジトリにて、PHP 5.3, 5.4, 5.5 が提供されています。

同じリポジトリで提供されているので、パッケージ名にてインストールするバージョンを指定します。

PHP 5.3

パッケージ名を php でインストールします。最新版一つ前の 5.3.27 が提供されています。ビルド日時は、2013/07/12 です。

$ sudo yum -y install php
(snip)

$ php -v
PHP 5.3.27 (cli) (built: Jul 12 2013 22:04:28)

PHP 5.4

パッケージ名を php54 でインストールします。最新版一つ前の 5.4.22 が提供されています。ビルド日時は、2013/12/09 です。

$ sudo yum -y install php54
(snip)

$ php -v
PHP 5.4.22 (cli) (built: Dec  9 2013 18:19:32)

PHP 5.5

パッケージ名を php55 でインストールします。最新版一つ前の 5.5.6 が提供されています。ビルド日時は、2013/12/09 です。

$ sudo yum -y install php55
(snip)

$ php -v
PHP 5.5.6 (cli) (built: Dec  9 2013 18:09:49)

さいごに

CentOS / Amazon Linux にて PHP を yum でインストールする方法を見てきました。現在は、PHP 5.3, 5.4, 5.5 どのバージョンにおいても yum でインストールすることが可能です。

検証は、CentOS 6 は Vagrant + VirtualBox + Docker 、CentOS 5 は Vagrant + VirtualBox で、Amazon Linux は AWS で行いました。こういった類の検証では、Docker コンテナの起動の速さは便利ですね。Vagrant ですら昨年の今頃はまだ触った程度だったのに、ここ一年の進化は早いものです。

参考

  • コメント (Close): 0
  • トラックバック (Close): 0

Vagrant + VirtualBox で nfs を使って、synced_folder を速くする

この記事の所要時間: 354

Vagrant + VirtualBox で便利な synced_folder を nfs を使ってパフォーマンスを向上する方法です。

vagrant

開発環境として Vagrant + VirtualBox を使う上で欠かせないのが synced_folder です。ホストとゲスト間でディレクトリを共有できるので、ホストで書いたコードをゲストですぐに実行することができます。

synced_folder はVirtualBox が持つ shared folders という機能をつかているのですが、代わりに nfs を使うことで、パフォーマンスを向上させることができます。

nfsd をホスト側で起動

synced_folder に nfs を利用するには、ホスト側で nfsd を起動する必要があります。

OS X(Lion / Mountain Lion)では標準で nfsd がインストールされているのでこれを利用します。nfsd コマンドで enable にすると、nfsd を起動して、さらに再起動時も自動で nfsd が起動するようになります。

なお nfsd を起動するには /etc/exports が必要になります。存在しない場合は、作成しておきます(内容は空で良いです)。

$ sudo touch /etc/exports
$ ls /etc/exports
/etc/exports

nsfd enable コマンドで nfsd を起動します。

$ sudo nfsd enable

$ sudo nfsd status
nfsd service i enabled
nfsd is running (pid xxxxx, 8 threads)

nfsd disable コマンドを実行すると、nfsd が停止して、再起動後も起動しなくなります。

$ sudo nfsd disable

$ sudo nfsd status
nfsd service is disabled
nfsd is not running

Vagrantfile で nfs を指定

Vagrantfile で synced_folder を NFS で利用する設定を行ないます。

ポイントは2つです。まず host-only ネットワークで IP アドレスを指定します。そして、synced_folder に :nfs => true を設定します。

vagrant up すると、synced_folder で指定したディレクトリをゲストが NFS マウントします。

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
(snip)
[default] Exporting NFS shared folders...
Preparing to edit /etc/exports. Administrator privileges will be required...
The nfsd service does not appear to be running.
Starting the nfsd service (use 'enable' to permanently enable)
[default] Mounting NFS shared folders...

ゲストにログインすると NFS マウントしていることが分かります。

$ vagrant ssh
[vagrant@localhost ~]$ df -h
Filesystem            Size  Used Avail Use% マウント位置
/dev/mapper/VolGroup-lv_root
                      8.4G  1.1G  7.0G  14% /
tmpfs                 230M     0  230M   0% /dev/shm
/dev/sda1             485M   32M  429M   7% /boot
/vagrant              931G  359G  572G  39% /vagrant
192.168.33.1:/path/to/directory                      <---- NFS でマウントした synced_folder
                      931G  359G  572G  39% /share

ホストの /etc/exports には下記のように対象のディレクトリが自動で追記されています。

$ cat /etc/exports
# VAGRANT-BEGIN: 0f0224b9-b61c-47ff-b769-49d1e3103b28
"/path/to/directory" 192.168.33.30 -mapall=501:20
# VAGRANT-END: 0f0224b9-b61c-47ff-b769-49d1e3103b28

なお、もし IP が指定されていないと、vagrant up 時に下記のようなエラーが表示されます。

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
(snip)
NFS requires a host-only network with a static IP to be created.
Please add a host-only network with a static IP to the machine
for NFS to work.

パフォーマンス

NFS を使った場合、実際の開発でどれほど恩恵があるかを判断するために簡単な Web アプリケーションを siege で計測してみました。

対象アプリケーションはCakePHPのコントローラで「Hello」という文字列を出力するのみで、DBへの接続は行なっていません。それぞれの方式でマウントしたディレクトリをdocument_rootに指定しています。

ホストから「siege -c 10 -t 60s -b http://URL/」で5回計測を行ない、その平均値を算出しました。

計測結果は下記になります。NFS の方が 3.5倍多くのリクエストをさばいており、パフォーマンスが向上していることが分かります。

方式 計測値 Rate
share folders(synced_folderデフォルト) 11.366 trans/sec 1
NFS 40.066 trans/sec 3.52

参考までに、Vagrant サイトでは実際の Rails プロジェクトのテストを使った結果が掲載されています。NFS が 22s に対して、Shared folders は 5m14s となっており、大きく速度が異なっています。

VirtualBox Shared Folders: 5m 14s
Host File System: 10s
Native VM File System: 13s
NFS Shared Folders: 22s
NFS Shared Folders (warm cache): 14s
http://docs-v1.vagrantup.com/v1/docs/nfs.html

まとめ

NFS を使うことで簡単に synced_folder のパフォーマンスを上げることができます。synced_folder のパフォーマンスに不満がある場合は NFS を一度試してみて下さい。

ただ、ホスト側で nfsd を動かす必要があるので、Windows など nfsd が標準でインストールされていない環境では気軽に使えないのが難点ですね。

参考

  • コメント (Close): 0
  • トラックバック (Close): 0

Vagrant を使うなら、VirtualBox 4.2.16 以降で

この記事の所要時間: 633

VirtualBox 4.2.14 + Vagrant 1.2.2 の組み合わせで、正常に動作しなかった問題が、VirtualBox 4.2.16 で解決されたようです。

VirtualBox 4.2.14 + Vagrant 1.2.2 の組み合わせで、一部の環境にて vagrant up ができないという現象がありました。

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Importing base box 'precise32'...
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["import", "/Users/hans/.vagrant.d/boxes/precise32/virtualbox/box.ovf"]

Stderr: 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Interpreting /Users/hans/.vagrant.d/boxes/precise32/virtualbox/box.ovf...
OK.
0%...
Progress object failure: NS_ERROR_CALL_FAILED

https://github.com/mitchellh/vagrant/issues/1847

Vagrant の github サイトでもこの問題に関する issue が上がっていましたが、いずれも VirtualBox 4.2.16 で解決したようです。

手元の環境をVirtualBox 4.2.8 から 4.2.16 にアップグレードしたところ、Vagrant 1.2.2 との組み合わせで正常に動作しました。(sahara プラグインもちゃんと動きました:D)

  • Mac OS X 10.7.5
  • Vagrant 1.2.2
  • VirtualBox 4.2.16
$ vagrant -v
Vagrant version 1.2.2
$ VirtualBox -h
Oracle VM VirtualBox Manager 4.2.16
(C) 2005-2013 Oracle Corporation
All rights reserved.
(snip)

$ vagrant init precise32 http://files.vagrantup.com/precise32.box
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Box 'precise32' was not found. Fetching box from specified URL for
the provider 'virtualbox'. Note that if the URL does not have
a box for this provider, you should interrupt Vagrant now and add
the box yourself. Otherwise Vagrant will attempt to download the
full box prior to discovering this error.
Downloading or copying the box...
Extracting box...te: 1905k/s, Estimated time remaining: --:--:--)
Successfully added box 'precise32' with provider 'virtualbox'!
[default] Importing base box 'precise32'...
[default] Matching MAC address for NAT networking...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Fixed port collision for 22 => 2222. Now on port 2201.
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2201 (adapter 1)
[default] Booting VM...
[default] Waiting for VM to boot. This can take a few minutes.
[default] VM booted and ready for use!
[default] Configuring and enabling network interfaces...
[default] Mounting shared folders...
[default] -- /vagrant

$  vagrant ssh
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic-pae i686)

 * Documentation:  https://help.ubuntu.com/
Welcome to your Vagrant-built virtual machine.
Last login: Fri Sep 14 06:22:31 2012 from 10.0.2.2
vagrant@precise32:~$
  • コメント (Close): 0
  • トラックバック (Close): 0

phpenv + php-build 環境を Vagrant で構築する

この記事の所要時間: 319

PHP5.5 リリースにより、再び盛り上がってきた phpenv + php-build 環境を Vagrant で作ってみました。

vagrant

CentOS6.4 + phpenv + php-build + nginx という構成になっています。

nginx + phpenv + php-build の環境構築については hnw さんの下記エントリがとても参考になりました。

php-buildで複数バージョンのPHP-FPMを用意する – hnwの日記

インストール

https://github.com/shin1x1/vagrant-phpenv-phpbuild

github へ Vagrantfile + Chef レシピファイルをアップしています。こちらの README に書いたとおりですが、手順としては以下になります。

  1. VirtualBox インストール
  2. Vagrant インストール
  3. git clone
  4. vagrant up

1 / 2 はインストール済であれば不要です。(なお VirtualBox 4.2.14(2013/07/01 時点の最新版) は、Vagrant との組み合わせで問題が発生する場合があるので、現時点では 4.2.12や4.2.8など旧バージョンのインストールをお勧めします。)

4 は、box ファイルのダウンロードや PHP のビルドでかなり時間がかかる場合があります。コマンドを実行した後はのんびりお待ちを。

SSH でアクセス

vagrant ssh でログインすると、phpenv コマンドが利用できます。

php コマンドで実行される PHP バージョンを変更したり、さらに別バージョンの PHP をインストールすることが可能です。

HTTP でアクセス

Vagrant で起動した仮想サーバには IP アドレスに 192.168.33.14 を付与しています。
稼働サーバでは nginx が動作しており、ポート毎に各バージョンの php-fpm が割り当てられています。

  • http://192.168.33.14:8053/ -> PHP5.3
  • http://192.168.33.14:8054/ -> PHP5.4
  • http://192.168.33.14:8055/ -> PHP5.5

ドキュメントルート

仮想サーバ内の /public_html ディレクトリが nginx のドキュメントルートになっています。

このディレクトリはホスト側の public_html ディレクトリをシェアしているので、このディレクトリに PHP ファイルを設置すれば、仮想サーバの nginx+php-fpm で実行することができます。

例えば、下記のように echo.php をホスト側の public_html ディレクトリ以下に作成すると、http://192.168.33.14:8053/echo.php で実行することができます。

$ ls .
README.md   Vagrantfile cookbooks   public_html
$ echo "<?php echo PHP_VERSION;" > public_html/echo.php

Vagrantfile をカスタム

Vagrantfile をカスタムすることで、インストールする PHP バージョンを変更したり、configure オプションを追加することが可能です。
詳しくは README にて。

参考

  • コメント (Close): 0
  • トラックバック (Close): 0

FireMobileSimulator でタブ毎に端末選択を有効にする

この記事の所要時間: 029

FireMobileSimulator でタブ毎に端末選択を有効にする方法です。

firemobilesimulator

単にチェック入れるだけです。Facebook で教えて頂いたのですが、こんな機能あったんですね。。。

調べてみると2011年には対応していたようです。

これまで全然気づかず、携帯サイトのテストは Firefox、スマートフォンのテストは Chrome 、と別ブラウザでやったり、別タブで開いていた Gmail や Facebook がいつの間にかおかしくなったりしてました。

こりゃ便利。

  • コメント (Close): 0
  • トラックバック (Close): 0

古くなったMacPortsを再インストール

この記事の所要時間: 418

古くなったMacPortsを再インストールしました。

macports

2年程前にインストールしたMacPorts。これまでもたまに selfupdate していた気はするのですが、久しぶりに selfupdate & upgrade outdated したらエラーで止まりまくりだったので、ここで心機一転再インストールしてみました。

1. MacPortsを削除

インストールしていた MacPorts を削除します。

/opt/local がそのまま残っていると、新しいMacPortsからソフトをインストールした際にエラーになる場合があるので、リネームしておきます。ここでは、/opt/local 以下の設定ファイルやデータを再利用したいのでリネームしていますが、不要であれば削除でも問題無いです。

$ sudo port deactivate active
$ sudo port -f uninstall installed
$ sudo port clean all
$ sudo rm -rf /Library/Tcl/macports1.0
$ sudo mv /opt/local /opt/local.old

2. 新しいMacPortsをインストール

macports.org から最新の MacPorts パッケージをダウンロードしてインストールします。

macports_1

The MacPorts Project — Download & Installation

3. 最新版に更新

念のため最新版に更新しておきます。

$ sudo port selfupdate
$ sudo port upgrade outdated

4. 定期的に更新

今後はちゃんと更新するようにcronに設定しておきます。

$ sudo crontab -l
10 9 * * 3  /opt/local/bin/port selfupdate
20 9 * * 3  /opt/local/bin/port upgrade outdated

5. もろもろインストール

あとはお好みで必要なソフトをインストールしていきます。下記はおなじみApache+PHP+PostgreSQL/MySQL環境。

$ sudo port install apache2
$ sudo port install postgresql84-server mysql5-server
$ sudo port install php5 php5-curl php5-gettext php5-mbstring php5-mcrypt php5-mysql php5-openssl php5-postgresql php5-xdebug 
$ sudo port install wget git-core

Mac起動時にデーモンが立ち上がるように設定します。

$ sudo port load apache2
$ sudo port load postgresql84-server
$ sudo port load mysql5-server

各サービスを手動で起動、終了するコマンド。

# 起動
$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.*.plist
# 終了
$ sudo launchctl unload -w /Library/LaunchDaemons/org.macports.*.plist

必要であれば、以前の環境から設定ファイルやデータを移行します。

$ sudo cp -a /opt/local.old/etc/php5/php.ini /opt/local/etc/php5/php.ini
$ sudo cp -a /opt/local.old/apache2/conf/httpd.conf /opt/local/apache2/conf/
$ sudo cp -a /opt/local.old/apache2/conf/extra/httpd-vhosts.conf /opt/local/apache2/conf/extra/
$ sudo cp -a /opt/local.old/var/db/postgresql84/defaultdb /opt/local/var/db/postgresql84/

MacPortsが楽

一時homebrewをMacPortsの代わりに使ってみたりもしましたが、個人的にはやっぱり対応しているソフト、バージョンが多いMacPortsの方が便利でした。(まあインストールが遅いというのは確かにそうなんですけどね。)

環境が新しくなると気持ち良いですね。あーすっきり:D

参考

Macports の再インストール – Hidde’s Tips
HowTo/UseMacPorts – MacPortsWiki-JP

Webシステム開発に便利な7つのツール

この記事の所要時間: 98

Webシステム開発で使っている便利なツールをあげてみました。

あらためて社内の開発環境を見直す機会があったので、使っているツールを並べてみました。こうして見ると色々なツールを使って開発をしていますね。わりと定番系なものが多いですが、良かったら参考にどうぞ。

1. Apache / PostgreSQL / PHP

Mac OS X に MacPorts でインストールしたApache / PostgreSQL / PHP 環境を使って開発をしています。

PHPは5.3、PostgreSQLは8.4 or 9.0です。

ただ旧バージョンのPHPを使ったり、Linux でなければ動かないモジュールを使うこともあるので、その際は社内のCentOSサーバにSSHで入って開発したりもします。

Vimを使ってるので、SSHで入ればどのサーバでも開発できるのは利点ですね。

Mac を使い出して、しばらくはこれで良かったのですが、たまにLinux環境が欲しい時があったり、社内スタッフと開発環境を揃えることを考えると、vmwareでLAPP環境を構築しておいて、それをみんなで共有するほうが良いかもしれません。

2. Vim

開発エディタにはVimを使っています。

昔はWindowsのPeggyを使っていたのですが、サーバにSSHで入ってメンテナンスする時にVimでもたもたするのがいやだったのと、何よりVimで颯爽とコードを書くのがかっこ良さそうだったのでメインで使うようになりました。

シェルの延長上で使えて、起動にストレスが無いですね。基本コマンドは手に馴染んでいるので、純粋に「書く」という行為については文句無いです。IDE並とは言わないですが、拡張していけば補完なんかもそれなりに効きます。

一度覚えておけば、Unix系を使う限りは下手すれば一生ものになるので楽できますね。

ただ絶対にVimじゃなきゃイヤだということも無くて、最近はNetBeansも気になったりもしてます。(Vimプラグインとかあるみたいだし)

http://www.vim.org/

3. xdebug

xdebug

PHPで開発している人にはおなじみのxdebugを入れてます。

インストールするだけで、PHPのエラーメッセージを見やすくしたり、スタックトレースを表示してくれたり、var_dump()した時が見やすくなったりで開発する時には嬉しい機能満載です。

例えば、PHPエラーが見やすくなって、スタックトレースが表示されたり。

xdebug_php_error

例えば、var_dump()で変数をダンプすると見やすくなってたり。

xdebug_var_dump_array

オブジェクトなら、インスタンス変数のアクセス権も表示してくれます。

xdebug_var_dump_object

他にも実行コードがトレースできたり、コードカバレッジを計測できたりと、とても重宝しています。

xdebug は pecl コマンドでインストールできます。

$ sudo pecl install xdebug

もちろん yum でもインストールすることもできます。

$ sudo yum install php-pecl-xdebug

PHPで開発する人ならぜひ開発環境に入れてみてください。

xdebug

4. Firefox

Firefox ブラウザ無料ダウンロード

Webを見るときのブラウザはChromeとFirefoxを併用していますが、やはりWebシステム開発に使うならFirefoxがメインです。

理由はアドオンが充実していることです。もちろんChromeでも同様のことができると思うのですが、使い慣れているということとFirefoxにしか無いアドオンがあるのが大きいですね。

豊富なアドオンの中でも特によく使うものをあげてみました。

4-1. Firebug

言うまでもなく定番のツールですね。

表示されているHTMLタグを確認したり、CSSを修正したり、JavaScriptのデバッグに使ったりと機能満載なのですが、Webシステム開発という意味では「ネット」が便利です。

ここを開くとブラウザからWebサーバへどのようなHTTP通信を行っているかが分かります。あるページを読み込むと画像やCSSが次々と読み込まれるのが分かります。

firebug_1

さらに各行をクリックするとヘッダを含む、リクエスト、レスポンスの内容が確認できます。

firebug_2

POSTの内容も見やすいです。

firebug_3

Firebug :: Add-ons for Firefox

4-2. Selenium IDE

自動ブラウザテストツールです。

Selenium IDEを使うとブラウザでの操作、入力を記録することができ、何度でも同じ操作を繰り返すことができます。さらにページやURL、Cookieなどの内容が想定されている値になっているかを検証することができます。

特に複雑な入力を伴うような購入フォームやユーザ登録などは、操作を記録してテストケースを作成しておくと、開発途中で動作確認するときに同じ操作を人がするのではなくツールにさせることができて、効率的です。

操作さえ慣れればかなり適用範囲の広いツールなので、Webシステムを開発する人でまだ使っていない人は一度試してみてください。

Selenium IDE

4-3. FireMobileSimulator

携帯電話対応のWebシステム開発では欠かせないツールです。

このツールを使うと擬似的に各キャリア、各機種の携帯電話からのアクセスを行うことができます。膨大な機種データが登録されており、新機種への対応も随時行われています。

画面サイズや絵文字表示などもシミュレートしてくれるので表示についても確認できます。(もちろん最終的には実機テストが必要ですが)

FireMobileSimulator.org

5. SimpleTest / PHPUnit

PHPでユニットテストを行うツールです。

SimpleTestはCakePHPで開発するときに使っています。それ以外で開発するときはPHPUnitを使うようにしています。

ユニットテストの効能については様々な情報があり、あえてここで触れる必要はないと思いますが、個人的に感じているメリットが2つあります。

5-1. 安心感を得る

テストを書いて、いつでもテストを実行できる環境を作っておくとそのコードが想定どおりに動く安心感が得られます。リファクタリングなどでコードを書き換える時もそうですが、開発が終了して何ヶ月か経った後でもそのコードが確実に動くことが保証できます。(もちろんテストを書いた範囲においては、ですが)

あと他人(数ヶ月後の自分を含む)が書いたコードがどのような動作を想定したものかを掴むことができます。

こうした書いたコードに対する安心感を得られるのが大きいです。

5-2. テストしやすいコード=独立性の高いコードを書くようになる

ユニットテストを書きだすと分かるのですが、メソッド内で様々なクラスと密結合になっていて様々な処理を詰め込んでいるとテストが書きづらくなります。

テストを書く段でそういった密結合を解きほぐしていって、メソッド毎の処理を小さな単に分けていくと、テストが書きやすくなり、自然と独立性の高い実装となっていきます。こうした独立性の高い実装はその役割がはっきりしているので再利用が容易となります。

独立性の高いコード、疎結合なコードを書くための訓練といういう意味でもテストコードを書くというのは効果があると思います。

とはいえ、やはりテストを書くのが面倒な場面はあるので、今はいかに効率的に(手間をかけずに)テストが書けるかを模索しています。

SimpleTest – Unit Testing for PHP
PHPUnit Manual

6. Redmine

社内の開発タスク管理にはRedmineを使ってます。

3,4年くらい前にBTSを導入しようとして、TracやMantisなども検討したのですが、複数プロジェクトが管理できるのとGUIが取っ付きやすそうだったので、Redmineを導入しました。

まだ今の使い方が正解かどうかは分からないですが、ざっくりとしたタスク単位でチケットを発行しています。チケットには仕様の詳細までは書いていないことの方が多くて、実際にアサインする時に打ち合わせで説明しています。

このあたりをどう活用しているのかは他の人と情報共有したいところですね。

Redmineの機能としては、やっぱりGitやSubversionなどのSCMと連携できて、コミットとチケットを関連付けられるのが便利ですね。チケットに対する変更差分をブラウザでさっと確認できます。

SCMを初めて使う人にとっても、commit / push した内容がブラウザで確認できるので分かりやすいみたいです。

http://redmine.jp/

7. Git / Subversion

ソースコードは、Git / Subversion で管理しています。

SCMはCVSから使いはじめました。その頃は一人で開発をやっていましたが、変更履歴や差分が取れるし、開発環境とテストサーバなど複数の箇所で同じソースが簡単に取得できるので、それ以来利用しています。(当時使っていたPeggy ProにCVS連携が付いていたのも一つのきっかけになりました。)

それからSubversionを使い出して、CVSのソースはSubversionに移行しました。スタッフが入って、複数人での開発になってからはさらにツールの重要性が増しました。誰がどう変更したかを間違いなく把握できるので、自分が書いたコードという意識も高まりますし、疑問点があってもすぐに書いた本人に聞くことができます。

そういえば、Redmineを使い出したのもSubversion連携があったというのもありますね。

そして昨年くらいからGitを使い出しました。まだベストプラクティスが決まらず、本来の分散リポジトリという部分は生かせていないですが、基本操作は浸透してきたので、そろそろ色々と模索していこうと思います。

Git – Fast Version Control System
Apache Subversion

ツールの提供者に感謝!

こうしてあらためて見ると普段多くのツールを活用して開発を行っていることが分かります。

ここで挙げたツールはいずれもオープンソースで配布されているものであり、無償で利用することができます。当然ながこうしたツールは誰かが開発しているもので、さらにテストをしたり、マニュアルを書いたり、それを翻訳する人がいたり、と多くの人の力で提供されています。

今後も感謝の気持ちを忘れず、どんどん活用していきたいですね。

Firefox4 に Selenium IDE をインストールする

この記事の所要時間: 18

滋賀に開発合宿に来てます。

Firefox4にSelenium IDEをインストールしようとしてハマったのでメモ。

  1. Firefox4にAdd-on Compatibility Reporterをインストール
  2. Selenium DownloadsからSelenium IDE(http://release.seleniumhq.org/selenium-ide/1.0.10/selenium-ide-1.0.10.xpi)[2011/05/07時点]をダウンロード
  3. ダウンロードしたxpiファイルをFirefox4のウィンドウにドラッグ
  4. いつものインストール確認画面が表示されるので、確認してインストール。

この手順では、Add-on Compatibility ReporterでFirefoxのバージョンチェックを無効にして、Selenium IDEをインストールしています。試した限りでは、問題無く動きました。

いずれSelenium IDE自体がFirefox4に正式対応して普通にインストールできるようになると思うんですが、他のプラグインでも同じことがありそうなので覚えておくと良いですね。(ただバージョンチェックを無効にするので利用はご自身の責任でお願いします。)

@nntsugu さんありがとうございますー。

Mac+Google日本語入力でATOKショートカットキーで変換する

この記事の所要時間: 039

Mac+Google日本語入力でATOKのキーバインドで変換する方法です。

MacBookAirには、普段使っているATOKではなく、Google日本語入力を入れてるのですが、「CTRL+(u/I/o/p)」で「かな<->カナ<->半角カナ<->英字」といった変換ができず困っていました。

ごまかしごまかしF6-10を使っていたのですが、これまでのクセが抜けず、いらいらしていました。

今日こそ何とかするぞ!と意気込んで調べてみたところ、普通に設定がありました。。。

Google日本語入力の設定を開きます。(画面は英語版です)

keymap styleを「ATOK」に変更すればok。

なんでもっと早く気づかないか。

僕が一番Macを上手く使えるんだ

この記事の所要時間: 233

ついについについに長年憧れていたMacを注文しました。

初Macは13インチMacBook Pro(+SSD)にしました。今から到着が楽しみでしようがありません:-D

注文してすっかり浮かれていたのですが、ふと大事なことに気付きました。

未Macユーザな時間は人生でもうわずかしか残されていないことに。

Macユーザとしてその世界観を堪能してしまうと、きっと今抱いている憧れの念(妄想とも言う)は良くも悪くも消えてしまいます。

そこでそんなピュアな妄想をここに残しておこうと思います。

Macイメージ

画面が美しい

とにかく画面がキレイ。勉強会なんかで良く見せびらかされるんですが、とにかくキレイ。あれは間違い無くそそられる。

フォントが美しい

とにかくフォントがキレイ。勉強会なんかで良く見せびらかされるんですが、とにかくキレイ。あれは間違い無くそそらる。

エフェクトが美しい

とにかくエフェクトがキレイ。勉強会なんかで良く見せびらかされるんですが、とにかくキレイ。あれは間違い無くそそらる。

まあとにかく「○○が美しい」が、10個くらい並びそうな勢い。

プレゼンがいけてる

そうだ、あいつのプレゼンがいけてるのはKeynoteだからだ。

連帯意識

Macユーザというだけで何だか仲良くなれそう。Snow Leopard入れた入れてないで大盛り上がり。

Windows7でも盛り上がろうよ。

爆弾マーク

何だかんだ言っても不安定だったりする。

でもそこで怒り狂うのはMacファンじゃない。「こないだ爆弾出ちゃってさー」と軽いノリで話せるのがマカー。出来の悪い子ほどかわいいって奴。

Unixベース

そそられまくり。CUI環境とGUI環境の見事な調和。ランチャー?かなんかでグリグリとアプリを起動したかと思うと、ターミナルからVimを起動して颯爽とコーディング。うーんギーク。

反MS。反Windows。

Mac(Apple)への愛情故に敵対するMS勢には異常なまでの敵対心を燃やす。

仕事ではWindows使ってるのに「MS○そ」とか言ってしまう。Winユーザにもやさしくね。

歴史が好き

Macユーザはその遍歴を語るのが好き。

これまで色々な人に聞いたおかげで、触ったことも無いNEXTSTEPの思い出が頭の中で構築されそうな勢い。

とにかくおしゃれ

Mac持ってるだけでおしゃれ。クリエイターっぽい。

カフェでカバンから取り出すPCはレッツノートじゃなくてMacだよね。

持ち歩くのは重い

やっぱり持ち歩くには重い。だって今時のWinノートなら1kg切ってるよ?

いやいやそうじゃない。MacBookの重みでAppleの想いをズシッと感じるのだ。

イメージ画像

そんなわけで

いよいよマカーの仲間入りなわけです。妄想がどこまで現実となるのでしょうか。

いつの日かタイトルのようなセリフが言えるようにMac道を邁進したいと思います。

ああー楽しみ。

ホーム > 開発環境

検索
フィード
メタ情報

Return to page top